Air-Gap Bridging Exfiltration via Shared USB Media
Adversaries targeting air-gapped or network-segmented environments (ICS/OT, classified enclaves, isolated research networks) cannot rely on a network-based C2 channel to move stolen data off the isolated segment. Instead, malware families such as Agent.btz (the 2008 'Buckshot Yankee' incident), APT28's USBStealer, Machete, and Tropic Trooper's USBferry write themselves and staged data to removable media, then rely on a human or an automated routine to carry that same physical device to a network-connected host where the data is uploaded to the adversary. The defining artifact of this technique is not a single suspicious file, but a single USB device — identifiable by its device serial number — appearing on two or more hosts within a short window, especially when at least one of those hosts sits in an isolated or restricted network segment. A secondary artifact is the drop of a hidden collector/beacon file at the removable volume's root, historically a file literally named thumb.dd in the Agent.btz case, or an autorun.inf-based launcher in older variants.
What is THREAT-USB-AirGapBridging Air-Gap Bridging Exfiltration via Shared USB Media?
Air-Gap Bridging Exfiltration via Shared USB Media (THREAT-USB-AirGapBridging) maps to the Exfiltration tactic — the adversary is trying to steal data in MITRE ATT&CK.
This page provides production-ready detection logic for Air-Gap Bridging Exfiltration via Shared USB Media, covering the data sources and telemetry it touches: Drive: Drive Creation, File: File Creation, Microsoft Defender for Endpoint. The queries below are rated high severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.
MITRE ATT&CK
- Tactic
- Exfiltration
// Signal 1: the same physical USB storage device (identified by the device serial
// embedded in its PnP DeviceId) connects to two or more distinct hosts within 72 hours
let SameSerialMultiHost = DeviceEvents
| where Timestamp > ago(72h)
| where ActionType == "PnpDeviceConnected"
| where AdditionalFields has "USB"
| extend DeviceIdField = tostring(parse_json(AdditionalFields).DeviceId)
| extend DeviceClass = tostring(parse_json(AdditionalFields).ClassName)
| where DeviceClass in~ ("DiskDrive", "USBSTOR", "USB") or DeviceIdField has "USBSTOR"
| extend USBSerial = tostring(split(DeviceIdField, "\\")[-1])
| where isnotempty(USBSerial) and USBSerial != "0"
| summarize ConnectedHosts = make_set(DeviceName), HostCount = dcount(DeviceName),
FirstSeen = min(Timestamp), LastSeen = max(Timestamp)
by USBSerial
| where HostCount >= 2
| mv-expand ConnectedHosts to typeof(string);
// Signal 2: a hidden collector/launcher artifact written to the removable volume root —
// thumb.dd is the documented Agent.btz artifact name; autorun.inf covers older
// auto-execution variants (USBStealer, Machete, USBferry)
let HiddenDropperArtifact = DeviceFileEvents
| where Timestamp > ago(72h)
| where ActionType == "FileCreated"
| where FileName in~ ("thumb.dd", "autorun.inf")
| where FolderPath matches regex @"^[D-Z]:\\$"
| project DeviceName, ArtifactTime = Timestamp, FileName, FolderPath,
InitiatingProcessFileName, InitiatingProcessCommandLine;
// High-confidence: the shared-serial device also produced a hidden root artifact
// on at least one of the hosts it connected to
let CorrelatedBridging = SameSerialMultiHost
| join kind=inner (HiddenDropperArtifact) on $left.ConnectedHosts == $right.DeviceName
| extend Signal = "SharedUSBWithHiddenArtifact", RiskScore = 90
| project USBSerial, HostCount, ConnectedHosts, FirstSeen, LastSeen, ArtifactTime, FileName, FolderPath,
InitiatingProcessFileName, InitiatingProcessCommandLine, Signal, RiskScore;
// Lower-confidence standalone signal: the same device on 3+ distinct hosts is
// unusual even without an observed hidden-file drop and warrants review
let MultiHostOnly = SameSerialMultiHost
| where HostCount >= 3
| extend Signal = "SameUSBAcrossThreeOrMoreHosts", RiskScore = 65
| extend ArtifactTime = LastSeen, FileName = "", FolderPath = "",
InitiatingProcessFileName = "", InitiatingProcessCommandLine = ""
| project USBSerial, HostCount, ConnectedHosts, FirstSeen, LastSeen, ArtifactTime, FileName, FolderPath,
InitiatingProcessFileName, InitiatingProcessCommandLine, Signal, RiskScore;
union CorrelatedBridging, MultiHostOnly
| sort by RiskScore desc, HostCount desc Two-signal detection for air-gap bridging via shared USB media. The high-confidence signal correlates a single USB device (identified via the serial number embedded in its PnP DeviceId) connecting to two or more distinct hosts within 72 hours with a hidden root-level artifact drop (thumb.dd, autorun.inf) on at least one of those hosts — the documented Agent.btz/USBStealer/USBferry pattern for hopping across disconnected network segments. A lower-confidence standalone signal flags any USB device seen on three or more distinct hosts in the window even without an observed artifact drop, since this frequency is unusual for a personal device and warrants review in restricted environments.
Data Sources
Required Tables
False Positives
- IT-issued USB drives used for legitimate imaging, patching, or software deployment across multiple workstations by desktop support staff
- Shared USB drives used for sneakernet transfer of approved files between network segments as part of a documented, low-frequency business process
- USB backup drives rotated across multiple servers by backup administrators as part of a scheduled backup rotation
- Legacy or third-party hardware (printers, badge readers, kiosks) that legitimately ship an autorun.inf on their installer media
Sigma rule & cross-platform mapping
The detection logic for Air-Gap Bridging Exfiltration via Shared USB Media (THREAT-USB-AirGapBridging) above is provided in a vendor-neutral
form so you can deploy it on any SIEM. The same logic is shipped here as native
KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the
following logsource:
logsource:
product: windows Browse the community-maintained Sigma rules for this technique:
Platform-specific guides for THREAT-USB-AirGapBridging
References (6)
- https://attack.mitre.org/techniques/T1052/001/
- https://www.wired.com/2010/08/insider-threat-2/
- https://www.cisa.gov/news-events/cybersecurity-advisories
- https://attack.mitre.org/software/S0092/
- https://attack.mitre.org/software/S0136/
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1052.001/T1052.001.md
Testing Methodology
Validate this detection against 2 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.
- Test 1Simulate Hidden Collector Artifact Drop at Removable Volume Root
Expected signal: Sysmon Event ID 11: File Create for '<DriveLetter>:\thumb.dd' at the volume root. Sysmon Event ID 2 (if configured) or file attribute change events for the subsequent hidden/system attribute application.
- Test 2Simulate Same USB Serial Connecting to Multiple Hosts
Expected signal: DeviceEvents ActionType=PnpDeviceConnected on both Host A and Host B with an AdditionalFields.DeviceId sharing the same terminal serial-number segment.
Response Playbook
Triage
- Confirm the USB device serial number and pull its full connection history across the environment — how many distinct hosts has this exact device connected to, over what time span, and were any of those hosts in an isolated/restricted network segment (OT, classified enclave, R&D lab)?
- Check whether a hidden root-level artifact (thumb.dd, autorun.inf, or any dot-prefixed/hidden file) was written to the volume on any of the connecting hosts — this is the strongest single indicator of malicious intent versus benign shared-drive use.
- Review the file activity on each host around the time of connection: was a bulk copy of files performed to or from the device, and do those files match sensitive data categories (engineering drawings, PLC/HMI configuration, research data, financial records)?
- Identify who physically possessed the device between connections — badge/access logs, sign-out logs for shared IT hardware, or interviews if this appears to be an insider-carried device rather than automated malware propagation.
- Determine whether the device itself is infected: check for an autorun.inf or hidden executable on the media itself (requires physical or forensic imaging of the USB device) — if present, every host it touches going forward is at risk of re-infection.
- Cross-reference the affected hosts against your asset inventory for OT/ICS or air-gapped classification — a device that bridges a genuinely isolated segment to a network-connected host represents a completed air-gap breach, not just an in-progress one.
Containment
- Physically quarantine the USB device — do not reinsert it into any host until it has been forensically imaged; treat it as the primary vector for both malware propagation and data exfiltration.
- Isolate all hosts the device connected to, starting with any isolated/OT segment hosts, since those are least likely to have compensating network-based detections and most likely to represent the actual protected asset.
- If autorun.inf or a hidden collector artifact is confirmed on the device or any connected host, treat this as an active malware incident requiring full incident response, not a data-handling policy violation.
- Disable USB mass storage at the group policy or endpoint protection level for the affected network segment while the investigation is ongoing, if not already restricted (most true air-gapped/OT environments should default to disabled removable storage).
- Preserve the device and all connected hosts' relevant logs before any remediation actions that could overwrite volatile PnP/USB history.
- If exfiltration to a network-connected host is confirmed (i.e., the device later connected to an internet-reachable machine and data was uploaded), treat this as a completed exfiltration event and follow standard data-breach escalation.
Evidence Collection
- PnP device connection events (DeviceEvents PnpDeviceConnected, or Windows Security Event ID 6416) for every host the device serial number has touched, with timestamps
- Forensic image of the USB device itself — critical for identifying any hidden files, deleted-but-recoverable data, or an infected autorun component
- File system events (DeviceFileEvents, Sysmon Event ID 11) on each connected host for bulk copy operations to or from the removable drive letter in the time window around connection
- Any hidden or unusual files present at the volume root of the device: thumb.dd, autorun.inf, desktop.ini modifications, or unexpectedly named executables
- Physical chain-of-custody records for the device if it is IT-issued or logged out through an asset management system
- Network telemetry for the host where the device was last seen, to determine if and when collected data was subsequently uploaded off-premises — this is the actual exfiltration completion point when bridging from an isolated segment
Escalation Criteria
- ! The USB device connected to a host in a designated air-gapped, OT/ICS, or classified network segment and was subsequently seen on an internet-connected host — this is a confirmed air-gap bridging event, not a suspected one
- ! A hidden collector artifact (thumb.dd or equivalent) matching known Agent.btz/USBStealer/USBferry patterns was recovered from the device or a connected host
- ! The device shows connections across an unusually high number of distinct hosts (5+) in a short window, suggesting deliberate, systematic propagation rather than incidental reuse
- ! Sensitive OT/ICS engineering data, PLC configuration, or classified research data is confirmed present in file activity correlated with the device's connection window
- ! The device or its origin cannot be attributed to any known IT asset, employee, or contractor — an unidentified USB device bridging network segments is treated as a suspected deliberate intrusion tool pending attribution
Investigation Guide
Forensic Artifacts
- >
Registry: HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR — persistent record of every USB mass storage device ever connected to a host, including the serial number, first-installed, and last-connected timestamps, even after the device is removed - >
Registry: HKLM\SYSTEM\CurrentControlSet\Enum\USB — parent USB device enumeration entries correlating VID/PID to the mass-storage instance - >
Event Log: Microsoft-Windows-DriverFrameworks-UserMode/Operational and Security Event ID 6416 — device installation events with serial number when 'Audit PNP Activity'/'Audit Removable Storage' policies are enabled - >
File System: setupapi.dev.log (%WINDIR%\INF\setupapi.dev.log) — chronological driver installation log including every USB device's serial number and install timestamp - >
File System: volume root of the removable device itself — thumb.dd, autorun.inf, or hidden system files are the primary on-device IOCs for Agent.btz-family malware - >
LNK files / Jump Lists: Windows automatically creates shortcut files referencing recently accessed files on removable drives, which can reveal what was accessed even after the device is gone - >
$MFT / USN Journal: NTFS journal entries on the host can reveal file creation/deletion on the removable volume's drive letter even if the device itself is unavailable for imaging
Tuning Guidance
The primary source of noise is IT-managed shared USB hardware: imaging drives, patch-deployment media, and backup rotation drives are expected to touch multiple hosts by design. Build an inventory reference list of approved shared-device serial numbers (extracted from HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR or your asset management system) and exclude them from the multi-host correlation, while still monitoring for the hidden-artifact signal against all devices including allowlisted ones — a compromised IT imaging drive is a realistic supply-chain-style propagation vector. In genuinely air-gapped or OT/ICS environments, the correct baseline is that removable storage should be disabled entirely (via Group Policy or endpoint DLP); in such environments, any PnpDeviceConnected event at all — regardless of serial-number correlation — should be treated as a policy violation worth investigating, and this detection's multi-host correlation becomes a secondary escalation signal rather than the primary trigger. Ensure the 'Audit PNP Activity' and 'Audit Removable Storage' Group Policy settings are enabled fleet-wide; many organizations do not log Security Event ID 6416 by default, which silently defeats the SPL detection's device-serial correlation.
Hunting Queries
Fleet-wide hunt for any USB mass storage device serial number that has connected to more than one distinct host over the last 90 days. In most enterprises this is uncommon for personally-owned drives; cross-reference results against your IT asset inventory to separate approved shared-use devices (imaging drives, backup rotation media) from unexplained multi-host devices.
DeviceEvents
| where Timestamp > ago(90d)
| where ActionType == "PnpDeviceConnected"
| where AdditionalFields has "USB"
| extend DeviceIdField = tostring(parse_json(AdditionalFields).DeviceId)
| extend USBSerial = tostring(split(DeviceIdField, "\\")[-1])
| where isnotempty(USBSerial) and USBSerial != "0"
| summarize HostCount = dcount(DeviceName), Hosts = make_set(DeviceName, 20),
FirstSeen = min(Timestamp), LastSeen = max(Timestamp)
by USBSerial
| where HostCount >= 2
| sort by HostCount desc index=wineventlog sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" OR sourcetype="WinEventLog:Security" EventCode=6416
| stats dc(host) as HostCount, values(host) as Hosts, earliest(_time) as FirstSeen, latest(_time) as LastSeen by SerialNumber
| where HostCount >= 2
| sort - HostCount Direct hunt for the known Agent.btz-family hidden artifact filenames (thumb.dd, autorun.inf) being written to a removable drive's volume root. Any hit on this query in a modern environment is high-confidence malicious activity, as these filenames have no legitimate enterprise use case.
DeviceFileEvents
| where Timestamp > ago(30d)
| where ActionType == "FileCreated"
| where FileName in~ ("thumb.dd", "autorun.inf")
| where FolderPath matches regex @"^[D-Z]:\\$"
| project Timestamp, DeviceName, FileName, FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine
| sort by Timestamp desc index=wineventlog sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=11
(TargetFilename="D:\\thumb.dd" OR TargetFilename="E:\\thumb.dd" OR TargetFilename="F:\\thumb.dd"
OR TargetFilename="D:\\autorun.inf" OR TargetFilename="E:\\autorun.inf" OR TargetFilename="F:\\autorun.inf")
| table _time, host, TargetFilename, Image
| sort - _time Atomic Red Team Tests
Simulates the Agent.btz-family behavior of writing a hidden collector file named thumb.dd to the root of a removable volume. Uses a harmless placeholder file and a specified drive letter to avoid requiring an actual physical USB device — substitute a real removable drive letter to fully validate telemetry.
Command
set /p DriveLetter="Enter a removable drive letter for this test (e.g. E): "
echo harmless-atomic-test-payload > %DriveLetter%:\thumb.dd
attrib +h +s %DriveLetter%:\thumb.dd Cleanup
del /a:h /f %DriveLetter%:\thumb.dd Expected Telemetry
Sysmon Event ID 11: File Create for '<DriveLetter>:\thumb.dd' at the volume root. Sysmon Event ID 2 (if configured) or file attribute change events for the subsequent hidden/system attribute application.
Expected Detection
KQL HiddenDropperArtifact signal fires on FileName='thumb.dd' with FolderPath matching the drive-root regex. SPL EventCode=11 detection fires on the matching TargetFilename. This signal alone is high-confidence; pair with the multi-host PnP connection test below to validate the full correlated rule.
This test cannot be fully automated on a single host, since it requires physically connecting one USB device to two or more distinct endpoints. Documented here as a manual validation procedure: connect the same USB mass storage device to Host A, then within the detection window connect it to Host B, and confirm both PnpDeviceConnected telemetry events share the same device serial number.
Command
# Manual procedure — not a single-host command:
# 1. Insert a test USB drive into Host A. Note the resulting DeviceEvents PnpDeviceConnected event and record its AdditionalFields.DeviceId.
# 2. Remove the drive and insert it into Host B within 72 hours.
# 3. Confirm both hosts' PnpDeviceConnected events resolve to the same USBSerial value when parsed via split(DeviceId, "\\")[-1]. Cleanup
# Remove the test USB device from both hosts after validation. Expected Telemetry
DeviceEvents ActionType=PnpDeviceConnected on both Host A and Host B with an AdditionalFields.DeviceId sharing the same terminal serial-number segment.
Expected Detection
KQL SameSerialMultiHost signal fires with HostCount=2 for the shared USBSerial value, surfacing both ConnectedHosts.
Related Detections
Tactic Hub
Detection Variants (1)
Different telemetry and tradecraft for the same technique — pick the one that matches the data you collect.