T1587.004

Exploits

Adversaries may develop 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 finding/modifying exploits from online or purchasing them from exploit vendors, an adversary may develop their own exploits. Adversaries may use information acquired via Vulnerabilities (T1588/006) to focus exploit development efforts. As part of the exploit development process, adversaries may uncover exploitable vulnerabilities through methods such as fuzzing and patch analysis. Documented threat actors leveraging this technique include Volt Typhoon (zero-day initial access), UNC3886 (CVE-2022-41328 FortiOS and CVE-2023-34048 VMware vCenter), and Leviathan, which rapidly adapts public PoC code for new vulnerabilities. Because this is a PRE-technique, the adversary action (exploit development) occurs outside the target environment — detection focuses on identifying exploit development tooling appearing on monitored endpoints, downstream exploitation artifacts, and fuzzing activity against internal services.

Microsoft Sentinel / Defender
kusto
let ExploitDevTools = dynamic([
    "windbg.exe", "x64dbg.exe", "x32dbg.exe", "ollydbg.exe",
    "immunitydebugger.exe", "immunity.exe",
    "msfconsole.exe", "radare2.exe", "r2.exe", "cutter.exe"
]);
let FuzzingToolPatterns = dynamic([
    "winafl", "afl-fuzz", "boofuzz", "peach.py", "sulley",
    "domato", "honggfuzz", "libfuzzer"
]);
let ShellcodeToolPatterns = dynamic([
    "msfvenom", "shellcraft", "ropper", "rp.exe", "rp-win",
    "nasm", "yasm"
]);
let ExploitFrameworks = dynamic([
    "metasploit", "pwntools", "pwndbg",
    "peda.py", "gef.py"
]);
DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (ExploitDevTools)
    or ProcessCommandLine has_any (ExploitDevTools)
    or ProcessCommandLine has_any (FuzzingToolPatterns)
    or ProcessCommandLine has_any (ShellcodeToolPatterns)
    or ProcessCommandLine has_any (ExploitFrameworks)
    or FolderPath has_any ("\\metasploit", "\\exploit-db", "\\shellcode", "\\fuzzer", "\.msf4")
| extend DetectionCategory = case(
    FileName has_any (ExploitDevTools) or ProcessCommandLine has_any (ExploitDevTools), "Debugger/Disassembler",
    ProcessCommandLine has_any (FuzzingToolPatterns), "Fuzzing Framework",
    ProcessCommandLine has_any (ShellcodeToolPatterns), "Shellcode Generation",
    ProcessCommandLine has_any (ExploitFrameworks), "Exploit Framework",
    FolderPath has_any ("\\metasploit", "\\exploit-db", "\\shellcode", "\\fuzzer", "\.msf4"), "Exploit Tool Path",
    "Unclassified"
)
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
         InitiatingProcessFileName, InitiatingProcessCommandLine,
         FolderPath, SHA256, DetectionCategory
| sort by Timestamp desc
high severity low confidence

Data Sources

Process: Process Creation File: File Access Microsoft Defender for Endpoint

Required Tables

DeviceProcessEvents DeviceFileEvents

False Positives

  • Authorized red team and penetration testers running these tools as part of a sanctioned engagement — cross-reference against your security testing register and approved device list
  • Software developers using WinDbg or x64dbg for legitimate application debugging and crash analysis on developer workstations
  • Security engineers building and testing detection rules using Metasploit or msfvenom against isolated lab environments
  • CTF (Capture The Flag) participants or security training students running exploit development labs on endpoints enrolled in the tenant
  • Security operations tooling (SIEM content development, detection validation) that invokes these tools programmatically in a controlled manner

Unlock Pro Content

Get the full detection package for T1587.004 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections