Quantcast
Channel: KitPloit - PenTest Tools!
Viewing all articles
Browse latest Browse all 5816

Seatbelt - A C# Project That Performs A Number Of Security Oriented Host-Survey "Safety Checks" Relevant From Both Offensive And Defensive Security Perspectives

$
0
0


Seatbelt is a C# project that performs a number of security oriented host-survey "safety checks" relevant from both offensive and defensive security perspectives.

@andrewchiles' HostEnum.ps1 script and @tifkin_'s Get-HostProfile.ps1 provided inspiration for many of the artifacts to collect.

@harmj0y and @tifkin_ are the primary authors of this implementation.

Seatbelt is licensed under the BSD 3-Clause license.


Command Line Usage


%&&@@@&&
&&&&&&&%%%, #&&@@@@@@%%%%%%###############%
&%& %&%% &////(((&%%%%%#%################//((((###%%%%%%%%%%%%%%%
%%%%%%%%%%%######%%%#%%####% &%%**# @////(((&%%%%%%######################(((((((((((((((((((
#%#%%%%%%%#######%#%%####### %&%,,,,,,,,,,,,,,,, @////(((&%%%%%#%#####################(((((((((((((((((((
#%#%%%%%%#####%%#%#%%####### %%%,,,,,, ,,. ,, @////(((&%%%%%%%######################(#(((#(#((((((((((
#####%%%#################### &%%...... ... .. @////(((&%%%%%%%###############%######((#(#(####((((((((
#######%##########%######### %%%...... ... .. @////(((&%%%%%#########################(#(#######((#####
###%##%%#################### &%%............... @////(((&%%%%%%%%##############%#######(#########((#####
#####%###################### %%%.. @////(((&%%%%%%%################
&%& %%%%% Seatbelt %////(((&%%%%%%%%#############*
&%%&&&%%%%% v1.1.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
+ 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] [depth] [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)
NamedPipes - Named pipe names and any readable ACL 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)
OracleSQLDeveloper - Finds Oracle SQLDeveloper connections.xml files
+ OS Info - 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.
+ PSSession Settings - 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 appli cable
+ 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
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
+ 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).
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>"

"Seatbelt.exe -group=all" runs all commands

"Seatbelt.exe -group=user" runs the following commands:

ChromiumPresence, CloudCredentials, CloudSyncProviders, CredEnum, dir,
DpapiMasterKeys, ExplorerMRUs, ExplorerRunCommands, FileZilla,
FirefoxPresence, IdleTime, IEFavorites, IETabs,
IEUrls, KeePass, MappedDrives, OfficeMRUs,
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, CredGuard, DNSCache,
DotNet, EnvironmentPath, EnvironmentVariables, Hotfixes,
InterestingProcesses, InternetSettings, LAPS, LastShutdown,
LocalGPOs, LocalGroups, LocalUsers, LogonSessions,
LSASettings, McAfeeConfigs, NamedPipes, NetworkProfiles,
NetworkShares, NTLMSettings, OSInfo, PoweredOnEvents,
PowerShell, Processes, PSSessionSettings, RDPSessions,
RDPsettings, SCCM, Services, Sysmon,
TcpConnections, TokenPrivileges, UAC, UdpConnections,
UserRightAssignments, WindowsAutoLogon, WindowsDefender, WindowsEventForwarding,
WindowsFirewall, 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, E nvironmentVariables,
ExplicitLogonEvents, ExplorerRunCommands, FileZilla, Hotfixes,
InterestingProcesses, KeePass, LastShutdown, LocalGroups,
LocalUsers, LogonEvents, LogonSessions, LSASettings,
MappedDrives, NetworkProfiles, NetworkShares, NTLMSettings,
OSInfo, PoweredOnEvents, PowerShell, ProcessOwners,
PSSessionSettings, PuttyHostKeys, PuttySessions, RDPSavedConnections,
RDPSessions, RDPsettings, 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, Sche duledTasks, SearchIndex,
SecurityPackages, SysmonEvents


Examples:
'Seatbelt.exe <Command> [Command2] ...' will run one or more specified checks only
'Seatbelt.exe <Command> -full' will return complete results for a command without any filtering.
'Seatbelt.exe "<Command> [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 <Command> -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\ou t.json"' will run in quiet mode with user checks and output to a .json file.

Note: searches that target users will run for the current user if not-elevated and for ALL users if elevated.

A more detailed wiki is coming...


Command Groups

Note: many commands do some type of filtering by default. Supplying the -full argument prevents filtering output. Also, the command group all will run all current checks.

For example, the following command will run ALL checks and returns ALL output:

Seatbelt.exe -group=all -full


system

Runs checks that mine interesting data about the system.

Executed with: Seatbelt.exe -group=system

