Here's a checklist of what you should check for:
• 2FA methods
• Certificates
• Open ports
• Installed services
• COM objects
• Named pipes
• Scheduled tasks
• Mapped drives
• System PATH
• Installed drivers
• LSASS protected mode
• LLMNR/NBT-NS
• WDigest provider
• NTLMv1 status
• SMB Signing
• PowerShell logging
• Logon limitations
• LLMNR/NBT-NS status
• RID 500 account status
• FilterAdministratorToken
• UAC configuration
• SysMon
Find powershell engines
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowershellEngine /v PowershellVersion
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowershellEngine /v PowershellVersion
powershell logging
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\Transcription
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
CLR versions
dir %WINDIR%\Microsoft.Net\Framework\ /s /b | find "System.dll”
[System.IO.File]::Exists("$env:windir\Microsoft.Net\Framework\v2.0.50727\System.dll")
[System.IO.File]::Exists("$env:windir\Microsoft.Net\Framework\v4.0.30319\System.dll")
Check for CLM
$ExecutionContext.SessionState.LanguageMode
Check Audit Policies
auditpol /get /categoryams:*
Check if LSASS is running in PPL
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL
Get-ItemProperty -Path
HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -Name "RunAsPPL"
applocker policies
Get-AppLockerPolicy -Local).RuleCollections
Get-ChildItem -Path HKLM:Software\Policies\Microsoft\Windows\SrpV2 -Recurse
reg query HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\SrpV2\Exe\
Check for Non-standard MS services/processes: https://gist.github.com/HarmJ0y/7363509435f5700d713ee351bb4fcd8f
RDP history
reg query HKCU\Software\Microsoft\Terminal Server Client\
Find recently used files
%AppData%\Microsoft\Windows\Recent
Find running application window titles
get-process | where-object {$_.mainwindowtitle -ne ""} | Select-Object mainwindowtitle
Detect Sysmon
Get-Process | Where-Object { $_.ProcessName -eq "Sysmon" }
If assembly is .NET or not
[Reflection.AssemblyName]::GetAssemblyName("C:\Path\To\File.exe")
EDR presence: https://github.com/BankSecurity/Red_Team/blob/master/Discovery/Check_EDR_Presence.ps1
Enumerate general info from com objects:
$o = [activator]::CreateInstance([type]::GetTypeFromCLSID("093FF999-1EA0-4079-9525-9614C3504B74"))
$o | gm
$o
$o.EnumNetworkDrives()
proxy settings
netsh winhttp show proxy
ping -n 1 wpad