V tem članku, ki je bil napisan kot del niza člankov, namenjenih varovanju Windows sistemov (v zadnjem članku smo razpravljali o varnosti gesel, shranjenih v GPP), se bomo seznanili z dokaj preprostim načinom pridobivanja gesel z odprtim besedilom vseh uporabnikov v sistemu Windows. Uporaba odprtokodnega orodja Mimikatz.
Izjava o omejitvi odgovornosti. Informacije in tehnologije, opisane v tem članku, bi se morale uporabljati samo v informativne in seznanitvene namene in v nobenem primeru ne bi smele biti uporabljene za dostop do računov, informacij in sistemov drugih proizvajalcev.Vsebina:
- Shranite gesla in heše v pomnilniku Windows
- Mimikatz uporabljamo za pridobivanje uporabniških gesel iz lsass.exe na spletu
- Pridobivanje uporabniškega gesla s pomnilnika Windows
- Pridobivanje uporabniških gesel iz datotek navidezne naprave in datotek hibernacije
- Uporaba Mimikatza v napadih mimo
- Kako zaščititi Windows pred črpanjem gesel iz pomnilnika prek mimikatza?
Shranite gesla in heše v pomnilniku Windows
Večina sistemskih skrbnikov je prepričana, da Windows ne shranjuje uporabniških gesel v jasnem besedilu, temveč le v obliki svojega hash-a. In čeprav danes obstaja veliko število pripomočkov, ki lahko izvlečejo šifre uporabniškega gesla iz sistema, je mogoče z gotovostjo trditi, da napadalec pri uporabi dokaj zapletenega gesla ne "iz slovarja" praktično nima možnosti, da ga pobere z direktno silo ali na podlagi že izračunanih hešev.
Načeloma je to res, vendar obstajajo različni odtenki glede uporabnikov, ki so prijavljeni v določen sistem Windows. Dejstvo je, da nekateri sistemski procesi za svoje uradne namene še vedno uporabljajo gesla uporabnikov v odprti (ali šifrirani) obliki, in ne njihovih hešev.
Tako na primer mehanizem preverjanje pristnosti (HTTP Digest Preverjanje pristnosti), uporablja se za podporo SSO (Single Sign On), saj za svoje delo zahteva poznavanje vnesenega uporabniškega gesla in ne le njegovega hash-ja (lahko samo ugibate, zakaj so razvijalci to izvedli na ta način). Gesla (in sicer gesla, ne njihove šifre) uporabnikov v šifrirani obliki se shranijo v pomnilnik OS in, natančneje, v procesni pomnilnik LSASS.Exe. Težava je v tem, da se šifriranje gesla izvaja s standardnima Win32 funkcijama LsaProtectMemory in LsaUnprotectMemory, ki sta namenjeni šifriranju / dešifriranju določenega dela pomnilnika. Utility French Developers mimikatz vam omogoča, da prejemate šifrirane podatke iz pomnilnika in jih dešifrirate s funkcijo LsaUnprotectMemory, kar vam omogoča prikaz vseh uporabniških računov, pooblaščenih v sistemu, in njihovih gesel (v odprti, že dešifrirani obliki!). Za izkoriščanje ranljivosti mora napadalec imeti možnost, da v postopek lsass.exe pritrdi posebno knjižnico.
Prenesite pripomoček mimikatz lahko tukaj: http://blog.gentilkiwi.com/mimikatz
Informacije. Večina protivirusov in brskalnikov zazna pripomoček mimikatz kot potencialno nevarno programsko opremo (hekerski pripomoček).Pomožni program mimikatz vam omogoča, da uporabniška gesla izvlečete neposredno iz pomnilnika (z vbrizgavanjem knjižnice sekurlsa.dll v lsass.exe), iz shranjenega smetišča računalniškega pomnilnika ali celo iz datoteke hibernacije..
Mimikatz uporabljamo za pridobivanje uporabniških gesel iz lsass.exe na spletu
- Prenesite in zaženite Mimikatz.exe s skrbniškimi pravicami (obstajajo različice pripomočka x86 in x64 za ustrezne sisteme)
- V okviru pripomočka zaženite ukaze
mimikatz # privilegij :: odpravljanje napak
mimikatz # sekurlsa :: prijavaPasswords full
(zadnji ukaz za vse aktivne uporabnike v sistemu bo prikazal imena računov in njihova gesla).
Kot vidite, nam je pripomoček v jasnem besedilu pokazal super zapleteno geslo uporabniškega uporabnika! Vse to je posledica dejstva, da je v tem računalniku dovoljena uporaba načina za odpravljanje napak z nastavitvijo zastave SeDebugPrivilege za želeni postopek. V tem načinu lahko programi prejmejo dostop do pomnilnika procesov, ki tečejo v imenu sistema.
Predstavljajte si, da gre za terminalski strežnik, na katerem hkrati deluje veliko uporabnikov in na katerem med drugim poteka seja skrbnika podjetja. I.e. če imate na enem strežniku skrbniške pravice, lahko celo prestrežete geslo skrbnika domene.
Opomba. Junija 2017 je bilo veliko velikih podjetij v Rusiji, Ukrajini in drugih državah okuženih z virusom ne-petya ransomware, ki ga je integrirani modul mimikatz uporabljal za zbiranje gesel uporabnikov in skrbnikov domene.Opomba. Ta tehnika ne bo delovala, če je v sistemu sodoben antivirus, ki blokira injiciranje. V tem primeru boste morali najprej ustvariti pomnilniški pomnilnik stroja in že na drugem stroju "potegniti" gesla z njega za seje vseh uporabnikov.Pridobivanje uporabniškega gesla s pomnilnika Windows
Pomnilniški smetišče za postopek LSASS je mogoče dobiti s funkcijo PowerShell Out-Minidump.ps1. Uvozite funkcijo Out-Minidump v PoSh in izstavite procesni pomnilnik LSASS:
Get-Process lsass | Izven minidump
Nastali pomnilnik pomnilnika v našem primeru je lsass_592.dmp (privzeto je shranjena v imeniku% windir \ system32%), jo morate kopirati v drug računalnik, ki ima pripomoček mimikatz in zaženite ukaz:
Mimikatz “sekurlsa :: minidump lsass_592.dmp”
Z naslednjim ukazom dobimo iz shranjenega pomnilniškega seznama seznam uporabnikov, ki delajo v sistemu, in njihova gesla:
mimikatz # sekurlsa :: prijavaPasswords
Kot vidite, nič zapletenega.
Na ta način lahko dobite pomnilniški pomnilnik iz oddaljenega računalnika s pomočjo psexeca ali prek WinRM (če imate skrbniške pravice) in iz njega izvlečete uporabniško geslo.
Pridobivanje uporabniških gesel iz datotek navidezne naprave in datotek hibernacije
Pojdi naprej. Z enostavnimi manipulacijami napadalec lahko preprosto izvleče uporabniška gesla iz datotek iz pomnilniškega zapisa, sistemske datoteke za hibernacijo (hiberfil.sys) in. datoteke vmem navideznih strojev (izmenjalne datoteke virtualnih strojev in njihove posnetke).
Če želite to narediti, potrebujete paket Odpravljanje napak Orodje za Windows (WinDbg), sebe mimikatz in pretvorbeni pripomoček .vmem v pomnilniško datoteko (za Hyper-V je lahko vm2dmp.exe ali MoonSols Windows Memory Toolkit za vmem datoteke VMWare).
Na primer, če je potrebno, pretvorite datoteko swap vmem navideznega stroja VMWare v smetišče, izvedite ukaz:
bin2dmp.exe "winrv2008r2.vmem" vmware.dmp
Nastali smetišče naložimo v WinDbg (Datoteka -> Open Crash Dump), naložimo knjižnico mimikatz z imenom mimilib.dll (izberite različico glede na bitno globino sistema):
.obremeniti mimilib.dll
Na smetišču iščemo postopek lsass.exe:
!postopek 0 0 lsass.exe
In na koncu vtipkamo:
.postopek / r / p fffffa800e0b3b30
!mimikatz
in dobite seznam uporabnikov sistema Windows in njihova gesla v jasnem besedilu.
Pridobivanje gesel uporabnikov sistema Windows v odprti obliki s pomočjo pripomočka Mimikatz deluje v naslednjih sistemih, vključno s tistimi, ki delujejo na različnih različicah Hyper-V 2008/2012 in VMWare:
- Windows Server 2008/2008 R2
- Windows Server 2012 / R2
- Windows 7
- Windows 8
Uporaba Mimikatza v napadih mimo
V primeru, da uporabniškega gesla ni mogoče dobiti, ampak le njegovo hash, se lahko Mimikatz uporabi za tako imenovani napad pass-the-hash (ponovna uporaba hash-a). V tem primeru se lahko hash uporabi za začetek procesov v imenu uporabnika. Na primer, ko prejme uporabniški hash NTLM, bo naslednji ukaz v imenu privilegiranega računa sprožil ukazni poziv:sekurlsa :: pth / uporabnik: Administrator / domena: CORP / ntlm: NTLM hash / run: cmd
Kako zaščititi Windows pred črpanjem gesel iz pomnilnika prek mimikatza?
V sistemih Windows 8.1 in Server 2012 R2 (in novejših) je možnost črpanja gesel prek sistema LSASS nekoliko omejena. Torej ti sistemi privzeto ne shranijo LM hash-a in gesla v čistem besedilu v pomnilnik. Enaka funkcionalnost je podprta s starejšimi različicami sistema Windows (7/8 / 2008R2 / 2012), v katere morate namestiti posebno posodobitev KB2871997 (posodobitev ponuja druge priložnosti za povečanje varnosti sistema) in v veji HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest nastavite parameter DWORD registra UseLogonCredential enako 0 (WDigest je onemogočen).
Če po namestitvi posodobitve in UseLogonCredential ključa poskusite izvleči gesla iz pomnilnika, boste videli, da mimikats ne more izvleči gesel in hešsov z ukazom creds_wdigest.
Če imate skrbniške pravice, lahko ta ključ enostavno spremenite:
reg dodaj HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest / v UseLogonCredential / t REG_DWORD / d 1
Po tem lahko znova dostopate do gesel v LSA pomnilniku.
Orodje mimikatz vsebuje tudi druga orodja za pridobivanje gesel in njihovih hešev iz pomnilnika (WDigest, LM-hash, NTLM-hash, Kerberos modul za zajemanje vozovnic), zato priporočamo, da kot priporočila izvedete naslednje ukrepe:
- Zavrnite shranjevanje gesel z uporabo reverzibilne šifriranja
- Onemogoči NTLM
- Prepovedati uporabo shranjenih gesel v upravitelju poverilnic
- Zavrni predpomnilniške podatke uporabnikov domene (ključ CachedLogonsCount in interaktivna prijava: Število prejšnjih prijav za pravilnik predpomnilnika)
- Če funkcionalna raven domene ni nižja od Windows Server 2012 R2, lahko v posebno skupino zaščitenih uporabnikov dodate skrbniške račune.
Pri testiranju sistema mimkatz v sistemu Windows 10 Pro x64 z nastavitvami je mimkatz 2.0 lahko dobil šifre gesla aktivnega uporabnika (ne pa tudi gesla v jasnem besedilu).
V starejših sistemih morate kot rešitev rešiti omejitev pridobivanja pravic za odpravljanje napak in prek registra onemogočiti največjega ponudnika varnosti. Za to v branži HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa poišči ključ Varnostni pakets in odstranite vrstico s seznama paketov wdigest. Vendar morate razumeti, da napadalcu z ustreznimi pravicami v registru ni težko vrniti nastavitev nazaj.
Sklepi. Še enkrat se spomnimo skupnih resnic:
- Ne uporabljajte istih gesel za različne storitve (zlasti terminalne, ki so v lasti tretjih oseb).
- Pomislite na varnost svojih geslov in podatkov, ki se nahajajo na virtualnih strojih v oblakih, saj ne morete biti prepričani, kdo ima še dostop do hipervizorjev in shrambe, v kateri se nahajajo datoteke navideznega računalnika.
- V sistemih zmanjšajte število računov, ki imajo lokalne skrbniške pravice (glejte vodnik za zaščito skrbniških računov v sistemu Windows)
- Nikoli se ne prijavite s skrbniškim računom domene na strežnike in računalnike, ki so dostopni drugim uporabnikom.