Suspicious Linux Process Connection to AWS IoT Core MQTT

Last updated 17 days ago on 2026-10-06
Created 17 days ago on 2026-10-06

About

Identifies a Linux process running from a potentially suspicious location that resolves an account-specific AWS IoT Core data endpoint and then connects over TCP/443 or TCP/8883. Adversaries can use an attacker-controlled AWS IoT Core MQTT broker to relay commands, results, and files without a direct connection from the compromised host to the operator's backend server.
Tags
Domain: EndpointDomain: NetworkDomain: OT/IoTOS: LinuxPlatform: LinuxPlatform: AWSUse Case: Threat DetectionTactic: Command and ControlData Source: Elastic DefendService: AWS IoTRule Type: Event Correlation (EQL)Language: eql
Severity
high
Risk Score
73
MITRE ATT&CK™

Command and Control (TA0011)(external, opens in a new tab or window)

False Positive Examples
IoT development, device testing, telemetry agents, installers, and administrative scripts can legitimately run from temporary or hidden paths and connect to AWS IoT Core. Confirm the executable, parent process, source asset role, and complete AWS IoT endpoint before creating an exception. Scope exceptions to an approved executable and endpoint pair rather than excluding AWS IoT or a writable directory globally.
License
Elastic License v2(external, opens in a new tab or window)

Definition

Rule Type
Event Correlation Rule
Integration Pack
Prebuilt Security Detection Rules
Index Patterns
logs-endpoint.events.network-*
Related Integrations

endpoint(external, opens in a new tab or window)

Query
text code block:
sequence by host.id, process.entity_id with maxspan=1m [network where host.os.type == "linux" and event.action == "lookup_result" and dns.question.name regex~ ( """[^.]+-ats\.iot\.[^.]+\.amazonaws\.com""", """[^.]+\.iot\.[^.]+\.amazonaws\.com""", """[^.]+-ats\.iot\.[^.]+\.amazonaws\.com\.cn""", """[^.]+\.ats\.iot\.[^.]+\.amazonaws\.com\.cn""", """[^.]+\.iot\.[^.]+\.amazonaws\.com\.cn""" ) and ( process.executable like ( "/boot/*", "/dev/shm/*", "/tmp/*", "/var/tmp/*", "/var/log/*", "/var/run/user/*", "/run/user/*", "/home/*/.*", "/root/.*" ) or process.name like ".*" )] by dns.resolved_ip [network where host.os.type == "linux" and event.action == "connection_attempted" and network.direction in ("egress", "outbound") and network.transport == "tcp" and destination.port in (443, 8883) and not ( destination.ip == null or destination.ip == "0.0.0.0" or cidrmatch( destination.ip, "10.0.0.0/8", "100.64.0.0/10", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.0.0/29", "192.0.0.8/32", "192.0.0.9/32", "192.0.0.10/32", "192.0.0.170/32", "192.0.0.171/32", "192.0.2.0/24", "192.31.196.0/24", "192.52.193.0/24", "192.88.99.0/24", "192.168.0.0/16", "192.175.48.0/24", "198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "224.0.0.0/4", "240.0.0.0/4", "::1", "FC00::/7", "FE80::/10", "FF00::/8" ) )] by destination.ip

Install detection rules in Elastic Security

Detect Suspicious Linux Process Connection to AWS IoT Core MQTT in the Elastic Security detection engine by installing this rule into your Elastic Stack.

To setup this rule, check out the installation guide for Prebuilt Security Detection Rules(external, opens in a new tab or window).