This rule detects the presence of VShell, a lightweight web shell that adversaries deploy to maintain persistent access and execute commands on compromised Azure resources. Proactively hunting for these IOCs is critical because VShell often operates silently to establish a foothold, enabling attackers to pivot laterally or exfiltrate data before traditional monitoring mechanisms can identify the compromise.
Malware Family: VShell Total IOCs: 15 IOC Types: ip:port, url
| Type | Value | Threat Type | First Seen | Confidence |
|---|---|---|---|---|
| ip:port | 47[.]90[.]209[.]157:18084 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]60[.]111:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]63[.]107:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]62[.]102:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]56[.]100:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]211[.]92[.]190:8084 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]63[.]120:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]63[.]123:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]63[.]103:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]63[.]117:8094 | botnet_cc | 2026-09-09 | 100% |
| url | hxxp://23[.]225[.]71[.]207:8084/?h=23[.]225[.]71[.]207&p=8084&t=ws&a=w32&stage=true | payload_delivery | 2026-09-09 | 85% |
| ip:port | 154[.]91[.]63[.]114:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 156[.]251[.]16[.]136:8084 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]63[.]102:8094 | botnet_cc | 2026-09-09 | 100% |
| ip:port | 154[.]91[.]63[.]104:8094 | botnet_cc | 2026-09-09 | 100% |
// Hunt for network connections to known malicious IPs
// Source: ThreatFox - VShell
let malicious_ips = dynamic(["154.91.63.123", "154.91.56.100", "154.91.63.114", "154.91.62.102", "154.91.63.107", "47.90.209.157", "156.251.16.136", "154.91.63.102", "154.211.92.190", "154.91.63.120", "154.91.60.111", "154.91.63.103", "154.91.63.117", "154.91.63.104"]);
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.91.63.123", "154.91.56.100", "154.91.63.114", "154.91.62.102", "154.91.63.107", "47.90.209.157", "156.251.16.136", "154.91.63.102", "154.211.92.190", "154.91.63.120", "154.91.60.111", "154.91.63.103", "154.91.63.117", "154.91.63.104"]);
DeviceNetworkEvents
| where RemoteIP in (malicious_ips)
| project Timestamp, DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName, ActionType
| order by Timestamp desc
// Hunt for access to known malicious URLs
// Source: ThreatFox - VShell
let malicious_urls = dynamic(["http://23.225.71.207:8084/?h=23.225.71.207&p=8084&t=ws&a=w32&stage=true"]);
UrlClickEvents
| where Url has_any (malicious_urls)
| project Timestamp, AccountUpn, Url, ActionType, IsClickedThrough
| order by Timestamp desc
| Sentinel Table | Notes |
|---|---|
CommonSecurityLog | Ensure this data connector is enabled |
DeviceNetworkEvents | Ensure this data connector is enabled |
UrlClickEvents | Ensure this data connector is enabled |
jenkins.exe, agent.exe, docker.exe) or where the executable path resides within a designated C:\CI\ or /opt/ci/ directory.caddy or nginx) to a temporary folder (%TEMP% or C:\Users\<User>\Downloads) to test configuration changes before deploying it to production, triggering the IOC match on the binary hash or path.
Downloads, Temp, or AppData\Local\Temp and the user account belongs to the Administrators or ServiceAccounts group.Sysmon to audit existing binaries on endpoints, and the scanning process temporarily loads or inspects a file that matches a VShell IOC hash, creating a false positive in the process creation or file creation log.
yara.exe, sysmon.exe, defender.exe, crowdstrikeagent.exe) or where the action is a “File Read” rather than “Process Start” if the rule is primarily hunting for execution.