
Seatbelt è un progetto in C# che esegue una serie di "controlli di sicurezza" di tipo host-survey orientati alla sicurezza, rilevanti sia da prospettive offensive che difensive.
Seatbelt è un progetto C# che esegue una serie di controlli di sicurezza orientati al rilevamento dell'host, rilevanti sia dal punto di vista offensivo che difensivo.
Lo script @andrewchiles HostEnum.ps1 e lo Get-HostProfile.ps1 di @tifkin_ hanno fornito ispirazione per molti degli artefatti da raccogliere.
@harmj0y e @tifkin_ sono i principali autori di questa implementazione.
Seatbelt è concesso in licenza sotto la licenza BSD 3-Clause.
%&&@@@&&
&&&&&&&%%%, #&&@@@@@@%%%%%%###############%
&%& %&%% &////(((&%%%%%#%################//((((###%%%%%%%%%%%%%%%
%%%%%%%%%%%######%%%#%%####% &%%**# @////(((&%%%%%%######################(((((((((((((((((((
#%#%%%%%%%#######%#%%####### %&%,,,,,,,,,,,,,,,, @////(((&%%%%%#%#####################(((((((((((((((((((
#%#%%%%%%#####%%#%#%%####### %%%,,,,,, ,,. ,, @////(((&%%%%%%%######################(#(((#(#((((((((((
#####%%%#################### &%%...... ... .. @////(((&%%%%%%%###############%######((#(#(####((((((((
#######%##########%######### %%%...... ... .. @////(((&%%%%%#########################(#(#######((#####
###%##%%#################### &%%............... @////(((&%%%%%%%%##############%#######(#########((#####
#####%###################### %%%.. @////(((&%%%%%%%################
&%& %%%%% Seatbelt %////(((&%%%%%%%%#############*
&%%&&&%%%%% v1.2.1 ,(((&%%%%%%%%%%%%%%%%%,
#%%%%##,
Available commands (+ means remote usage is supported):
+ AMSIProviders - Providers registered for AMSI
+ AntiVirus - Registered antivirus (via WMI)
+ AppLocker - AppLocker settings, if installed
ARPTable - Lists the current ARP table and adapter information (equivalent to arp -a)
AuditPolicies - Enumerates classic and advanced audit policy settings
+ AuditPolicyRegistry - Audit settings via the registry
+ AutoRuns - Auto run executables/scripts/programs
azuread - Return AzureAD info
Certificates - Finds user and machine personal certificate files
CertificateThumbprints - Finds thumbprints for all certificate store certs on the system
+ ChromiumBookmarks - Parses any found Chrome/Edge/Brave/Opera bookmark files
+ ChromiumHistory - Parses any found Chrome/Edge/Brave/Opera history files
+ ChromiumPresence - Checks if interesting Chrome/Edge/Brave/Opera files exist
+ CloudCredentials - AWS/Google/Azure/Bluemix cloud credential files
+ CloudSyncProviders - All configured Office 365 endpoints (tenants and teamsites) which are synchronised by OneDrive.
CredEnum - Enumerates the current user's saved credentials using CredEnumerate()
+ CredGuard - CredentialGuard configuration
dir - Lists files/folders. By default, lists users' downloads, documents, and desktop folders (arguments == [directory] [maxDepth] [regex] [boolIgnoreErrors]
+ DNSCache - DNS cache entries (via WMI)
+ DotNet - DotNet versions
+ DpapiMasterKeys - List DPAPI master keys
EnvironmentPath - Current environment %PATH$ folders and SDDL information
+ EnvironmentVariables - Current environment variables
+ ExplicitLogonEvents - Explicit Logon events (Event ID 4648) from the security event log. Default of 7 days, argument == last X days.
ExplorerMRUs - Explorer most recently used files (last 7 days, argument == last X days)
+ ExplorerRunCommands - Recent Explorer "run" commands
FileInfo - Information about a file (version information, timestamps, basic PE info, etc. argument(s) == file path(s)
+ FileZilla - FileZilla configuration files
+ FirefoxHistory - Parses any found FireFox history files
+ FirefoxPresence - Checks if interesting Firefox files exist
+ Hotfixes - Installed hotfixes (via WMI)
IdleTime - Returns the number of seconds since the current user's last input.
+ IEFavorites - Internet Explorer favorites
IETabs - Open Internet Explorer tabs
+ IEUrls - Internet Explorer typed URLs (last 7 days, argument == last X days)
+ InstalledProducts - Installed products via the registry
InterestingFiles - "Interesting" files matching various patterns in the user's folder. Note: takes non-trivial time.
+ InterestingProcesses - "Interesting" processes - defensive products and admin tools
InternetSettings - Internet settings including proxy configs and zones configuration
+ KeePass - Finds KeePass configuration files
+ LAPS - LAPS settings, if installed
+ LastShutdown - Returns the DateTime of the last system shutdown (via the registry).
LocalGPOs - Local Group Policy settings applied to the machine/local users
+ LocalGroups - Non-empty local groups, "-full" displays all groups (argument == computername to enumerate)
+ LocalUsers - Local users, whether they're active/disabled, and pwd last set (argument == computername to enumerate)
+ LogonEvents - Logon events (Event ID 4624) from the security event log. Default of 10 days, argument == last X days.
+ LogonSessions - Windows logon sessions
LOLBAS - Locates Living Off The Land Binaries and Scripts (LOLBAS) on the system. Note: takes non-trivial time.
+ LSASettings - LSA settings (including auth packages)
+ MappedDrives - Users' mapped drives (via WMI)
McAfeeConfigs - Finds McAfee configuration files
McAfeeSiteList - Decrypt any found McAfee SiteList.xml configuration files.
MicrosoftUpdates - All Microsoft updates (via COM)
MTPuTTY - MTPuTTY configuration files
NamedPipes - Named pipe names, any readable ACL information and associated process information.
+ NetworkProfiles - Windows network profiles
+ NetworkShares - Network shares exposed by the machine (via WMI)
+ NTLMSettings - NTLM authentication settings
OfficeMRUs - Office most recently used file list (last 7 days)
OneNote - List OneNote backup files
+ OptionalFeatures - List Optional Features/Roles (via WMI)
OracleSQLDeveloper - Finds Oracle SQLDeveloper connections.xml files
+ OSInfo - Basic OS info (i.e. architecture, OS version, etc.)
+ OutlookDownloads - List files downloaded by Outlook
+ PoweredOnEvents - Reboot and sleep schedule based on the System event log EIDs 1, 12, 13, 42, and 6008. Default of 7 days, argument == last X days.
+ PowerShell - PowerShell versions and security settings
+ PowerShellEvents - PowerShell script block logs (4104) with sensitive data.
+ PowerShellHistory - Searches PowerShell console history files for sensitive regex matches.
Printers - Installed Printers (via WMI)
+ ProcessCreationEvents - Process creation logs (4688) with sensitive data.
Processes - Running processes with file info company names that don't contain 'Microsoft', "-full" enumerates all processes
+ ProcessOwners - Running non-session 0 process list with owners. For remote use.
+ PSSessionSettings - Enumerates PS Session Settings from the registry
+ PuttyHostKeys - Saved Putty SSH host keys
+ PuttySessions - Saved Putty configuration (interesting fields) and SSH host keys
RDCManFiles - Windows Remote Desktop Connection Manager settings files
+ RDPSavedConnections - Saved RDP connections stored in the registry
+ RDPSessions - Current incoming RDP sessions (argument == computername to enumerate)
+ RDPsettings - Remote Desktop Server/Client Settings
RecycleBin - Items in the Recycle Bin deleted in the last 30 days - only works from a user context!
reg - Registry key values (HKLM\Software by default) argument == [Path] [intDepth] [Regex] [boolIgnoreErrors]
RPCMappedEndpoints - Current RPC endpoints mapped
+ SCCM - System Center Configuration Manager (SCCM) settings, if applicable
+ ScheduledTasks - Scheduled tasks (via WMI) that aren't authored by 'Microsoft', "-full" dumps all Scheduled tasks
SearchIndex - Query results from the Windows Search Index, default term of 'passsword'. (argument(s) == <search path> <pattern1,pattern2,...>
SecPackageCreds - Obtains credentials from security packages
+ SecureBoot - Secure Boot configuration
SecurityPackages - Enumerates the security packages currently available using EnumerateSecurityPackagesA()
Services - Services with file info company names that don't contain 'Microsoft', "-full" dumps all processes
+ SlackDownloads - Parses any found 'slack-downloads' files
+ SlackPresence - Checks if interesting Slack files exist
+ SlackWorkspaces - Parses any found 'slack-workspaces' files
+ SuperPutty - SuperPutty configuration files
+ Sysmon - Sysmon configuration from the registry
+ SysmonEvents - Sysmon process creation logs (1) with sensitive data.
TcpConnections - Current TCP connections and their associated processes and services
TokenGroups - The current token's local and domain groups
TokenPrivileges - Currently enabled token privileges (e.g. SeDebugPrivilege/etc.)
+ UAC - UAC system policies via the registry
UdpConnections - Current UDP connections and associated processes and services
UserRightAssignments - Configured User Right Assignments (e.g. SeDenyNetworkLogonRight, SeShutdownPrivilege, etc.) argument == computername to enumerate
WifiProfile - Enumerates the saved Wifi profiles and extract the ssid, authentication type, cleartext key/passphrase (when possible)
+ WindowsAutoLogon - Registry autologon information
WindowsCredentialFiles - Windows credential DPAPI blobs
+ WindowsDefender - Windows Defender settings (including exclusion locations)
+ WindowsEventForwarding - Windows Event Forwarding (WEF) settings via the registry
+ WindowsFirewall - Non-standard firewall rules, "-full" dumps all (arguments == allow/deny/tcp/udp/in/out/domain/private/public)
WindowsVault - Credentials saved in the Windows Vault (i.e. logins from Internet Explorer and Edge).
+ WMI - Runs a specified WMI query
WMIEventConsumer - Lists WMI Event Consumers
WMIEventFilter - Lists WMI Event Filters
WMIFilterBinding - Lists WMI Filter to Consumer Bindings
+ WSUS - Windows Server Update Services (WSUS) settings, if applicable
Seatbelt has the following command groups: All, User, System, Slack, Chromium, Remote, Misc
You can invoke command groups with "Seatbelt.exe <group>"
Or command groups except specific commands "Seatbelt.exe <group> -Command"
"Seatbelt.exe -group=all" runs all commands
"Seatbelt.exe -group=user" runs the following commands:
azuread, Certificates, CertificateThumbprints, ChromiumPresence, CloudCredentials,
CloudSyncProviders, CredEnum, dir, DpapiMasterKeys,
ExplorerMRUs, ExplorerRunCommands, FileZilla, FirefoxPresence,
IdleTime, IEFavorites, IETabs, IEUrls,
KeePass, MappedDrives, MTPuTTY, OfficeMRUs,
OneNote, OracleSQLDeveloper, PowerShellHistory, PuttyHostKeys,
PuttySessions, RDCManFiles, RDPSavedConnections, SecPackageCreds,
SlackDownloads, SlackPresence, SlackWorkspaces, SuperPutty,
TokenGroups, WindowsCredentialFiles, WindowsVault
"Seatbelt.exe -group=system" runs the following commands:
AMSIProviders, AntiVirus, AppLocker, ARPTable, AuditPolicies,
AuditPolicyRegistry, AutoRuns, Certificates, CertificateThumbprints,
CredGuard, DNSCache, DotNet, EnvironmentPath,
EnvironmentVariables, Hotfixes, InterestingProcesses, InternetSettings,
LAPS, LastShutdown, LocalGPOs, LocalGroups,
LocalUsers, LogonSessions, LSASettings, McAfeeConfigs,
NamedPipes, NetworkProfiles, NetworkShares, NTLMSettings,
OptionalFeatures, OSInfo, PoweredOnEvents, PowerShell,
Processes, PSSessionSettings, RDPSessions, RDPsettings,
SCCM, SecureBoot, Services, Sysmon,
TcpConnections, TokenPrivileges, UAC, UdpConnections,
UserRightAssignments, WifiProfile, WindowsAutoLogon, WindowsDefender,
WindowsEventForwarding, WindowsFirewall, WMI, WMIEventConsumer,
WMIEventFilter, WMIFilterBinding, WSUS
"Seatbelt.exe -group=slack" runs the following commands:
SlackDownloads, SlackPresence, SlackWorkspaces
"Seatbelt.exe -group=chromium" runs the following commands:
ChromiumBookmarks, ChromiumHistory, ChromiumPresence
"Seatbelt.exe -group=remote" runs the following commands:
AMSIProviders, AntiVirus, AuditPolicyRegistry, ChromiumPresence, CloudCredentials,
DNSCache, DotNet, DpapiMasterKeys, EnvironmentVariables,
ExplicitLogonEvents, ExplorerRunCommands, FileZilla, Hotfixes,
InterestingProcesses, KeePass, LastShutdown, LocalGroups,
LocalUsers, LogonEvents, LogonSessions, LSASettings,
MappedDrives, NetworkProfiles, NetworkShares, NTLMSettings,
OptionalFeatures, OSInfo, PoweredOnEvents, PowerShell,
ProcessOwners, PSSessionSettings, PuttyHostKeys, PuttySessions,
RDPSavedConnections, RDPSessions, RDPsettings, SecureBoot,
Sysmon, WindowsDefender, WindowsEventForwarding, WindowsFirewall
"Seatbelt.exe -group=misc" runs the following commands:
ChromiumBookmarks, ChromiumHistory, ExplicitLogonEvents, FileInfo, FirefoxHistory,
InstalledProducts, InterestingFiles, LogonEvents, LOLBAS,
McAfeeSiteList, MicrosoftUpdates, OutlookDownloads, PowerShellEvents,
Printers, ProcessCreationEvents, ProcessOwners, RecycleBin,
reg, RPCMappedEndpoints, ScheduledTasks, SearchIndex,
SecurityPackages, SysmonEvents
Examples: 'Seatbelt.exe [Command2] ...' will run one or more specified checks only 'Seatbelt.exe -full' will return complete results for a command without any filtering. 'Seatbelt.exe " [argument]"' will pass an argument to a command that supports it (note the quotes). 'Seatbelt.exe -group=all' will run ALL enumeration checks, can be combined with "-full". 'Seatbelt.exe -group=all -AuditPolicies' will run all enumeration checks EXCEPT AuditPolicies, can be combined with "-full". 'Seatbelt.exe -computername=COMPUTER.DOMAIN.COM [-username=DOMAIN\USER -password=PASSWORD]' will run an applicable check remotely 'Seatbelt.exe -group=remote -computername=COMPUTER.DOMAIN.COM [-username=DOMAIN\USER -password=PASSWORD]' will run remote specific checks 'Seatbelt.exe -group=system -outputfile="C:\Temp\out.txt"' will run system checks and output to a .txt file. 'Seatbelt.exe -group=user -q -outputfile="C:\Temp\out.json"' will run in quiet mode with user checks and output to a .json file.
**Nota:** le ricerche che hanno come target gli utenti verranno eseguite per l'utente corrente se non elevato e per TUTTI gli utenti se elevato.
## Gruppi di comandi
**Nota:** molti comandi eseguono un qualche tipo di filtro per impostazione predefinita. Fornire l'argomento `-full` impedisce il filtraggio dell'output. Inoltre, il gruppo di comandi `all` eseguirà tutti i controlli correnti.
Ad esempio, il comando seguente esegue TUTTI i controlli e restituisce TUTTO l'output:
`Seatbelt.exe -group=all -full`
### system
Esegue controlli che estraggono dati interessanti sul sistema.
Eseguito con: `Seatbelt.exe -group=system`
| Comando | Descrizione |
| ----------- | ----------- |
| AMSIProviders | Provider registrati per AMSI |
| AntiVirus | Antivirus registrati (tramite WMI) |
| AppLocker | Impostazioni di AppLocker, se installato |
| ARPTable | Elenca la tabella ARP corrente e le informazioni dell'adattatore (equivalente a arp -a) |
| AuditPolicies | Enumera le impostazioni dei criteri di controllo classici e avanzati |
| AuditPolicyRegistry | Impostazioni di controllo tramite il registro |
| AutoRuns | Eseguibili/script/programmi avviati automaticamente |
| Certificates | File di certificati personali utente e macchina |
| CertificateThumbprints | Impronte digitali per tutti i certificati nell'archivio certificati del sistema |
| CredGuard | Configurazione di CredentialGuard |
| DNSCache | Voci della cache DNS (tramite WMI) |
| DotNet | Versioni di .NET |
| EnvironmentPath | Cartelle correnti di %PATH$ e informazioni SDDL |
| EnvironmentVariables | Variabili d'ambiente dell'utente corrente |
| Hotfixes | Hotfix installati (tramite WMI) |
| InterestingProcesses | Processi "interessanti" – prodotti di difesa e strumenti di amministrazione |
| InternetSettings | Impostazioni Internet incluse le configurazioni proxy |
| LAPS | Impostazioni LAPS, se installato |
| LastShutdown | Restituisce la data e l'ora dell'ultimo spegnimento del sistema (tramite il registro) |
| LocalGPOs | Impostazioni dei Criteri di gruppo locali applicate alla macchina/utenti locali |
| LocalGroups | Gruppi locali non vuoti, "full" mostra tutti i gruppi (argomento == nome computer da enumerare) |
| LocalUsers | Utenti locali, se sono attivi/disabilitati e l'ultima impostazione della password (argomento == nome computer da enumerare) |
| LogonSessions | Eventi di accesso (Event ID 4624) dal registro eventi di sicurezza. Default di 10 giorni, argomento == ultimi X giorni. |
| LSASettings | Impostazioni LSA (inclusi i pacchetti di autenticazione) |
| McAfeeConfigs | Trova i file di configurazione di McAfee |
| NamedPipes | Nomi delle named pipe e qualsiasi informazione ACL leggibile |
| NetworkProfiles | Profili di rete Windows |
| NetworkShares | Condivisioni di rete esposte dalla macchina (tramite WMI) |
| NTLMSettings | Impostazioni di autenticazione NTLM |
| OptionalFeatures | TODO |
| OSInfo | Informazioni di base sul sistema (es. architettura, versione del sistema operativo, ecc.) |
| PoweredOnEvents | Programma di riavvio e sospensione basato sugli eventi del registro eventi di sistema EID 1, 12, 13, 42 e 6008. Default di 7 giorni, argomento == ultimi X giorni. |
| PowerShell | Versioni di PowerShell e impostazioni di sicurezza |
| Processes | Processi in esecuzione con nomi di società dal file info che non contengono 'Microsoft', "full" enumera tutti i processi |
| PSSessionSettings | Enumera le impostazioni delle sessioni PS dal registro |
| RDPSessions | Sessioni RDP in entrata correnti (argomento == nome computer da enumerare) |
| RDPsettings | Impostazioni del server/client Desktop remoto |
| SCCM | Impostazioni di System Center Configuration Manager (SCCM), se applicabile |
| Services | Servizi con nomi di società dal file info che non contengono 'Microsoft', "full" elenca tutti i processi |
| Sysmon | Configurazione di Sysmon dal registro |
| TcpConnections | Connessioni TCP correnti e i relativi processi e servizi associati |
| TokenPrivileges | Privilegi token attualmente abilitati (es. SeDebugPrivilege, ecc.) |
| UAC | Criteri di sistema UAC tramite il registro |
| UdpConnections | Connessioni UDP correnti e processi e servizi associati |
| UserRightAssignments | Assegnazioni dei diritti utente configurate (es. SeDenyNetworkLogonRight, SeShutdownPrivilege, ecc.) argomento == nome computer da enumerare |
| WifiProfile | TODO |
| WindowsAutoLogon | Informazioni di autologin dal registro |
| WindowsDefender | Impostazioni di Windows Defender (incluse le posizioni di esclusione) |
| WindowsEventForwarding | Impostazioni di Inoltro eventi di Windows (WEF) tramite il registro |
| WindowsFirewall | Regole firewall non standard, "full" elenca tutte (argomenti == allow/deny/tcp/udp/in/out/domain/private/public) |
| WMIEventConsumer | Elenca i consumer di eventi WMI |
| WMIEventFilter | Elenca i filtri di eventi WMI |
| WMIFilterBinding | Elenca i binding filtro-consumer WMI |
| WSUS | Impostazioni di Windows Server Update Services (WSUS), se applicabile |
### user
Esegue controlli che estraggono dati interessanti sull'utente attualmente connesso (se non elevato) o su TUTTI gli utenti (se elevato).
Eseguito con: `Seatbelt.exe -group=user`
| Comando | Descrizione |
| ----------- | ----------- |
| Certificates | File di certificati personali utente e macchina |
| CertificateThumbprints | Impronte digitali per tutti i certificati nell'archivio certificati del sistema |
| ChromiumPresence | Verifica se esistono file interessanti di Chrome/Edge/Brave/Opera |
| CloudCredentials | File di credenziali cloud AWS/Google/Azure |
| CloudSyncProviders | TODO |
| CredEnum | Enumera le credenziali salvate dell'utente corrente utilizzando CredEnumerate() |
| dir | Elenca file/cartelle. Per impostazione predefinita, elenca le cartelle download, documenti e desktop degli utenti (argomenti == \<directory\> \<profondità\> \<regex\> |
| DpapiMasterKeys | Elenca le chiavi master DPAPI |
| Dsregcmd | TODO |
| ExplorerMRUs | File usati più di recente in Explorer (ultimi 7 giorni, argomento == ultimi X giorni) |
| ExplorerRunCommands | Comandi "Esegui" recenti di Explorer |
| FileZilla | File di configurazione di FileZilla |
| FirefoxPresence | Verifica se esistono file interessanti di Firefox |
| IdleTime | Restituisce il numero di secondi dall'ultimo input dell'utente corrente. |
| IEFavorites | Preferiti di Internet Explorer |
| IETabs | Schede aperte di Internet Explorer |
| IEUrls | URL digitati in Internet Explorer (ultimi 7 giorni, argomento == ultimi X giorni) |
| KeePass | TODO |
| MappedDrives | Unità mappate degli utenti (tramite WMI) |
| OfficeMRUs | Elenco dei file usati più di recente in Office (ultimi 7 giorni) |
| OneNote | TODO |
| OracleSQLDeveloper | TODO |
| PowerShellHistory | Iterazione su ogni utente locale e tentativo di leggere la cronologia della console di PowerShell; se riuscito, la stampa |
| PuttyHostKeys | Chiavi host SSH Putty salvate |
| PuttySessions | Configurazione Putty salvata (campi interessanti) e chiavi host SSH |
| RDCManFiles | File di impostazioni di Windows Remote Desktop Connection Manager |
| RDPSavedConnections | Connessioni RDP salvate memorizzate nel registro |
| SecPackageCreds | Ottiene credenziali dai pacchetti di sicurezza |
| SlackDownloads | Analizza eventuali file 'slack-downloads' trovati |
| SlackPresence | Verifica se esistono file interessanti di Slack |
| SlackWorkspaces | Analizza eventuali file 'slack-workspaces' trovati |
| SuperPutty | File di configurazione di SuperPutty |
| TokenGroups | Gruppi locali e di dominio del token corrente |
| WindowsCredentialFiles | Blob DPAPI delle credenziali Windows |
| WindowsVault | Credenziali salvate in Windows Vault (es. login da Internet Explorer e Edge). |
### misc
Esegue tutti i controlli vari.
Eseguito con: `Seatbelt.exe -group=misc`
| Comando | Descrizione |
| ----------- | ----------- |
| ChromiumBookmarks | Analizza eventuali file di segnalibri di Chrome/Edge/Brave/Opera trovati |
| ChromiumHistory | Analizza eventuali file di cronologia di Chrome/Edge/Brave/Opera trovati |
| ExplicitLogonEvents | Eventi di accesso esplicito (Event ID 4648) dal registro eventi di sicurezza. Default di 7 giorni, argomento == ultimi X giorni. |
| FileInfo | Informazioni su un file (informazioni sulla versione, timestamp, informazioni PE di base, ecc. argomento(i) == percorso(i) file |
| FirefoxHistory | Analizza eventuali file di cronologia di Firefox trovati |
| InstalledProducts | Prodotti installati tramite il registro |
| InterestingFiles | File "interessanti" che corrispondono a vari modelli nella cartella dell'utente. Nota: richiede tempo non trascurabile. |
| LogonEvents | Eventi di accesso (Event ID 4624) dal registro eventi di sicurezza. Default di 10 giorni, argomento == ultimi X giorni. |
| LOLBAS | Individua i binari e script Living Off The Land (LOLBAS) sul sistema. Nota: richiede tempo non trascurabile. |
| McAfeeSiteList | Decifra eventuali file di configurazione McAfee SiteList.xml trovati. |
| MicrosoftUpdates | Tutti gli aggiornamenti Microsoft (tramite COM) |
| OutlookDownloads | Elenca i file scaricati da Outlook |
| PowerShellEvents | Log dei blocchi di script PowerShell (4104) con dati sensibili. |
| Printers | Stampanti installate (tramite WMI) |
| ProcessCreationEvents | Log di creazione processi (4688) con dati sensibili. |
| ProcessOwners | Elenco dei processi in esecuzione non di sessione 0 con proprietari. Per uso remoto. |
| RecycleBin | Elementi nel Cestino eliminati negli ultimi 30 giorni – funziona solo in un contesto utente! |
| reg | Valori delle chiavi di registro (HKLM\Software per default) argomento == [Percorso] [intProfondità] [Regex] [boolIgnoraErrori] |
| RPCMappedEndpoints | Endpoint RPC correnti mappati |
| ScheduledTasks | Attività pianificate (tramite WMI) non create da 'Microsoft', "full" elenca tutte le attività pianificate |
| SearchIndex | Risultati di query dall'indice di ricerca di Windows, termine predefinito 'password'. (argomento(i) == \<percorso di ricerca\> \<modello1,modello2,...\> |
| SecurityPackages | Enumera i pacchetti di sicurezza attualmente disponibili utilizzando EnumerateSecurityPackagesA() |
| SysmonEvents | Log di creazione processi Sysmon (1) con dati sensibili. |
### Gruppi di comandi aggiuntivi
Eseguito con: `Seatbelt.exe -group=NOMEGRUPPO`
| Alias | Descrizione |
| ----------- | ----------- |
| Slack | Esegue i moduli che iniziano con "Slack*" |
| Chromium | Esegue i moduli che iniziano con "Chromium*" |
| Remote | Esegue i seguenti moduli (per l'uso su un sistema remoto): AMSIProviders, AntiVirus, AuditPolicyRegistry, ChromiumPresence, CloudCredentials, DNSCache, DotNet, DpapiMasterKeys, EnvironmentVariables, ExplicitLogonEvents, ExplorerRunCommands, FileZilla, Hotfixes, InterestingProcesses, KeePass, LastShutdown, LocalGroups, LocalUsers, LogonEvents, LogonSessions, LSASettings, MappedDrives, NetworkProfiles, NetworkShares, NTLMSettings, OptionalFeatures, OSInfo, PoweredOnEvents, PowerShell, ProcessOwners, PSSessionSettings, PuttyHostKeys, PuttySessions, RDPSavedConnections, RDPSessions, RDPsettings, Sysmon, WindowsDefender, WindowsEventForwarding, WindowsFirewall |
## Argomenti dei comandi
I comandi che accettano argomenti lo hanno indicato nella loro descrizione. Per passare un argomento a un comando, racchiudere il comando e gli argomenti tra virgolette.
Ad esempio, il comando seguente restituisce gli eventi di accesso 4624 per gli ultimi 30 giorni:
`Seatbelt.exe "LogonEvents 30"`
Il comando seguente esegue una query nel registro a tre livelli di profondità, restituendo solo chiavi/valueName/valori che corrispondono all'espressione regolare `.*defini.*`, e ignorando qualsiasi errore che si verifichi.
`Seatbelt.exe "reg \"HKLM\SOFTWARE\Microsoft\Windows Defender\" 3 .*defini.* true"`
## Output
Seatbelt può reindirizzare il suo output in un file con l'argomento `-outputfile="C:\Path\file.txt"`. Se il percorso del file termina in .json, l'output sarà json strutturato.
Ad esempio, il comando seguente scriverà i risultati dei controlli di sistema in un file txt:
`Seatbelt.exe -group=system -outputfile="C:\Temp\system.txt"`
## Enumerazione remota
I comandi contrassegnati con un + nel menu di aiuto possono essere eseguiti in remoto su un altro sistema. Questo viene eseguito tramite WMI tramite query per classi WMI e StdRegProv di WMI per l'enumerazione del registro.
Per enumerare un sistema remoto, fornire `-computername=COMPUTER.DOMAIN.COM` – è possibile specificare un nome utente e una password alternativi con `-username=DOMINIO\UTENTE -password=PASSWORD`.
Ad esempio, il comando seguente esegue controlli focalizzati sul remoto su un sistema remoto:
`Seatbelt.exe -group=remote -computername=192.168.230.209 -username=THESHIRE\sam -password="yum \"po-ta-toes\""`
## Creazione di moduli personalizzati
La struttura di Seatbelt è completamente modulare, consentendo di inserire moduli di comando aggiuntivi nella struttura dei file e caricarli dinamicamente.
C'è un modello di modulo di comando commentato in `.\Seatbelt\Commands\Template.cs` come riferimento. Una volta costruito, inserire il modulo nella posizione logica del file, includerlo nel progetto in Visual Studio Solution Explorer e compilare.
## Istruzioni per la compilazione
Non abbiamo intenzione di rilasciare binari per Seatbelt, quindi dovrete compilare da soli.
Seatbelt è stato compilato con .NET 3.5 e 4.0 con funzionalità C# 8.0 ed è compatibile con [Visual Studio Community Edition](https://visualstudio.microsoft.com/downloads/). Basta aprire il file .sln del progetto, scegliere "release" e compilare. Per cambiare la versione di destinazione del framework .NET, [modificate le impostazioni del progetto](https://github.com/GhostPack/Seatbelt/issues/27) e ricostruite il progetto.
## Riconoscimenti
Seatbelt incorpora vari elementi di raccolta, frammenti di codice C# e parti di PoC trovati durante la ricerca per le sue capacità. Queste idee, frammenti e autori sono evidenziati nelle posizioni appropriate nel codice sorgente e includono:* [@andrewchiles](https://twitter.com/andrewchiles)' [HostEnum.ps1](https://github.com/threatexpress/red-team-scripts/blob/master/HostEnum.ps1) script e [@tifkin\_](https://twitter.com/tifkin_)'s [Get-HostProfile.ps1](https://github.com/leechristensen/Random/blob/master/PowerShellScripts/Get-HostProfile.ps1) hanno fornito ispirazione per molti degli artefatti da raccogliere.
* [Boboes' codice riguardante NetLocalGroupGetMembers](https://stackoverflow.com/questions/33935825/pinvoke-netlocalgroupgetmembers-runs-into-fatalexecutionengineerror/33939889#33939889)
* [ambyte's codice per convertire una lettera di unità mappata in un percorso di rete](https://gist.github.com/ambyte/01664dc7ee576f69042c)
* [Igor Korkhov's codice per recuperare le informazioni sul gruppo di token corrente](https://stackoverflow.com/questions/2146153/how-to-get-the-logon-sid-in-c-sharp/2146418#2146418)
* [RobSiklos' snippet per determinare se un host è una macchina virtuale](https://stackoverflow.com/questions/498371/how-to-detect-if-my-application-is-running-in-a-virtual-machine/11145280#11145280)
* [JGU's snippet sul confronto dei diritti ACL di file/cartella](https://stackoverflow.com/questions/1410127/c-sharp-test-if-user-has-write-access-to-a-folder/21996345#21996345)
* [Rod Stephens' pattern per l'enumerazione ricorsiva dei file](http://csharphelper.com/blog/2015/06/find-files-that-match-multiple-patterns-in-c/)
* [SwDevMan81's snippet per enumerare i privilegi del token corrente](https://stackoverflow.com/questions/4349743/setting-size-of-token-privileges-luid-and-attributes-array-returned-by-gettokeni)
* [Jared Atkinson's lavoro PowerShell sulle cache dei ticket Kerberos](https://github.com/Invoke-IR/ACE/blob/master/ACE-Management/PS-ACE/Scripts/ACE_Get-KerberosTicketCache.ps1)
* [darkmatter08's snippet C# per Kerberos](https://www.dreamincode.net/forums/topic/135033-increment-memory-pointer-issue/)
* Numerosi [PInvoke.net](https://www.pinvoke.net/) esempi <3
* [Jared Hill's fantastico CodeProject per usare Local Security Authority per enumerare le sessioni utente](https://www.codeproject.com/Articles/18179/Using-the-Local-Security-Authority-to-Enumerate-Us)
* [Fred's codice per interrogare la cache ARP](https://social.technet.microsoft.com/Forums/lync/en-US/e949b8d6-17ad-4afc-88cd-0019a3ac9df9/powershell-alternative-to-arp-a?forum=ITCG)
* [ShuggyCoUk's snippet per interrogare la tabella delle connessioni TCP](https://stackoverflow.com/questions/577433/which-pid-listens-on-a-given-port-in-c-sharp/577660#577660)
* [yizhang82's esempio di utilizzo della reflection per interagire con oggetti COM tramite C#](https://gist.github.com/yizhang82/a1268d3ea7295a8a1496e01d60ada816)
* [@djhohnstein](https://twitter.com/djhohnstein)'s [progetto SharpWeb](https://github.com/djhohnstein/SharpWeb/blob/master/Edge/SharpEdge.cs)
* [@djhohnstein](https://twitter.com/djhohnstein)'s [progetto EventLogParser](https://github.com/djhohnstein/EventLogParser)
* [@cmaddalena](https://twitter.com/cmaddalena)'s [progetto SharpCloud](https://github.com/chrismaddalena/SharpCloud), licenza BSD 3-Clause
* [@_RastaMouse](https://twitter.com/_RastaMouse)'s [progetto Watson](https://github.com/rasta-mouse/Watson/), licenza GPL
* [@_RastaMouse](https://twitter.com/_RastaMouse)'s [Lavoro sull'enumerazione di AppLocker](https://rastamouse.me/2018/09/enumerating-applocker-config/)
* [@peewpw](https://twitter.com/peewpw)'s [progetto Invoke-WCMDump](https://github.com/peewpw/Invoke-WCMDump/blob/master/Invoke-WCMDump.ps1), licenza GPL
* TrustedSec's [progetto HoneyBadger](https://github.com/trustedsec/HoneyBadger/tree/master/modules/post/windows/gather), licenza BSD 3-Clause
* CENTRAL Solutions's [progetto Audit User Rights Assignment](https://www.centrel-solutions.com/support/tools.aspx?feature=auditrights), nessuna licenza
* Idee di raccolta ispirate da [@ukstufus](https://twitter.com/ukstufus)'s [Reconerator](https://github.com/stufus/reconerator)
* Posizioni MRU di Office e informazioni sull'analisi dei timestamp dal documento di Dustin Hurlbut [Microsoft Office 2007, 2010 - Registry Artifacts](https://ad-pdf.s3.amazonaws.com/Microsoft_Office_2007-2010_Registry_ArtifactsFINAL.pdf)
* L'[elenco dei comandi di Windows](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands), utilizzato per la costruzione di regex sensibili
* [Ryan Ries' codice per l'enumerazione degli endpoint RPC mappati](https://stackoverflow.com/questions/21805038/how-do-i-pinvoke-rpcmgmtepeltinqnext)
* [Chris Haas' post su EnumerateSecurityPackages()](https://stackoverflow.com/a/5941873)
* [darkoperator](https://github.com/ghostpack/seatbelt/blob/HEAD/carlos_perez)'s lavoro [sul progetto HoneyBadger](https://github.com/trustedsec/HoneyBadger)
* [@airzero24](https://twitter.com/airzero24)'s lavoro sull'[enumerazione del registro WMI](https://github.com/airzero24/WMIReg)
* Risposta di Alexandru sulle [alternative a RegistryKey.OpenBaseKey](https://stackoverflow.com/questions/26217199/what-are-some-alternatives-to-registrykey-openbasekey-in-net-3-5)
* [Post di Tomas Vera su JavaScriptSerializer](http://www.tomasvera.com/programming/using-javascriptserializer-to-parse-json-objects/)
* [Nota di Marc Gravell sull'elencazione ricorsiva di file/cartelle](https://stackoverflow.com/a/929418)
* [@mattifestation](https://twitter.com/mattifestation)'s [parser di regole Sysmon](https://github.com/mattifestation/PSSysmonTools/blob/master/PSSysmonTools/Code/SysmonRuleParser.ps1#L589-L595)
* Un po' di ispirazione da spolnik's [progetto Simple.CredentialsManager](https://github.com/spolnik/Simple.CredentialsManager), licenza Apache 2
* [Questo post sulle impostazioni di Credential Guard](https://www.tenforums.com/tutorials/68926-verify-if-device-guard-enabled-disabled-windows-10-a.html)
* [Questo thread](https://social.technet.microsoft.com/Forums/windows/en-US/b0e13a16-51a6-4aca-8d44-c85e097f882b/nametype-in-nla-information-for-a-network-profile) sulle informazioni del profilo di rete
* Post di Mark McKinnon sulla [decodifica dei valori SSID DateCreated e DateLastConnected](http://cfed-ttf.blogspot.com/2009/08/decoding-datecreated-and.html)
* Questo [post di Specops sulla memorizzazione nella cache dei criteri di gruppo](https://specopssoft.com/blog/things-work-group-policy-caching/)
* Post di sa_ddam213 su StackOverflow sull'[enumerazione degli elementi nel Cestino](https://stackoverflow.com/questions/18071412/list-filenames-in-the-recyclebin-with-c-sharp-without-using-any-external-files)
* [Codice di Kirill Osenkov per il rilevamento di assembly gestiti](https://stackoverflow.com/a/15608028)
* Il [progetto Mono](https://github.com/mono/linux-packaging-mono/blob/d356d2b7db91d62b80a61eeb6fbc70a402ac3cac/external/corefx/LICENSE.TXT) per le classi SecBuffer/SecBufferDesc
* [Elad Shamir](https://twitter.com/elad_shamir) e il suo [progetto Internal-Monologue](https://github.com/eladshamir/Internal-Monologue/), [Vincent Le Toux](https://twitter.com/mysmartlogon) per il suo [progetto DetectPasswordViaNTLMInFlow](https://github.com/vletoux/DetectPasswordViaNTLMInFlow/), e Lee Christensen per questo [progetto GetNTLMChallenge](https://github.com/leechristensen/GetNTLMChallenge/). Tutti questi hanno servito come ispirazione nel comando SecPackageCreds.
* @leftp e @eksperience's [progetto Gopher](https://github.com/EncodeGroup/Gopher) per ispirazione per i comandi FileZilla e SuperPutty
* @funoverip per il codice originale di decifratura di McAfee SiteList.xml
Abbiamo cercato di fare la dovuta diligenza per le citazioni, ma se abbiamo dimenticato qualcuno/qualcosa, fatecelo sapere!