Home Kimwolf botnet
Post
Cancel

Kimwolf botnet

Summary

Kimwolf is a new Android-based DDoS botnet that emerged in late 2025 as a variant or offshoot of the infamous Aisuru botnet. It primarily targets Android TV devices (TV boxes, smart TVs, set-top boxes, tablets) and has rapidly grown to an army of over 2 million infected devices worldwide.

Security researchers at QiAnXin XLab named it “Kimwolf” because the malware uses the wolfSSL library and displays North Korea-themed messages in some versions. Notably, Kimwolf is closely tied to Aisuru – they share code and even co-infected the same devices through late 2025, indicating the same hacker group operates both.

Timeline

The following image represents the current timeline of how the botnet has emerged and developed.


Figure 1: Kimwolf timeline chart

Infection Path

Kimwolf primarily compromises Android TV boxes and smart TVs by abusing exposed Android Debug Bridge (ADB) services, often reachable indirectly through residential proxy networks.

Many low-cost Android TV devices ship with ADB enabled over TCP (commonly ports 5555, 5858, or 12108) and lack proper authentication. Kimwolf operators scan for these exposed services frequently routing their traffic through residential proxy providers to blend in and bypass ISP or geo-based filtering. Once an exposed ADB endpoint is reachable, the attacker executes shell commands to download and install a malicious APK or native binary directly onto the device.

After initial access, the dropper establishes persistence (boot receivers or system-level execution), deploys the Kimwolf native payload, and optionally reconfigures ADB (changing ports or locking it down) to prevent competing infections.

The malware then performs encrypted command-and-control initialization: it resolves C2 endpoints using DNS-over-TLS (DoT) or blockchain-based resolution (ENS), verifies commands using elliptic-curve signatures, and registers the device with the botnet. Once enrolled, the device can be used for DDoS attacks, proxying traffic, tunneling, or remote command execution, effectively turning consumer Android hardware into a persistent botnet node with minimal user visibility.


Figure 2: Kimwolf infection chain

Comparing Capabilities to Aisuru

Below is a feature-by-feature comparison table highlighting how Kimwolf differs from (and extends) Aisuru, focusing on architecture, infection vectors, C2 design, and operational use.

CategoryAisuru BotnetKimwolf Botnet
Primary Target PlatformTraditional IoT devices (routers, DVRs, cameras, embedded Linux)Android-based devices (Android TV boxes, smart TVs, set-top boxes)
Operating SystemEmbedded Linux (BusyBox-style environments)Android (native ARM ELF via NDK + APK droppers)
Initial EmergenceActive throughout 2024, publicly reported mid-2024Emerged Aug–Oct 2025 as Android-focused expansion
RelationshipOriginal botnetDirect evolution / sibling operated by same actor
Infection VectorCredential brute-force, firmware compromise, exposed servicesExposed Android Debug Bridge (ADB) often accessed via residential proxies
Propagation MethodScanning + exploit scripts, supply-chain abuse (e.g., router firmware)ADB command execution, APK sideloading, native payload drop
Dropper MechanismShell scripts, wget/curl payload deliveryMalicious APKs that extract and execute native ELF payloads
PersistenceInit scripts, cron jobs, filesystem modificationsAndroid boot receivers, native persistence, optional ADB reconfiguration
Primary Binary TypeELF (Mirai-derived)ARM ELF (UPX-packed) + Android APK installers
Code LineageMirai variant with custom extensionsMirai-derived core + reused Aisuru components
C2 TransportPlain TCP / UDP, sometimes HTTPTLS (wolfSSL), WebSocket (later versions)
DNS UsageStandard DNS resolutionDNS-over-TLS (DoT) to evade DNS visibility
C2 ObfuscationHardcoded IPs/domains, fast rotationXOR-obfuscated IPs, ENS (Ethereum Name Service) resolution
Blockchain UsageNone observedENS-based C2 discovery (Ethereum smart contracts)
Command AuthenticationMinimal or noneECDSA-signed commands (public key embedded in malware)
Proxy CapabilityLimited / incidentalExplicit residential proxy functionality (monetization focus)
DDoS CapabilityExtremely high (10–30 Tbps observed)Comparable scale when combined with Aisuru; billions of commands issued
Primary MonetizationDDoS-for-hireDDoS-for-hire + sale of residential proxy access
C2 Resilience StrategyRapid domain/IP rotationDomain rotation → ENS migration → hardcoded IP fallback
Detection EvasionVolume-based overwhelm, infrastructure churnEncryption everywhere, decentralized C2 discovery, low AV detection
Sample PackagingStandalone ELF binariesAPKs + embedded native payloads
Certificate UsageNot applicableReused Android signing certificates across Kimwolf & Aisuru droppers
Operational Scale (Observed)Hundreds of thousands to millions of IoT nodes~1.8–2M Android devices observed globally
Geographic SpreadGlobal, IoT-heavy regionsGlobal, with high concentration in Android TV–heavy markets
Defensive ChallengesTraffic volume, fast rotationEncrypted DNS, blockchain C2, residential IP blending

