Network Connection via Certutil

edit

Identifies certutil.exe making a network connection. Adversaries could abuse certutil.exe to download a certificate, or malware, from a remote URL.

Rule type: eql

Rule indices:

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

Severity: low

Risk score: 21

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
  • Command and Control

Version: 7 (version history)

Added (Elastic Stack release): 7.7.0

Last modified (Elastic Stack release): 8.2.0

Rule authors: Elastic

Rule license: Elastic License v2

Investigation guide

edit
## Triage and analysis

### Investigating Network Connection via Certutil

Attackers can abuse `certutil.exe` to download malware, offensive security tools, and certificates from external sources
in order to take the next steps in a compromised environment.

This rule looks for network events where `certutil.exe` contacts IP ranges other than the ones specified in
[IANA IPv4 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml)

#### Possible investigation steps

- Investigate the script execution chain (parent process tree).
- Investigate other alerts related to the user/host in the last 48 hours.
- Investigate if the downloaded file was executed.
- Determine the context in which `certutil.exe` and the file were run.
- Retrieve the file downloaded and:
  - Use a sandboxed malware analysis system to perform analysis.
    - Observe attempts of contacting external domains and addresses.
  - Use the PowerShell Get-FileHash cmdlet to get the SHA-256 hash value of the file.
    - Search for the existence of this file in resources like VirusTotal, Hybrid-Analysis, CISCO Talos, Any.run, etc.

### False positive analysis

- This mechanism can be used legitimately. If trusted software uses this command and the triage has not identified
anything suspicious, this alert can be closed as a false positive.
- If this activity is expected and noisy in your environment, consider adding exceptions — preferably with a combination
of user and command line conditions.

### Response and remediation

- Initiate the incident response process based on the outcome of the triage.
- Isolate the involved host to prevent further post-compromise behavior.
- If the triage identified malware, search the environment for additional compromised hosts.
- Implement any temporary network rules, procedures, and segmentation required to contain the malware.

Rule query

edit
sequence by process.entity_id [process where process.name :
"certutil.exe" and event.type == "start"] [network where
process.name : "certutil.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 7 (8.2.0 release)
  • Formatting only
Version 6 (7.14.0 release)
  • Updated query, changed from:

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

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

    process.name:certutil.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)