CommandDescription
AMSIProvidersProviders registered for AMSI
AntiVirusRegistered antivirus (via WMI)
AppLockerAppLocker settings, if installed
ARPTableLists the current ARP table and adapter information(equivalent to arp -a)
AuditPoliciesEnumerates classic and advanced audit policy settings
AuditPolicyRegistryAudit settings via the registry
AutoRunsAuto run executables/scripts/programs
CredGuardCredentialGuard configuration
DNSCacheDNS cache entries (via WMI)
DotNetDotNet versions
EnvironmentPathCurrent environment %PATH$ folders and SDDL information
EnvironmentVariablesCurrent user environment variables
HotfixesInstalled hotfixes (via WMI)
InterestingProcesses"Interesting" processes - defensive products and admin tools
InternetSettingsInternet settings including proxy configs
LAPSLAPS settings, if installed
LastShutdownReturns the DateTime of the last system shutdown (via the registry)
LocalGPOsLocal Group Policy settings applied to the machine/local users
LocalGroupsNon-empty local groups, "full" displays all groups (argument == computername to enumerate)
LocalUsersLocal users, whether they're active/disabled, and pwd last set (argument == computername to enumerate)
LogonSessionsLogon events (Event ID 4624) from the security event log. Default of 10 days, argument == last X days.
LSASettingsLSA settings (including auth packages)
McAfeeConfigsFinds McAfee configuration files
NamedPipesNamed pipe names and any readable ACL information
NetworkProfilesWindows network profiles
NetworkSharesNetwork shares exposed by the machine (via WMI)
NTLMSettingsNTLM authentication settings
OSInfoBasic OS info (i.e. architecture, OS version, etc.)
PoweredOnEventsReboot and sleep schedule based on the System event log EIDs 1, 12, 13, 42, and 6008. Default of 7 days, argument == last X days.
PowerShellPowerShell versions and security settings
ProcessesRunning processes with file info company names that don't contain 'Microsoft', "full" enumerates all processes
PSSessionSettingsEnumerates PS Session Settings from the registry
RDPSessionsCurrent incoming RDP sessions (argument == computername to enumerate)
RDPsettingsRemote Desktop Server/Client Settings
SCCMSystem Center Configuration Manager (SCCM) settings, if applicable
ServicesServices with file info company names that don't contain 'Microsoft', "full" dumps all processes
SysmonSysmon configuration from the registry
TcpConnectionsCurrent TCP connections and their associated processes and services
TokenPrivilegesCurrently enabled token privileges (e.g. SeDebugPrivilege/etc.)
UACUAC system policies via the registry
UdpConnectionsCurrent UDP connections and associated processes and services
UserRightAssignmentsConfigured User Right Assignments (e.g. SeDenyNetworkLogonRight, SeShutdownPrivilege, etc.) argument == computername to enumerate
WindowsAutoLogonRegistry autologon information
WindowsDefenderWindows Defender settings (including exclusion locations)
WindowsEventForwardingWindows Event Forwarding (WEF) settings via the registry
WindowsFirewallNon-standard firewall rules, "full" dumps all (arguments == allow/deny/tcp/udp/in/out/domain/private/public)
WMIEventConsumerLists WMI Event Consumers
WMIEventFilterLists WMI Event Filters
WMIFilterBindingLists WMI Filter to Consumer Bindings
WSUSWindows Server Update Services (WSUS) settings, if applicable

user

Runs checks that mine interesting data about the currently logged on user (if not elevated) or ALL users (if elevated).

Executed with: Seatbelt.exe -group=user

CommandDescription
ChromePresenceChecks if interesting Google Chrome files exist
CloudCredentialsAWS/Google/Azure cloud credential files
CredEnumEnumerates the current user's saved credentials using CredEnumerate()
dirLists files/folders. By default, lists users' downloads, documents, and desktop folders (arguments == <directory> <depth> <regex>
DpapiMasterKeysList DPAPI master keys
ExplorerMRUsExplorer most recently used files (last 7 days, argument == last X days)
ExplorerRunCommandsRecent Explorer "run" commands
FileZillaFileZilla configuration files
FirefoxPresenceChecks if interesting Firefox files exist
IdleTimeReturns the number of seconds since the current user's last input.
IEFavoritesInternet Explorer favorites
IETabsOpen Internet Explorer tabs
IEUrlsInternet Explorer typed URLs (last 7 days, argument == last X days)
MappedDrivesUsers' mapped drives (via WMI)
OfficeMRUsOffice most recently used file list (last 7 days)
PowerShellHistoryIterates through every local user and attempts to read their PowerShell console history if successful will print it
PuttyHostKeysSaved Putty SSH host keys
PuttySessionsSaved Putty configuration (interesting fields) and SSH host keys
RDCManFilesWindows Remote Desktop Connection Manager settings files
RDPSavedConnectionsSaved RDP connections stored in the registry
SecPackageCredsObtains credentials from security packages
SlackDownloadsParses any found 'slack-downloads' files
SlackPresenceChecks if interesting Slack files exist
SlackWorkspacesParses any found 'slack-workspaces' files
SuperPuttySuperPutty configuration files
TokenGroupsThe current token's local and domain groups
WindowsCredentialFilesWindows credential DPAPI blobs
WindowsVaultCredentials saved in the Windows Vault (i.e. logins from Internet Explorer and Edge).

misc

Runs all miscellaneous checks.

