Detect Exploits in Microsoft Sentinel
Adversaries may buy, steal, or download exploits that can be used during targeting. An exploit takes advantage of a bug or vulnerability in order to cause unintended or unanticipated behavior to occur on computer hardware or software. Rather than developing their own exploits, an adversary may find, modify, or purchase exploits from online sources, exploit vendors, criminal marketplaces (including exploit kits), or from other threat actors. Adversaries such as Ember Bear have obtained exploitation scripts against publicly-disclosed vulnerabilities from public repositories, while Kimsuky has obtained exploit code for various CVEs. Acquired exploits may be used across multiple phases of the adversary lifecycle including initial access, privilege escalation, defense evasion, credential access, and lateral movement. Because the acquisition of exploits occurs entirely on adversary-controlled infrastructure, direct detection is not possible from victim telemetry — detection must focus on observable indicators when those acquired exploits are deployed.
MITRE ATT&CK
- Tactic
- Resource Development
- Technique
- T1588 Obtain Capabilities
- Sub-technique
- T1588.005 Exploits
- Canonical reference
- https://attack.mitre.org/techniques/T1588/005/
KQL Detection Query
let ExploitableApplications = dynamic([
"winword.exe", "excel.exe", "powerpnt.exe", "outlook.exe",
"mspub.exe", "onenote.exe", "msaccess.exe",
"acrord32.exe", "acrobat.exe",
"chrome.exe", "firefox.exe", "msedge.exe", "iexplore.exe",
"java.exe", "javaw.exe", "javaws.exe"
]);
let SuspiciousChildProcesses = dynamic([
"cmd.exe", "powershell.exe", "pwsh.exe",
"wscript.exe", "cscript.exe", "mshta.exe",
"rundll32.exe", "regsvr32.exe", "certutil.exe",
"bitsadmin.exe", "msiexec.exe", "wmic.exe",
"msbuild.exe", "installutil.exe", "regasm.exe",
"regsvcs.exe", "schtasks.exe"
]);
DeviceProcessEvents
| where Timestamp > ago(24h)
| where InitiatingProcessFileName has_any (ExploitableApplications)
| where FileName has_any (SuspiciousChildProcesses)
| extend HasNetworkIndicator = ProcessCommandLine has_any (
"http://", "https://", "ftp://",
"Invoke-WebRequest", "Net.WebClient", "DownloadString", "DownloadFile",
"Start-BitsTransfer", "curl ", "wget "
)
| extend HasCredentialAccess = ProcessCommandLine has_any (
"mimikatz", "lsass", "sekurlsa", "ntds", "procdump",
"comsvcs", "MiniDump", "vaultcmd", "credential"
)
| extend HasPersistence = ProcessCommandLine has_any (
"schtasks", "reg add", "\\CurrentVersion\\Run",
"startup", "userinit", "sc create", "sc config"
)
| extend HasLateralMovement = ProcessCommandLine has_any (
"psexec", "wmiexec", "winrm", "net use",
"Enter-PSSession", "Invoke-Command", "ssh "
)
| extend ExploitScore = toint(HasNetworkIndicator) + toint(HasCredentialAccess)
+ toint(HasPersistence) + toint(HasLateralMovement) + 1
| project
Timestamp, DeviceName, AccountName,
ExploitableParent = InitiatingProcessFileName,
ParentCmdLine = InitiatingProcessCommandLine,
SuspiciousChild = FileName,
ChildCmdLine = ProcessCommandLine,
HasNetworkIndicator, HasCredentialAccess, HasPersistence, HasLateralMovement,
ExploitScore
| sort by ExploitScore desc, Timestamp desc Detects exploit-based process chains by identifying suspicious child processes spawned from commonly exploited client-side applications (Office suite, Adobe Acrobat, browsers, Java). When an adversary deploys an acquired exploit against a document parser or browser engine vulnerability, the resulting shell or scripting engine executes as a child of the vulnerable application — this parent-child relationship is the primary behavioral indicator observable on the victim system. Extended fields score each event based on follow-on behaviors (network callbacks, credential access, persistence, lateral movement) to prioritize analyst triage.
Data Sources
Required Tables
False Positives & Tuning
- Office macros used in legitimate business automation (e.g., Excel VBA launching cmd.exe for data pipeline exports, report generation, or ERP integrations)
- Browser helper objects, enterprise browser extensions, or Single Sign-On agents that legitimately spawn child processes for print, download, clipboard, or authentication workflows
- PDF processing integrations where Acrobat invokes system utilities for digital signature workflows, document conversion pipelines, or secure print operations
- Java-based enterprise applications (ERP, HR, financial systems) that legitimately spawn system commands for file operations, external tool invocation, or OS-level integration tasks
Other platforms for T1588.005
Testing Methodology
Validate this detection against 5 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Simulate Document Exploit Process Chain (cmd Reconnaissance)
Expected signal: Sysmon Event ID 1: Process Create with Image=cmd.exe. CommandLine contains 'whoami', 'hostname', 'ipconfig', 'net user'. Security Event ID 4688 (with command line auditing enabled) records the same. When run from a Word macro, InitiatingProcessFileName=winword.exe triggers the detection's parent-child matching logic.
- Test 2Simulate Browser Exploit Network Callback (Stage-2 Download Cradle)
Expected signal: Sysmon Event ID 1: Process Create for powershell.exe with CommandLine containing 'Net.WebClient', 'DownloadString', and the target URL. Sysmon Event ID 3: Network Connection attempt to 192.0.2.1:4444 (TEST-NET-1 per RFC 5737 — safe non-routable address that generates telemetry without reaching any real host). PowerShell ScriptBlock Log Event ID 4104 captures the full script content.
- Test 3VBScript-Based Exploit Payload Simulation
Expected signal: Sysmon Event ID 1 (x2): First for powershell.exe creating the VBS file, second for wscript.exe executing it. The char()-based obfuscation in the VBS content mimics obfuscation patterns used in real exploit-delivered payloads. Sysmon Event ID 11: File Create event for the VBS file dropped to TEMP. PowerShell ScriptBlock Log Event ID 4104 for the PowerShell wrapper.
- Test 4Exploit Guard ASR Rule Configuration Audit
Expected signal: PowerShell ScriptBlock Log Event ID 4104 for the MpPreference query. Informational output to file showing which ASR rules are active. When ASR rules are in block mode and a real Office application attempts to spawn a child process (e.g., via a macro), Windows Defender Operational log generates Event ID 1121 (Blocked) or Event ID 1122 (Audit) with the rule GUID and process details.
- Test 5Simulate Post-Exploit Process Access (Sysmon Event ID 10)
Expected signal: Sysmon Event ID 10 (ProcessAccess): SourceImage=powershell.exe, TargetImage=notepad.exe, GrantedAccess=0x0410 (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ). Sysmon Event ID 1: powershell.exe process create. The 0x0410 access mask is characteristic of credential dumping tools and shellcode injection staging — many SIEM rules alert on this mask from non-system processes targeting sensitive processes.
References (10)
- https://attack.mitre.org/techniques/T1588/005/
- https://www.exploit-db.com/
- https://citizenlab.ca/2016/08/million-dollar-dissident-iphone-zero-day-nso-group-uae/
- https://www.nytimes.com/2013/07/14/world/europe/nations-buying-as-hackers-sell-computer-flaws.html
- https://www.wired.co.uk/article/darkhotel-hacking-team-cyber-espionage
- https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/attack-surface-reduction-rules-reference
- https://learn.microsoft.com/en-us/defender-endpoint/advanced-hunting-deviceprocessevents-table
- https://learn.microsoft.com/en-us/defender-endpoint/advanced-hunting-deviceevents-table
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1203/T1203.md
- https://www.microsoft.com/en-us/security/blog/2021/07/15/protecting-customers-from-a-private-sector-offensive-actor-using-0-day-exploits-and-devilstongue-malware/
Unlock Pro Content
Get the full detection package for T1588.005 including response playbook, investigation guide, and atomic red team tests.