
Seatbelt est un projet C# qui effectue un certain nombre de "vérifications de sécurité" d'analyse des hôtes, pertinentes à la fois d'un point de vue offensif et défensif.
Seatbelt est un projet C# qui effectue un certain nombre de « vérifications de sécurité » orientées sécurité pour l'analyse de l'hôte, pertinentes tant du point de vue offensif que défensif.
Le script HostEnum.ps1 de @andrewchiles et le script Get-HostProfile.ps1 de @tifkin_ ont inspiré la collecte de nombreux artefacts.
@harmj0y et @tifkin_ sont les principaux auteurs de cette implémentation.
Seatbelt est sous licence 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.
**Remarque :** les recherches ciblant les utilisateurs s'exécuteront pour l'utilisateur actuel si non élevé et pour TOUS les utilisateurs si élevé.
## Groupes de commandes
**Remarque :** de nombreuses commandes effectuent un certain filtrage par défaut. Fournir l'argument `-full` empêche le filtrage de la sortie. De plus, le groupe de commandes `all` exécutera toutes les vérifications actuelles.
Par exemple, la commande suivante exécutera TOUTES les vérifications et renverra TOUTE la sortie :
`Seatbelt.exe -group=all -full`
### system
Exécute les vérifications qui extraient des données intéressantes sur le système.
Exécuté avec : `Seatbelt.exe -group=system`
| Commande | Description |
| ----------- | ----------- |
| AMSIProviders | Fournisseurs enregistrés pour AMSI |
| AntiVirus | Antivirus enregistré (via WMI) |
| AppLocker | Paramètres d'AppLocker, s'il est installé |
| ARPTable | Liste la table ARP actuelle et les informations sur les adaptateurs (équivalent à arp -a) |
| AuditPolicies | Énumère les paramètres de stratégie d'audit classiques et avancés |
| AuditPolicyRegistry | Paramètres d'audit via le registre |
| AutoRuns | Exécutables/scripts/programmes de démarrage automatique |
| Certificates | Fichiers de certificats personnels de l'utilisateur et de la machine |
| CertificateThumbprints | Empreintes pour tous les certificats du magasin de certificats sur le système |
| CredGuard | Configuration de CredentialGuard |
| DNSCache | Entrées du cache DNS (via WMI) |
| DotNet | Versions .NET |
| EnvironmentPath | Dossiers actuels de la variable d'environnement %PATH% et informations SDDL |
| EnvironmentVariables | Variables d'environnement de l'utilisateur actuel |
| Hotfixes | Correctifs installés (via WMI) |
| InterestingProcesses | Processus « intéressants » – produits de défense et outils d'administration |
| InternetSettings | Paramètres Internet, y compris les configurations de proxy |
| LAPS | Paramètres LAPS, s'il est installé |
| LastShutdown | Renvoie la date et l'heure du dernier arrêt du système (via le registre) |
| LocalGPOs | Paramètres de stratégie de groupe locale appliqués à la machine/aux utilisateurs locaux |
| LocalGroups | Groupes locaux non vides, « full » affiche tous les groupes (argument == nom d'ordinateur à énumérer) |
| LocalUsers | Utilisateurs locaux, s'ils sont actifs/désactivés, et date de dernière modification du mot de passe (argument == nom d'ordinateur à énumérer) |
| LogonSessions | Événements d'ouverture de session (ID d'événement 4624) du journal des événements de sécurité. Par défaut 10 jours, argument == derniers X jours. |
| LSASettings | Paramètres LSA (y compris les packages d'authentification) |
| McAfeeConfigs | Recherche les fichiers de configuration McAfee |
| NamedPipes | Noms des pipes nommés et informations ACL lisibles |
| NetworkProfiles | Profils réseau Windows |
| NetworkShares | Partages réseau exposés par la machine (via WMI) |
| NTLMSettings | Paramètres d'authentification NTLM |
| OptionalFeatures | À VENIR |
| OSInfo | Informations de base sur le système d'exploitation (architecture, version, etc.) |
| PoweredOnEvents | Calendrier de redémarrage et de mise en veille basé sur les ID d'événement 1, 12, 13, 42 et 6008 du journal des événements système. Par défaut 7 jours, argument == derniers X jours. |
| PowerShell | Versions PowerShell et paramètres de sécurité |
| Processes | Processus en cours d'exécution avec des noms de société d'informations de fichier qui ne contiennent pas 'Microsoft', « full » énumère tous les processus |
| PSSessionSettings | Énumère les paramètres de session PS à partir du registre |
| RDPSessions | Sessions RDP entrantes actuelles (argument == nom d'ordinateur à énumérer) |
| RDPsettings | Paramètres du serveur/client de bureau à distance |
| SCCM | Paramètres de System Center Configuration Manager (SCCM), le cas échéant |
| Services | Services avec des noms de société d'informations de fichier qui ne contiennent pas 'Microsoft', « full » vide tous les processus |
| Sysmon | Configuration Sysmon à partir du registre |
| TcpConnections | Connexions TCP actuelles et leurs processus et services associés |
| TokenPrivileges | Privilèges de jeton actuellement activés (par exemple SeDebugPrivilege, etc.) |
| UAC | Stratégies système UAC via le registre |
| UdpConnections | Connexions UDP actuelles et leurs processus et services associés |
| UserRightAssignments | Attributions de droits d'utilisateur configurées (par exemple SeDenyNetworkLogonRight, SeShutdownPrivilege, etc.) argument == nom d'ordinateur à énumérer |
| WifiProfile | À VENIR |
| WindowsAutoLogon | Informations d'ouverture de session automatique du registre |
| WindowsDefender | Paramètres de Windows Defender (y compris les emplacements d'exclusion) |
| WindowsEventForwarding | Paramètres de transfert d'événements Windows (WEF) via le registre |
| WindowsFirewall | Règles de pare-feu non standard, « full » vide toutes (arguments == allow/deny/tcp/udp/in/out/domain/private/public) |
| WMIEventConsumer | Liste les consommateurs d'événements WMI |
| WMIEventFilter | Liste les filtres d'événements WMI |
| WMIFilterBinding | Liste les liaisons de filtre à consommateur WMI |
| WSUS | Paramètres de Windows Server Update Services (WSUS), le cas échéant |
### user
Exécute les vérifications qui extraient des données intéressantes sur l'utilisateur actuellement connecté (si non élevé) ou TOUS les utilisateurs (si élevé).
Exécuté avec : `Seatbelt.exe -group=user`
| Commande | Description |
| ----------- | ----------- |
| Certificates | Fichiers de certificats personnels de l'utilisateur et de la machine |
| CertificateThumbprints | Empreintes pour tous les certificats du magasin de certificats sur le système |
| ChromiumPresence | Vérifie si des fichiers Chrome/Edge/Brave/Opera intéressants existent |
| CloudCredentials | Fichiers d'identification cloud AWS/Google/Azure |
| CloudSyncProviders | À VENIR |
| CredEnum | Énumère les informations d'identification enregistrées de l'utilisateur actuel à l'aide de CredEnumerate() |
| dir | Liste les fichiers/dossiers. Par défaut, liste les dossiers Téléchargements, Documents et Bureau des utilisateurs (arguments == \<répertoire\> \<profondeur\> \<regex\>) |
| DpapiMasterKeys | Liste les clés maîtres DPAPI |
| Dsregcmd | À VENIR |
| ExplorerMRUs | Fichiers les plus récemment utilisés de l'Explorateur (7 derniers jours, argument == derniers X jours) |
| ExplorerRunCommands | Commandes « Exécuter » récentes de l'Explorateur |
| FileZilla | Fichiers de configuration FileZilla |
| FirefoxPresence | Vérifie si des fichiers Firefox intéressants existent |
| IdleTime | Renvoie le nombre de secondes depuis la dernière entrée de l'utilisateur actuel |
| IEFavorites | Favoris Internet Explorer |
| IETabs | Onglets Internet Explorer ouverts |
| IEUrls | URL tapées dans Internet Explorer (7 derniers jours, argument == derniers X jours) |
| KeePass | À VENIR |
| MappedDrives | Lecteurs mappés de l'utilisateur (via WMI) |
| OfficeMRUs | Liste des fichiers les plus récemment utilisés par Office (7 derniers jours) |
| OneNote | À VENIR |
| OracleSQLDeveloper | À VENIR |
| PowerShellHistory | Parcourt chaque utilisateur local et tente de lire son historique de console PowerShell ; s'il réussit, l'affiche |
| PuttyHostKeys | Clés d'hôte SSH Putty enregistrées |
| PuttySessions | Configuration Putty enregistrée (champs intéressants) et clés d'hôte SSH |
| RDCManFiles | Fichiers de paramètres du Gestionnaire de connexion Bureau à distance Windows |
| RDPSavedConnections | Connexions RDP enregistrées stockées dans le registre |
| SecPackageCreds | Obtient les informations d'identification des packages de sécurité |
| SlackDownloads | Analyse les fichiers 'slack-downloads' trouvés |
| SlackPresence | Vérifie si des fichiers Slack intéressants existent |
| SlackWorkspaces | Analyse les fichiers 'slack-workspaces' trouvés |
| SuperPutty | Fichiers de configuration SuperPutty |
| TokenGroups | Groupes locaux et de domaine du jeton actuel |
| WindowsCredentialFiles | Objets blob DPAPI d'identification Windows |
| WindowsVault | Informations d'identification enregistrées dans le coffre Windows (par exemple, connexions depuis Internet Explorer et Edge) |
### misc
Exécute toutes les vérifications diverses.
Exécuté avec : `Seatbelt.exe -group=misc`
| Commande | Description |
| ----------- | ----------- |
| ChromiumBookmarks | Analyse les fichiers de favoris Chrome/Edge/Brave/Opera trouvés |
| ChromiumHistory | Analyse les fichiers d'historique Chrome/Edge/Brave/Opera trouvés |
| ExplicitLogonEvents | Événements d'ouverture de session explicites (ID d'événement 4648) du journal des événements de sécurité. Par défaut 7 jours, argument == derniers X jours. |
| FileInfo | Informations sur un fichier (informations de version, horodatages, informations PE de base, etc. argument(s) == chemin(s) de fichier) |
| FirefoxHistory | Analyse les fichiers d'historique Firefox trouvés |
| InstalledProducts | Produits installés via le registre |
| InterestingFiles | Fichiers « intéressants » correspondant à divers modèles dans le dossier de l'utilisateur. Remarque : prend un temps non négligeable. |
| LogonEvents | Événements d'ouverture de session (ID d'événement 4624) du journal des événements de sécurité. Par défaut 10 jours, argument == derniers X jours. |
| LOLBAS | Localise les binaires et scripts Living Off The Land (LOLBAS) sur le système. Remarque : prend un temps non négligeable. |
| McAfeeSiteList | Déchiffre les fichiers de configuration McAfee SiteList.xml trouvés. |
| MicrosoftUpdates | Toutes les mises à jour Microsoft (via COM) |
| OutlookDownloads | Liste les fichiers téléchargés par Outlook |
| PowerShellEvents | Journaux de blocs de script PowerShell (4104) avec données sensibles. |
| Printers | Imprimantes installées (via WMI) |
| ProcessCreationEvents | Journaux de création de processus (4688) avec données sensibles. |
| ProcessOwners | Liste des processus en cours d'exécution hors session 0 avec propriétaires. Pour utilisation à distance. |
| RecycleBin | Éléments de la corbeille supprimés au cours des 30 derniers jours – fonctionne uniquement dans un contexte utilisateur ! |
| reg | Valeurs de clé de registre (HKLM\Software par défaut) argument == [Chemin] [intProfondeur] [Regex] [boolIgnorerErreurs] |
| RPCMappedEndpoints | Points de terminaison RPC actuels mappés |
| ScheduledTasks | Tâches planifiées (via WMI) qui ne sont pas créées par 'Microsoft', « full » vide toutes les tâches planifiées |
| SearchIndex | Résultats de requête de l'index de recherche Windows, terme par défaut 'passsword'. (argument(s) == \<chemin de recherche\> \<modèle1,modèle2,...\>) |
| SecurityPackages | Énumère les packages de sécurité actuellement disponibles à l'aide de EnumerateSecurityPackagesA() |
| SysmonEvents | Journaux de création de processus Sysmon (1) avec données sensibles. |
### Groupes de commandes supplémentaires
Exécuté avec : `Seatbelt.exe -group=GROUPE`
| Alias | Description |
| ----------- | ----------- |
| Slack | Exécute les modules qui commencent par « Slack* » |
| Chromium | Exécute les modules qui commencent par « Chromium* » |
| Remote | Exécute les modules suivants (pour une utilisation sur un système distant) : 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 |
## Arguments de commande
Les commandes qui acceptent des arguments le mentionnent dans leur description. Pour passer un argument à une commande, placez la commande et les arguments entre guillemets doubles.
Par exemple, la commande suivante renvoie les événements d'ouverture de session 4624 des 30 derniers jours :
`Seatbelt.exe "LogonEvents 30"`
La commande suivante interroge un registre sur trois niveaux de profondeur, ne renvoyant que les clés/noms de valeur/valeurs qui correspondent au regex `.*defini.*`, et ignore les erreurs qui se produisent.
`Seatbelt.exe "reg \"HKLM\SOFTWARE\Microsoft\Windows Defender\" 3 .*defini.* true"`
## Sortie
Seatbelt peut rediriger sa sortie vers un fichier avec l'argument `-outputfile="C:\Chemin\fichier.txt"`. Si le chemin du fichier se termine par .json, la sortie sera un json structuré.
Par exemple, la commande suivante enverra les résultats des vérifications système dans un fichier txt :
`Seatbelt.exe -group=system -outputfile="C:\Temp\system.txt"`
## Énumération à distance
Les commandes marquées d'un + dans le menu d'aide peuvent être exécutées à distance sur un autre système. Cela se fait via WMI par des requêtes sur les classes WMI et StdRegProv de WMI pour l'énumération du registre.
Pour énumérer un système distant, fournissez `-computername=ORDINATEUR.DOMAINE.COM` - un nom d'utilisateur et un mot de passe alternatifs peuvent être spécifiés avec `-username=DOMAINE\UTILISATEUR -password=MOTDEPASSE`
Par exemple, la commande suivante exécute des vérifications orientées distance sur un système distant :
`Seatbelt.exe -group=remote -computername=192.168.230.209 -username=THESHIRE\sam -password="yum \"po-ta-toes\""`
## Construire vos propres modules
La structure de Seatbelt est complètement modulaire, permettant d'ajouter des modules de commande supplémentaires dans la structure de fichier et de les charger dynamiquement.
Un modèle de module de commande commenté se trouve à `.\Seatbelt\Commands\Template.cs` pour référence. Une fois construit, déposez le module dans l'emplacement logique du fichier, incluez-le dans le projet dans l'Explorateur de solutions Visual Studio, et compilez.
## Instructions de compilation
Nous ne prévoyons pas de publier de binaires pour Seatbelt, vous devrez donc le compiler vous-même.
Seatbelt a été construit pour .NET 3.5 et 4.0 avec des fonctionnalités C# 8.0 et est compatible avec [Visual Studio Community Edition](https://visualstudio.microsoft.com/downloads/). Ouvrez simplement le fichier .sln du projet, choisissez « release » et compilez. Pour changer la version cible du framework .NET, [modifiez les paramètres du projet](https://github.com/GhostPack/Seatbelt/issues/27) et reconstruisez le projet.
## Remerciements
Seatbelt intègre divers éléments de collecte, extraits de code C# et morceaux de PoC trouvés dans les recherches pour ses capacités. Ces idées, extraits et auteurs sont mis en évidence aux emplacements appropriés dans le code source, et incluent :* [@andrewchiles](https://twitter.com/andrewchiles)' script [HostEnum.ps1](https://github.com/threatexpress/red-team-scripts/blob/master/HostEnum.ps1) et [@tifkin\_](https://twitter.com/tifkin_)'s [Get-HostProfile.ps1](https://github.com/leechristensen/Random/blob/master/PowerShellScripts/Get-HostProfile.ps1) ont inspiré la collecte de nombreux artefacts.
* Le code de Boboes concernant [NetLocalGroupGetMembers](https://stackoverflow.com/questions/33935825/pinvoke-netlocalgroupgetmembers-runs-into-fatalexecutionengineerror/33939889#33939889)
* Le code d'ambyte pour [convertir une lettre de lecteur mappé en chemin réseau](https://gist.github.com/ambyte/01664dc7ee576f69042c)
* Le code d'Igor Korkhov pour [récupérer les informations du groupe de jetons courant](https://stackoverflow.com/questions/2146153/how-to-get-the-logon-sid-in-c-sharp/2146418#2146418)
* L'extrait de RobSiklos pour [déterminer si un hôte est une machine virtuelle](https://stackoverflow.com/questions/498371/how-to-detect-if-my-application-is-running-in-a-virtual-machine/11145280#11145280)
* L'extrait de JGU sur la [comparaison des droits ACL de fichiers/dossiers](https://stackoverflow.com/questions/1410127/c-sharp-test-if-user-has-write-access-to-a-folder/21996345#21996345)
* Le modèle de Rod Stephens pour [l'énumération récursive de fichiers](http://csharphelper.com/blog/2015/06/find-files-that-match-multiple-patterns-in-c/)
* L'extrait de SwDevMan81 pour [énumérer les privilèges du jeton courant](https://stackoverflow.com/questions/4349743/setting-size-of-token-privileges-luid-and-attributes-array-returned-by-gettokeni)
* Le travail PowerShell de Jared Atkinson sur les [caches de tickets Kerberos](https://github.com/Invoke-IR/ACE/blob/master/ACE-Management/PS-ACE/Scripts/ACE_Get-KerberosTicketCache.ps1)
* L'extrait C# Kerberos de [darkmatter08](https://www.dreamincode.net/forums/topic/135033-increment-memory-pointer-issue/)
* De nombreux exemples de [PInvoke.net](https://www.pinvoke.net/) <3
* L'excellent CodeProject de Jared Hill pour [utiliser l'Autorité de Sécurité Locale pour énumérer les sessions utilisateur](https://www.codeproject.com/Articles/18179/Using-the-Local-Security-Authority-to-Enumerate-Us)
* Le code de Fred pour [interroger le cache ARP](https://social.technet.microsoft.com/Forums/lync/en-US/e949b8d6-17ad-4afc-88cd-0019a3ac9df9/powershell-alternative-to-arp-a?forum=ITCG)
* L'extrait de ShuggyCoUk pour [interroger la table des connexions TCP](https://stackoverflow.com/questions/577433/which-pid-listens-on-a-given-port-in-c-sharp/577660#577660)
* L'exemple de yizhang82 pour [utiliser la réflexion afin d'interagir avec des objets COM en C#](https://gist.github.com/yizhang82/a1268d3ea7295a8a1496e01d60ada816)
* Le projet [SharpWeb](https://github.com/djhohnstein/SharpWeb/blob/master/Edge/SharpEdge.cs) de [@djhohnstein](https://twitter.com/djhohnstein)
* Le projet [EventLogParser](https://github.com/djhohnstein/EventLogParser) de [@djhohnstein](https://twitter.com/djhohnstein)
* Le projet [SharpCloud](https://github.com/chrismaddalena/SharpCloud) de [@cmaddalena](https://twitter.com/cmaddalena), BSD 3-Clause
* Le projet [Watson](https://github.com/rasta-mouse/Watson/) de [@_RastaMouse](https://twitter.com/_RastaMouse), GPL License
* Le travail de [@_RastaMouse](https://twitter.com/_RastaMouse) sur [l'énumération d'AppLocker](https://rastamouse.me/2018/09/enumerating-applocker-config/)
* Le projet [Invoke-WCMDump](https://github.com/peewpw/Invoke-WCMDump/blob/master/Invoke-WCMDump.ps1) de [@peewpw](https://twitter.com/peewpw), GPL License
* Le projet [HoneyBadger](https://github.com/trustedsec/HoneyBadger/tree/master/modules/post/windows/gather) de TrustedSec, BSD 3-Clause
* Le projet Audit User Rights Assignment de CENTRAL Solutions, [No license](https://www.centrel-solutions.com/support/tools.aspx?feature=auditrights)
* Des idées de collecte inspirées du [Reconerator](https://github.com/stufus/reconerator) de [@ukstufus](https://twitter.com/ukstufus)
* Les emplacements MRU Office et les informations d'analyse temporelle du document de Dustin Hurlbut [Microsoft Office 2007, 2010 - Registry Artifacts](https://ad-pdf.s3.amazonaws.com/Microsoft_Office_2007-2010_Registry_ArtifactsFINAL.pdf)
* La [liste des commandes Windows](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands), utilisée pour la construction d'expressions régulières sensibles
* Le code de Ryan Ries pour [l'énumération des points de terminaison RPC mappés](https://stackoverflow.com/questions/21805038/how-do-i-pinvoke-rpcmgmtepeltinqnext)
* L'article de Chris Haas sur [EnumerateSecurityPackages()](https://stackoverflow.com/a/5941873)
* Le travail de [darkoperator](https://github.com/ghostpack/seatbelt/blob/HEAD/carlos_perez) sur le [projet HoneyBadger](https://github.com/trustedsec/HoneyBadger)
* Le travail de [@airzero24](https://twitter.com/airzero24) sur [l'énumération du registre WMI](https://github.com/airzero24/WMIReg)
* La réponse d'Alexandru sur les [alternatives à RegistryKey.OpenBaseKey](https://stackoverflow.com/questions/26217199/what-are-some-alternatives-to-registrykey-openbasekey-in-net-3-5)
* L'article de Tomas Vera sur [JavaScriptSerializer](http://www.tomasvera.com/programming/using-javascriptserializer-to-parse-json-objects/)
* La note de Marc Gravell sur [l'énumération récursive des fichiers/dossiers](https://stackoverflow.com/a/929418)
* L'analyseur de règles Sysmon de [@mattifestation](https://twitter.com/mattifestation) : [PSSysmonTools](https://github.com/mattifestation/PSSysmonTools/blob/master/PSSysmonTools/Code/SysmonRuleParser.ps1#L589-L595)
* Une inspiration du projet [Simple.CredentialsManager](https://github.com/spolnik/Simple.CredentialsManager) de spolnik, Apache 2 license
* [Cet article sur les paramètres de Credential Guard](https://www.tenforums.com/tutorials/68926-verify-if-device-guard-enabled-disabled-windows-10-a.html)
* [Ce fil](https://social.technet.microsoft.com/Forums/windows/en-US/b0e13a16-51a6-4aca-8d44-c85e097f882b/nametype-in-nla-information-for-a-network-profile) sur les informations de profil réseau
* L'article de Mark McKinnon sur [le décodage des valeurs SSID DateCreated et DateLastConnected](http://cfed-ttf.blogspot.com/2009/08/decoding-datecreated-and.html)
* Cet article de Specops sur [la mise en cache des stratégies de groupe](https://specopssoft.com/blog/things-work-group-policy-caching/)
* L'article StackOverflow de sa_ddam213 sur [l'énumération d'éléments de la corbeille](https://stackoverflow.com/questions/18071412/list-filenames-in-the-recyclebin-with-c-sharp-without-using-any-external-files)
* Le code de Kirill Osenkov pour [la détection d'assemblys managés](https://stackoverflow.com/a/15608028)
* Le projet [Mono](https://github.com/mono/linux-packaging-mono/blob/d356d2b7db91d62b80a61eeb6fbc70a402ac3cac/external/corefx/LICENSE.TXT) pour les classes SecBuffer/SecBufferDesc
* [Elad Shamir](https://twitter.com/elad_shamir) et son projet [Internal-Monologue](https://github.com/eladshamir/Internal-Monologue/), [Vincent Le Toux](https://twitter.com/mysmartlogon) pour son projet [DetectPasswordViaNTLMInFlow](https://github.com/vletoux/DetectPasswordViaNTLMInFlow/) et Lee Christensen pour ce projet [GetNTLMChallenge](https://github.com/leechristensen/GetNTLMChallenge/). Tous ont servi d'inspiration dans la commande SecPackageCreds.
* @leftp et @eksperience et leur projet [Gopher](https://github.com/EncodeGroup/Gopher) pour l'inspiration des commandes FileZilla et SuperPutty
* @funoverip pour le code original de décryptage de McAfee SiteList.xml
Nous avons essayé de faire nos devoirs de citation, mais si nous avons oublié quelqu'un/quelque chose, faites-nous savoir !