Ebben a cikkben, amelyet a Windows rendszerek biztonságára irányuló cikksorozat részeként írtunk (az előző cikkben a GPP-ben tárolt jelszavak biztonságát tárgyaltuk), megismerjük egy meglehetősen egyszerű technikát a Windows rendszeren futó összes felhasználó számára egyértelmű jelszavak megszerzéséhez. A nyílt forráskódú Mimikatz segédprogram használata.
lemondás. Az ebben a cikkben ismertetett információkat és technológiákat kizárólag tájékoztatási és megismerési célokra szabad felhasználni, és semmiképpen sem szabad hozzáférni a fiókokhoz, információkhoz és harmadik féltől származó rendszerekhez..Tartalom:
- Tárolja a jelszavakat és a kivonatot a Windows memóriájában
- A Mimikatz használatával kivonjuk a felhasználói jelszavakat az lsass.exe adatbázisból
- Felhasználói jelszó beszerzése a Windows memóriakártyáról
- Felhasználói jelszavak lekérése virtuális gép és hibernációs fájlokból
- A Mimikatz használata has-the-hash támadásokban
- Hogyan lehet megvédeni a Windows-t a jelszavak memóriából történő kibontása ellen a mimikatz segítségével?
Tárolja a jelszavakat és a kivonatot a Windows memóriájában
A legtöbb rendszergazda biztos abban, hogy a Windows nem a felhasználói jelszavakat tárolja tiszta szövegben, hanem csak a kivonat formájában. És bár manapság számos olyan segédprogram található, amelyek kinyomtathatják a felhasználói jelszó-kivonatokat a rendszerből, biztosan elmondhatjuk, hogy ha egy meglehetősen összetett jelszót használunk, nem „a szótárból”, a támadónak gyakorlatilag nincs esélye arra, hogy azt közvetlen brutális erővel vagy a már kiszámított hash-ok alapján vegye fel..
Elvileg ez igaz, de különféle árnyalatok vannak a Windows rendszerbe bejelentkezett felhasználók vonatkozásában. A helyzet az, hogy egyes rendszerfolyamatok hivatalos célokra továbbra is használnak felhasználói jelszavakat nyitott (vagy titkosított) formában, és nem a hash-okkal.
Tehát például a mechanizmus emésztés hitelesítés (HTTP kivonat hitelesítés), az SSO (egyszeri bejelentkezés) támogatására szolgál, munkájához a beírt felhasználói jelszó ismeretére van szükség, és nem csak a hash-ra (csak azt tudod kitalálni, hogy a fejlesztők miért implementálták ezt így). A felhasználók titkosított formátumú jelszavait (nevezetesen jelszavakat, nem hash-okat) az operációs rendszer memóriájában tárolják, pontosabban a folyamatmemóriában LSASS.EXE. A probléma az, hogy a jelszavak titkosítását a Win32 szokásos LsaProtectMemory és LsaUnprotectMemory funkciókkal valósítják meg, amelyek egy bizonyos memória darabjának titkosításához / dekódolásához készültek. Utility francia fejlesztők mimikatz lehetővé teszi, hogy titkosított adatokat kapjon a memóriából, és dekódolja azokat a LsaUnprotectMemory funkció használatával, lehetővé téve a rendszerben engedélyezett összes felhasználói fiók és jelszavak (nyitott, már dekódolt formában!) megjelenítését. A biztonsági rés kihasználásához a támadónak képesnek kell lennie arra, hogy csatoljon egy speciális könyvtárat az lsass.exe folyamathoz.
Töltse le a segédprogramot mimikatz itt lehet: http://blog.gentilkiwi.com/mimikatz
info. A mimikatz segédprogramot a legtöbb antivírus és böngésző potenciálisan veszélyes szoftverként érzékeli (hacker segédprogram).A mimikatz segédprogram lehetővé teszi a felhasználói jelszavak kibontását közvetlenül a memóriából (a sekurlsa.dll könyvtár beolvasásával az lsass.exe fájlba), egy elmentett számítógépes memória kirakatból, vagy akár hibernációs fájlból..
A Mimikatz használatával kivonjuk a felhasználói jelszavakat az lsass.exe adatbázisból
- Töltse le és futtassa a Mimikatz.exe fájlt rendszergazdai jogosultságokkal (a segédprogram x86 és x64 verziói vannak a megfelelő rendszerek számára)
- A segédprogrammal összefüggésben futtassa a parancsokat
mimikatz # privilege :: debug
mimikatz # sekurlsa :: logonPasswords full
(az utolsó parancs az összes aktív felhasználó számára a rendszerben megjeleníti a fiókneveket és jelszavaikat).
Mint láthatja, a segédprogram tiszta szövegben megmutatta a felhasználó szuper komplex jelszavát! Mindez annak a ténynek köszönhető, hogy ezen a számítógépen a jelző beállításával megengedett a hibakeresési mód használata SeDebugPrivilege a kívánt folyamathoz. Ebben a módban a programok alacsony szintű hozzáférést kaphatnak a rendszer nevében futó folyamatok memóriájához.
Képzelje el, hogy ez egy terminálkiszolgáló, amelyen sok felhasználó egyszerre dolgozik, és amelyen többek között van egy vállalati rendszergazdai munkamenet. Ie ha egyetlen kiszolgálón rendszergazdai jogokkal rendelkezik, akkor el is foghatja a tartomány rendszergazdai jelszavát.
megjegyzés. 2017. júniusban számos nagy vállalat Oroszországban, Ukrajnában és más országokban megfertőződött a nem petya ransomware vírussal, amelyet az integrált mimikatz modul használt a felhasználói és a domain rendszergazdák jelszavainak gyűjtésére..megjegyzés. Ez a technika nem fog működni, ha van egy olyan víruskereső a rendszeren, amely blokkolja az injekciózást. Ebben az esetben először el kell készítenie a gép memóriakódját, és a másik gépen már ki kell húznia a jelszavakat tőle az összes felhasználó munkamenete során..Felhasználói jelszó beszerzése a Windows memóriakártyáról
Az LSASS eljárás memóriakijelölését a PowerShell Out-Minidump.ps1 függvény használatával lehet beszerezni. Importálja a Minidump funkciót a PoSh-ba, és döntse el az LSASS folyamatmemóriáját:
Get-Process lsass | Out-Minidump
Az így kapott memóriahiány a példánkban az Lsass_592.dmp (alapértelmezés szerint a% windir \ system32% könyvtárba kerül mentésre), át kell másolnia egy másik számítógépre, amelyen a mimikatz segédprogram van, és futtatnia kell a következő parancsot:
Mimikatz “sekurlsa :: minidump lsass_592.dmp”
A következő paranccsal a mentett memóriából kinyerjük a rendszerben dolgozó felhasználók listáját és jelszavaikat:
mimikatz # sekurlsa :: logonPasswords
Mint láthatja, semmi bonyolult.
Ily módon a psexec használatával vagy a WinRM-en keresztül (ha rendszergazdai jogokkal rendelkezik) memóriakijelölést szerezhet egy távoli számítógépről, és kinyerheti belőle a felhasználói jelszót..
Felhasználói jelszavak lekérése virtuális gép és hibernációs fájlokból
Menj tovább. Egyszerű manipulációk segítségével a támadó könnyen kicsomagolhat felhasználói jelszavakat a memória dump fájlokból, a rendszer hibernációs fájljából (hiberfil.sys) és a. virtuális gépek vmem fájljai (virtuális gépek cseréje fájlok és pillanatképeik).
Ehhez szüksége van egy csomagra Hibakeresés szerszám mert A windows (WinDbg), önmaga mimikatz és átalakító segédprogram .vmem memória dump fájlba (Hyper-V esetén ez lehet vm2dmp.exe vagy MoonSols Windows Memory eszközkészlet vmem VMWare fájlokhoz).
Például, ha szükséges, konvertálja a VMWare virtuális gép smem fájlját vmem fájlba dumpként, hajtsa végre a következő parancsot:
bin2dmp.exe "winsrv2008r2.vmem" vmware.dmp
Betölti a kapott dumpot a WinDbg fájlba (File -> Open Crash Dump), betölti a mimikatz könyvtárat mimilib.dll névvel (válassza ki a verziót a rendszer bitmélységétől függően):
.betöltése mimilib.dll
Az lsass.exe folyamatot keresjük a dumpban:
!process 0 0 lsass.exe
És végül:
.process / r / p fffffa800e0b3b30
!mimikatz
és kap egy listát a Windows felhasználókról és jelszavaikról egyértelmű szövegben.
A Windows felhasználók jelszavainak nyílt formában történő megszerzése a Mimikatz segédprogrammal a következő rendszereken működik, beleértve azokat is, amelyek a Hyper-V 2008/2012 és a VMWare különféle verzióin futnak:
- Windows Server 2008/2008 R2
- Windows Server 2012 / R2
- Windows 7
- Windows 8
A Mimikatz használata has-the-hash támadásokban
Abban az esetben, ha nem lehetséges a felhasználói jelszó megszerzése, hanem csak a hash-ja, a Mimikatz felhasználható az úgynevezett pass-the-hash támadáshoz (a hash újrafelhasználása). Ebben az esetben a kivonat felhasználható a felhasználó nevében a folyamatok elindítására. Például, miután megkapta a felhasználó NTLM-kivonatát, a következő parancs elindít egy parancssort egy privilegizált fiók nevében:sekurlsa :: pth / felhasználó: Administrator / domain: CORP / ntlm: NTLM hash / run: cmd
Hogyan lehet megvédeni a Windows-t a jelszavak memóriából történő kibontása ellen a mimikatz segítségével?
A Windows 8.1 és a Server 2012 R2 (és újabb) rendszerekben a jelszavak kibontásának lehetősége az LSASS-en keresztül kissé korlátozott. Tehát alapértelmezés szerint ezek a rendszerek nem tárolják az LM kivonatot és jelszavakat tiszta szövegben a memóriában. Ugyanezt a funkciót a Windows korábbi verzióira (7/8 / 2008R2 / 2012) visszaportálják, amelyekbe egy speciális frissítést kell telepíteni KB2871997 (a frissítés további lehetőségeket kínál a rendszer biztonságának megerősítésére), és a HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest ágban állítsa be a regisztrációs DWORD paramétert UseLogonCredential egyenlő 0 (A WDigest le van tiltva).
Ha a frissítés és a UseLogonCredential kulcs telepítése után megpróbálja kibontani a jelszavakat a memóriából, látni fogja, hogy a mimikátok nem tudnak kibontani a jelszavakat és a kivonatokat a creds_wdigest paranccsal.
Ha azonban rendszergazdai jogokkal rendelkezik, ezt a kulcsot könnyen megváltoztathatja:
reg hozzáadás HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest / v UseLogonCredential / t REG_DWORD / d 1
Ezután ismét hozzáférhet az LSA memóriájában található jelszavakhoz.
A mimikatz eszközkészletnek van más eszköze is a jelszavak és azok kivonatának a memóriából való letöltésére (WDigest, LM-hash, NTLM-hash, Kerberos jegyfogó modul), ezért ajánlott a következő intézkedések végrehajtása:
- Megtagadhatja a jelszavak tárolását a visszafordítható titkosítás segítségével
- Az NTLM letiltása
- Tilos elmentett jelszavak használatát a Credential Manager alkalmazásban
- A gyorsítótárazáshoz tartozó domain felhasználói hitelesítő adatok megtagadása (CachedLogonsCount kulcs és interaktív bejelentkezés: A gyorsítótár-házirendhez tartozó korábbi bejelentkezések száma)
- Ha a domain funkcionális szintje nem alacsonyabb, mint a Windows Server 2012 R2, akkor hozzáadhat rendszergazdai fiókokat a Védett felhasználók speciális csoporthoz
A mimkatz tesztelésével a Windows 10 Pro x64 rendszeren a beállításokkal, a mimkatz 2.0 képes volt megszerezni az aktív felhasználó jelszó-kivonatait (de a jelszó nem volt tiszta szövegben).
Régebbi rendszereken, mint megoldást, korlátoznia kell a hibakeresési jogok megszerzését, és a regisztráción keresztül le kell tiltania a wdigest biztonsági szolgáltatót. Erre az ágban HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa keresse meg a kulcsot Biztonsági csomags, és távolítsa el a sort a csomagok listájáról wdigest. Meg kell értenie azonban, hogy a támadónak nem nehéz visszaállítani a beállításokat, ha rendelkezik a megfelelő nyilvántartási jogokkal..
megállapítások. Ismét emlékeztetünk a közös igazságokra:
- Ne használjon ugyanazt a jelszót a különféle szolgáltatásokhoz (különösen harmadik felek tulajdonában lévő terminálokhoz).
- Gondolj a felhőkben lévő virtuális gépeken található jelszavainak és adatainak biztonságára, mert nem lehet biztos benne, hogy ki férhet hozzá a hipervizorokhoz és a tárolóhoz, amelyen a virtuális gép fájlok találhatók.
- Minimalizálja a rendszereken a helyi rendszergazdai jogokkal rendelkező fiókok számát (lásd a Windows rendszergazdai fiókok védelméről szóló útmutatót)
- Soha ne jelentkezzen be rendszergazdai fiókkal a kiszolgálókhoz és a számítógépekhez, amelyek más felhasználók számára elérhetők.