This hunt targets adversary activity involving known VShell indicators of compromise to identify potential command-and-control communications or lateral movement within the network. Proactively hunting these specific IOCs in Azure Sentinel is critical because early detection of this established threat actor allows the SOC team to contain infections before they escalate into broader data exfiltration events.
Malware Family: VShell Total IOCs: 20 IOC Types: ip:port
| Type | Value | Threat Type | First Seen | Confidence |
|---|---|---|---|---|
| ip:port | 154[.]88[.]100[.]44:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]100[.]60:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]100[.]42:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]100[.]43:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]100[.]45:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]99[.]55:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 186[.]241[.]79[.]63:80 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]99[.]45:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]103[.]60:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]98[.]58:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]98[.]50:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]98[.]55:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]98[.]49:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]103[.]61:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]98[.]42:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]103[.]58:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]103[.]54:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]103[.]56:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]103[.]57:8885 | botnet_cc | 2026-07-11 | 100% |
| ip:port | 154[.]88[.]103[.]59:8885 | botnet_cc | 2026-07-11 | 100% |
// Hunt for network connections to known malicious IPs
// Source: ThreatFox - VShell
let malicious_ips = dynamic(["154.88.100.60", "154.88.103.59", "154.88.100.44", "154.88.103.61", "154.88.98.55", "154.88.103.56", "154.88.98.42", "154.88.103.54", "154.88.100.42", "154.88.99.45", "154.88.103.58", "154.88.100.45", "154.88.98.50", "154.88.103.57", "154.88.99.55", "186.241.79.63", "154.88.98.49", "154.88.98.58", "154.88.103.60", "154.88.100.43"]);
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(["154.88.100.60", "154.88.103.59", "154.88.100.44", "154.88.103.61", "154.88.98.55", "154.88.103.56", "154.88.98.42", "154.88.103.54", "154.88.100.42", "154.88.99.45", "154.88.103.58", "154.88.100.45", "154.88.98.50", "154.88.103.57", "154.88.99.55", "186.241.79.63", "154.88.98.49", "154.88.98.58", "154.88.103.60", "154.88.100.43"]);
DeviceNetworkEvents
| where RemoteIP in (malicious_ips)
| project Timestamp, DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName, ActionType
| order by Timestamp desc
| Sentinel Table | Notes |
|---|---|
CommonSecurityLog | Ensure this data connector is enabled |
DeviceNetworkEvents | Ensure this data connector is enabled |
Here are 4 specific false positive scenarios for the ThreatFox: VShell IOCs detection rule in an enterprise environment, along with targeted filtering strategies:
Endpoint Security Management Console Updates
falcon.sys, s1agent.exe) and Parent Process ID belonging to the specific Endpoint Security Service account. Additionally, whitelist the known vendor IP ranges associated with the update servers in the firewall logs feeding the SIEM.Scheduled Patch Management Jobs
02:00 - 05:00 UTC). Furthermore, exclude hosts tagged with a specific Asset Tag or OU path (e.g., OU=Patch-Test-Beta) that are known recipients of these scheduled deployments.IT Helpdesk Remote Support Sessions