{
  "hunt": {
    "meta": {
      "tlp": "clear",
      "hunt": {
        "handoff": "promote-to-detection",
        "trigger": "intel-report",
        "methodology": "model-assisted",
        "applicability": "campaign-specific",
        "justification": "Russian state actors like Static Tundra specialize in compromising network infrastructure for years-long intelligence gathering; identifying these footholds is essential for defending manufacturing and telecom sectors."
      },
      "name": "Static Tundra: Cisco IOS Post-Exploitation",
      "type": "investigation",
      "labels": [
        "hunt",
        "attack.t1041",
        "attack.t1090.003",
        "attack.t1190"
      ],
      "series": {
        "slug": "static-tundra-long-term-exploitation-of-end-of-life-network-devices",
        "index": 2,
        "title": "Static Tundra: long-term exploitation of end-of-life network devices",
        "total": 2
      },
      "related": [
        {
          "hunt": "initial-access-smart-install-exploitation",
          "reason": "The initial exploit against port 4786 is a distinct stage handled by a separate hunt focused on perimeter traffic.",
          "relation": "out-of-scope-alternative"
        },
        {
          "hunt": "vulnerable-cisco-asset-exposure",
          "relation": "follows"
        }
      ],
      "targets": {
        "hunter": {
          "name": "Hunt agent",
          "agent": true
        },
        "analyst": {
          "name": "Tier-2 analyst",
          "role": "analyst"
        },
        "network": {
          "name": "Network telemetry",
          "category": "network",
          "telemetry": [
            "network"
          ]
        },
        "endpoint": {
          "name": "Endpoint telemetry (hb_ surfaces)",
          "category": "endpoint",
          "telemetry": [
            "endpoint"
          ]
        }
      },
      "analysis": "A simple rule might catch port 69 usage, but this hunt correlates vulnerability presence with anomalous management sources and outbound probing behavior to confirm a state-sponsored intrusion rather than a configuration error.",
      "coverage": [
        {
          "stage": "configuration-extraction-tftp",
          "steps": [
            "tftp-outbound-exfiltration"
          ],
          "status": "covered"
        },
        {
          "stage": "snmp-abuse-and-execution",
          "steps": [
            "anomalous-snmp-connections"
          ],
          "status": "covered"
        },
        {
          "stage": "persistence-firmware-implant",
          "reason": "Identifying the SYNful Knock implant requires DPI for specific TCP flags not available in standard hb_network_connection data.",
          "status": "not_visible",
          "blind_spot": "no-dpi-flags"
        },
        {
          "stage": "defense-evasion-and-discovery",
          "steps": [
            "outbound-lateral-probing"
          ],
          "status": "covered"
        },
        {
          "stage": "vulnerability-identification",
          "reason": "Belongs to another part of the 'Static Tundra: long-term exploitation of end-of-life network devices' series.",
          "status": "out_of_scope"
        },
        {
          "stage": "initial-access-smart-install",
          "reason": "Belongs to another part of the 'Static Tundra: long-term exploitation of end-of-life network devices' series.",
          "status": "out_of_scope"
        }
      ],
      "scenario": {
        "stages": [
          {
            "name": "End-of-Life Device Vulnerability Identification",
            "slug": "vulnerability-identification",
            "tactic": "initial-access",
            "techniques": [
              "T1190"
            ],
            "observables": [
              "CVE-2018-0171",
              "Cisco IOS Software",
              "Cisco IOS XE Software",
              "End-of-life (EoL) network devices"
            ]
          },
          {
            "name": "Smart Install Exploitation",
            "slug": "initial-access-smart-install",
            "tactic": "initial-access",
            "techniques": [
              "T1190"
            ],
            "observables": [
              "TCP port 4786",
              "Cisco Smart Install protocol activity"
            ]
          },
          {
            "name": "Configuration Exfiltration via TFTP",
            "slug": "configuration-extraction-tftp",
            "tactic": "exfiltration",
            "techniques": [
              "T1041"
            ],
            "observables": [
              "tftp-server nvram:startup-config",
              "UDP port 69",
              "startup-config file retrieval"
            ]
          },
          {
            "name": "SNMP Community String Abuse",
            "slug": "snmp-abuse-and-execution",
            "tactic": "execution",
            "techniques": [
              "T1090.003"
            ],
            "observables": [
              "UDP port 161",
              "SNMP community string 'public'",
              "SNMP community string 'anonymous'",
              "Spoofed SNMP source IP addresses"
            ]
          },
          {
            "name": "Firmware Persistence via SYNful Knock",
            "slug": "persistence-firmware-implant",
            "tactic": "persistence",
            "observables": [
              "SYNful Knock implant",
              "TCP SYN 'magic packet' to non-standard ports",
              "Privileged local user account creation"
            ]
          },
          {
            "name": "Logging Evasion and Lateral Discovery",
            "slug": "defense-evasion-and-discovery",
            "tactic": "defense-evasion",
            "observables": [
              "TACACS+ configuration modification",
              "Access Control List (ACL) modifications",
              "show cdp neighbors"
            ]
          }
        ],
        "summary": "Static Tundra, a Russian FSB-linked actor, targets end-of-life Cisco devices by exploiting the Smart Install vulnerability (CVE-2018-0171) or abusing SNMP with guessed community strings to exfiltrate configurations. They maintain multi-year persistence using the SYNful Knock firmware implant and by creating local accounts, while evading detection by disabling TACACS+ logging."
      },
      "severity": "high",
      "rationale": "Focus on internet-facing edge routers and switches; prioritize assets where 'Smart Install' or 'SNMP' are exposed to the public internet according to vulnerability scans.",
      "guardrails": {
        "claims": "no_unsupported",
        "evidence": "citation_required",
        "telemetry": "untrusted",
        "missing_data": "not_benign"
      },
      "hypothesis": "An adversary has exploited legacy Smart Install services to enable TFTP servers for configuration theft or is using compromised SNMP community strings for lateral discovery within the network infrastructure.",
      "parameters": {
        "scope_hosts": {
          "type": "list[string]",
          "default": [],
          "description": "Optional list of device hostnames to narrow the search; leave empty for fleet-wide analysis."
        },
        "lookback_days": {
          "type": "number",
          "default": "14",
          "description": "Days of history to examine."
        }
      },
      "provenance": {
        "authors": [
          {
            "org": "huntbase.io",
            "name": "Huntbase hunt generation"
          }
        ],
        "generated": {
          "by": "huntbase-hunt-generation",
          "from": "https://blog.talosintelligence.com/static-tundra/",
          "gates": [
            "dry-run",
            "lint"
          ],
          "model": "hb_google/gemini-3-flash-preview"
        }
      },
      "references": [
        {
          "url": "https://blog.talosintelligence.com/static-tundra/",
          "name": "Static Tundra: long-term exploitation of end-of-life network devices"
        }
      ],
      "blind_spots": [
        {
          "id": "no-cli-visibility",
          "risk": "Adversaries can modify configurations silently if the network device does not forward CLI logs, leaving only the network-level aftermath for detection.",
          "stage": "configuration-extraction-tftp",
          "question": "What commands were typed into the CLI to enable TFTP?",
          "requires": "Cisco IOS syslog with command logging (ARCHIVE)"
        },
        {
          "id": "no-dpi-flags",
          "risk": "The SYNful Knock firmware implant responds only to specific TCP SYN flags that standard network connection logs do not record, making the implant itself invisible.",
          "stage": "persistence-firmware-implant",
          "question": "Are SYNful Knock magic packets reaching the device?",
          "requires": "Deep Packet Inspection (DPI) or NetFlow with TCP flags"
        }
      ]
    },
    "name": "Static Tundra: Cisco IOS Post-Exploitation",
    "description": "Static Tundra, an FSB-aligned group, targets end-of-life Cisco networking devices by exploiting CVE-2018-0171. This hunt follows a phased approach to identify the aftermath of such an intrusion: first by scoping vulnerable assets and looking for the activation of TFTP exfiltration or rare SNMP management traffic, then pivoting to detect lateral probing from these devices into the internal network. Because these devices do not support standard endpoint agents, the hunt relies on network connection baselining and vulnerability telemetry to find signs of persistent access and configuration theft."
  },
  "nodes": [
    {
      "id": "hypothesis",
      "type": "hypothesis",
      "label": "Hypothesis",
      "config": {
        "tags": [],
        "series": {
          "slug": "static-tundra-long-term-exploitation-of-end-of-life-network-devices",
          "index": 2,
          "title": "Static Tundra: long-term exploitation of end-of-life network devices",
          "total": 2
        },
        "coverage": [
          {
            "stage": "configuration-extraction-tftp",
            "steps": [
              "tftp-outbound-exfiltration"
            ],
            "status": "covered"
          },
          {
            "stage": "snmp-abuse-and-execution",
            "steps": [
              "anomalous-snmp-connections"
            ],
            "status": "covered"
          },
          {
            "stage": "persistence-firmware-implant",
            "reason": "Identifying the SYNful Knock implant requires DPI for specific TCP flags not available in standard hb_network_connection data.",
            "status": "not_visible",
            "blind_spot": "no-dpi-flags"
          },
          {
            "stage": "defense-evasion-and-discovery",
            "steps": [
              "outbound-lateral-probing"
            ],
            "status": "covered"
          },
          {
            "stage": "vulnerability-identification",
            "reason": "Belongs to another part of the 'Static Tundra: long-term exploitation of end-of-life network devices' series.",
            "status": "out_of_scope"
          },
          {
            "stage": "initial-access-smart-install",
            "reason": "Belongs to another part of the 'Static Tundra: long-term exploitation of end-of-life network devices' series.",
            "status": "out_of_scope"
          }
        ],
        "rationale": "An adversary has exploited legacy Smart Install services to enable TFTP servers for configuration theft or is using compromised SNMP community strings for lateral discovery within the network infrastructure.",
        "blind_spots": [
          {
            "id": "no-cli-visibility",
            "risk": "Adversaries can modify configurations silently if the network device does not forward CLI logs, leaving only the network-level aftermath for detection.",
            "stage": "configuration-extraction-tftp",
            "question": "What commands were typed into the CLI to enable TFTP?",
            "requires": "Cisco IOS syslog with command logging (ARCHIVE)"
          },
          {
            "id": "no-dpi-flags",
            "risk": "The SYNful Knock firmware implant responds only to specific TCP SYN flags that standard network connection logs do not record, making the implant itself invisible.",
            "stage": "persistence-firmware-implant",
            "question": "Are SYNful Knock magic packets reaching the device?",
            "requires": "Deep Packet Inspection (DPI) or NetFlow with TCP flags"
          }
        ],
        "scoping_notes": "Focus on internet-facing edge routers and switches; prioritize assets where 'Smart Install' or 'SNMP' are exposed to the public internet according to vulnerability scans.",
        "beyond_detection": "A simple rule might catch port 69 usage, but this hunt correlates vulnerability presence with anomalous management sources and outbound probing behavior to confirm a state-sponsored intrusion rather than a configuration error."
      }
    },
    {
      "id": "identify-vulnerable-gateways",
      "type": "query",
      "label": "Scope vulnerable Cisco devices",
      "config": {
        "dsl": "sqlite",
        "role": "scoping",
        "source": "endpoint",
        "content": "SELECT device_uid, resource_uid, affected_package_name, affected_package_version, severity_id FROM hb_vulnerability_finding WHERE cve_uid = 'CVE-2018-0171' AND status != 'suppressed'",
        "surface": "hb_vulnerability_finding",
        "description": "Identify network devices in the estate currently reporting the CVE-2018-0171 vulnerability, which serves as the primary entry point for Static Tundra.",
        "expected_signal": "A list of device UIDs or resource identifiers. Silence indicates no known vulnerable devices were detected by recent scans."
      },
      "parents": [
        {
          "id": "hypothesis"
        }
      ],
      "primitive_config": {
        "dsl": "sqlite",
        "role": "scoping",
        "label": "Scope vulnerable Cisco devices",
        "reads": [
          "device_uid",
          "resource_uid",
          "affected_package_name",
          "affected_package_version",
          "severity_id"
        ],
        "source": "hb_vulnerability_finding",
        "target": "endpoint",
        "content": "SELECT device_uid, resource_uid, affected_package_name, affected_package_version, severity_id FROM hb_vulnerability_finding WHERE cve_uid = 'CVE-2018-0171' AND status != 'suppressed'",
        "silence": "not_evidence_of_absence",
        "expected": "A list of device UIDs or resource identifiers. Silence indicates no known vulnerable devices were detected by recent scans.",
        "verified": "dry-run",
        "verified_at": "2026-09-20"
      }
    },
    {
      "id": "tftp-outbound-exfiltration",
      "type": "query",
      "label": "TFTP traffic from network devices",
      "config": {
        "dsl": "sqlite",
        "role": "detection-candidate",
        "source": "network",
        "content": "SELECT device_hostname, src_endpoint_ip, dst_endpoint_ip, dst_endpoint_port, direction, time FROM hb_network_connection WHERE dst_endpoint_port = 69 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')",
        "surface": "hb_network_connection",
        "description": "Detect TFTP traffic (port 69) involving vulnerable devices, which indicates configuration extraction after the attacker enables the local TFTP server.",
        "expected_signal": "Any connection on port 69 from a network device. These devices do not typically use TFTP for routine operations, making any hit suspicious."
      },
      "parents": [
        {
          "id": "identify-vulnerable-gateways"
        }
      ],
      "primitive_config": {
        "dsl": "sqlite",
        "role": "detection-candidate",
        "label": "TFTP traffic from network devices",
        "reads": [
          "device_hostname",
          "src_endpoint_ip",
          "dst_endpoint_ip",
          "dst_endpoint_port",
          "direction",
          "time"
        ],
        "source": "hb_network_connection",
        "target": "network",
        "content": "SELECT device_hostname, src_endpoint_ip, dst_endpoint_ip, dst_endpoint_port, direction, time FROM hb_network_connection WHERE dst_endpoint_port = 69 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days')",
        "silence": "not_evidence_of_absence",
        "expected": "Any connection on port 69 from a network device. These devices do not typically use TFTP for routine operations, making any hit suspicious.",
        "verified": "dry-run",
        "verified_at": "2026-09-20"
      }
    },
    {
      "id": "anomalous-snmp-connections",
      "type": "query",
      "label": "Anomalous SNMP management sources",
      "config": {
        "dsl": "sqlite",
        "role": "baseline",
        "source": "network",
        "content": "SELECT src_endpoint_ip, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen, MAX(time) AS last_seen FROM hb_network_connection WHERE dst_endpoint_port = 161 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY src_endpoint_ip HAVING host_count <= 2 ORDER BY host_count ASC",
        "surface": "hb_network_connection",
        "description": "Baseline SNMP traffic to find rare source IPs connecting to these devices, potentially indicating unauthorized management using guessed community strings.",
        "expected_signal": "Source IPs that manage only one or two devices. Standard management platforms typically touch the entire fleet."
      },
      "parents": [
        {
          "id": "identify-vulnerable-gateways"
        }
      ],
      "primitive_config": {
        "dsl": "sqlite",
        "role": "baseline",
        "label": "Anomalous SNMP management sources",
        "reads": [
          "src_endpoint_ip",
          "device_hostname",
          "time"
        ],
        "source": "hb_network_connection",
        "target": "network",
        "content": "SELECT src_endpoint_ip, COUNT(DISTINCT device_hostname) AS host_count, MIN(time) AS first_seen, MAX(time) AS last_seen FROM hb_network_connection WHERE dst_endpoint_port = 161 AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY src_endpoint_ip HAVING host_count <= 2 ORDER BY host_count ASC",
        "silence": "not_evidence_of_absence",
        "baseline": {
          "window": "{{lookback_days}}d",
          "compare": "first_seen"
        },
        "expected": "Source IPs that manage only one or two devices. Standard management platforms typically touch the entire fleet.",
        "verified": "dry-run",
        "prevalence": {
          "by": "device_hostname",
          "key": [
            "src_endpoint_ip"
          ],
          "rare_below": 3
        },
        "verified_at": "2026-09-20"
      }
    },
    {
      "id": "evaluate-early-compromise",
      "type": "analytic",
      "label": "Evaluate initial compromise",
      "config": {
        "cite": "required",
        "tools": [
          "endpoint",
          "network"
        ],
        "context": [
          "identify-vulnerable-gateways",
          "tftp-outbound-exfiltration",
          "anomalous-snmp-connections"
        ],
        "objective": "Determine which hosts show evidence of both vulnerability exposure (CVE-2018-0171) and active configuration-theft behaviors (TFTP usage or rare SNMP sources).",
        "description": "Correlate the presence of known vulnerabilities with anomalous TFTP or SNMP activity to confirm a high-confidence lead.",
        "max_iterations": 3,
        "expected_signal": "A per-host verdict identifying likely breached gateways.",
        "success_criteria": "A list of hosts classified as malicious or suspicious based on the intersection of vulnerability and behavior."
      },
      "parents": [
        {
          "id": "tftp-outbound-exfiltration",
          "kind": "merge"
        },
        {
          "id": "anomalous-snmp-connections",
          "kind": "merge"
        }
      ]
    },
    {
      "id": "outbound-lateral-probing",
      "type": "query",
      "label": "Outbound lateral discovery probing",
      "config": {
        "dsl": "sqlite",
        "role": "triage",
        "source": "network",
        "content": "SELECT device_hostname, src_endpoint_ip, dst_endpoint_ip, dst_endpoint_port, protocol, COUNT(*) as connection_count FROM hb_network_connection WHERE direction = 'outbound' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, dst_endpoint_ip, dst_endpoint_port ORDER BY connection_count DESC",
        "surface": "hb_network_connection",
        "description": "Search for outbound scanning or new connection patterns originating from the devices, mimicking 'show cdp neighbors' behavior that manifests as network probes.",
        "expected_signal": "New or high-frequency outbound connections to internal IP ranges from the perimeter devices, indicating post-compromise reconnaissance."
      },
      "parents": [
        {
          "id": "evaluate-early-compromise"
        }
      ],
      "primitive_config": {
        "dsl": "sqlite",
        "role": "triage",
        "label": "Outbound lateral discovery probing",
        "reads": [
          "device_hostname",
          "src_endpoint_ip",
          "dst_endpoint_ip",
          "dst_endpoint_port",
          "protocol",
          "time"
        ],
        "source": "hb_network_connection",
        "target": "network",
        "content": "SELECT device_hostname, src_endpoint_ip, dst_endpoint_ip, dst_endpoint_port, protocol, COUNT(*) as connection_count FROM hb_network_connection WHERE direction = 'outbound' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, dst_endpoint_ip, dst_endpoint_port ORDER BY connection_count DESC",
        "silence": "not_evidence_of_absence",
        "expected": "New or high-frequency outbound connections to internal IP ranges from the perimeter devices, indicating post-compromise reconnaissance.",
        "verified": "dry-run",
        "verified_at": "2026-09-20"
      }
    },
    {
      "id": "analyze-intrusion-chain",
      "type": "analytic",
      "label": "Analyze intrusion chain",
      "config": {
        "cite": "required",
        "tools": [
          "endpoint",
          "network"
        ],
        "context": [
          "evaluate-early-compromise",
          "outbound-lateral-probing"
        ],
        "objective": "Confirm persistent intrusion by correlating the early-access verdict with subsequent lateral discovery patterns.",
        "description": "Assemble the full story: did a vulnerable host lose its configuration via TFTP and then begin probing the internal network.",
        "max_iterations": 4,
        "expected_signal": "A detailed final assessment citing the full sequence of events per host.",
        "success_criteria": "A final malicious verdict for hosts showing a complete attack chain from access to discovery."
      },
      "parents": [
        {
          "id": "outbound-lateral-probing"
        }
      ]
    },
    {
      "id": "route-on-verdict",
      "type": "checkpoint",
      "label": "Route on verdict",
      "config": {
        "fuzzy": true,
        "judge": "hunter",
        "question": "the analyze-intrusion-chain verdict is malicious for any host showing both exfiltration and lateral probing",
        "condition": "the analyze-intrusion-chain verdict is malicious for any host showing both exfiltration and lateral probing",
        "blind_spot": "no-cli-visibility",
        "confidence": "high",
        "description": "Escalate confirmed intrusions to isolation and manual forensic review.",
        "checkpoint_type": "mandatory"
      },
      "parents": [
        {
          "id": "analyze-intrusion-chain"
        }
      ]
    },
    {
      "id": "isolate-device",
      "type": "action",
      "label": "Isolate network device",
      "config": {
        "target": "endpoint",
        "description": "Sever the adversary's foothold by isolating the compromised gateway.",
        "instructions": "Isolate the network device from the internal fabric and revoke all local and SNMP credentials immediately.",
        "action_approval": "required"
      },
      "parents": [
        {
          "id": "route-on-verdict",
          "branch": "on_supports"
        }
      ]
    },
    {
      "id": "analyst-validation",
      "type": "task",
      "label": "Analyst forensic validation",
      "config": {
        "assignee": "analyst",
        "description": "Conduct manual inspection of device logs and configuration to confirm the agent's findings.",
        "instructions": "Log in to the device console; check for 'tftp-server' lines in the running configuration and verify local user account additions. Inspect the ARP and CDP tables for signs of lateral mapping not visible in network connections."
      },
      "parents": [
        {
          "id": "route-on-verdict",
          "branch": "default"
        },
        {
          "id": "route-on-verdict",
          "branch": "on_unavailable"
        },
        {
          "id": "route-on-verdict",
          "branch": "on_refutes"
        },
        {
          "id": "isolate-device"
        }
      ]
    },
    {
      "id": "hunt-closeout",
      "type": "task",
      "label": "Hunt closeout",
      "config": {
        "assignee": "analyst",
        "description": "Finalize documentation and update the organization's vulnerability posture.",
        "instructions": "Record the findings in the incident management system. If positive, schedule urgent firmware updates or device replacements for all end-of-life hardware discovered in the scoping phase."
      },
      "parents": [
        {
          "id": "analyst-validation"
        }
      ]
    }
  ]
}