T1542.004 Google Chronicle · YARA-L

Detect ROMMONkit in Google Chronicle

Adversaries may abuse the ROM Monitor (ROMMON) by loading unauthorized firmware with adversary code to provide persistent access and manipulate Cisco network device behavior in a way that is extremely difficult to detect. ROMMON is a Cisco network device firmware that functions as a boot loader, boot image, or boot helper to initialize hardware and software when the platform is powered on or reset. An adversary may upgrade the ROMMON image locally or remotely via TFTP with adversary code and restart the device to overwrite the existing ROMMON image. This provides persistence that survives IOS upgrades and standard remediation, and has been observed in the wild via the SYNful Knock implant campaign targeting Cisco ISR routers. Because ROMMON executes before the operating system loads, malicious code embedded at this layer can intercept and modify IOS behavior, inject backdoors, and evade integrity checks.

MITRE ATT&CK

Tactic
Defense Evasion Persistence
Technique
T1542 Pre-OS Boot
Sub-technique
T1542.004 ROMMONkit
Canonical reference
https://attack.mitre.org/techniques/T1542/004/

YARA-L Detection Query

Google Chronicle (YARA-L)
yaral
rule t1542_004_rommonkit_cisco_firmware_manipulation {
  meta:
    author = "Argus Detection Engineering"
    description = "Detects ROMMONkit activity (T1542.004) — ROMMON firmware manipulation on Cisco network devices via syslog indicators including TFTP firmware transfers, ROMMON variable changes, config-register modifications, and suspicious reloads correlated with boot path changes."
    severity = "CRITICAL"
    priority = "HIGH"
    mitre_attack_tactic = "Persistence"
    mitre_attack_technique = "T1542.004"
    reference = "https://attack.mitre.org/techniques/T1542/004/"
    created = "2026-04-20"

  events:
    $e.metadata.event_type = "GENERIC_EVENT"
    $e.metadata.vendor_name = "Cisco"
    (
      re.regex($e.metadata.description, `(?i)(rommon|rom\s+monitor|bootldr|boot\s+variable|confreg|config-register|0x2142|0x2100|0x0)`)
      or re.regex($e.metadata.description, `(?i)(tftp|copy\s+tftp|archive\s+download-sw|upgrade\s+rom-monitor|upgrade\s+rommon)`)
      or (
        re.regex($e.metadata.description, `(SYS-5-RELOAD|Reload\s+requested|SYS-6-BOOTTIME)`)
        and re.regex($e.metadata.description, `(?i)(boot\s+system|BOOT\s+path-list|startup-config)`)
      )
    )

  condition:
    $e
}
critical severity medium confidence

Chronicle YARA-L 2.0 rule detecting ROMMONkit (T1542.004) through Cisco device syslog events ingested into Chronicle UDM. Monitors for ROMMON firmware manipulation keywords, TFTP-based firmware transfer commands, configuration register modifications (including the 0x2142 value used to bypass password recovery and alter boot behavior), and correlated reload-plus-boot-path-change patterns used in SYNful Knock-style implant deployment.

Data Sources

Cisco IOS syslog (Chronicle Cisco IOS log parser)Cisco ASA syslog (Chronicle Cisco ASA log parser)Generic syslog from network devices (Chronicle SYSLOG log parser)

Required Tables

UDM GENERIC_EVENT log type (Cisco vendor)

False Positives & Tuning

  • Legitimate ROMMON upgrades performed during scheduled maintenance — Cisco TAC-recommended ROMMON updates generate identical syslog messages; verify against an approved change record
  • Bulk IOS software upgrades via Cisco Smart Install or TFTP-based provisioning that trigger multiple TFTP and boot system messages across many devices simultaneously
  • Password recovery procedures performed on routers by network admins using config-register 0x2142 — a standard Cisco recovery technique that triggers the confreg/config-register keywords
Download portable Sigma rule (.yml)

Other platforms for T1542.004


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.

  1. Test 1Verify Current ROMMON Version and Boot Variables

    Expected signal: Cisco IOS syslog: `%SYS-6-PRIVCMD` (if privilege accounting enabled) for each privileged exec command. TACACS+ accounting records for the enable session and each show command. AAA accounting logs showing the source IP and username. No TFTP or reload events generated.

  2. Test 2TFTP Image Transfer to Network Device (Lab Only)

    Expected signal: Cisco IOS syslog: `%TFTP-6-TRANSFER: Received 1234 bytes` or `%COPY-5-UPROMPRMT: 1234 bytes copied in 2.345 secs`. CommonSecurityLog/Syslog in SIEM will show the TFTP transfer message with source IP 192.168.100.99. TACACS+ accounting logs the `copy tftp` command with source IP. NetFlow captures UDP/69 session from 192.168.100.99 to device management IP.

  3. Test 3Configuration Register Modification (Lab Only)

    Expected signal: Cisco IOS syslog: `%SYS-5-CONFIG_I: Configured from console by <user> on <terminal>` after the config change. `show bootvar` output includes `Configuration register is 0x2142`. TACACS+ accounting logs the `config-register 0x2142` command. Syslog forwarded to SIEM contains the CONFIG_I message with the configuration terminal session details.

  4. Test 4ROMMON Environment Variable Inspection via ROMMON Prompt (Lab Only)

    Expected signal: Cisco IOS syslog before reload: `%SYS-5-RELOAD: Reload requested by <user> on vty0. Reload Reason: Reload command.` After reload: `%SYS-6-BOOTTIME: Time taken to reboot after reload = <seconds> seconds`. TACACS+ logs the `reload` command. Syslog gap during ROMMON phase (ROMMON does not forward syslog). After IOS boots: logging resumes with startup sequence messages.

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections