[ctx]ctxseccontext security: attacks on the harness and context layer of AI agents, plus exploited-now news, hunting and playbooks.

← Threat Hunting · markdown

hunt idea

Hunt: Hirudo Android RAT swaps real banking apps for patched copies that fake Play Integrity

ThreatFabric's Hirudo writeup describes lure apps (shopping, adult video, short drama) that drop a separate RAT behind a fake in-app "update". The RAT then uninstalls 8 Indonesian banking apps (covering 7 banks) and installs test-key-signed replacements. A YAHFA/Dobby hooking engine inside each replacement spoofs the signing certificate, hides Accessibility services, strips FLAG_SECURE, re-signs attestation with a publicly leaked keybox, and relays Play Integrity over plain HTTP to an operator server. Credential targeting also covers China, India, Mexico, Morocco and Thailand. Server-side hunt ideas (banks/fintech): check attestation chains against Google's revocation list, bind Integrity verdicts to the session and action, and flag sessions where behavioral telemetry suddenly drops out. Network/MDM: block the IOCs below. Lure packages: com.agbbh.kjdrttt, com.onev.vip, com.koishort.app, com.zoyatv.app. RAT: com.zk7qpx.mv9wlt, com.r9nkvx.qw2mpl.
// KQL sketch (proxy/DNS/MDM network logs) - adapt table names
let hirudo = dynamic(["helloharmonyos.com","jiekou.baojingtextile.cn",
  "d3s06yhcwfnwcx.cloudfront.net","d21gcldn8gp80l.cloudfront.net",
  "dydjjnnjg7jeb.cloudfront.net","d3q4tlm7pw29zr.cloudfront.net"]);
let hirudoIP = dynamic(["134.122.153.136","43.225.157.157","134.122.153.68",
  "134.122.153.92","18.139.79.161"]);
NetworkLogs
| where TimeGenerated > ago(30d)
| where DestinationHost has_any (hirudo) or DestinationIP in (hirudoIP)
| summarize hits=count(), first=min(TimeGenerated) by DeviceId, DestinationHost, DestinationIP

Sources: ThreatFabric: Hirudo · The Hacker News