Identifying Infected Clients

Exposed or Abused ADB Services

Kimwolf relies heavily on ADB for initial compromise. Indicators

  • TCP ports 5555, 5858, 12108, 3222 open on Android-identified devices
  • ADB sessions originating from residential IP ranges
  • ADB port changes shortly after compromise (e.g., device rebinds ADB to 12108)

NetFlow clues

  • Short-lived TCP sessions to port 5555 followed by outbound TLS traffic
  • ADB access followed by APK or ELF download traffic (HTTP, raw TCP)

Encrypted DNS Usage (Highly Distinctive)

Kimwolf resolves C2 infrastructure using DNS-over-TLS (DoT).

Indicators

  • Outbound TCP connections to:
    • 8.8.8.8:853
    • 1.1.1.1:853
  • From devices that normally do not use encrypted DNS (TVs, set-top boxes)

NetFlow clues

  • Small, periodic TLS sessions to port 853
  • Followed by new outbound TLS sessions to unrelated VPS IPs
  • NOTE: Consumer Android TVs almost never use DoT legitimately.

Suspicious TLS / C2 Communication

After DNS resolution, Kimwolf connects to C2 using TLS (wolfSSL).

Indicators

  • TLS connections from Android/IoT networks to:
    • Unknown VPS providers
    • Rapidly changing IPs
    • Non-browser JA3 fingerprints (if available)
  • Regular beaconing intervals (minutes to hours)

NetFlow clues

  • Consistent destination changes with similar byte counts
  • TLS sessions without SNI or with uncommon SNI values

DDoS or Proxy Participation

Infected devices may be used as DDoS bots or residential proxies.

Indicators

  • Sudden spikes in outbound UDP or TCP traffic
  • High fan-out (many destinations, same source)
  • Proxy-like behavior (many short TCP sessions to diverse IPs)

NetFlow clues

  • Packet-heavy flows (especially UDP)
  • Repeated bursts from the same source IP across time

C2 Discovery

Because Kimwolf deliberately hides C2 (DoT + TLS + XOR’d IP indirection + ENS fallback), the best automation strategy is not a single technique but rather a pipeline that continuously harvests candidate C2s from multiple vantage points and then validates/triages them.

Automate C2 extraction from new samples (most reliable)

Even if runtime communications are encrypted, the malware still has to bootstrap. That bootstrap material (domains, XOR keys, ENS name, contract, fallback IPs) is almost always recoverable from binaries/packers.

How to automate:

  • Continuous sample intake from VT/feeds by pivoting on:
    • Known hashes
    • APK signer cert (when applicable)
    • Unique strings/family markers (e.g., socket/process markers used by the family, wolfSSL usage, etc.)
  • Unpack + decrypt strings automatically:
    • UPX-unpack ELF where needed
    • Identify/decode the family’s XOR/string routine (or emulate it) and dump decrypted strings
  • Extract:
    • Domains (including staging / fallback)
    • Any “domain → resolved IP → XOR → real IP” scheme
    • ENS name + record key + XOR key
    • Hardcoded IP:port fallbacks

