
Seatbelt es un proyecto en C# que realiza una serie de "comprobaciones de seguridad" orientadas a la auditoría de sistemas, relevantes tanto desde perspectivas de seguridad ofensiva como defensiva.
Seatbelt es un proyecto en C# que realiza una serie de 'comprobaciones de seguridad' orientadas al reconocimiento del host, relevantes tanto desde perspectivas ofensivas como defensivas.
El script HostEnum.ps1 de @andrewchiles y Get-HostProfile.ps1 de @tifkin_ sirvieron de inspiración para muchos de los artefactos a recopilar.
@harmj0y y @tifkin_ son los autores principales de esta implementación.
Seatbelt está licenciado bajo la licencia BSD 3-Cláusulas.
%&&@@@&&
&&&&&&&%%%, #&&@@@@@@%%%%%%###############%
&%& %&%% &////(((&%%%%%#%################//((((###%%%%%%%%%%%%%%%
%%%%%%%%%%%######%%%#%%####% &%%**# @////(((&%%%%%%######################(((((((((((((((((((
#%#%%%%%%%#######%#%%####### %&%,,,,,,,,,,,,,,,, @////(((&%%%%%#%#####################(((((((((((((((((((
#%#%%%%%%#####%%#%#%%####### %%%,,,,,, ,,. ,, @////(((&%%%%%%%######################(#(((#(#((((((((((
#####%%%#################### &%%...... ... .. @////(((&%%%%%%%###############%######((#(#(####((((((((
#######%##########%######### %%%...... ... .. @////(((&%%%%%#########################(#(#######((#####
###%##%%#################### &%%............... @////(((&%%%%%%%%##############%#######(#########((#####
#####%###################### %%%.. @////(((&%%%%%%%################
&%& %%%%% 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:** las búsquedas que apuntan a usuarios se ejecutarán para el usuario actual si no está elevado y para TODOS los usuarios si está elevado.
## Grupos de Comandos
**Nota:** muchos comandos realizan algún tipo de filtrado por defecto. Proporcionar el argumento `-full` evita el filtrado de la salida. Además, el grupo de comandos `all` ejecutará todas las comprobaciones actuales.
Por ejemplo, el siguiente comando ejecutará TODAS las comprobaciones y devolverá TODA la salida:
`Seatbelt.exe -group=all -full`
### system
Ejecuta comprobaciones que extraen datos interesantes sobre el sistema.
Ejecutado con: `Seatbelt.exe -group=system`
| Comando | Descripción |
| ----------- | ----------- |
| AMSIProviders | Proveedores registrados para AMSI |
| AntiVirus | Antivirus registrado (a través de WMI) |
| AppLocker | Configuración de AppLocker, si está instalado |
| ARPTable | Lista la tabla ARP actual e información del adaptador (equivalente a arp -a) |
| AuditPolicies | Enumera la configuración de políticas de auditoría clásicas y avanzadas |
| AuditPolicyRegistry | Configuración de auditoría a través del registro |
| AutoRuns | Ejecutables/scripts/programas de ejecución automática |
| Certificates | Archivos de certificados personales del usuario y la máquina |
| CertificateThumbprints | Huellas digitales de todos los certificados del almacén de certificados del sistema |
| CredGuard | Configuración de CredentialGuard |
| DNSCache | Entradas de caché DNS (a través de WMI) |
| DotNet | Versiones de DotNet |
| EnvironmentPath | Carpetas actuales de %PATH$ del entorno e información SDDL |
| EnvironmentVariables | Variables de entorno del usuario actual |
| Hotfixes | Revisiones instaladas (a través de WMI) |
| InterestingProcesses | Procesos "interesantes": productos defensivos y herramientas de administración |
| InternetSettings | Configuración de Internet, incluyendo configuraciones de proxy |
| LAPS | Configuración de LAPS, si está instalado |
| LastShutdown | Devuelve la fecha y hora del último apagado del sistema (a través del registro) |
| LocalGPOs | Configuración de directiva de grupo local aplicada a la máquina/usuarios locales |
| LocalGroups | Grupos locales no vacíos, "full" muestra todos los grupos (argumento == nombre del equipo a enumerar) |
| LocalUsers | Usuarios locales, si están activos/deshabilitados y última fecha de contraseña (argumento == nombre del equipo a enumerar) |
| LogonSessions | Eventos de inicio de sesión (Id. de evento 4624) del registro de eventos de seguridad. Por defecto 10 días, argumento == últimos X días. |
| LSASettings | Configuración de LSA (incluyendo paquetes de autenticación) |
| McAfeeConfigs | Encuentra archivos de configuración de McAfee |
| NamedPipes | Nombres de tuberías con nombre e información ACL legible |
| NetworkProfiles | Perfiles de red de Windows |
| NetworkShares | Recursos compartidos de red expuestos por la máquina (a través de WMI) |
| NTLMSettings | Configuración de autenticación NTLM |
| OptionalFeatures | TODO |
| OSInfo | Información básica del sistema operativo (p. ej., arquitectura, versión del SO, etc.) |
| PoweredOnEvents | Programa de reinicios y suspensión basado en los Id. de evento 1, 12, 13, 42 y 6008 del registro de eventos del sistema. Por defecto 7 días, argumento == últimos X días. |
| PowerShell | Versiones de PowerShell y configuración de seguridad |
| Processes | Procesos en ejecución con nombres de compañía de información de archivo que no contienen 'Microsoft', "full" enumera todos los procesos |
| PSSessionSettings | Enumera la configuración de sesión PS desde el registro |
| RDPSessions | Sesiones RDP entrantes actuales (argumento == nombre del equipo a enumerar) |
| RDPsettings | Configuración del servidor/cliente de escritorio remoto |
| SCCM | Configuración de System Center Configuration Manager (SCCM), si corresponde |
| Services | Servicios con nombres de compañía de información de archivo que no contienen 'Microsoft', "full" vuelca todos los procesos |
| Sysmon | Configuración de Sysmon desde el registro |
| TcpConnections | Conexiones TCP actuales y sus procesos y servicios asociados |
| TokenPrivileges | Privilegios de token actualmente habilitados (p. ej., SeDebugPrivilege/etc.) |
| UAC | Políticas de sistema de UAC a través del registro |
| UdpConnections | Conexiones UDP actuales y procesos y servicios asociados |
| UserRightAssignments | Asignaciones de derechos de usuario configuradas (p. ej., SeDenyNetworkLogonRight, SeShutdownPrivilege, etc.) argumento == nombre del equipo a enumerar |
| WifiProfile | TODO |
| WindowsAutoLogon | Información de inicio de sesión automático del registro |
| WindowsDefender | Configuración de Windows Defender (incluyendo ubicaciones de exclusión) |
| WindowsEventForwarding | Configuración de reenvío de eventos de Windows (WEF) a través del registro |
| WindowsFirewall | Reglas de firewall no estándar, "full" vuelca todas (argumentos == allow/deny/tcp/udp/in/out/domain/private/public) |
| WMIEventConsumer | Lista los consumidores de eventos WMI |
| WMIEventFilter | Lista los filtros de eventos WMI |
| WMIFilterBinding | Lista los enlaces de filtro a consumidor WMI |
| WSUS | Configuración de Windows Server Update Services (WSUS), si corresponde |
### user
Ejecuta comprobaciones que extraen datos interesantes sobre el usuario actualmente conectado (si no está elevado) o TODOS los usuarios (si está elevado).
Ejecutado con: `Seatbelt.exe -group=user`
| Comando | Descripción |
| ----------- | ----------- |
| Certificates | Archivos de certificados personales del usuario y la máquina |
| CertificateThumbprints | Huellas digitales de todos los certificados del almacén de certificados del sistema |
| ChromiumPresence | Comprueba si existen archivos interesantes de Chrome/Edge/Brave/Opera |
| CloudCredentials | Archivos de credenciales en la nube de AWS/Google/Azure |
| CloudSyncProviders | TODO |
| CredEnum | Enumera las credenciales guardadas del usuario actual usando CredEnumerate() |
| dir | Lista archivos/carpetas. Por defecto, lista las carpetas de descargas, documentos y escritorio de los usuarios (argumentos == \<directorio\> \<profundidad\> \<regex\> |
| DpapiMasterKeys | Lista las claves maestras DPAPI |
| Dsregcmd | TODO |
| ExplorerMRUs | Archivos usados más recientemente por el Explorador (últimos 7 días, argumento == últimos X días) |
| ExplorerRunCommands | Comandos "ejecutar" recientes del Explorador |
| FileZilla | Archivos de configuración de FileZilla |
| FirefoxPresence | Comprueba si existen archivos interesantes de Firefox |
| IdleTime | Devuelve el número de segundos desde la última entrada del usuario actual. |
| IEFavorites | Favoritos de Internet Explorer |
| IETabs | Pestañas abiertas de Internet Explorer |
| IEUrls| URL escritas en Internet Explorer (últimos 7 días, argumento == últimos X días) |
| KeePass | TODO |
| MappedDrives | Unidades asignadas de los usuarios (a través de WMI) |
| OfficeMRUs | Lista de archivos usados más recientemente por Office (últimos 7 días) |
| OneNote | TODO |
| OracleSQLDeveloper | TODO |
| PowerShellHistory | Itera a través de cada usuario local e intenta leer su historial de consola de PowerShell; si tiene éxito, lo imprime |
| PuttyHostKeys | Claves de host SSH de Putty guardadas |
| PuttySessions | Configuración guardada de Putty (campos interesantes) y claves de host SSH |
| RDCManFiles | Archivos de configuración del Administrador de conexiones de escritorio remoto de Windows |
| RDPSavedConnections | Conexiones RDP guardadas almacenadas en el registro |
| SecPackageCreds | Obtiene credenciales de paquetes de seguridad |
| SlackDownloads | Analiza cualquier archivo 'slack-downloads' encontrado |
| SlackPresence | Comprueba si existen archivos interesantes de Slack |
| SlackWorkspaces | Analiza cualquier archivo 'slack-workspaces' encontrado |
| SuperPutty | Archivos de configuración de SuperPutty |
| TokenGroups | Grupos locales y de dominio del token actual |
| WindowsCredentialFiles | Blobs DPAPI de credenciales de Windows |
| WindowsVault | Credenciales guardadas en el Almacén de Windows (p. ej., inicios de sesión de Internet Explorer y Edge). |
### misc
Ejecuta todas las comprobaciones misceláneas.
Ejecutado con: `Seatbelt.exe -group=misc`
| Comando | Descripción |
| ----------- | ----------- |
| ChromiumBookmarks | Analiza cualquier archivo de marcadores de Chrome/Edge/Brave/Opera encontrado |
| ChromiumHistory | Analiza cualquier archivo de historial de Chrome/Edge/Brave/Opera encontrado |
| ExplicitLogonEvents | Eventos de inicio de sesión explícito (Id. de evento 4648) del registro de eventos de seguridad. Por defecto 7 días, argumento == últimos X días. |
| FileInfo | Información sobre un archivo (información de versión, marcas de tiempo, información básica de PE, etc. argumento(s) == ruta(s) de archivo |
| FirefoxHistory | Analiza cualquier archivo de historial de Firefox encontrado |
| InstalledProducts | Productos instalados a través del registro |
| InterestingFiles | Archivos "interesantes" que coinciden con varios patrones en la carpeta del usuario. Nota: consume tiempo no trivial. |
| LogonEvents | Eventos de inicio de sesión (Id. de evento 4624) del registro de eventos de seguridad. Por defecto 10 días, argumento == últimos X días. |
| LOLBAS | Localiza binarios y scripts Living Off The Land (LOLBAS) en el sistema. Nota: consume tiempo no trivial. |
| McAfeeSiteList | Descifra cualquier archivo de configuración McAfee SiteList.xml encontrado. |
| MicrosoftUpdates | Todas las actualizaciones de Microsoft (a través de COM) |
| OutlookDownloads | Lista archivos descargados por Outlook |
| PowerShellEvents | Registros de bloques de script de PowerShell (4104) con datos sensibles. |
| Printers | Impresoras instaladas (a través de WMI) |
| ProcessCreationEvents | Registros de creación de procesos (4688) con datos sensibles. |
| ProcessOwners | Lista de procesos en ejecución que no son de sesión 0 con propietarios. Para uso remoto. |
| RecycleBin | Elementos en la Papelera de reciclaje eliminados en los últimos 30 días - ¡solo funciona desde un contexto de usuario! |
| reg | Valores de clave de registro (HKLM\Software por defecto) argumento == [Ruta] [intProfundidad] [Regex] [boolIgnoreErrors] |
| RPCMappedEndpoints | Puntos finales RPC actuales mapeados |
| ScheduledTasks | Tareas programadas (a través de WMI) que no son creadas por 'Microsoft', "full" vuelca todas las tareas programadas |
| SearchIndex | Resultados de consulta del Índice de búsqueda de Windows, término por defecto 'password'. (argumento(s) == \<ruta de búsqueda\> \<patrón1,patrón2,...\> |
| SecurityPackages | Enumera los paquetes de seguridad actualmente disponibles usando EnumerateSecurityPackagesA() |
| SysmonEvents | Registros de creación de procesos de Sysmon (1) con datos sensibles. |
### Grupos de Comandos Adicionales
Ejecutado con: `Seatbelt.exe -group=NOMBREGRUPO`
| Alias | Descripción |
| ----------- | ----------- |
| Slack | Ejecuta módulos que comienzan con "Slack*" |
| Chromium | Ejecuta módulos que comienzan con "Chromium*" |
| Remote | Ejecuta los siguientes módulos (para usar contra 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 |
## Argumentos de Comandos
Los comandos que aceptan argumentos lo tienen indicado en su descripción. Para pasar un argumento a un comando, encierre el comando y los argumentos entre comillas dobles.
Por ejemplo, el siguiente comando devuelve eventos de inicio de sesión 4624 de los últimos 30 días:
`Seatbelt.exe "LogonEvents 30"`
El siguiente comando consulta un registro tres niveles de profundidad, devolviendo solo claves/nombres de valor/valores que coincidan con la expresión regular `.*defini.*`, e ignorando cualquier error que ocurra.
`Seatbelt.exe "reg \"HKLM\SOFTWARE\Microsoft\Windows Defender\" 3 .*defini.* true"`
## Salida
Seatbelt puede redirigir su salida a un archivo con el argumento `-outputfile="C:\Path\file.txt"`. Si la ruta del archivo termina en .json, la salida será json estructurado.
Por ejemplo, el siguiente comando generará los resultados de las comprobaciones del sistema en un archivo txt:
`Seatbelt.exe -group=system -outputfile="C:\Temp\system.txt"`
## Enumeración Remota
Los comandos marcados con un + en el menú de ayuda se pueden ejecutar de forma remota contra otro sistema. Esto se realiza a través de WMI mediante consultas para clases WMI y StdRegProv de WMI para la enumeración del registro.
Para enumerar un sistema remoto, proporcione `-computername=COMPUTER.DOMAIN.COM`; se puede especificar un nombre de usuario y contraseña alternativos con `-username=DOMAIN\USER -password=PASSWORD`
Por ejemplo, el siguiente comando ejecuta comprobaciones enfocadas en remoto contra un sistema remoto:
`Seatbelt.exe -group=remote -computername=192.168.230.209 -username=THESHIRE\sam -password="yum \"po-ta-toes\""`
## Construcción de Módulos Propios
La estructura de Seatbelt es completamente modular, lo que permite agregar módulos de comando adicionales a la estructura de archivos y cargarlos dinámicamente.
Hay una plantilla de módulo de comando comentada en `.\Seatbelt\Commands\Template.cs` para referencia. Una vez construido, coloque el módulo en la ubicación del archivo lógico, inclúyalo en el proyecto en el Explorador de soluciones de Visual Studio y compile.
## Instrucciones de Compilación
No planeamos lanzar binarios para Seatbelt, por lo que tendrá que compilarlo usted mismo.
Seatbelt se ha compilado para .NET 3.5 y 4.0 con características de C# 8.0 y es compatible con [Visual Studio Community Edition](https://visualstudio.microsoft.com/downloads/). Simplemente abra el archivo .sln del proyecto, seleccione "release" y compile. Para cambiar la versión de .NET Framework de destino, [modifique la configuración del proyecto](https://github.com/GhostPack/Seatbelt/issues/27) y reconstruya el proyecto.
## Agradecimientos
Seatbelt incorpora varios elementos de recopilación, fragmentos de código C# y partes de PoCs encontradas a lo largo de la investigación para sus capacidades. Estas ideas, fragmentos y autores se destacan en las ubicaciones apropiadas en el código fuente, e incluyen:* [@andrewchiles](https://twitter.com/andrewchiles)' [HostEnum.ps1](https://github.com/threatexpress/red-team-scripts/blob/master/HostEnum.ps1) script y [Get-HostProfile.ps1](https://github.com/leechristensen/Random/blob/master/PowerShellScripts/Get-HostProfile.ps1) de [@tifkin\_](https://twitter.com/tifkin_) sirvieron de inspiración para muchos de los artefactos a recolectar.
* [Código de Boboes sobre NetLocalGroupGetMembers](https://stackoverflow.com/questions/33935825/pinvoke-netlocalgroupgetmembers-runs-into-fatalexecutionengineerror/33939889#33939889)
* [Código de ambyte para convertir una letra de unidad asignada en una ruta de red](https://gist.github.com/ambyte/01664dc7ee576f69042c)
* [Código de Igor Korkhov para recuperar información del grupo de tokens actual](https://stackoverflow.com/questions/2146153/how-to-get-the-logon-sid-in-c-sharp/2146418#2146418)
* [Fragmento de RobSiklos para determinar si un host es una máquina virtual](https://stackoverflow.com/questions/498371/how-to-detect-if-my-application-is-running-in-a-virtual-machine/11145280#11145280)
* [Fragmento de JGU sobre comparación de derechos ACL de archivos/carpetas](https://stackoverflow.com/questions/1410127/c-sharp-test-if-user-has-write-access-to-a-folder/21996345#21996345)
* [Patrón de Rod Stephens para enumeración recursiva de archivos](http://csharphelper.com/blog/2015/06/find-files-that-match-multiple-patterns-in-c/)
* [Fragmento de SwDevMan81 para enumerar privilegios del token actual](https://stackoverflow.com/questions/4349743/setting-size-of-token-privileges-luid-and-attributes-array-returned-by-gettokeni)
* [Trabajo de Jared Atkinson en PowerShell sobre cachés de tickets Kerberos](https://github.com/Invoke-IR/ACE/blob/master/ACE-Management/PS-ACE/Scripts/ACE_Get-KerberosTicketCache.ps1)
* [Fragmento de Kerberos en C# de darkmatter08](https://www.dreamincode.net/forums/topic/135033-increment-memory-pointer-issue/)
* Numerosas muestras de [PInvoke.net](https://www.pinvoke.net/) <3
* [Increíble CodeProject de Jared Hill para usar la Autoridad de Seguridad Local para enumerar sesiones de usuario](https://www.codeproject.com/Articles/18179/Using-the-Local-Security-Authority-to-Enumerate-Us)
* [Código de Fred sobre consulta de la caché ARP](https://social.technet.microsoft.com/Forums/lync/en-US/e949b8d6-17ad-4afc-88cd-0019a3ac9df9/powershell-alternative-to-arp-a?forum=ITCG)
* [Fragmento de ShuggyCoUk sobre consulta de la tabla de conexiones TCP](https://stackoverflow.com/questions/577433/which-pid-listens-on-a-given-port-in-c-sharp/577660#577660)
* [Ejemplo de yizhang82 de usar reflexión para interactuar con objetos COM a través de C#](https://gist.github.com/yizhang82/a1268d3ea7295a8a1496e01d60ada816)
* [Proyecto SharpWeb](https://github.com/djhohnstein/SharpWeb/blob/master/Edge/SharpEdge.cs) de [@djhohnstein](https://twitter.com/djhohnstein)
* [Proyecto EventLogParser](https://github.com/djhohnstein/EventLogParser) de [@djhohnstein](https://twitter.com/djhohnstein)
* [Proyecto SharpCloud](https://github.com/chrismaddalena/SharpCloud) de [@cmaddalena](https://twitter.com/cmaddalena), BSD 3-Cláusula
* [Proyecto Watson](https://github.com/rasta-mouse/Watson/) de [@_RastaMouse](https://twitter.com/_RastaMouse), Licencia GPL
* [Trabajo de @_RastaMouse sobre enumeración de AppLocker](https://rastamouse.me/2018/09/enumerating-applocker-config/)
* [Proyecto Invoke-WCMDump](https://github.com/peewpw/Invoke-WCMDump/blob/master/Invoke-WCMDump.ps1) de [@peewpw](https://twitter.com/peewpw), Licencia GPL
* [Proyecto HoneyBadger](https://github.com/trustedsec/HoneyBadger/tree/master/modules/post/windows/gather) de TrustedSec, BSD 3-Cláusula
* [Proyecto Audit User Rights Assignment](https://www.centrel-solutions.com/support/tools.aspx?feature=auditrights) de CENTRAL Solutions, Sin licencia
* Ideas de recolección inspiradas en [Reconerator](https://github.com/stufus/reconerator) de [@ukstufus](https://twitter.com/ukstufus)
* Información sobre ubicaciones MRU de Office y análisis de marcas de tiempo del artículo de Dustin Hurlbut [Microsoft Office 2007, 2010 - Registry Artifacts](https://ad-pdf.s3.amazonaws.com/Microsoft_Office_2007-2010_Registry_ArtifactsFINAL.pdf)
* La [lista de comandos de Windows](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands), utilizada para la construcción de expresiones regulares sensibles
* [Código de Ryan Ries para enumerar puntos finales RPC mapeados](https://stackoverflow.com/questions/21805038/how-do-i-pinvoke-rpcmgmtepeltinqnext)
* [Publicación de Chris Haas sobre EnumerateSecurityPackages()](https://stackoverflow.com/a/5941873)
* Trabajo de [darkoperator](https://github.com/ghostpack/seatbelt/blob/master/carlos_perez) [en el proyecto HoneyBadger](https://github.com/trustedsec/HoneyBadger)
* Trabajo de [@airzero24](https://twitter.com/airzero24) sobre [enumeración del registro WMI](https://github.com/airzero24/WMIReg)
* Respuesta de Alexandru sobre [alternativas a RegistryKey.OpenBaseKey](https://stackoverflow.com/questions/26217199/what-are-some-alternatives-to-registrykey-openbasekey-in-net-3-5)
* [Publicación de Tomas Vera sobre JavaScriptSerializer](http://www.tomasvera.com/programming/using-javascriptserializer-to-parse-json-objects/)
* [Nota de Marc Gravell sobre listar archivos/carpetas recursivamente](https://stackoverflow.com/a/929418)
* [Analizador de reglas Sysmon](https://github.com/mattifestation/PSSysmonTools/blob/master/PSSysmonTools/Code/SysmonRuleParser.ps1#L589-L595) de [@mattifestation](https://twitter.com/mattifestation)
* Algo de inspiración del [proyecto Simple.CredentialsManager](https://github.com/spolnik/Simple.CredentialsManager) de spolnik, licencia Apache 2
* [Esta publicación sobre la configuración de Credential Guard](https://www.tenforums.com/tutorials/68926-verify-if-device-guard-enabled-disabled-windows-10-a.html)
* [Este hilo](https://social.technet.microsoft.com/Forums/windows/en-US/b0e13a16-51a6-4aca-8d44-c85e097f882b/nametype-in-nla-information-for-a-network-profile) sobre información de perfiles de red
* Publicación de Mark McKinnon sobre [decodificar los valores SSID DateCreated y DateLastConnected](http://cfed-ttf.blogspot.com/2009/08/decoding-datecreated-and.html)
* Esta [publicación de Specops sobre el almacenamiento en caché de directivas de grupo](https://specopssoft.com/blog/things-work-group-policy-caching/)
* Publicación de sa_ddam213 en StackOverflow sobre [enumerar elementos en la Papelera de reciclaje](https://stackoverflow.com/questions/18071412/list-filenames-in-the-recyclebin-with-c-sharp-without-using-any-external-files)
* [Código de Kirill Osenkov para detección de ensamblados administrados](https://stackoverflow.com/a/15608028)
* El [proyecto Mono](https://github.com/mono/linux-packaging-mono/blob/d356d2b7db91d62b80a61eeb6fbc70a402ac3cac/external/corefx/LICENSE.TXT) para las clases SecBuffer/SecBufferDesc
* [Elad Shamir](https://twitter.com/elad_shamir) y su proyecto [Internal-Monologue](https://github.com/eladshamir/Internal-Monologue/), [Vincent Le Toux](https://twitter.com/mysmartlogon) por su proyecto [DetectPasswordViaNTLMInFlow](https://github.com/vletoux/DetectPasswordViaNTLMInFlow/), y Lee Christensen por este proyecto [GetNTLMChallenge](https://github.com/leechristensen/GetNTLMChallenge/). Todos ellos sirvieron de inspiración en el comando SecPackageCreds.
* El [proyecto Gopher](https://github.com/EncodeGroup/Gopher) de @leftp y @eksperience para inspiración de los comandos FileZilla y SuperPutty
* @funoverip por el código original de descifrado de McAfee SiteList.xml
* Hemos intentado hacer nuestra debida diligencia en las citas, pero si hemos omitido a alguien o algo, ¡por favor háganoslo saber!