V tomto článku, který byl napsán jako součást řady článků věnovaných bezpečnosti systémů Windows (v posledním článku jsme diskutovali o bezpečnosti hesel uložených v GPP), se seznámíme s poměrně jednoduchou technikou získávání jasných hesel všech uživatelů běžících v systému Windows. Použití nástroje Open Source Mimikatz.
Zřeknutí se odpovědnosti. Informace a technologie popsané v tomto článku by měly být použity pouze pro informační a seznamovací účely a v žádném případě by neměly být používány k získání přístupu k účtům, informacím a systémům třetích stran..Obsah:
- Ukládejte hesla a hash do paměti Windows
- Používáme Mimikatz k extrahování uživatelských hesel z lsass.exe online
- Získání hesla uživatele z výpisu paměti systému Windows
- Získání uživatelských hesel ze souborů virtuálních strojů a souborů hibernace
- Použití Mimikatz při útokech typu pass-the-hash
- Jak chránit Windows před extrahováním hesel z paměti pomocí mimikatz?
Ukládejte hesla a hash do paměti Windows
Většina správců systému je přesvědčena, že systém Windows neukládá uživatelská hesla v čistém textu, ale pouze ve formě hash. A ačkoli dnes existuje velké množství nástrojů, které mohou extrahovat hashování hesla uživatele ze systému, je možné s jistotou říci, že při použití poměrně složitého hesla, které není „ze slovníku“, nemá útočník prakticky žádnou šanci ho vyzvednout přímou hrubou silou nebo na základě již vypočítaných hashů.
V zásadě je to pravda, ale existují různé nuance týkající se uživatelů přihlášených do konkrétního systému Windows. Faktem je, že některé systémové procesy pro jejich oficiální účely stále používají uživatelská hesla v otevřené (nebo šifrované) podobě, nikoli jejich hashe.
Například mechanismus autentizace pomocí přehledu (HTTP Digest Ověřování), slouží k podpoře SSO (Single Sign On), pro svou práci vyžaduje znalost zadaného hesla uživatele, a nejen jeho hash (můžete jen hádat, proč to vývojáři implementovali tímto způsobem). Hesla (jmenovitě hesla, nikoli jejich hashe) uživatelů v šifrované podobě jsou uložena v paměti OS a přesněji v procesní paměti LSASS.Exe. Problém je v tom, že šifrování hesla je implementováno pomocí standardních funkcí Win32 LsaProtectMemory a LsaUnprotectMemory, které jsou navrženy tak, aby šifrovaly / dešifrovaly určitou část paměti. Francouzští vývojáři mimikatz umožňuje přijímat šifrovaná data z paměti a dešifrovat je pomocí funkce LsaUnprotectMemory, což vám umožňuje zobrazit všechny uživatelské účty autorizované v systému a jejich hesla (v otevřené, již dešifrované podobě!). Aby útočník mohl tuto chybu zabezpečení zneužít, musí být schopen k procesu lsass.exe připojit speciální knihovnu.
Stáhněte si nástroj mimikatz může být zde: http://blog.gentilkiwi.com/mimikatz
Info. Nástroj mimikatz je detekován většinou antivirů a prohlížečů jako potenciálně nebezpečný software (nástroj hackerů).Obslužný program mimikatz umožňuje extrahovat uživatelská hesla přímo z paměti (vstřikováním knihovny sekurlsa.dll do lsass.exe), z výpisu uložené počítačové paměti nebo dokonce ze souboru hibernace.
Používáme Mimikatz k extrahování uživatelských hesel z lsass.exe online
- Stáhněte si a spusťte Mimikatz.exe s administrátorskými oprávněními (pro příslušné systémy existuje verze programu x86 a x64)
- V kontextu obslužného programu spusťte příkazy
mimikatz # privilege :: debug
mimikatz # sekurlsa :: logonPasswords full
(poslední příkaz pro všechny aktivní uživatele v systému zobrazí názvy účtů a jejich hesla).
Jak vidíte, nástroj nám ukázal srozumitelné heslo uživatele uživatele ve srozumitelném textu! To vše je způsobeno tím, že je povoleno používat režim ladění v tomto počítači nastavením příznaku SeDebugPrivilege pro požadovaný proces. V tomto režimu mohou programy získat nízkoúrovňový přístup k paměti procesů spuštěných jménem systému.
Představte si, že se jedná o terminálový server, na kterém pracuje mnoho uživatelů současně a na kterém mimo jiné probíhá relace správce podniku. I.e. Pokud máte práva správce na jednom serveru, můžete dokonce zachytit heslo správce domény.
Poznámka:. V červnu 2017 bylo mnoho velkých společností v Rusku, na Ukrajině a v dalších zemích nakaženo virem non-petya ransomware, který integrovaný modul mimikatz použil ke shromažďování hesel pro správce uživatelů a domén..Poznámka:. Tato technika nebude fungovat, pokud je v systému moderní antivirus, který blokuje injekce. V tomto případě musíte nejprve vytvořit výpis paměti zařízení a již na druhém počítači z něj vytáhnout hesla pro relace všech uživatelů..Získání hesla uživatele z výpisu paměti systému Windows
Výpis paměti pro proces LSASS lze získat pomocí funkce PowerShell Out-Minidump.ps1. Importujte funkci Out-Minidump do PoSh a vypusťte procesní paměť LSASS:
Get-Process lsass | Out-minidump
Výsledný výpis paměti v našem příkladu je lsass_592.dmp (ve výchozím nastavení je uložen v adresáři% windir \ system32%), musíte jej zkopírovat do jiného počítače, který má utilitu mimikatz a spusťte příkaz:
Mimikatz „sekurlsa :: minidump lsass_592.dmp“
A pomocí následujícího příkazu získáme z výpisu uložené paměti seznam uživatelů pracujících v systému a jejich hesla:
mimikatz # sekurlsa :: logonPasswords
Jak vidíte, nic složitého.
Tímto způsobem můžete získat výpis paměti ze vzdáleného počítače pomocí psexecu nebo prostřednictvím WinRM (pokud máte administrátorská práva) a extrahovat z něj uživatelské heslo.
Získání uživatelských hesel ze souborů virtuálních strojů a souborů hibernace
Do toho. Pomocí jednoduchých manipulací může útočník snadno extrahovat uživatelská hesla ze souborů výpisu paměti, ze souboru hibernace systému (hiberfil.sys) a. vmem soubory virtuálních strojů (odkládací soubory virtuálních strojů a jejich snímky).
K tomu potřebujete balíček Ladění Nástroj pro Windows (WinDbg), já mimikatz a nástroj pro převod .vmem do souboru výpisu paměti (pro Hyper-V to může být vm2dmp.exe nebo sada nástrojů Windows Memory pro Windows vms pro soubory VMWare vmem).
Například, pokud je to nutné, převeďte odkládací soubor vmem virtuálního počítače VMWare na výpis, spusťte příkaz:
bin2dmp.exe "winsrv2008r2.vmem" vmware.dmp
Výsledný výpis načteme do WinDbg (File -> Open Crash Dump), načteme knihovnu mimikatz s názvem mimilib.dll (vyberte verzi v závislosti na bitové hloubce systému):
.načíst mimilib.dll
Hledáme proces lsass.exe na výpisu:
!proces 0 0 lsass.exe
Nakonec píšeme:
.proces / r / p fffffa800e0b3b30
!mimikatz
a získat seznam uživatelů systému Windows a jejich hesel v čistém textu.
Získávání hesel uživatelů Windows v otevřené podobě pomocí obslužného programu Mimikatz funguje na následujících systémech, včetně těch, které běží na různých verzích Hyper-V 2008/2012 a VMWare:
- Windows Server 2008/2008 R2
- Windows Server 2012 / R2
- Windows 7
- Windows 8
Použití Mimikatz při útokech typu pass-the-hash
V případě, že není možné získat heslo uživatele, ale pouze jeho hash, může být Mimikatz použit pro tzv. Pass-the-hash útok (opětovné použití hash). V tomto případě lze hash použít ke spuštění procesů jménem uživatele. Například po obdržení hash NTLM uživatele, následující příkaz spustí příkazový řádek jménem privilegovaného účtu:sekurlsa :: pth / user: Administrátor / doména: CORP / ntlm: NTLM hash / run: cmd
Jak chránit Windows před extrahováním hesel z paměti pomocí mimikatz?
V systémech Windows 8.1 a Server 2012 R2 (a novějších) je schopnost extrahovat hesla pomocí LSASS poněkud omezená. Ve výchozím nastavení tedy tyto systémy neukládají hash LM a hesla do prostého textu v paměti. Stejná funkce je backportována k dřívějším verzím Windows (7/8 / 2008R2 / 2012), ve kterých je třeba nainstalovat speciální aktualizaci. KB2871997 (aktualizace poskytuje další příležitosti k posílení zabezpečení systému) a ve větvi HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest nastavte parametr DWORD registru PoužijteLogonCredential stejné 0 (WDigest je zakázán).
Pokud se po instalaci aktualizace a klíče UseLogonCredential pokusíte extrahovat hesla z paměti, uvidíte, že mimikats nemohou extrahovat hesla a hash pomocí příkazu creds_wdigest.
Pokud však máte práva správce, můžete tento klíč snadno změnit:
reg add HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest / v UseLogonCredential / t REG_DWORD / d 1
Poté můžete znovu získat přístup k heslům v paměti LSA.
Sada nástrojů mimikatz má také další nástroje pro načítání hesel a jejich hashů z paměti (modul WDigest, LM-hash, NTLM-hash, modul pro sběr lístků Kerberos), proto se doporučuje provádět následující opatření jako doporučení:
- Odepřít ukládání hesel pomocí reverzibilního šifrování
- Zakázat NTLM
- Odepřít použití uložených hesel ve Správci pověření
- Odepřít přihlašovací údaje uživatele domény pro ukládání do mezipaměti (klíč CachedLogonsCount a interaktivní přihlášení: Počet předchozích zásad přihlášení do mezipaměti)
- Pokud funkční úroveň domény není nižší než Windows Server 2012 R2, můžete přidat účty správce do zvláštní skupiny Chráněné uživatele
Při testování mimkatz na Windows 10 Pro x64 s nastavením, mimkatz 2.0 byl schopen získat hashe hesla aktivního uživatele (ale ne heslo v čistém textu).
U starších systémů musíte jako řešení omezit získání debugovacího oprávnění a zakázat poskytovatele zabezpečení wdigest prostřednictvím registru. Za to v oboru HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa najít klíč Bezpečnostní balíčeks a odeberte řádek ze seznamu balíčků wdigest. Musíte však pochopit, že pro útočníka s příslušnými právy do registru není obtížné vrátit nastavení zpět..
Závěry. Opět si vzpomínáme na běžné pravdy:
- Nepoužívejte stejná hesla pro různé služby (zejména pro terminály vlastněné třetími stranami).
- Přemýšlejte o bezpečnosti vašich hesel a dat umístěných na virtuálních strojích v cloudu, protože si nemůžete být jisti, kdo má další přístup k hypervizorům a úložišti, na kterém jsou soubory virtuálních strojů umístěny..
- Minimalizujte ve svých systémech počet účtů s právy místního správce (viz průvodce zabezpečením účtů správce v systému Windows)
- Nikdy se nepřihlašujte pomocí účtu správce domény na servery a počítače přístupné jiným uživatelům.