Two freshly published OTX pulses reveal a converging trend: threat actors continue to industrialize the compromise of exposed, unauthenticated services — Redis datastores on Linux servers and Android Debug Bridge (ADB) interfaces on mobile/emulated devices — converting them into monetizable botnet infrastructure.
Pulse 1 — Redis Cryptomining Botnet: Investigators uncovered an open directory at 188.245.99.156 containing a full operator toolkit: 147 files including Python exploit source, campaign logs, and Windows registry hives. Forensic analysis of these operator-owned files confirms 3,562 Redis servers compromised across two campaign runs targeting 12,966 hosts. The attack chain exploits unauthenticated Redis instances exposed to the internet, abuses rogue replication (SLAVEOF/REPLICAOF against an attacker-controlled master) to write malicious modules or cron jobs, then delivers XMRig for Monero mining and Meterpreter for interactive post-exploitation. Cron injection provides persistence. The campaign infrastructure ties to ayakliborsa.net and socket.ayakliborsa.net (C2/payload delivery), with an additional indicator IP 213.6.207.123.
Pulse 2 — Hagaseca Android RAT Loader: The Hagaseca malware cluster targets Android and Redroid (cloud Android emulator) systems with exposed ADB services (TCP/5555), active from at least October 2024. The loader APK conceals tc9.dex, a second-stage DEX payload providing remote shell, file transfer, and self-propagation over ADB — worm-like lateral movement across any reachable ADB-enabled device. Variants THost4, THost9, and tc9 abuse Android Accessibility Services for privilege escalation and UI manipulation. The malware fingerprints victims using api.ipapi.is and communicates with infrastructure at hagaseca.com.
Collective assessment: Both operations share an operator playbook — scan for misconfigured internet-facing services, exploit without authentication, establish persistence, and monetize (mining, RAT access resale, or device-farm compromise). Organizations running Redis, Android test farms, or Redroid cloud-device infrastructure are directly in the blast radius. Urgency: HIGH — both toolsets are in active circulation and the Redis toolkit source code is now publicly exposed, lowering the bar for copycat campaigns.
Threat Actor / Malware Profile
Redis Cryptomining Botnet (XMRig + Meterpreter)
- Attribution: Unknown operator; opsec failure (exposed toolkit directory) enabled full campaign reconstruction.
- Distribution: Internet-wide scanning for Redis instances (TCP/6379) with no authentication. Attackers connect and issue rogue replication commands to sync a malicious payload from an attacker-controlled master server.
- Payload behavior: Post-replication, attackers write SSH keys or inject cron entries via Redis's ability to write arbitrary files (CONFIG SET dir / dbfilename targeting
/var/spool/cron/). Cron jobs download and execute XMRig; Meterpreter stagers provide interactive control. - C2 communication: Meterpreter reverse connections; mining traffic to Monero pools; infrastructure includes
socket.ayakliborsa.netand213.6.207.123. - Persistence: Cron injection (
cron-injectiontag), rogue replication re-establishment, and potential SSH authorized_keys writes. - Anti-analysis: Minimal — this campaign was caught by operator negligence rather than defeated defenses, indicating an unsophisticated but highly effective operation.
Hagaseca / THost9 / THost4 / tc9 (Android RAT)
- Attribution: Unknown cluster; tracked via the
hagaseca.cominfrastructure and shared loader code. - Distribution: Worm-like propagation over exposed ADB (TCP/5555) on Android devices and Redroid cloud emulators; also likely sideloaded APK distribution.
- Payload behavior: Loader APK decrypts/unpacks and dynamically loads
tc9.dex, which provides interactive shell, file exfiltration/upload, and ADB scanning/propagation modules. - C2 communication: HTTP(S) to
hagaseca.com; victim fingerprinting viahttps://api.ipapi.is(IP geolocation/ASN lookup to profile and possibly filter victims). - Persistence: Accessibility Service abuse — the RAT requests Accessibility permissions to survive uninstall attempts, overlay credential prompts, auto-grant permissions, and maintain foreground control.
- Anti-analysis: Packed APK with concealed executable code (
tc9.dexloaded at runtime), dynamic DEX loading to evade static scanners, and environment checks consistent with sandbox/emulator discrimination.
IOC Analysis
The pulses deliver four operational indicator classes:
| Type | Examples | Operationalization |
|---|---|---|
| IPv4 | 188.245.99.156 (toolkit host), 213.6.207.123 | Block at egress firewall/proxy; retro-hunt NetFlow and firewall logs for connections from server VLANs |
| Domains / Hostnames | ayakliborsa.net, socket.ayakliborsa.net, hagaseca.com | DNS sinkhole + block; hunt DNS query logs (both direct and via DoH bypasses) |
| URLs | https://api.ipapi.is | Not malicious itself, but Android devices querying it alongside unknown C2 = high-fidelity correlation signal |
| File hashes (MD5/SHA1/SHA256) | 420c7850e09b... (XMRig toolkit), 54d4ee85175a... (Hagaseca loader), etc. | Push into EDR blocklists and threat-intel platforms (MISP, Sentinel TI, Defender indicators); hash matching catches reposted but unmodified payloads |
Tooling: Decode and pivot using CyberChef (DEX/APK string extraction), jadx/apktool for APK analysis, redis-cli locally to audit your own Redis instances for rogue replication state (INFO replication, unexpected module list entries), and your SIEM's TI connector to auto-ingest the OTX pulse feed. Note the sample sets above are excerpts (5 of 5 and 8 of 28 indicators respectively) — pull the full pulse for complete hash coverage before tuning blocklists.
Detection Engineering
---
title: Redis Rogue Replication or Unauthenticated Exploitation Activity
id: 7f2a1c4e-9b3d-4e5a-a6c1-redis000001
status: experimental
description: Detects Redis exploitation patterns including rogue replication (SLAVEOF/REPLICAOF), config rewriting, and module loading consistent with cryptomining botnet compromise (XMRig/Meterpreter delivery)
author: Security Arsenal Threat Intelligence
date: 2026/09/10
references:
- https://hunt.io/blog/redis-cryptomining-botnet-3562-servers
logsource:
category: process_creation
product: linux
detection:
selection_cli:
CommandLine|contains:
- 'SLAVEOF'
- 'REPLICAOF'
- 'CONFIG SET dir'
- 'CONFIG SET dbfilename'
- 'MODULE LOAD'
selection_redis_write:
CommandLine|contains:
- '/var/spool/cron'
- 'authorized_keys'
- '/etc/cron.d'
condition: selection_cli or selection_redis_write
falsepositives:
- Legitimate Redis administration and cluster replication setup
level: high
tags:
- attack.t1190
- attack.t1053.003
- attack.t1496
---
title: Cron-Based Persistence Followed by Miner or Meterpreter Execution
id: 7f2a1c4e-9b3d-4e5a-a6c1-redis000002
status: experimental
description: Detects cron job creation/modification followed by execution of XMRig miner or Meterpreter artifacts, or download of payloads from known campaign infrastructure (ayakliborsa.net)
author: Security Arsenal Threat Intelligence
date: 2026/09/10
references:
- https://hunt.io/blog/redis-cryptomining-botnet-3562-servers
logsource:
category: process_creation
product: linux
detection:
selection_miner:
- CommandLine|contains:
- 'xmrig'
- 'stratum+tcp'
- 'stratum+ssl'
- '--donate-level'
- 'monero'
- Image|endswith:
- '/xmrig'
selection_download_c2:
CommandLine|contains:
- 'ayakliborsa.net'
- '213.6.207.123'
- '188.245.99.156'
selection_cron_exec:
ParentImage|endswith:
- '/cron'
- '/crond'
Image|endswith:
- '/curl'
- '/wget'
- '/sh'
- '/bash'
condition: selection_miner or selection_download_c2 or selection_cron_exec
falsepositives:
- Legitimate mining operations (rare in enterprise)
- Cron-based administrative downloads
level: critical
tags:
- attack.t1496
- attack.t1053.003
- attack.t1105
---
title: Android ADB Exposure and Hagaseca RAT Network Indicators
id: 7f2a1c4e-9b3d-4e5a-a6c1-adbrat00003
status: experimental
description: Detects network connections to Hagaseca C2 infrastructure and ipapi.is fingerprinting from Android/Redroid device subnets, plus ADB service exposure on TCP/5555
author: Security Arsenal Threat Intelligence
date: 2026/09/10
references:
- https://darkatlas.io/blog/hagaseca-inside-a-packed-android-rat-loader
logsource:
category: network_connection
product: windows
# Deploy equivalent logic on Zeek/firewall logs for Android VLANs
detection:
selection_c2_domain:
DestinationHostname|contains:
- 'hagaseca.com'
selection_fingerprint:
DestinationHostname: 'api.ipapi.is'
selection_adb_port:
DestinationPort: 5555
condition: selection_c2_domain or (selection_fingerprint and selection_adb_port)
falsepositives:
- api.ipapi.is queried by legitimate apps; correlation with ADB traffic raises fidelity
level: high
tags:
- attack.t1071.001
- attack.t1046
// Security Arsenal — Redis Botnet + Hagaseca RAT Hunt (Microsoft Sentinel)
// Lookback: 14 days
let Lookback = 14d;
let BadDomains = dynamic(["ayakliborsa.net", "socket.ayakliborsa.net", "hagaseca.com"]);
let BadIPs = dynamic(["188.245.99.156", "213.6.207.123"]);
let BadHashes = dynamic([
"f90c8b1dcd374d4f552744ee1765583d",
"420c7850e09b7c2b9e39e2a93e204e3c56bcf08a685ff1daa986e3c348da5d2a",
"bdca0eb738faaccb5b992d0f393b9d9f",
"c6ee3d72053772bdce063c5b98afe32e739e918e",
"54d4ee85175a249dcb576716edf491d09fa05dfdfc492ff710a0cb711f9a35ab",
"24f344e174546e780332d573d5a27c43",
"dfd9c7dee4f4a16d636917de35a510b7",
"03fc9c35d6453ccf7dd5d16ea2d6d272da1e1cae"
]);
// Part 1: Network IOC hits — C2, toolkit host, mining infrastructure
let NetHits = DeviceNetworkEvents
| where TimeGenerated > ago(Lookback)
| where RemoteIP in (BadIPs) or RemoteUrl has_any (BadDomains)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort;
// Part 2: File hash hits on dropped payloads
let HashHits = DeviceFileEvents
| where TimeGenerated > ago(Lookback)
| where MD5 in (BadHashes) or SHA1 in (BadHashes) or SHA256 in (BadHashes)
| project TimeGenerated, DeviceName, FileName, FolderPath, SHA256, MD5;
// Part 3: Behavioral — Redis exploitation, cron injection, miner execution
let BehaviorHits = DeviceProcessEvents
| where TimeGenerated > ago(Lookback)
| where ProcessCommandLine has_any ("SLAVEOF", "REPLICAOF", "CONFIG SET dir", "MODULE LOAD", "xmrig", "stratum+")
or (InitiatingProcessFileName has_any ("cron", "crond") and FileName in~ ("curl", "wget", "sh", "bash"))
or ProcessCommandLine has_any ("/var/spool/cron", "authorized_keys")
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine;
// Part 4: Android/Redroid fingerprinting correlation (ipapi.is from non-browser processes)
let AndroidFingerprint = DeviceNetworkEvents
| where TimeGenerated > ago(Lookback)
| where RemoteUrl == "api.ipapi.is"
| where InitiatingProcessFileName !has_any ("chrome", "firefox", "edge", "msedge")
| project TimeGenerated, DeviceName, InitiatingProcessFileName, RemoteUrl, RemoteIP;
union NetHits, HashHits, BehaviorHits, AndroidFingerprint
| sort by TimeGenerated desc
#!/bin/bash
# Security Arsenal — Redis Cryptomining Botnet IOC Hunt (Linux servers)
# Run on any host running Redis or suspected of compromise
# Usage: sudo bash redis_botnet_hunt.sh
echo "[+] Security Arsenal Redis Botnet Hunt — $(date)"
BAD_IPS="188.245.99.156 213.6.207.123"
BAD_DOMAINS="ayakliborsa.net socket.ayakliborsa.net hagaseca.com"
BAD_MD5="f90c8b1dcd374d4f552744ee1765583d"
BAD_SHA256="420c7850e09b7c2b9e39e2a93e204e3c56bcf08a685ff1daa986e3c348da5d2a"
echo ""
echo "=== [1] Redis rogue replication / module state ==="
if command -v redis-cli &>/dev/null; then
redis-cli INFO replication 2>/dev/null | grep -Ei 'role|master_host|slave' && \
echo "[!] Review above: unexpected 'role:slave' or foreign master_host = rogue replication"
redis-cli MODULE LIST 2>/dev/null | grep -v '^$' && \
echo "[!] Any loaded module on an internet-facing Redis is highly suspicious"
redis-cli CONFIG GET dir 2>/dev/null
redis-cli CONFIG GET dbfilename 2>/dev/null
else
echo "[-] redis-cli not present on this host"
fi
echo ""
echo "=== [2] Cron injection artifacts (persistence) ==="
for f in /var/spool/cron/* /var/spool/cron/crontabs/* /etc/cron.d/*; do
[ -f "$f" ] || continue
if grep -qiE 'curl|wget|xmrig|stratum|base64|ayakliborsa|188\.245\.99\.156|213\.6\.207\.123' "$f" 2>/dev/null; then
echo "[!] SUSPICIOUS CRON: $f"
grep -iE 'curl|wget|xmrig|stratum|base64' "$f"
fi
done
echo ""
echo "=== [3] XMRig / miner processes and files ==="
ps aux | grep -iE 'xmrig|stratum|monero|miner' | grep -v grep && echo "[!] Miner process running"
find /tmp /var/tmp /dev/shm /opt -maxdepth 3 -type f \( -name 'xmrig*' -o -name '*miner*' -o -name 'config.json' \) 2>/dev/null
echo ""
echo "=== [4] Active connections to campaign infrastructure ==="
for ip in $BAD_IPS; do
ss -tnp 2>/dev/null | grep "$ip" && echo "[!] ACTIVE CONNECTION to $ip"
done
echo ""
echo "=== [5] Historical network/DNS evidence ==="
grep -rE "$BAD_DOMAINS" /var/log/ 2>/dev/null | head -20
journalctl --since "14 days ago" 2>/dev/null | grep -iE 'xmrig|redis|stratum|ayakliborsa' | head -20
echo ""
echo "=== [6] Hash check on suspicious binaries ==="
for f in $(find /tmp /var/tmp /dev/shm -type f -executable 2>/dev/null | head -100); do
h256=$(sha256sum "$f" 2>/dev/null | awk '{print $1}')
hm5=$(md5sum "$f" 2>/dev/null | awk '{print $1}')
[ "$h256" == "$BAD_SHA256" ] && echo "[!] SHA256 MATCH: $f"
[ "$hm5" == "$BAD_MD5" ] && echo "[!] MD5 MATCH: $f"
done
echo ""
echo "=== [7] SSH authorized_keys tampering ==="
for k in /root/.ssh/authorized_keys /home/*/.ssh/authorized_keys; do
[ -f "$k" ] || continue
recent=$(find "$k" -mtime -14 2>/dev/null)
[ -n "$recent" ] && echo "[!] $k modified in last 14 days — verify contents"
done
echo ""
echo "[+] Hunt complete. Escalate any [!] findings to the IR team."
Response Priorities
Immediate (0–24h)
- Block all listed IPs and domains (
188.245.99.156,213.6.207.123,ayakliborsa.net,socket.ayakliborsa.net,hagaseca.com) at DNS, proxy, and egress firewall layers. - Push the full hash sets into EDR blocklists and your TI platform; retro-hunt 30 days of telemetry for the IOCs and behaviors in the KQL query.
- Audit all internet-facing assets for exposed Redis (TCP/6379) and ADB (TCP/5555) — scan your external attack surface today; these are unauthenticated-by-default services.
- Run the bash hunt script on every Linux host running Redis.
24 Hours
- While neither payload is a dedicated credential stealer, Meterpreter presence means full interactive access — treat any confirmed Redis-botnet host as fully compromised: rotate SSH keys, service account credentials, and any secrets on disk; review
authorized_keysand newly created local accounts. - For Hagaseca exposure: audit managed/mobile device fleets for unknown APK installs, enabled Accessibility Services from untrusted apps, and unexpected ADB enablement. Accessibility abuse enables credential-overlay phishing — verify identity-provider logs for anomalous mobile logins.
- Rebuild confirmed-compromised Redis hosts from known-good images rather than cleaning in place; cron and module persistence survive casual removal.
1 Week (Architecture Hardening)
- Redis: enforce
requirepass/ACLs, bind to localhost or private interfaces, disable dangerous commands (CONFIG,MODULE,SLAVEOF/REPLICAOF) viarename-command, and deploy behind network segmentation. Never expose Redis to the internet. - Android/Redroid: disable ADB over network where not required, restrict TCP/5555 to management VLANs, enforce MDM policies blocking sideloading, and alert on Accessibility Service grants to non-whitelisted packages.
- Implement egress filtering on server VLANs (mining pool ports, stratum protocol) and deploy the Sigma detections into production with tuned thresholds.
- Subscribe to the relevant OTX pulses for continuous indicator updates as both campaigns evolve.
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.