Threat Summary
The "NadMesh" botnet represents a significant evolution in threat actor capability, specifically tailoring attacks for the booming AI services sector. Unlike traditional internet worms, NadMesh is a sophisticated Go-based malware that acts as a "product-grade" autonomous threat. It integrates its own scanning engine to exploit over 20 known vulnerabilities, with a specific emphasis on Redis services (CVE-2016-0638) and Kubernetes clusters.
The campaign utilizes Shodan harvesting to identify exposed AI infrastructure, specifically targeting platforms like ComfyUI, Ollama, and the Model Context Protocol (MCP) ecosystems. The primary objective is credential theft—stealing API keys and configurations associated with AI services to facilitate further unauthorized access or resource hijacking. The malware establishes persistence on compromised hosts and exfiltrates harvested intelligence to Command and Control (C2) infrastructure.
Threat Actor / Malware Profile
Malware Family: NadMesh Type: Go-based Botnet / Worm Primary Vector: Vulnerability Exploitation (Redis, Kubernetes), Autonomous Scanning
- Distribution Method: The botnet autonomously scans the internet using Shodan data to prioritize targets. It attacks exposed Redis instances (via CVE-2016-0638 and others) and misconfigured Kubernetes pods to deploy the Go binary payload.
- Payload Behavior: Upon execution, the malware performs reconnaissance on the local network and host to identify AI services (Ollama, MCP). It harvests configuration files and credentials associated with these services.
- C2 Communication: Compromised hosts communicate with C2 servers via hardcoded IP addresses and domains (e.g.,
209.99.186.235,cdnorigin.net). Communication protocols likely involve HTTP/HTTPS custom beacons. - Persistence: While the exact mechanism is subject to analysis, Go-based botnets targeting Linux/Container environments often utilize systemd services, cron jobs, or container restart policies to maintain presence.
- Anti-Analysis: Written in Go, the binary provides a layer of obfuscation against static analysis. It likely employs packing or string encryption to hide C2 endpoints and configuration details.
IOC Analysis
The provided Indicators of Compromise (IOCs) offer a high-confidence basis for detection:
- Network Infrastructure: The IP
209.99.186.235and domaincdnorigin.netserve as C2 nodes. SOC teams should immediately block these at the perimeter and firewalls. Historical DNS analysis ofcdnorigin.netmay reveal previous infrastructure reuse. - File Hashes:
- MD5:
ca024acead8f54cfe5b07ac4bdf7fcea - SHA1:
31c69b3e12936abca770d430066f379ec1d997ec - SHA256:
fc4109f5dd1d30b65dd60e57dc639ac1d313bfa5241e36e61fbc4aabc1cda482These hashes correspond to the NadMesh binary. EDR solutions should be configured to flag process execution and file creation events matching these hashes.
- MD5:
- Vulnerability (CVE):
CVE-2016-0638indicates the botnet is exploiting a Redis Lua sandbox escape to achieve Remote Code Execution (RCE). Detection rules should focus on suspicious Redis commands (e.g.,EVAL,SLAVEOF).
Detection Engineering
The following detection logic is designed to identify the NadMesh C2 traffic and the execution of the malicious payload.
title: NadMesh Botnet C2 Network Traffic
id: a1b2c3d4-5678-90ab-cdef-1234567890ab
status: experimental
description: Detects network connections to known NadMesh C2 infrastructure identified in OTX Pulse.
references:
- https://blog.xlab.qianxin.com/nadmesh-botnet-analysis-a-product-grade-threat-for-the-ai-service-era
author: Security Arsenal
date: 2026/07/22
logsource:
category: network_connection
product: linux
detection:
selection:
DestinationIp:
- '209.99.186.235'
DestinationHostname:
- 'cdnorigin.net'
condition: selection
falsepositives:
- Legitimate administrative access (unlikely given domain nature)
level: critical
---
title: NadMesh Botnet Malicious File Execution
id: b2c3d4e5-6789-01ab-cdef-234567890abc
status: experimental
description: Detects execution of the NadMesh Go binary based on known file hashes.
references:
- https://blog.xlab.qianxin.com/nadmesh-botnet-analysis-a-product-grade-threat-for-the-ai-service-era
author: Security Arsenal
date: 2026/07/22
logsource:
category: process_creation
product: linux
detection:
selection:
Hashes|contains:
- 'ca024acead8f54cfe5b07ac4bdf7fcea'
- '31c69b3e12936abca770d430066f379ec1d997ec'
- 'fc4109f5dd1d30b65dd60e57dc639ac1d313bfa5241e36e61fbc4aabc1cda482'
condition: selection
falsepositives:
- None
level: critical
---
title: Potential Redis Exploitation CVE-2016-0638
id: c3d4e5f6-7890-12bc-def0-345678901bcd
status: experimental
description: Detects potential exploitation of Redis Lua sandbox escape used by NadMesh for initial access.
references:
- https://blog.xlab.qianxin.com/nadmesh-botnet-analysis-a-product-grade-threat-for-the-ai-service-era
author: Security Arsenal
date: 2026/07/22
logsource:
category: database
product: redis
detection:
selection_keyword:
Command|contains:
- 'eval'
- 'script load'
selection_suspicious:
Command|contains:
- 'package.loadlib'
- 'io.popen'
condition: all of selection_*
falsepositives:
- Legitimate Lua scripting in Redis (rare)
level: high
kql
// Hunt for connections to NadMesh C2 infrastructure
DeviceNetworkEvents
| where RemoteIP == "209.99.186.235" or RemoteUrl contains "cdnorigin.net"
| project Timestamp, DeviceName, InitiatingProcessAccountName, RemoteIP, RemoteUrl
// Hunt for execution of NadMesh binary hashes
DeviceProcessEvents
| where SHA256 == "fc4109f5dd1d30b65dd60e57dc639ac1d313bfa5241e36e61fbc4aabc1cda482"
or MD5 == "ca024acead8f54cfe5b07ac4bdf7fcea"
| project Timestamp, DeviceName, FileName, ProcessCommandLine, InitiatingProcessAccountName
// Hunt for Redis anomalies on Linux hosts (if Syslog/SecurityEvent is ingested)
DeviceProcessEvents
| where ProcessVersionInfoCompanyName == "Redis" or FileName contains "redis-server"
| where ProcessCommandLine contains "eval" and ProcessCommandLine contains "package.loadlib"
| project Timestamp, DeviceName, ProcessCommandLine
bash
#!/bin/bash
# NadMesh IOC Hunt Script for Linux Endpoints
# Checks for the presence of NadMesh file hashes on the system
echo "[*] Starting NadMesh IOC Hunt..."
KNOWN_SHA256="fc4109f5dd1d30b65dd60e57dc639ac1d313bfa5241e36e61fbc4aabc1cda482"
KNOWN_MD5="ca024acead8f54cfe5b07ac4bdf7fcea"
# Scan common execution paths
PATHS_TO_SCAN="/ /tmp /var/tmp /home /root /opt /var/www"
echo "[*] Scanning for SHA256 hash: $KNOWN_SHA256"
find $PATHS_TO_SCAN -type f 2>/dev/null | while read -r file; do
hash=$(sha256sum "$file" 2>/dev/null | awk '{print $1}')
if [ "$hash" = "$KNOWN_SHA256" ]; then
echo "[ALERT] NadMesh binary found at: $file"
fi
done
echo "[*] Scanning for MD5 hash: $KNOWN_MD5"
find $PATHS_TO_SCAN -type f 2>/dev/null | while read -r file; do
hash=$(md5sum "$file" 2>/dev/null | awk '{print $1}')
if [ "$hash" = "$KNOWN_MD5" ]; then
echo "[ALERT] NadMesh binary found at: $file"
fi
done
echo "[*] Checking for active connections to C2 IP 209.99.186.235..."
netstat -antp 2>/dev/null | grep "209.99.186.235" && echo "[ALERT] Active connection to NadMesh C2 detected!" || echo "[INFO] No C2 connections found."
ss -antp 2>/dev/null | grep "209.99.186.235" && echo "[ALERT] Active connection to NadMesh C2 detected!" || echo "[INFO] No C2 connections found."
echo "[*] Hunt complete."
Response Priorities
Immediate (0-4 hours):
- Block network traffic to
209.99.186.235andcdnorigin.neton all perimeter firewalls and security gateways. - Initiate a hunt for the file hashes provided in the IOC section across all endpoints to identify infected hosts.
- Isolate any devices identified as hosting the malicious binary.
24 Hours:
- Credential Reset: If credential theft is suspected (targets AI services like Ollama/ComfyUI), force a reset of all API keys and service credentials for exposed AI infrastructure.
- Vulnerability Scanning: Perform an urgent scan for exposed Redis instances and Kubernetes clusters to identify the initial attack vector.
1 Week:
- Architecture Hardening: Enforce strict network segmentation for AI services. Ensure Redis instances are not exposed to the public internet and require authentication.
- Patch Management: Verify patches for CVE-2016-0638 and other Redis/K8s vulnerabilities are applied across the enterprise.
Related Resources
Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.