This detection rule identifies adversary activity associated with the Stealc malware family, which targets systems to exfiltrate sensitive credentials and data through known Indicators of Compromise (IOCs). A proactive hunt in Azure Sentinel is critical because Stealc’s stealthy nature allows it to persist undetected for extended periods, necessitating early identification to prevent widespread credential theft and lateral movement.
Malware Family: Stealc Total IOCs: 11 IOC Types: sha256_hash, sha1_hash, md5_hash, ip:port, url
| Type | Value | Threat Type | First Seen | Confidence |
|---|---|---|---|---|
| ip:port | 193[.]148[.]56[.]206:80 | botnet_cc | 2026-08-08 | 75% |
| url | hxxp://193[.]148[.]56[.]206/ | botnet_cc | 2026-08-08 | 100% |
| sha256_hash | 8d945e37a9d8f4f68fb34b623e628aed9cce8c8ea6593a8e2bbcbba33e166537 | payload | 2026-08-08 | 95% |
| sha1_hash | b30bbd5be515a837e21a3c9ac34afab886f67d59 | payload | 2026-08-08 | 95% |
| md5_hash | b426a480de03b7a15e739cf07f7fac88 | payload | 2026-08-08 | 95% |
| sha256_hash | 7fe1c82d5a257a35d527e78f05d35592c015f0dd8de1956d1e7f02ca70462f4e | payload | 2026-08-08 | 95% |
| sha1_hash | b8601376c42b9ffdd0c599fa9650ab4f64674007 | payload | 2026-08-08 | 95% |
| md5_hash | a7896d977fe660b80c214495486f1f4d | payload | 2026-08-08 | 95% |
| sha1_hash | a4933d27e1f7f7331a3a0ab54d6b53339a412777 | payload | 2026-08-08 | 95% |
| md5_hash | 58a519430128d0e52fc10b3bc7fdb717 | payload | 2026-08-08 | 95% |
| sha256_hash | ddf8b517a8fed544e1adac815a5d85d4c917717449dd52d1354c03f599f05779 | payload | 2026-08-08 | 95% |
// Hunt for network connections to known malicious IPs
// Source: ThreatFox - Stealc
let malicious_ips = dynamic(["193.148.56.206"]);
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(["193.148.56.206"]);
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 - Stealc
let malicious_urls = dynamic(["http://193.148.56.206/"]);
UrlClickEvents
| where Url has_any (malicious_urls)
| project Timestamp, AccountUpn, Url, ActionType, IsClickedThrough
| order by Timestamp desc
// Hunt for files matching known malicious hashes
// Source: ThreatFox - Stealc
let malicious_hashes = dynamic(["8d945e37a9d8f4f68fb34b623e628aed9cce8c8ea6593a8e2bbcbba33e166537", "b30bbd5be515a837e21a3c9ac34afab886f67d59", "b426a480de03b7a15e739cf07f7fac88", "7fe1c82d5a257a35d527e78f05d35592c015f0dd8de1956d1e7f02ca70462f4e", "b8601376c42b9ffdd0c599fa9650ab4f64674007", "a7896d977fe660b80c214495486f1f4d", "a4933d27e1f7f7331a3a0ab54d6b53339a412777", "58a519430128d0e52fc10b3bc7fdb717", "ddf8b517a8fed544e1adac815a5d85d4c917717449dd52d1354c03f599f05779"]);
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 |
UrlClickEvents | Ensure this data connector is enabled |
Here are 4 specific false positive scenarios for the ThreatFox: Stealc IOCs detection rule, along with targeted filtering strategies suitable for an enterprise environment:
Scenario: Enterprise Endpoint Protection Scans
C:\ProgramData directory. During these scans, the EDR agent generates network connections to internal update servers that match Stealc’s known IOCs (specifically specific User-Agent strings or certificate thumbprints).process_name is FalconSensor.exe, MsMpEng.exe, or DefenderService.exe AND parent_process_name matches the EDR service executable. Additionally, exclude traffic destined for internal IP ranges (e.g., 10.x.x.x) used by the update infrastructure.Scenario: Scheduled PowerShell Backup Jobs
Backup-SensitiveData.ps1) to archive logs from the HR department. This script utilizes the System.Net.Http library to push data to an internal Azure Blob Storage endpoint. The network handshake and specific HTTP headers generated by this script mimic the telemetry behavior of Stealc malware, triggering the detection rule.process_command_line contains the string “Backup-SensitiveData.ps1” and the process is spawned by Task Scheduler (svchost.exe -k netsvcs). Alternatively, whitelist the specific destination URL (e.g., *.blob.core.windows.net) if the rule monitors network destinations.**Scenario