Microsoft Defender Blocked the Malware — So Why Was the Device Still Talking to the Internet?
Microsoft Defender did exactly what everyone wanted.
It detected the malicious file.
It blocked execution.
The alert showed the threat had been prevented.
Case closed?
Not quite.
Minutes later, the same endpoint was still making outbound connections.
The malware had been blocked. Something else was still running.

Prevention Is Not The End Of The Timeline
A blocked payload tells you what Defender stopped. The surrounding telemetry tells you what happened before, during and after the detection.
The alert looked reassuring
Start with the network activity after the alert
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
let Device = "FIN-LAP-042";
let DetectionTime = datetime(2026-08-25 02:14:00);
DeviceNetworkEvents
| where DeviceName =~ Device
| where Timestamp between (DetectionTime .. DetectionTime + 30m)
| project Timestamp,
InitiatingProcessFileName,
InitiatingProcessCommandLine,
RemoteIP,
RemoteUrl,
RemotePort,
Protocol,
ActionType
| order by Timestamp ascWhich process owned the connection?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
let Device = "FIN-LAP-042";
DeviceNetworkEvents
| where Timestamp > ago(24h)
| where DeviceName =~ Device
| summarize Connections = count(),
RemoteIPs = make_set(RemoteIP, 50),
RemoteUrls = make_set(RemoteUrl, 50),
FirstSeen = min(Timestamp),
LastSeen = max(Timestamp)
by InitiatingProcessFileName,
InitiatingProcessSHA1
| order by Connections descFollow the process backwards
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
let Device = "FIN-LAP-042";
let SuspiciousSHA1 = "0123456789abcdef0123456789abcdef01234567";
DeviceProcessEvents
| where Timestamp > ago(24h)
| where DeviceName =~ Device
| where SHA1 == SuspiciousSHA1
or InitiatingProcessSHA1 == SuspiciousSHA1
| project Timestamp,
FileName,
ProcessCommandLine,
SHA1,
InitiatingProcessFileName,
InitiatingProcessCommandLine,
InitiatingProcessSHA1
| order by Timestamp ascDid another file arrive before the block?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
let Device = "FIN-LAP-042";
DeviceFileEvents
| where Timestamp > ago(24h)
| where DeviceName =~ Device
| project Timestamp,
ActionType,
FileName,
FolderPath,
SHA1,
InitiatingProcessFileName,
InitiatingProcessCommandLine
| order by Timestamp ascBuild one endpoint timeline
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
let Device = "FIN-LAP-042";
union
(DeviceProcessEvents
| where DeviceName =~ Device
| project Timestamp, Event="Process",
Detail=ProcessCommandLine),
(DeviceFileEvents
| where DeviceName =~ Device
| project Timestamp, Event="File",
Detail=strcat(ActionType, " | ", FolderPath, "\\", FileName)),
(DeviceNetworkEvents
| where DeviceName =~ Device
| project Timestamp, Event="Network",
Detail=strcat(InitiatingProcessFileName, " -> ",
coalesce(RemoteUrl, RemoteIP)))
| where Timestamp > ago(24h)
| order by Timestamp asc