Monitor ENS (Ethereum Name Service) records

When Kimwolf uses ENS, the “new C2” problem becomes a blockchain monitoring problem. This may become highly effective post-December shift as Kimwolf is specifically designed to survive takedowns.

How to automate:

  • Poll/subscribe to changes for the ENS name (e.g., pawsatyou[.]eth) and the specific text record key the malware reads.
  • When the text record changes:
    • Parse the stored value (often IPv6-looking data or encoded bytes)
    • Apply the known transform (XOR last 4 bytes, etc.)
    • Emit the resulting IPv4/IPv6 C2 candidate(s)
  • Store a change log (timestamp, old value, new value, derived IPs)

Mine NetFlow for C2 candidates using behavioral clustering

Even if you can’t see DNS (DoT) or payloads (TLS), flow metadata is enough to discover new infra as it comes online. C2s must be reachable, and a botnet causes many-to-one flow patterns that stick out in peering netflow.

How to automate:

  • Build a “likely Kimwolf host” cohort using high-signal behaviors:
    • IoT/Android subnets
    • DoT sessions (dst port 853 to known resolvers)
    • Prior ADB exposure history
  • For that cohort, continuously compute:
    • New outbound destinations per day (IP, ASN, port)
    • Beacon-like periodicity (regular intervals, similar byte counts)
    • Destination concentration (many hosts → same small set of IPs)
  • Rank destinations by a score like:
    • #unique_sources * recurrence * low_popularity_penalty * VPS_ASN_weight
  • Auto-enrich top candidates:
    • Reverse DNS / passive DNS
    • TLS fingerprinting (JA3/JA4 if available)
    • Hosting/ASN reputation

Finding new samples

The following Yara rules may be useful to track down new samples.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
rule Kimwolf_Hunt_Domains_Protocol_Markers
{
  meta:
    author = "defender"
    purpose = "VT hunting for Kimwolf samples (strings/domains/protocol markers)"
    reference = "QiAnXin XLab Kimwolf report"
 
  strings:
    // Domains / infra artifacts called out in public reporting
    $d1 = "rtrdedge1.samsungcdn.cloud" ascii nocase
    $d2 = "staging.pproxy1.fun" ascii nocase
    $ens = "pawsatyou.eth" ascii nocase
 
    // Protocol/magic values described for Kimwolf message header evolution
    $m1 = "AD216CD4" ascii
    $m2 = "FD9177FF" ascii
    $m3 = "DPRK" ascii
 
    // Campaign group string example used by the bot (useful if present)
    $grp = "android-postboot-rt" ascii
 
  condition:
    (1 of ($d*)) or
    ($ens and 1 of ($m*)) or
    (2 of ($m*) and $grp)
}

V4 samples include some specific strings that may aid in discovery.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
rule Kimwolf_V4_Console_Strings
{
  meta:
    author = "defender"
    purpose = "VT hunting for early Kimwolf v4 binaries (console strings)"
    reference = "QiAnXin XLab Kimwolf report"
 
  strings:
    $s1 = "ForeheadSDK v2.0 Premium Edition" ascii
    $s2 = "Kim Jong-un Leads Our Nation to Strength" ascii
 
  condition:
    any of them
}

Kimwolf APK / dropper artifacts (strings + ENS pivot).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
rule Kimwolf_Android_APK_Hunt_Core
{
  meta:
    author = "defender"
    purpose = "Hunt Kimwolf-related Android droppers/APKs on VT (strings/infra pivots)"
    reference = "QiAnXin XLab Kimwolf report"
 
  strings:
    // ENS-based resolution seen in later evolution
    $ens1 = "pawsatyou.eth" ascii nocase
 
    // Known infra string seen in reports/feeds
    $d1 = "staging.pproxy1.fun" ascii nocase
 
    // Banner phrase referenced in reporting
    $b1 = "Android Support Center" ascii nocase
 
  condition:
    1 of ($ens*) or 1 of ($d*) or $b1
}

Kimwolf / Aisuru Android “systemservice” style droppers (package naming pivot).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
rule Kimwolf_Aisuru_SystemService_APK_Hunt
{
  meta:
    author = "defender"
    purpose = "Hunt Android droppers consistent with Kimwolf/Aisuru campaign naming"
 
  strings:
    $p1 = "com.n2.systemservice" ascii nocase
    $r1 = "RECEIVE_BOOT_COMPLETED" ascii
    $r2 = "BOOT_COMPLETED" ascii
 
  condition:
    $p1 and (1 of ($r*))
}

References

Indicators of Compromise

typeindicatornotes
android_packagecom.n2.systemservice062Malicious APK package name observed in samples
android_packagecom.n2.systemservice063Malicious APK package name observed in samples
android_packagecom.n2.systemservice0644Malicious APK package name observed in Kimwolf/Aisuru-linked samples
certificate_sha1182256bca46a5c02def26550a154561ec5b2b983APK signing certificate SHA1 fingerprint
domain14emeliaterracewestroxburyma02132[.]suKimwolf C2 / related domain
domainapi.groksearch[.]netKimwolf C2 / related domain
domainfuckbriankrebs[.]comEmbedded in DDoS payload generation (udp_dns/mc_enc)
domainfuckzachebt.meowmeowmeowmeowmeow.meow.indiahackgod[.]suKimwolf C2 / related domain
domaingreatfirewallisacensorshiptool.14emeliaterracewestroxburyma02132[.]suKimwolf C2 domain referenced by Black Lotus Labs
domainlol.713mtauburnctcolumbusoh43085[.]stKimwolf C2 / related domain
domainlolbroweborrowtvbro.713mtauburnctcolumbusoh43085[.]stKimwolf C2 / related domain
domainnnkjzfaxkjanxzk.14emeliaterracewestroxburyma02132[.]suKimwolf C2 / related domain
domainpawsatyou[.]ethKimwolf C2 / related domain
domainproxy-sdk.14emeliaterracewestroxburyma02132[.]suProxy SDK endpoint (port 443 noted in report)
domainrtrdedge1.samsungcdn[.]cloudKimwolf C2 / related domain
domainsdk-bright.14emeliaterracewestroxburyma02132[.]suProxy SDK endpoint (port 443 noted in report)
domainsdk-dl-prod.proxiessdk[.]onlineKimwolf C2 / related domain
domainsdk-dl-production.proxiessdk[.]storeKimwolf C2 / related domain
domainstaging.pproxy1[.]funKimwolf C2 / related domain
domainzachebt.chachasli[.]deKimwolf C2 / related domain
domainzachebt.groksearch[.]netKimwolf C2 / related domain
ethereum_contract0xde569B825877c47fE637913eCE5216C644dE081FENS contract address for pawsatyou.eth (EtherHiding channel)
fileji.soEmbedded/preset filename used for Kimwolf payload
filelibniggakernelResource ID / embedded binary name referenced in APK resources
hash_md51c03d82026b6bcf5acd8fc4bcf48ed00Sample MD5 (SO / ELF)
hash_md52078af54891b32ea0b1d1bf08b552fe8Sample MD5 (SO / ELF)
hash_md52fd5481e9d20dad6d27e320d5464f71eSample MD5 (APK)
hash_md533435ec640fbd3451f5316c9e45d46e8Sample MD5 (SO / ELF)
hash_md534dfa5bc38b8c6108406b1e4da9a21e4Sample MD5 (SO / ELF)
hash_md53a172e3a2d330c49d7baa42ead3b6539Sample MD5 (APK)
hash_md54cd750f32ee5d4f9e335751ae992ce64Sample MD5 (APK)
hash_md551cfe61eac636aae33a88aa5f95e5185Sample MD5 (SO / ELF)
hash_md55490fb81cf24a2defa87ea251f553d11Sample MD5 (Rust component)
hash_md55f4ed952e69abb337f9405352cb5cc05Sample MD5 (APK)
hash_md5726557aaebee929541f9c60ec86d356eSample MD5 (SO / ELF)
hash_md58011ed1d1851c6ae31274c2ac8edfc06Sample MD5 (APK)
hash_md585ba20e982ed8088bb1ba7ed23b0c497Sample MD5 (SO / ELF)
hash_md5887747dc1687953902488489b805d965Sample MD5 (APK)
hash_md59053cef2ea429339b64f3df88cad8e3fSample MD5 (SO / ELF)
hash_md595efbc9fdc5c7bcbf469de3a0cc35699Sample MD5 (APK)
hash_md59b37f3bf3b91aa4f135a6c64aba643bdSample MD5 (SO / ELF)
hash_md5b1d4739d692d70c3e715f742ac329b05Sample MD5 (Rust component)
hash_md5b688c22aabcd83138bba4afb9b3ef4fcSample MD5 (APK)
hash_md5b89ee1304b94f0951af31433dac9a1bdSample MD5 (SO / ELF)
hash_md5bda398fcd6da2ddd4c756e7e7c47f8d8Sample MD5 (APK)
hash_md5bf06011784990b3cca02fe997ff9b33dSample MD5 (SO / ELF)
hash_md5cf7960034540cd25840d619702c73a26Sample MD5 (Rust component)
hash_md5d086086b35d6c2ecf60b405e79f36d05Sample MD5 (SO / ELF)
hash_md5dfe8d1f591d53259e573b98acb178e84Sample MD5 (APK)
hash_md5e4be95de21627b8f988ba9b55c34380cSample MD5 (Downloader component)
hash_md5e96073b7ed4a8eb40bed6980a287bc9fSample MD5 (SO / ELF)
hash_md5ea7e4930b7506c1a5ca7fee10547ef6bSample MD5 (APK)
hash_md5f8a70ca813a6f5123c3869d418f00fe5Sample MD5 (SO / ELF)
ip104.171.170[.]201Later IP for greatfirewallisacensorshiptool… domain (Resi Rack LLC)
ip104.171.170[.]21Resolved IP for greatfirewallisacensorshiptool… domain (Resi Rack LLC)
ip136.243.146[.]140Example real C2 IP derived from ENS record pawsatyou.eth (after XOR)
ip176.65.149[.]19Malware hosting server (port 25565) referenced by Black Lotus Labs
ip194.46.59[.]169SSH-accessed host referenced in THN (proxy SDK related)
ip44.7.0[.]45Example DNS-resolved IP for rtrdedge1.samsungcdn.cloud (pre-XOR)
ip45.206.3[.]189Example real C2 IP after XOR (v5)
ip65.108.5[.]46Aisuru backend C2 IP (used in analysis referenced by Black Lotus Labs)
ip93.95.112[.]50Downloader infrastructure (Resi Rack L.L.C. per report)
ip93.95.112[.]51Downloader infrastructure (Resi Rack L.L.C. per report)
ip93.95.112[.]52Downloader infrastructure (Resi Rack L.L.C. per report)
ip93.95.112[.]53Downloader infrastructure (Resi Rack L.L.C. per report)
ip93.95.112[.]54Downloader infrastructure (Resi Rack L.L.C. per report)
ip93.95.112[.]55Downloader infrastructure (Resi Rack L.L.C. per report)
ip93.95.112[.]59Downloader infrastructure (Resi Rack L.L.C. per report)
processnetd_servicesKimwolf process disguise name
processtv_helperKimwolf process disguise name
stringAD216CD4Current protocol magic value (header field)
unix_socket@niggaboxv[number]Unix domain socket used for single-instance control
This post is licensed under CC BY 4.0 by the author.