This detection identifies potential Mirai botnet infections by monitoring network traffic against four specific Indicators of Compromise (IOCs) known to be utilized by this IoT-targeting malware. A proactive hunt is essential within Azure Sentinel to rapidly isolate compromised devices before they can launch large-scale Distributed Denial of Service (DDoS) attacks or pivot laterally across the enterprise network.
Malware Family: Mirai Total IOCs: 4 IOC Types: domain, sha256_hash, ip:port, url
| Type | Value | Threat Type | First Seen | Confidence |
|---|---|---|---|---|
| ip:port | 95[.]155[.]151[.]113:9506 | botnet_cc | 2026-08-02 | 100% |
| sha256_hash | bd216916031c63a5f3174bc27d64babf31294363f1b8274e4ab7d8802c46d91c | payload | 2026-08-02 | 80% |
| url | hxxp://95[.]155[.]151[.]113/d/xd.mips | payload_delivery | 2026-08-02 | 75% |
| domain | wqok85qtq.net | botnet_cc | 2026-08-02 | 100% |
// Hunt for network connections to known malicious IPs
// Source: ThreatFox - Mirai
let malicious_ips = dynamic(["95.155.151.113"]);
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(["95.155.151.113"]);
DeviceNetworkEvents
| where RemoteIP in (malicious_ips)
| project Timestamp, DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName, ActionType
| order by Timestamp desc
// Hunt for DNS queries to known malicious domains
// Source: ThreatFox - Mirai
let malicious_domains = dynamic(["wqok85qtq.net"]);
DnsEvents
| where Name has_any (malicious_domains)
| project TimeGenerated, Computer, Name, IPAddresses, QueryType
| order by TimeGenerated desc
// Hunt for access to known malicious URLs
// Source: ThreatFox - Mirai
let malicious_urls = dynamic(["http://95.155.151.113/d/xd.mips"]);
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 - Mirai
let malicious_hashes = dynamic(["bd216916031c63a5f3174bc27d64babf31294363f1b8274e4ab7d8802c46d91c"]);
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 |
DnsEvents | Ensure this data connector is enabled |
UrlClickEvents | Ensure this data connector is enabled |
Here are specific false positive scenarios and corresponding filters for the ThreatFox: Mirai IOCs detection rule in an enterprise environment:
Scenario: IoT Device Firmware Updates via Scheduled Tasks
10.50.x.x) and filter out connections to known vendor update domains (e.g., *.cisco.com, *.arubanetworks.com). Additionally, exclude traffic occurring strictly during the maintenance window defined in the SCCM or Ansible job schedule (e.g., 02:00–04:00 UTC).Scenario: Legacy Backup Agents Scanning External Storage
srv-backup-01, srv-backup-02). Implement a filter to ignore alerts where the process name matches known backup executables like vrb.exe (Veeam) or commvault_agent.exe.Scenario: Security Tool Health Checks and Telemetry