The Antivirus Scan Was Clean — The Process Tree Wasn't
The antivirus scan completed successfully.
No malware was detected. No malicious file was quarantined. The endpoint appeared clean.
But one question remained:
why had the browser launched a Windows utility that immediately made an outbound network connection?
Agent Foskett stopped looking for a malware verdict and started following the process tree.

Clean Scan. Suspicious Behaviour.
Antivirus answers whether something was detected. Process telemetry answers what actually ran. When the two stories disagree, the investigation continues.
The scan said the endpoint was clean
That result was useful — but it was not the same as proving nothing suspicious had happened.
Microsoft Defender XDR retained something equally important: behavioural telemetry.
The endpoint had recorded which processes started, who started them, their command lines, their parent processes and the network activity that followed.
The process tree changed the investigation
In this case, the interesting sequence was not a malware filename. It was the relationship between processes.
Browser → Windows utility → command execution → network activity.
Start with the suspicious device timeline
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
let Device = "WORKSTATION-01";
DeviceProcessEvents
| where Timestamp > ago(24h)
| where DeviceName =~ Device
| project Timestamp,
DeviceName,
AccountName,
FileName,
ProcessCommandLine,
InitiatingProcessFileName,
InitiatingProcessCommandLine,
SHA1
| order by Timestamp ascWhich unusual processes did the browser launch?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
let Browsers = dynamic([
"msedge.exe", "chrome.exe", "firefox.exe"
]);
let ReviewProcesses = dynamic([
"powershell.exe", "pwsh.exe", "cmd.exe",
"mshta.exe", "rundll32.exe", "regsvr32.exe",
"wscript.exe", "cscript.exe"
]);
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in~ (Browsers)
| where FileName in~ (ReviewProcesses)
| project Timestamp, DeviceName, AccountName,
InitiatingProcessFileName, FileName,
ProcessCommandLine, SHA1
| order by Timestamp descFollow the process into the network
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
let Device = "WORKSTATION-01";
DeviceNetworkEvents
| where Timestamp > ago(24h)
| where DeviceName =~ Device
| where InitiatingProcessFileName in~ (
"powershell.exe", "mshta.exe",
"rundll32.exe", "regsvr32.exe"
)
| project Timestamp, DeviceName,
InitiatingProcessFileName,
InitiatingProcessCommandLine,
RemoteUrl, RemoteIP, RemotePort
| order by Timestamp ascWas the same behaviour happening elsewhere?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in~ (
"msedge.exe", "chrome.exe", "firefox.exe"
)
| where FileName in~ (
"powershell.exe", "mshta.exe",
"rundll32.exe", "regsvr32.exe",
"wscript.exe", "cscript.exe"
)
| summarize Events=count(),
Devices=dcount(DeviceId),
FirstSeen=min(Timestamp),
LastSeen=max(Timestamp)
by InitiatingProcessFileName, FileName,
ProcessCommandLine
| order by Devices descWhy legitimate Windows tools matter
This is why the presence of a legitimate Microsoft binary does not settle the investigation either way.
Signed does not mean suspicious. Signed also does not mean safe in every context.
Build the chain, not just the event
The browser may be legitimate. The Windows utility may be legitimate. The destination may not yet have a malicious reputation verdict.
But together, the sequence may be inconsistent with normal user behaviour.
The process tree provides the story that a clean antivirus scan cannot.
What Agent Foskett checked
What the evidence can and cannot prove
Likewise, seeing PowerShell, Rundll32, MSHTA or another legitimate utility does not prove compromise. Administrators and applications use these tools every day.
The conclusion comes from correlation: process ancestry, command line, timing, network behaviour, file activity, prevalence and the user's expected workflow.
The lesson
That was true.
But the process tree showed behaviour the scan result could not explain.
Agent Foskett did not need to argue with the antivirus result. He simply asked a different question:
What actually happened on the endpoint?
That question led from the browser, through the child processes, into the network telemetry — and turned an apparently clean endpoint into a proper investigation.
Related investigations
Final thought
Sometimes those two things align immediately. Sometimes the most important evidence sits outside the detection itself — in the parent process, command line, network connection or sequence of events.
Follow the evidence. Build the timeline.
The Logs Already Knew! 🔎

