This hypothesis targets the use of Remote Access Trojan (RAT) infrastructure, where adversaries leverage known malicious URLs to establish persistent command-and-control channels or execute payloads. Proactively hunting for these specific indicators in Azure Sentinel allows the SOC to identify compromised endpoints or web sessions before the RAT fully establishes persistence or exfiltrates sensitive data.
Threat: rat Total URLs: 7 Active URLs: 5
| URL | Status | Threat | Date Added |
|---|---|---|---|
hxxp://141.98.10.177/mgrace/img_221540.png | online | malware_download | 2026-09-04 |
hxxps://res.cloudinary.com/hhqaayiv/image/upload/v1788490585/img_225607.jpg | online | malware_download | 2026-09-04 |
hxxp://141.98.10.177/favor/img_230826.png | online | malware_download | 2026-09-04 |
hxxp://141.98.10.177/favor/MSI_PRO.png | online | malware_download | 2026-09-04 |
hxxps://pub-0216fa08b2b94e129cb9e002cf7cb1f4.r2.dev/img_102402.png | online | malware_download | 2026-09-04 |
hxxps://pub-0216fa08b2b94e129cb9e002cf7cb1f4.r2.dev/img_034056.png | offline | malware_download | 2026-09-04 |
hxxps://lively-fog-af49.pablosoftwareplus.workers.dev/jTVOZ | offline | malware_download | 2026-09-04 |
// Hunt for DNS resolution of URLhaus malicious domains
// Threat: rat
let malicious_domains = dynamic(["141.98.10.177", "res.cloudinary.com", "pub-0216fa08b2b94e129cb9e002cf7cb1f4.r2.dev"]);
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(["141.98.10.177", "res.cloudinary.com", "pub-0216fa08b2b94e129cb9e002cf7cb1f4.r2.dev"]);
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 |
Legacy Application Health Checks: A legacy internal web application (e.g., a custom Java-based inventory system) uses a hardcoded health-check endpoint that pings a specific URLhaus-listed RAT URL to verify outbound connectivity or retrieve a configuration token. This is common in older systems where the developer used a known public URL as a “canary” for network reachability.
java.exe or app_server.exe) and the destination URL matches the specific RAT URL, provided the source IP is within the internal application server subnet.Scheduled Backup Verification Jobs: An IT operations team has a scheduled PowerShell or Python script that runs daily to validate that backup storage endpoints are reachable. The script includes a list of test URLs, one of which coincidentally matches a URLhaus RAT entry (possibly due to a shared domain structure or a reused test endpoint). The job runs from a dedicated service account on a jump host.
powershell.exe or python.exe and the parent process is a scheduled task service (e.g., taskschd.msi or svchost.exe with a specific task name), and the user account is a known service account (e.g., svc-backup-verify).Developer Localhost Testing: A developer on a workstation is running a local instance of a web application that uses a mock API gateway. The mock configuration file points to a specific URLhaus RAT URL as a placeholder for an external dependency during local testing. The developer’s browser or local HTTP client initiates the request, which gets captured by the network sensor.