The File Was Downloaded Once — Then Appeared on 37 Devices
The security team found the same suspicious file on 37 devices.
The first explanation sounded obvious.
“Thirty-seven users downloaded it.”
But the Internet-download evidence did not agree.
Agent Foskett found one external download — and then asked the question that changed the investigation:
How did one copy become 37?

Copies Are Not Downloads
A file can enter the environment once and then move internally. Count the copies, but investigate the path that created them.
Thirty-seven devices changed the question
Start with the hash, not the story
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
let FileHash = "9f2c7e1a4d8b6c3f5a0e7d2b1c9f4a6e8d3b5c7a";
DeviceFileEvents
| where Timestamp > ago(7d)
| where SHA1 == FileHash
| summarize FirstSeen=min(Timestamp),
LastSeen=max(Timestamp),
FileEvents=count()
by DeviceId, DeviceName
| order by FirstSeen asc
Only one device showed the Internet origin
Compare the origin evidence
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
let FileHash = "1111111111111111111111111111111111111111";
DeviceFileEvents
| where Timestamp > ago(7d)
| where SHA1 == FileHash
| project Timestamp, DeviceName, ActionType,
FileName, FolderPath,
FileOriginUrl, FileOriginIP,
RequestProtocol, RequestSourceIP,
InitiatingProcessFileName,
InitiatingProcessCommandLine
| order by Timestamp asc
The copies pointed back to one internal source
Pivot on the source IP
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
let SourceIP = "10.20.5.14";
DeviceFileEvents
| where Timestamp > ago(7d)
| where RequestProtocol =~ "SMB"
| where RequestSourceIP == SourceIP
| project Timestamp, DeviceName, ActionType,
FileName, FolderPath, SHA1,
RequestProtocol, RequestSourceIP,
InitiatingProcessAccountName
| order by Timestamp asc
Do not turn correlation into certainty
What Agent Foskett checked
The investigation finding
Related investigations
Final thought
Count the devices — but investigate the movement.
The Logs Already Knew! 🔎

