SynkLoader — Microsoft Teams / IT Helpdesk Phishing Threat Hunt

Threat Overview

SynkLoader is a newly documented modular Windows malware family distributed through social engineering that impersonates corporate IT support. Expel observed attackers using Microsoft-controlled infrastructure, including an onmicrosoft.com tenant and Azure-hosted payload delivery, to make the lure appear legitimate.

The malware uses an unusual bundled Python runtime, memory-resident components, scheduled-task persistence, desktop control, a reverse proxy, and a fake Windows lock screen (“PhishLocker”) designed to capture the user’s Windows password. Researchers assess that the tooling could support initial-access brokerage or ransomware operations, but final operator intent is not confirmed.

References

Impacted Systems

PlatformWindows endpoints
DeliveryMicrosoft Teams / Microsoft 365-themed IT-support impersonation
Payload deliveryMalicious installer presented as a maintenance or PowerShell Cleaner utility; observed Azure hosting
ExecutionPowerShell plus a bundled/minimal Python environment and memory-resident modules
Credential accessFake Windows lock screen captures the user’s Windows password
PersistenceRecurring scheduled task via COM
Network capabilitiesC2 beaconing, remote shell/desktop control, reverse proxy/tunneling
Affected versionsNot version-specific; requires user execution

What this hunt looks for

Looks for the SynkLoader execution pattern: unusual Python runtimes in user-writable paths, suspicious PowerShell or cleaner.ps1 activity, and outbound communications from those Python processes.

Required logs

DeviceProcessEvents and DeviceNetworkEvents from Microsoft Defender for Endpoint / Defender XDR data available in Microsoft Sentinel.

First-Pass — Python Running From Unusual User-Writable Paths

DeviceProcessEvents
| where TimeGenerated >= ago(30d)
| where FileName in~ ("python.exe","pythonw.exe")
| where FolderPath has_any (@"\AppData\", @"\Temp\", @"\Downloads\", @"\ProgramData\")
| project TimeGenerated, DeviceName, AccountName, FileName, FolderPath, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
| sort by TimeGenerated asc

Follow-Up — Suspicious PowerShell Followed by Python

DeviceProcessEvents
| where TimeGenerated >= ago(30d)
| where FileName in~ ("powershell.exe","pwsh.exe","python.exe","pythonw.exe")
| where ProcessCommandLine has_any ("cleaner.ps1","PowerShell Cleaner",@"\AppData\",@"\Temp\") or InitiatingProcessCommandLine has_any ("cleaner.ps1","PowerShell Cleaner")
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, SHA256
| sort by TimeGenerated asc

Follow-Up — Network Connections From User-Writable Python

DeviceNetworkEvents
| where TimeGenerated >= ago(30d)
| where InitiatingProcessFileName in~ ("python.exe","pythonw.exe")
| where InitiatingProcessFolderPath has_any (@"\AppData\",@"\Temp\",@"\Downloads\",@"\ProgramData\")
| where RemoteIPType == "Public"
| summarize Connections=count(), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), RemoteIPs=make_set(RemoteIP,20), RemoteUrls=make_set(RemoteUrl,20) by DeviceName, InitiatingProcessFolderPath, InitiatingProcessCommandLine
| sort by Connections asc