This rule detects active attempts by adversaries to download malware payloads from known malicious URLs, indicating a potential compromise or initial access phase. Proactively hunting for these indicators in Azure Sentinel allows the SOC to identify and isolate affected endpoints before the downloaded binaries execute and establish persistence or lateral movement.
Threat: malware_download Total URLs: 12 Active URLs: 9
| URL | Status | Threat | Date Added |
|---|---|---|---|
hxxp://196.189.101.82:48478/bin.sh | offline | malware_download | 2026-09-11 |
hxxp://154.70.152.216/zed | online | malware_download | 2026-09-11 |
hxxp://174.138.85.68/zed | online | malware_download | 2026-09-11 |
hxxp://125.41.228.123:58883/i | online | malware_download | 2026-09-11 |
hxxp://125.41.228.123:58883/bin.sh | online | malware_download | 2026-09-11 |
hxxp://91.92.242.236/files-129312398/files/file_50b3ab9c0bf699be.exe | online | malware_download | 2026-09-11 |
hxxp://193.178.158.107/4.exe | online | malware_download | 2026-09-11 |
hxxp://196.189.198.173:42076/i | offline | malware_download | 2026-09-11 |
hxxp://42.5.227.122:42403/i | online | malware_download | 2026-09-11 |
hxxp://27.37.228.145:42651/i | offline | malware_download | 2026-09-11 |
hxxp://60.17.117.82:40452/bin.sh | online | malware_download | 2026-09-11 |
hxxp://220.201.27.9:47541/bin.sh | online | malware_download | 2026-09-11 |
// Hunt for DNS resolution of URLhaus malicious domains
// Threat: malware_download
let malicious_domains = dynamic(["174.138.85.68", "42.5.227.122", "193.178.158.107", "125.41.228.123", "154.70.152.216", "60.17.117.82", "91.92.242.236", "220.201.27.9"]);
DnsEvents
| where Name has_any (malicious_domains)
| project TimeGenerated, Computer, Name, IPAddresses
| order by TimeGenerated desc
// Hunt for web traffic to URLhaus malicious domains
let malicious_domains = dynamic(["174.138.85.68", "42.5.227.122", "193.178.158.107", "125.41.228.123", "154.70.152.216", "60.17.117.82", "91.92.242.236", "220.201.27.9"]);
CommonSecurityLog
| where RequestURL has_any (malicious_domains) or DestinationHostName has_any (malicious_domains)
| project TimeGenerated, SourceIP, RequestURL, DestinationHostName, DeviceAction
| order by TimeGenerated desc
| Sentinel Table | Notes |
|---|---|
CommonSecurityLog | Ensure this data connector is enabled |
DnsEvents | Ensure this data connector is enabled |
Scenario: A DevOps engineer uses curl or wget to download a specific build artifact or dependency from a staging server that shares a hostname or IP with a known URLhaus entry, or a CI/CD pipeline (e.g., Jenkins, GitHub Actions) fetches a container image or binary from a registry that has been recently flagged.
java.exe for Jenkins, node.exe for GitHub Actions) or specific user accounts tagged as svc-ci or build-service. Additionally, exclude if the destination path matches standard artifact directories like C:\Jenkins\workspace\ or /var/lib/jenkins/.Scenario: An endpoint protection agent (e.g., CrowdStrike Falcon, Defender for Endpoint) or a network monitoring tool (e.g., Wireshark, Zeek) performs a health check or telemetry upload to a vendor-specific update server that coincidentally matches a URLhaus pattern, or a scheduled task runs a script to verify connectivity to a backup storage endpoint.
FalconSensor.exe, MsMpEng.exe) or backup clients (e.g., VeeamAgent.exe, RubrikAgent.exe). Also, exclude if the event is generated by a scheduled task named HealthCheck or TelemetrySync.Scenario: A web application server (e.g., IIS, Apache, Nginx) serves a static file or API response where the URL path contains a substring that matches a malicious URL pattern (e.g., a file named download.php on a legitimate domain), or a reverse proxy (e.g., HAProxy, Nginx) logs the full request URI which includes a query string that triggers the rule.