Executed with: Seatbelt.exe -group=misc

CommandDescription
ChromeBookmarksParses any found Chrome bookmark files
ChromeHistoryParses any found Chrome history files
ExplicitLogonEventsExplicit Logon events (Event ID 4648) from the security event log. Default of 7 days, argument == last X days.
FileInfoInformation about a file (version information, timestamps, basic PE info, etc. argument(s) == file path(s)
FirefoxHistoryParses any found FireFox history files
HuntLolbasLocates Living Off The Land Binaries and Scripts (LOLBAS) on the system. Note: takes non-trivial time.
InstalledProductsInstalled products via the registry
InterestingFiles"Interesting" files matching various patterns in the user's folder. Note: takes non-trivial time.
LogonEventsLogon events (Event ID 4624) from the security event log. Default of 10 days, argument == last X days.
McAfeeSiteListDecrypt any found McAfee SiteList.xml configuration files.
MicrosoftUpdatesAll Microsoft updates (via COM)
OutlookDownloadsList files downloaded by Outlook
PowerShellEventsPowerShell script block logs (4104) with sensitive data.
PrintersInstalled Printers (via WMI)
ProcessCreationEventsProcess creation logs (4688) with sensitive data.
ProcessOwnersRunning non-session 0 process list with owners. For remote use.
RecycleBinItems in the Recycle Bin deleted in the last 30 days - only works from a user context!
regRegistry key values (HKLM\Software by default) argument == [Path] [intDepth] [Regex] [boolIgnoreErrors]
RPCMappedEndpointsCurrent RPC endpoints mapped
ScheduledTasksScheduled tasks (via WMI) that aren't authored by 'Microsoft', "full" dumps all Scheduled tasks
SearchIndexQuery results from the Windows Search Index, default term of 'passsword'. (argument(s) == <search path> <pattern1,pattern2,...>
SecurityPackagesEnumerates the security packages currently available using EnumerateSecurityPackagesA()
SysmonEventsSysmon process creation logs (1) with sensitive data.

Additional Command Groups

Executed with: Seatbelt.exe -group=GROUPNAME

AliasDescription
SlackRuns modules that start with "Slack*"
ChromeRuns modules that start with "Chrome*"
RemoteRuns the following modules (for use against a remote system): AMSIProviders, AntiVirus, DotNet, ExplorerRunCommands, Hotfixes, InterestingProcesses, LastShutdown, LogonSessions, LSASettings, MappedDrives, NetworkProfiles, NetworkShares, NTLMSettings, PowerShell, ProcessOwners, PuttyHostKeys, PuttySessions, RDPSavedConnections, RDPSessions, RDPsettings, Sysmon, WindowsDefender, WindowsEventForwarding, WindowsFirewall

Command Arguments

Command that accept arguments have it noted in their description. To pass an argument to a command, enclose the command an arguments in double quotes.

For example, the following command returns 4624 logon events for the last 30 days:

Seatbelt.exe "LogonEvents 30"

The following command queries a registry three levels deep, returning only keys/valueNames/values that match the regex .*defini.*, and ignoring any errors that occur.

Seatbelt.exe "reg \"HKLM\SOFTWARE\Microsoft\Windows Defender\" 3 .*defini.* true"


Output

Seatbelt can redirect its output to a file with the -outputfile="C:\Path\file.txt" argument. If the file path ends in .json, the output will be structured json.

For example, the following command will output the results of system checks to a txt file:

Seatbelt.exe -group=system -outputfile="C:\Temp\system.txt"


Remote Enumeration

Commands noted with a + in the help menu can be run remotely against another system. This is performed over WMI via queries for WMI classes and WMI's StdRegProv for registry enumeration.

To enumerate a remote system, supply -computername=COMPUTER.DOMAIN.COM - an alternate username and password can be specified with -username=DOMAIN\USER -password=PASSWORD

For example, the following command runs remote-focused checks against a remote system:

Seatbelt.exe -group=remote -computername=192.168.230.209 -username=THESHIRE\sam -password="yum \"po-ta-toes\""


Building Your Own Modules

Seatbelt's structure is completely modular, allowing for additional command modules to be dropped into the file structure and loaded up dynamically.

There is a commented command module template at .\Seatbelt\Commands\Template.cs for reference. Once built, drop the module in the logical file location, include it in the project in the Visual Studio Solution Explorer, and compile.


Compile Instructions

We are not planning on releasing binaries for Seatbelt, so you will have to compile yourself.

Seatbelt has been built against .NET 3.5 and 4.0 with C# 8.0 features and is compatible with Visual Studio Community Edition. Simply open up the project .sln, choose "release", and build. To change the target .NET framework version, modify the project's settings and rebuild the project.


Acknowledgments

Seatbelt incorporates various collection items, code C# snippets, and bits of PoCs found throughout research for its capabilities. These ideas, snippets, and authors are highlighted in the appropriate locations in the source code, and include:

We've tried to do our due diligence for citations, but if we've left someone/something out, please let us know!




Viewing all articles
Browse latest Browse all 5816

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>