T1195.003 Splunk · SPL

Detect Compromise Hardware Supply Chain in Splunk

Adversaries may manipulate hardware components in products prior to receipt by a final consumer for the purpose of data or system compromise. By modifying hardware or firmware in the supply chain, adversaries can insert a backdoor into consumer networks that may be difficult to detect and give the adversary a high degree of control over the system. Hardware backdoors may be inserted into various devices such as servers, workstations, network infrastructure, or peripherals. Real-world examples include UEFI firmware implants (LoJax, CosmicStrand, BlackLotus), compromised network interface card firmware (Equation Group capabilities), and server baseboard management controller (BMC) implants. Detection is inherently constrained because the compromise predates the device's arrival, often manifesting as unexpected kernel-mode drivers, firmware modification activity, anomalous out-of-band management traffic, or covert network channels established through compromised NIC or BMC firmware. Defenders should focus on firmware integrity monitoring, hardware inventory baselining, driver signing verification, and anomalous network activity from system-level processes.

MITRE ATT&CK

Tactic
Initial Access
Technique
T1195 Supply Chain Compromise
Sub-technique
T1195.003 Compromise Hardware Supply Chain
Canonical reference
https://attack.mitre.org/techniques/T1195/003/

SPL Detection Query

Splunk (SPL)
spl
index=wineventlog (sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" OR sourcetype="WinEventLog:Security" OR sourcetype="WinEventLog:System")
| eval lower_image=lower(coalesce(ImageLoaded, Image, ""))
| eval lower_cmdline=lower(coalesce(CommandLine, ImagePath, ""))
| eval lower_service_type=lower(coalesce(ServiceType, ""))
`comment("--- Detection Branch Flags ---")`
| eval is_firmware_tool=if(
    (EventCode=1 OR EventCode=4688) AND match(lower_cmdline,
    "(afuwin|afudos|\bfpt\.exe|fptw64|h2offt|winphlash|phlash16|amifldrv64|meinfo|flashrom|fwupdmgr|chipsec_main)"),
    1, 0)
| eval is_suspicious_driver_path=if(
    EventCode=6 AND match(lower_image,
    "(\\\\temp\\\\|\\\\appdata\\\\|\\\\programdata\\\\|\\\\users\\\\public\\\\|\\\\windows\\\\temp\\\\)"),
    1, 0)
| eval is_unsigned_driver=if(
    EventCode=6 AND (Signed="false" OR Signed="0" OR match(lower(coalesce(Signed,"")), "^(false|no|0)$")),
    1, 0)
| eval is_kernel_driver_service=if(
    EventCode=7045 AND match(lower_service_type, "(kernel mode driver|file system driver)") AND
    match(lower_cmdline, "(\\\\temp\\\\|\\\\appdata\\\\|\\\\programdata\\\\|\\\\windows\\\\temp\\\\)"),
    1, 0)
`comment("--- Filter to relevant events only ---")`
| where (is_firmware_tool=1 OR is_suspicious_driver_path=1 OR is_unsigned_driver=1 OR is_kernel_driver_service=1)
`comment("--- Assign detection categories ---")`
| eval detection_category=case(
    is_firmware_tool=1, "Firmware Flash Utility Execution",
    is_suspicious_driver_path=1 AND is_unsigned_driver=1, "Unsigned Driver From Suspicious Path",
    is_suspicious_driver_path=1, "Driver Loaded From Non-Standard Path",
    is_unsigned_driver=1, "Unsigned Kernel Driver Load",
    is_kernel_driver_service=1, "Kernel Driver Service Installed From Suspicious Path",
    true(), "Unknown Hardware Anomaly"
)
| eval risk_score=is_firmware_tool + is_suspicious_driver_path + is_unsigned_driver + is_kernel_driver_service
| eval risk_detail=case(
    EventCode=6, "Driver: ".ImageLoaded." | Signed: ".Signed." | Sig: ".coalesce(Signature, "N/A"),
    EventCode=1 OR EventCode=4688, "Process: ".Image." | CmdLine: ".CommandLine,
    EventCode=7045, "Service: ".ServiceName." | Type: ".ServiceType." | Path: ".ImagePath,
    true(), "Event: ".EventCode
)
| table _time, host, detection_category, risk_score, risk_detail, EventCode, User, ImageLoaded, Image, CommandLine, Signed, Signature, ServiceName, ServiceType, ImagePath
| sort - risk_score - _time
critical severity low confidence

Multi-branch detection for hardware supply chain compromise artifacts using Sysmon and Windows event logs. Uses Sysmon Event ID 6 (Driver Load) to identify unsigned drivers loading from user-writable paths, Event ID 1 (Process Create) to catch firmware flash utilities executing outside vendor update pipelines, and Windows System Event ID 7045 (New Service Installed) to detect kernel driver services installed from suspicious paths. Each branch is independently scored; the cumulative risk_score helps analysts prioritize multi-indicator events. Confidence is low because hardware-level implants are fundamentally opaque to OS-level telemetry — these detections catch derivative effects when firmware backdoors interact with the OS.

Data Sources

Driver: Driver LoadProcess: Process CreationFirmware: Firmware ModificationSysmon Event ID 6Sysmon Event ID 1Windows System Event ID 7045

Required Sourcetypes

XmlWinEventLog:Microsoft-Windows-Sysmon/OperationalWinEventLog:SecurityWinEventLog:System

False Positives & Tuning

  • Hardware vendor management suites (Dell SupportAssist, HP Support Assistant, Lenovo Vantage) legitimately run firmware flash utilities during scheduled updates — establish an allowlist of known vendor binaries and their parent process chains
  • Windows Update process (TrustedInstaller.exe, WUauclt.exe) installs unsigned drivers during Windows Upgrade scenarios — check the Sysmon Signature field for Microsoft signatures that may not be classified as SignedValid during upgrade
  • IT administrators using chipsec, flashrom, or MEInfo for authorized firmware auditing — coordinate with security team to document authorized hardware audit windows
  • Industrial/OT environments where legacy hardware drivers legitimately lack digital signatures — consider a separate baseline policy for OT segment endpoints
  • Penetration testing or red team exercises that deliberately load test drivers — coordinate with testing teams to whitelist test activity time windows
  • Hardware provisioning workstations used to image machines may run vendor firmware tools as part of their normal workflow — identify and exclude provisioning host accounts
Download portable Sigma rule (.yml)

Other platforms for T1195.003


Testing Methodology

Validate this detection against 5 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 1Firmware Inventory Tool Execution (Read-Only Audit)

    Expected signal: Sysmon Event ID 1: Process Create with Image=powershell.exe, CommandLine containing 'Win32_BIOS' and 'Win32_BaseBoard'. Security Event ID 4688 (if command line auditing enabled). Note: WMI queries also generate Event ID 4688 for wmiprvse.exe child processes.

  2. Test 2Simulate Firmware Flash Tool Execution From Temp Directory

    Expected signal: Sysmon Event ID 1: Process Create with Image=C:\Windows\Temp\AFUWINx64.EXE. Security Event ID 4688 with NewProcessName=C:\Windows\Temp\AFUWINx64.EXE. The OriginalFileName in PE headers will show cmd.exe (indicating the binary was renamed), which is an additional forensic signal.

  3. Test 3Inject Rogue PCI Device Registry Key

    Expected signal: Sysmon Event ID 12 (Registry Key Create): TargetObject=HKLM\SYSTEM\CurrentControlSet\Enum\PCI\VEN_DEAD&DEV_BEEF&SUBSYS_00000000&REV_00, Image=powershell.exe. Sysmon Event ID 13 (Registry Value Set): TargetObject containing DeviceDesc. DeviceRegistryEvents in MDE will record ActionType=RegistryKeyCreated with InitiatingProcessFileName=powershell.exe.

  4. Test 4Install Kernel Driver Service From Temp Path

    Expected signal: Windows System Event ID 7045 (New Service Installed): ServiceName=HWImplantTestDrv, ServiceType=kernel mode driver, StartType=demand start, ImagePath=C:\Windows\Temp\hw_implant_test.sys. Security Event ID 4697 (A service was installed in the system). The ImagePath pointing to \Windows\Temp\ is the primary anomaly indicator.

  5. Test 5Simulate BMC/IPMI Network Reconnaissance From Management Interface

    Expected signal: Sysmon Event ID 1: Process Create with Image=curl.exe, User=SYSTEM (or NT AUTHORITY\SYSTEM). Sysmon Event ID 3: Network Connection attempted from curl.exe running as SYSTEM to 127.0.0.1:9876. DeviceNetworkEvents in MDE: InitiatingProcessAccountName=SYSTEM, RemotePort=9876.

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections