Rathat Android Banking Trojan Adb Ai

RATHat: The Android Banking Trojan That Pairs With Its Own ADB and Asks AI Where to Tap

RATHat: The Android Banking Trojan That Pairs With Its Own ADB and Asks AI Where to Tap
RATHat is an Android banking trojan sold as malware-as-a-service. Victims sideload it from SMS or ad lures and grant it Accessibility.

It uses synthetic taps to switch on Wireless Debugging, then pairs with the phone's own ADB daemon to get a shell (UID 2000) foothold outside the app sandbox. Two Go binaries keep that foothold alive after the app is uninstalled, and can reinstall it.

When its scripted taps fail, it asks a generative AI model where to tap. The operator console, branded 熊猫工坊 / Panda Workshop, reportedly uses Gemini to rank victims by estimated bank balance.

What RATHat is

Threat reseachers disclosed RATHat on 16 September 2026, and  followed on 28 September with an analysis of its operator console. It is rented out as a service. Each customer gets a separate web console to build, sign and distribute the malware and to control infected phones. Cleafy counted nearly 100 console deployments since April 2026.

Distribution is simple: targeted smishing and malvertising that lead to fake download portals. Earlier campaigns used a StripChat-themed decoy. The sophistication starts after installation.

Console deployments
100
since April 2026 (Cleafy)
Privilege gained
UID 2000
Android shell user, not root
Published samples
161 APKs
Zimperium IOC set
Brand infrastructure
2024
rathat domains registered Sep 2024

Infection chain

From sideloaded APK to a foothold that survives uninstall

  1. Lure and sideload An SMS link or ad leads to a fake download portal. The victim installs the APK and grants Accessibility. smishing / malvertising
  2. Self-pair with ADB Synthetic taps unlock Developer Options and enable Wireless Debugging. The malware reads the six-digit pairing code and port from the screen and pairs with the local ADB daemon. libadb-android
  3. Ask the model If a scripted step fails, the Accessibility tree is serialised to XML and sent with Mandarin prompts to a generative AI model, which replies with tap coordinates. reported as Google Gemini
  4. Drop shell-level agents Over ADB, two Go binaries disguised as native libraries are written to /data/local/tmp: a command agent and an FRP reverse-tunnel client. UID 2000
  5. Steal and persist Overlays, SMS theft and touch logging collect credentials and OTPs. The agent outlives uninstall and can reinstall the app and re-enable Accessibility. FRP to console

Escaping the sandbox without an exploit

Most Android banking trojans are limited to the permissions the user grants them. RATHat uses those permissions to get more. With Accessibility it can press any button a user can, so it walks through Settings, taps the build number to unlock Developer Options, and turns on Wireless Debugging.

Wireless Debugging normally pairs a phone with a developer's computer using a six-digit code shown on screen. RATHat reads that code and the dynamic port from the screen, then authenticates to the phone's own ADB daemon through an embedded libadb-android library. No computer, no vulnerability and no root are needed. The result is a shell running as Android's shell user (UID 2000), the same identity a developer gets over USB. From there it can install packages, change secure settings and read input devices that an ordinary app cannot reach.

"...local ADB (Android Debug Bridge) self-pairing to break out of the standard Android application sandbox."

Persistence: two Go binaries and a tunnel

Once the shell is in place, RATHat stages its long-lived components. Both are written in Go and named to look like ordinary native libraries.

ComponentLocationRole
liblocal-service.so /data/local/tmp Shell-level command agent: screen streaming, touch logging, reinstall, settings changes
libmedia_codec.so /data/local/tmp FRP client built from fatedier/frp, holding a reverse tunnel to the console through NAT and firewalls
app.apk /data/local/tmp Staged copy of the malware for silent reinstall

The agent runs outside the app's package lifecycle, so uninstalling the app does not stop it. It can put the app back with pm install -r -g -i com.android.packageinstaller /data/local/tmp/app.apk and restore Accessibility with settings put secure. Zimperium notes that the heartbeat restarting the agent depends on the app, so it is still unclear whether the foothold survives a reboot after removal.

What it steals, and how

  • Overlays: HTML phishing screens drawn over banking and payment apps, including WeChat and Alipay, to capture logins.
  • SMS and OTPs: incoming text messages, including one-time passcodes, are forwarded to the operator.
  • Accessibility text capture: typed text is rebuilt from Accessibility events.
  • Touch logging: the Go agent runs getevent on /dev/input to record raw touch coordinates, then maps them to PINs and unlock patterns using per-brand keypad layouts in locateValues.json.
  • Remote control: minicap and minitouch stream the screen and inject taps with no permission prompt and no recording indicator on Android 13 and earlier. screencap at about 5 fps and standard MediaProjection are the fallbacks.

Where the AI comes in

RATHat uses a large language model in two places. Neither one moves money.

1. On the phone: a navigation fallback

Settings screens differ across Android versions and OEM skins, which breaks hard-coded tap sequences. When that happens, RATHat serialises the live Accessibility tree to XML and sends it, with Mandarin prompts, to a generative AI model. The model returns JSON with coordinates and actions such as tap or SCROLL_DOWN, for example to find the "Pair device with pairing code" button. Cleafy found the model is used mainly to keep the Wireless Debugging setup working, with the API key stored in the app's settings.

2. In the console: victim triage

According to Cleafy, the latest console supports only Google Gemini and sends operators to Google AI Studio for a key. It feeds stolen SMS to the model to estimate each victim's bank balance and sorts phones into high-value and mid-value groups, so operators know whom to work first. Nothing in the analysed samples uses the model to transfer funds.

RATHat compared with PromptSpy, the earlier GenAI-assisted Android malware
PromptSpy (ESET, Feb 2026)RATHat (Sep 2026)
Input to model Prompt and XML screen dump Mandarin prompt and XML Accessibility tree
Model output JSON tap instructions JSON coordinates and actions
Used for Staying pinned in recent apps Automating the ADB pairing chain
Console-side AI None reported Victim ranking by estimated balance
Privilege escalation No Yes, ADB shell as UID 2000

The ADB self-pairing is what makes RATHat dangerous. The model adds reliability, letting one build work across many phone models, and saves operators time when choosing targets.

The operator console

Every RATHat customer runs a separate console. Cleafy describes it as a complete build tool: operators create and sign builds, schedule rebuilds that change file hashes, and publish to Amazon S3 or their own servers. The panel has been rebranded several times.

BrandingPeriodExample C2
Fisher Dec 2025 to Feb 2026 admin.rathat[.]live
BlackCat Remote Control Management Apr 2026 8.231.120[.]246
Panda Workshop V5 Aug 2026 admin.xiongmaocs[.]pics
Panda Workshop V6 Sep 2026 admin.chunhuating[.]best

Live consoles serve an HTTPS panel titled 熊猫工坊-旗舰版V5, 熊猫工坊-旗舰版V6 ("Panda Workshop, Flagship Edition") or PandaV6. Public scan data shows the same hosts running an FRP server on TCP 7000, which is where the tunnels opened by libmedia_codec.so terminate. Console domains follow a consistent pattern: admin. subdomains of cheap TLDs, registered in bulk at NameSilo, many of them hosted on BGPNET (AS4907, Singapore).

The brand is older than the reporting. rathat[.]me and rathat[.]org were registered in the same second on 8 September 2024, and passive DNS shows admin.rathat[.]live resolving by November 2024. The Internet Archive holds a capture of the rathat[.]live panel from July 2025, and in January 2026 its /api/version endpoint reported V2.0.

What the old panel domain serves now

As of 29 September 2026, admin.rathat[.]live no longer shows a console. It serves a Chinese government welfare themed download page, "畅聊民生" (roughly "Chat About People's Livelihood"), advertising elderly care, social security and healthcare services. The page redirects to yzbwiosod.hucuwa[.]cn/clms.bin, which delivers a 68 MB APK.

That APK is not RATHat. It is a chat app built on a commercial messaging SDK, with a wallet, group "red packets", withdrawals and a PhoneIntercepterService backed by call-handling permissions. The feature set matches Chinese telecom-fraud apps that keep victims in scripted chat groups and can intercept calls to banks or police. Each download is repackaged with a new package name, a new hash and a deliberately invalid ZIP header.

The link to RATHat is the server rather than the code. The same host, 165.154.203[.]196, served accessibility.rathat[.]club, api.rathat[.]club and download.rathat[.]club in March 2026. This points to one operation, or one infrastructure provider, running both a banking trojan and a fraud chat app. Whether the chat app can deliver RATHat as a second stage has not been confirmed.

Who is behind it?

"...threat actors that appear to be operating in China."

No public source names the developer or the operators. The indicators are Mandarin prompts, a Chinese-language panel, pinyin domain names (xiongmao "panda", cunzhang "village chief", jiaozhu "cult leader") and WeChat and Alipay targeting. Together they describe a Chinese-speaking operation, not a specific group or location. There is no verified link to PlayPraetor, SpyNote, GoldFactory or other Chinese-speaking Android MaaS families.

The infrastructure suggests a central developer. Brand domains and console domains are registered in batches seconds apart, hosting is uniform, and every console carries the same FRP setup. That fits one provider building panels for many paying customers.

Detection and response

  • Device: look for processes running as UID 2000 outside a developer session, and for liblocal-service.so, libmedia_codec.so, app.apk, minicap or minitouch in /data/local/tmp.
  • Network: alert on device traffic to TCP 7000 on unfamiliar hosts and on WebSocket traffic to admin.* subdomains of low-cost TLDs. Block the indicators below.
  • MDM and enterprise: flag devices with Wireless Debugging or Developer Options enabled, and sideloaded apps holding Accessibility.
  • Users: do not install apps from links in texts or ads, and treat any app asking for Accessibility with suspicion.
Removal: uninstalling is not enough

Uninstall the app, turn off Wireless Debugging and Developer Options, and revoke all debugging authorisations.

Remove the binaries from /data/local/tmp (this may need ADB from a trusted computer), reboot, and check that the app has not returned and that no unknown service holds Accessibility.

These steps follow from the documented behaviour. No vendor has published a full removal procedure yet. If in doubt, back up and factory reset.

Indicators of compromise

Zimperium's repository [2] lists published C2 endpoints, distribution URLs and 161 APK SHA-256 hashes. The console domains in the first table below do not appear in published IOC lists. "Confirmed" means public scan data shows the Panda Workshop panel or FRPS on port 7000. "Candidate" means the registration batch and hosting match, but content was not observed.

Panda Workshop consoles

DomainIPStatus
admin.xiongmaoys[.]mom 186.240.199[.]130 Confirmed
admin.xiongmaoys[.]pics 186.240.200[.]78 Confirmed
admin.xiongmaoys[.]help 186.240.199[.]191 Confirmed
admin.xiongmaodx[.]buzz 186.240.200[.]140 Confirmed
admin.xiongmaodx[.]casa 186.240.200[.]21 Confirmed
admin.xiongmaodx[.]skin 186.240.200[.]65 Confirmed
admin.chunhuating[.]beer 186.240.199[.]95 Confirmed
admin.chunhuating[.]casa 186.240.201[.]184 Confirmed
admin.xiongmaocs[.]best 186.240.200[.]56 Candidate
admin.xiongmaodx[.]beer 186.240.200[.]144 Candidate
admin.xiongmaodx[.]mom 186.240.200[.]49 Candidate
admin.xiongmaodx[.]pics 186.240.200[.]58 Candidate
admin.xiongmaodx[.]qpon 186.240.201[.]49 Candidate
admin.xiongmaoys[.]best Cloudflare Candidate
admin.xiongmaodx[.]hair Cloudflare Candidate
admin.bawanu[.]best 186.240.199[.]31 (historical) Candidate

Published by Cleafy

TypeValueContext
Domain admin.chunhuating[.]best Sep 2026 C2 (Panda V6)
Domain admin.xiongmaocs[.]pics Aug 2026 C2 (Panda V5)
IPv4 8.231.120[.]246 Apr 2026 C2 (BlackCat)
Domain admin.rathat[.]live Dec 2025 to Feb 2026 C2 (Fisher)
URL hxxps://dramaspoolcoa[.]com/en.html Sep 2026 delivery
URL hxxps://rathat[.]me/app-release-rat-hat-live.apk Dec 2025 to Feb 2026 delivery
MD5 116346cace7f00ba557034b534d40791 Sep 2026 sample
MD5 8fdc21e25097a46528211274e54330e1 Feb 2026 sample
MD5 f83357b2d47c7d38ee53943373961211 Dec 2025 sample

RATHat brand infrastructure and current lure

# Brand domains (GoDaddy, registered in batches)
rathat[.]me  rathat[.]org  rathat[.]live  rathat[.]cloud  rathat[.]club
accessibility.rathat[.]club  api.rathat[.]club  download.rathat[.]club
admin.rathat[.]cloud  api.rathat[.]live
# Server hosting the panel domain and the current lure
165.154.203[.]196    7088603[.]cc
# Fraud chat app delivery (served from admin.rathat[.]live)
hxxps://yzbwiosod.hucuwa[.]cn/clms.bin
# Repackaged per download. Stable markers:
com.ddtx.dingdatacontact.*
com.CjftvKAgfmYMVk.PSkDqSVbrrhoGb.*
OpenInstall key ghbfm3

Network ranges and host artifacts

# Console hosting observed, AS4907 BGPNET PTE LTD
186.240.199.0/24   186.240.200.0/24   186.240.201.0/24
# On-device
/data/local/tmp/liblocal-service.so
/data/local/tmp/libmedia_codec.so
/data/local/tmp/app.apk

Blocking whole /24 ranges at a hosting provider can affect unrelated customers, so evaluate before deploying. This infrastructure rotates quickly, and several domains had stopped resolving at the time of writing.

Verdict

What is new about RATHat? It escapes the sandbox by pairing with the phone's own wireless ADB. No exploit, no root, no computer.
Is the AI the main threat? No. It is a reliability and triage layer. The ADB shell is the real risk.
Does uninstalling fix it? No. The Go agent in /data/local/tmp can outlive the app and reinstall it.
Who is at risk? Users who sideload apps from SMS or ad links. Overlays target WeChat, Alipay, banking and crypto apps.
Who runs it? A Chinese-speaking MaaS operation serving multiple customers. No named actor.