Detect Malware in Elastic Security
Adversaries may develop malware and malware components that can be used during targeting. Building malicious software can include the development of payloads, droppers, post-compromise tools, backdoors, packers, C2 protocols, and the creation of infected removable media. Because malware development occurs primarily on adversary-controlled infrastructure before deployment, defenders cannot directly observe this activity. Detection must pivot to identifying proxies: compilation and build tool activity on non-developer endpoints, use of known obfuscation and packing tools, characteristics of freshly compiled executables executing immediately after creation, and behavioral patterns consistent with malware testing (sandbox evasion checks, anti-analysis routines). Threat actors such as Lazarus Group, APT29, Sandworm, Kimsuky, and Indrik Spider are known to develop bespoke malware to avoid commodity detection signatures.
MITRE ATT&CK
- Tactic
- Resource Development
- Technique
- T1587 Develop Capabilities
- Sub-technique
- T1587.001 Malware
- Canonical reference
- https://attack.mitre.org/techniques/T1587/001/
Elastic Detection Query
sequence by host.name with maxspan=5m
[process where event.type == "start" and (
process.name in~ ("csc.exe", "vbc.exe", "msbuild.exe", "cl.exe", "link.exe", "rc.exe", "ilasm.exe",
"upx.exe", "confuserex.exe", "obfuscar.exe", "dotfuscator.exe", "eazfuscator.exe", "dnguard.exe")
or process.args : ("msfvenom", "msfconsole", "shell_reverse_tcp", "shell_bind_tcp", "windows/meterpreter", "upx", "--brute", "--ultra-brute")
or process.name : ("vmprotect.exe", "themida.exe", "pecompact.exe", "aspack.exe", "mpress.exe")
) and not process.parent.name in~ ("devenv.exe", "msbuild.exe", "dotnet.exe", "code.exe", "rider64.exe", "idea64.exe", "eclipsec.exe")
] by host.name
[file where event.type == "creation" and (
file.extension in~ ("exe", "dll")
and file.path : ("*\\Temp\\*", "*\\AppData\\Local\\Temp\\*", "*\\Users\\Public\\*", "*\\ProgramData\\*")
)] by host.name Detects malware development activity using an EQL sequence: a compiler, packer, obfuscator, or Metasploit tool executing on a non-developer endpoint, followed within 5 minutes by a new PE binary written to a suspicious output path (Temp, AppData, Public, ProgramData). Covers T1587.001 compile-and-execute patterns as well as standalone tool invocations.
Data Sources
Required Tables
False Positives & Tuning
- Legitimate build pipelines running outside IDE context on CI/CD agents (e.g., Azure DevOps, Jenkins build agents) — whitelist known CI service accounts and host names
- Security researchers or red-teamers running UPX or Metasploit on dedicated test hosts — create exceptions scoped to specific asset groups
- Software developers compiling projects from command line on workstations without an IDE parent process — tune by adding known developer machine hostnames to an exclusion list
Other platforms for T1587.001
Testing Methodology
Validate this detection against 4 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 1On-System C# Payload Compilation via csc.exe
Expected signal: Sysmon Event ID 1 (Process Create): Image=csc.exe, CommandLine containing '/out:' and path to %TEMP%, ParentImage=cmd.exe. Sysmon Event ID 11 (File Create): TargetFilename ending in df00tech_payload.exe in the Temp directory, initiated by csc.exe. Security Event ID 4688 (if command line auditing enabled) for the csc.exe invocation.
- Test 2Executable Packing with UPX
Expected signal: Sysmon Event ID 1: Process Create for upx.exe with CommandLine containing '--best' and the target file path. Sysmon Event ID 11: File modification event on df00tech_target.exe as UPX rewrites the PE in-place. Sysmon Event ID 3: Network connection to GitHub for the UPX download (if not pre-staged).
- Test 3In-Memory C# Compilation via PowerShell Add-Type
Expected signal: Sysmon Event ID 1: Process Create for powershell.exe with CommandLine containing 'Add-Type', '-TypeDefinition', and 'CSharpCodeProvider' (internal). PowerShell ScriptBlock Log Event ID 4104 capturing the full Add-Type invocation including the embedded C# source. Temporary .dll files may be written to %TEMP% by the CodeDom compiler with random names before being loaded and deleted.
- Test 4Metasploit msfvenom Payload Generation Simulation
Expected signal: Sysmon for Linux Event ID 1 (if deployed) or auditd execve records capturing the msfvenom command invocation. The string 'msfvenom' and 'reverse_tcp' in the command line are the primary indicators. If msfvenom is present and executes, an ELF binary is created in /tmp, triggering file creation events.
References (12)
- https://attack.mitre.org/techniques/T1587/001/
- https://attack.mitre.org/techniques/T1027/002/
- https://attack.mitre.org/techniques/T1027/004/
- https://www.mandiant.com/resources/blog/mandiant-apt1-report
- https://securelist.com/sofacy-apt-hits-high-profile-targets-with-updated-toolset/72924/
- https://learn.microsoft.com/en-us/defender-endpoint/advanced-hunting-devicefileevents-table
- https://learn.microsoft.com/en-us/defender-endpoint/advanced-hunting-deviceprocessevents-table
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1587.001/T1587.001.md
- https://github.com/upx/upx
- https://docs.metasploit.com/docs/using-metasploit/basics/how-to-use-msfvenom.html
- https://learn.microsoft.com/en-us/dotnet/api/microsoft.csharp.csharpcodeprovider
- https://github.com/yck1509/ConfuserEx
Unlock Pro Content
Get the full detection package for T1587.001 including response playbook, investigation guide, and atomic red team tests.