Unusual Network Connection via RunDLL32

edit

Identifies unusual instances of rundll32.exe making outbound network connections. This may indicate adversarial Command and Control activity.

Rule type: eql

Rule indices:

  • winlogbeat-*
  • logs-endpoint.events.*
  • logs-windows.*

Severity: medium

Risk score: 47

Runs every: 5 minutes

Searches indices from: now-9m (Date Math format, see also Additional look-back time)

Maximum alerts per execution: 100

References:

Tags:

  • Elastic
  • Host
  • Windows
  • Threat Detection
  • Defense Evasion

Version: 10 (version history)

Added (Elastic Stack release): 7.6.0

Last modified (Elastic Stack release): 7.14.0

Rule authors: Elastic

Rule license: Elastic License v2

Rule query

edit
sequence by host.id, process.entity_id with maxspan=1m [process
where event.type in ("start", "process_started") and process.name :
"rundll32.exe" and process.args_count == 1] [network where
process.name : "rundll32.exe" and not cidrmatch(destination.ip,
"10.0.0.0/8", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12",
"192.0.0.0/24", "192.0.0.0/29", "192.0.0.8/32", "192.0.0.9/32",
"192.0.0.10/32", "192.0.0.170/32", "192.0.0.171/32",
"192.0.2.0/24", "192.31.196.0/24", "192.52.193.0/24",
"192.168.0.0/16", "192.88.99.0/24", "224.0.0.0/4",
"100.64.0.0/10", "192.175.48.0/24","198.18.0.0/15", "198.51.100.0/24",
"203.0.113.0/24", "240.0.0.0/4", "::1", "FE80::/10",
"FF00::/8")]

Threat mapping

edit

Framework: MITRE ATT&CKTM

Rule version history

edit
Version 10 (7.14.0 release)
  • Updated query, changed from:

    sequence by host.id, process.entity_id with maxspan=1m [process
    where event.type in ("start", "process_started") and process.name :
    "rundll32.exe" and process.args_count == 1] [network where
    process.name : "rundll32.exe" and not cidrmatch(destination.ip,
    "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "127.0.0.0/8",
    "FE80::/10", "::1/128")]
Version 9 (7.13.0 release)
  • Updated query, changed from:

    sequence by host.id, process.entity_id with maxspan=1m [process
    where event.type in ("start", "process_started", "info") and
    process.name : "rundll32.exe" and process.args_count == 1] [network
    where process.name : "rundll32.exe" and network.protocol != "dns" and
    network.direction == "outgoing" and not cidrmatch(destination.ip,
    "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "127.0.0.0/8")]
Version 8 (7.12.0 release)
  • Formatting only
Version 7 (7.11.0 release)
  • Updated query, changed from:

    sequence by process.entity_id [process where process.name :
    "rundll32.exe" and event.type == "start"] [network where
    process.name : "rundll32.exe" and not cidrmatch(destination.ip,
    "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "127.0.0.0/8")]
Version 6 (7.10.0 release)
  • Updated query, changed from:

    event.category:network and event.type:connection and
    process.name:rundll32.exe and not destination.ip:(10.0.0.0/8 or
    172.16.0.0/12 or 192.168.0.0/16 or 127.0.0.0/8)
Version 5 (7.9.1 release)
  • Formatting only
Version 4 (7.9.0 release)
  • Updated query, changed from:

    process.name:rundll32.exe and event.action:"Network connection
    detected (rule: NetworkConnect)" and not destination.ip:(10.0.0.0/8 or
    172.16.0.0/12 or 192.168.0.0/16 or 127.0.0.0/8)
Version 3 (7.8.0 release)
  • Updated query, changed from:

    process.name:rundll32.exe and event.action:"Network connection
    detected (rule: NetworkConnect)" and not destination.ip:(10.0.0.0/8 or
    172.16.0.0/12 or 192.168.0.0/16)
Version 2 (7.7.0 release)
  • Updated query, changed from:

    process.name:rundll32.exe and event.action:"Network connection
    detected (rule: NetworkConnect)" and not destination.ip:10.0.0.0/8 and
    not destination.ip:172.16.0.0/12 and not destination.ip:192.168.0.0/16