T1588.006

Vulnerabilities

Adversaries may acquire information about vulnerabilities to use during targeting. A vulnerability is a weakness in computer hardware or software that can potentially be exploited to cause unintended behavior. Adversaries monitor vulnerability disclosures and databases (NVD, Exploit-DB, Packet Storm, closed markets) to identify exploitable weaknesses, often targeting organizations that conduct vulnerability research to obtain pre-disclosure intelligence. Because this technique occurs on adversary-controlled infrastructure before victim engagement, direct detection is impossible via standard SIEM telemetry. Detection pivots to indirect indicators observable in the victim environment: internal endpoints accessing exploit repositories (indicating insider threat or compromised research workstations), exploit development toolchain execution, CVE-named file creation, and correlation between public CVE disclosure timelines and subsequent exploitation attempts against organizational assets. Real-world actors including Sandworm Team and Volt Typhoon have leveraged CVE research for initial access, making post-disclosure exploitation windows a critical detection opportunity.

Microsoft Sentinel / Defender
kusto
// T1588.006 — Vulnerability Research: Indirect Detection
// Detects internal endpoints accessing exploit databases, executing exploit toolchains,
// or creating CVE-named files — indicators of insider threat, compromised research
// workstations, or adversary staging activity within the environment.
let ExploitRepositories = dynamic([
    "exploit-db.com", "www.exploit-db.com",
    "packetstormsecurity.com", "0day.today",
    "sploitus.com", "vulners.com",
    "cxsecurity.com", "seebug.org",
    "bugs.chromium.org/p/project-zero"
]);
let ExploitToolPatterns = dynamic([
    "searchsploit", "msfconsole", "msfvenom",
    "nuclei -t cves", "nuclei --template cve",
    " poc.py", "exploit.py", "exploit.rb",
    "exploit.pl", "exploit.sh",
    "python3 cve-", "python cve-", "ruby cve-"
]);
let CVEFilePatterns = dynamic([
    "CVE-20", "cve-20", "poc.", "0day.", "exploit."
]);
// Branch 1: Internal hosts making HTTP/S connections to known exploit repositories
let ExploitSiteAccess = DeviceNetworkEvents
| where Timestamp > ago(24h)
| where RemoteUrl has_any (ExploitRepositories)
    or RemoteHostname has_any (ExploitRepositories)
| where InitiatingProcessFileName !in~ ("svchost.exe", "lsass.exe", "services.exe")
| extend DetectionBranch = "ExploitSiteAccess"
| extend SignalDetail = strcat("Process=", InitiatingProcessFileName, " | URL=", RemoteUrl)
| project Timestamp, DeviceName, AccountName, DetectionBranch, SignalDetail,
          InitiatingProcessFileName, InitiatingProcessCommandLine;
// Branch 2: Exploit tool execution (searchsploit, Metasploit, CVE PoC scripts)
let ExploitToolExecution = DeviceProcessEvents
| where Timestamp > ago(24h)
| where ProcessCommandLine has_any (ExploitToolPatterns)
    or (FileName in~ ("python.exe", "python3", "python3.exe", "ruby", "ruby.exe", "perl.exe", "perl")
        and ProcessCommandLine has_any (["poc.py", "exploit.py", "exploit.rb",
                                         "exploit.pl", "CVE-20", "cve-20"]))
| extend DetectionBranch = "ExploitToolExecution"
| extend SignalDetail = strcat("Command=", ProcessCommandLine)
| project Timestamp, DeviceName, AccountName, DetectionBranch, SignalDetail,
          InitiatingProcessFileName, InitiatingProcessCommandLine = ProcessCommandLine;
// Branch 3: CVE-named or exploit-named file creation on disk
let ExploitFileCreation = DeviceFileEvents
| where Timestamp > ago(24h)
| where FileName has_any (CVEFilePatterns)
    and (FileName endswith ".py" or FileName endswith ".rb" or FileName endswith ".sh"
         or FileName endswith ".exe" or FileName endswith ".ps1" or FileName endswith ".pl"
         or FileName endswith ".c" or FileName endswith ".cpp")
| extend DetectionBranch = "ExploitFileCreated"
| extend SignalDetail = strcat("File=", FolderPath, "\\", FileName,
                               " | Process=", InitiatingProcessFileName)
| project Timestamp, DeviceName, AccountName, DetectionBranch, SignalDetail,
          InitiatingProcessFileName, InitiatingProcessCommandLine;
// Union all branches
ExploitSiteAccess
| union ExploitToolExecution
| union ExploitFileCreation
| sort by Timestamp desc
medium severity low confidence

Data Sources

Network Traffic: Network Connection Creation Process: Process Creation File: File Creation Microsoft Defender for Endpoint

Required Tables

DeviceNetworkEvents DeviceProcessEvents DeviceFileEvents

False Positives

  • Legitimate penetration testers and red team members accessing Exploit-DB or running Metasploit during authorized engagements
  • Security operations center analysts and threat intelligence analysts browsing vulnerability databases as part of daily research duties
  • Software developers and QA engineers creating files named with CVE identifiers when building patching tools, scanners, or security regression test suites
  • Academic or training environments where students execute public CVE PoC scripts in sandboxed lab systems that share endpoint telemetry with the production SIEM
  • Automated vulnerability management scanners (Tenable, Rapid7 InsightVM, Qualys) whose agent processes may trigger on exploit-named file patterns

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections