This hypothesis targets the presence of AsyncRAT, a remote access trojan that grants adversaries persistent control to exfiltrate data and execute commands, by correlating its known indicators of compromise against Azure Sentinel telemetry. Proactively hunting for these IOCs is critical because AsyncRAT often operates stealthily to maintain long-term access, allowing attackers to pivot through internal networks before traditional detection mechanisms trigger an alert.
Malware Family: AsyncRAT Total IOCs: 9 IOC Types: ip:port, sha1_hash, md5_hash, sha256_hash, domain
| Type | Value | Threat Type | First Seen | Confidence |
|---|---|---|---|---|
| ip:port | 91[.]92[.]42[.]16:5996 | botnet_cc | 2026-09-05 | 100% |
| ip:port | 80[.]190[.]77[.]86:1009 | botnet_cc | 2026-09-05 | 75% |
| ip:port | 212[.]43[.]153[.]129:7707 | botnet_cc | 2026-09-05 | 75% |
| ip:port | 172[.]111[.]232[.]18:7784 | botnet_cc | 2026-09-05 | 75% |
| domain | pw.sonqhong.com | botnet_cc | 2026-09-05 | 75% |
| ip:port | 38[.]247[.]165[.]127:8091 | botnet_cc | 2026-09-04 | 75% |
| md5_hash | 56309608ad8e762d1ca1e8287ee5271f | payload | 2026-09-04 | 95% |
| sha256_hash | 7aaee32a94cf4a6b40140221bdef3b10de5620cd3ff2f41ff0710d31c9302545 | payload | 2026-09-04 | 95% |
| sha1_hash | 1e8a2d8a27607c7a8c19f321ce2fe48001604fa6 | payload | 2026-09-04 | 95% |
// Hunt for network connections to known malicious IPs
// Source: ThreatFox - AsyncRAT
let malicious_ips = dynamic(["212.43.153.129", "172.111.232.18", "38.247.165.127", "91.92.42.16", "80.190.77.86"]);
CommonSecurityLog
| where DestinationIP in (malicious_ips) or SourceIP in (malicious_ips)
| project TimeGenerated, SourceIP, DestinationIP, DestinationPort, DeviceAction, Activity
| order by TimeGenerated desc
// Hunt in Defender for Endpoint network events
let malicious_ips = dynamic(["212.43.153.129", "172.111.232.18", "38.247.165.127", "91.92.42.16", "80.190.77.86"]);
DeviceNetworkEvents
| where RemoteIP in (malicious_ips)
| project Timestamp, DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName, ActionType
| order by Timestamp desc
// Hunt for DNS queries to known malicious domains
// Source: ThreatFox - AsyncRAT
let malicious_domains = dynamic(["pw.sonqhong.com"]);
DnsEvents
| where Name has_any (malicious_domains)
| project TimeGenerated, Computer, Name, IPAddresses, QueryType
| order by TimeGenerated desc
// Hunt for files matching known malicious hashes
// Source: ThreatFox - AsyncRAT
let malicious_hashes = dynamic(["56309608ad8e762d1ca1e8287ee5271f", "7aaee32a94cf4a6b40140221bdef3b10de5620cd3ff2f41ff0710d31c9302545", "1e8a2d8a27607c7a8c19f321ce2fe48001604fa6"]);
DeviceFileEvents
| where SHA256 in (malicious_hashes) or SHA1 in (malicious_hashes) or MD5 in (malicious_hashes)
| project Timestamp, DeviceName, FileName, FolderPath, SHA256, InitiatingProcessFileName
| order by Timestamp desc
| Sentinel Table | Notes |
|---|---|
CommonSecurityLog | Ensure this data connector is enabled |
DeviceFileEvents | Ensure this data connector is enabled |
DeviceNetworkEvents | Ensure this data connector is enabled |
DnsEvents | Ensure this data connector is enabled |
C:\Program Files\TeamViewer\) and filter out events where the parent process is a recognized support agent.Environment=Lab or Role=Dev-Test in the asset inventory, or filter based on the process path containing /test/ or /lab/ directories.config.ini or settings.dat) in standard temp directories.
C:\Windows\Temp\ or %TEMP% where the parent process is a known system service (e.g., svchost.exe, powershell.exe launched by Task Scheduler) and the file size is below a certain threshold (e.g., < 1KB).