Posts Hirudo - Android Banking Trojan yang Mengganti Aplikasi Bank Asli dengan Versi Trojanized
Post
Cancel

Hirudo - Android Banking Trojan yang Mengganti Aplikasi Bank Asli dengan Versi Trojanized

You are solely responsible for any actions or activities related to the material on this website. Some of the content here may be harmful or dangerous if misused. If you do not fully understand any material on this site, please leave. Before accessing or using these materials in any way, review the laws that apply in your province or country. All materials are provided for educational and research purposes only.

Ringkasan


Hirudo adalah Android banking trojan baru yang dipublikasikan oleh ThreatFabric pada 14 Oktober 2026. Berbeda dengan banking malware pada umumnya yang menampilkan overlay palsu di atas aplikasi asli, Hirudo mengambil pendekatan yang lebih agresif: menghapus aplikasi bank asli dan menggantinya dengan salinan yang sudah di-patch — salinan yang terlihat dan berfungsi identik, namun diam-diam menonaktifkan semua security check bawaan bank dari dalam proses aplikasi itu sendiri.

  • Target utama: 8 aplikasi banking dari 7 bank di Indonesia
  • Target tambahan: Credential targets di China, India, Mexico, Morocco, dan Thailand
  • Kapabilitas: Credential theft, device takeover, screen & camera capture, SMS theft
  • Distribusi: Dropper apps (shopping, adult-video, short-drama) via Amazon CloudFront dan Meta Ads

Arsitektur: Two-Stage Design


Hirudo menggunakan desain dua tahap — dropper dan payload — yang memisahkan komponen distribusi dari komponen malicious.

Stage 1: Dropper (Lure App)

Korban menginstall aplikasi yang terlihat legitimate, seperti:

Lure AppTipePackage Name
ShoporaShopping appcom.agbbh.kjdrttt
1V1 XAdult-video appcom.onev.vip
KoiShortShort-drama appcom.koishort.app
ZoyaTVShort-drama appcom.zoyatv.app

Lure apps ini fungsional — memuat konten asli via WebView (storefront, katalog video, drama pendek) sehingga pengalaman terlihat legitimate. Di balik layar, dropper menjalankan rutinitas startup:

  1. Mengumpulkan data promotion-tracking
  2. Mengambil konfigurasi campaign
  3. Mengecek apakah payload (Hirudo RAT) sudah terinstall dengan Accessibility service dan notification access aktif

Jika payload belum ada, dropper menampilkan prompt fake in-app “update” dan menawarkan APK payload untuk instalasi.

Stage 2: Payload (Hirudo RAT)

Payload diinstall sebagai aplikasi kedua yang terpisah. Satu dropper shopping yang dianalisis bahkan membuat blackhole VPN selama proses instalasi — memutus traffic IPv4 perangkat sementara payload diinstall di background, kemungkinan untuk menghindari deteksi Play Protect.

1
2
3
4
5
6
7
8
9
10
11
12
13
[Dropper Startup]
     │
     ├── Load konten legitimate (WebView)
     ├── Collect promotion-tracking data
     ├── Fetch campaign configuration
     ├── Cek: Hirudo RAT sudah terinstall?
     │
     ├── [Tidak] → Tampilkan fake "Update Available"
     │              → Install payload APK
     │              → (Opsional) Raise blackhole VPN
     │
     └── [Ya] → Cek Accessibility & Notification access
                → Mulai operasi banking-app replacement

Teknis: Banking App Replacement


Ini adalah inti dari Hirudo yang membuatnya unik. Alih-alih overlay, Hirudo mengganti aplikasi bank yang sebenarnya.

Proses Replacement

Karena salinan patched di-sign dengan public test key (bukan certificate bank asli), Android tidak menerima instalasi sebagai update normal. Hirudo menggunakan Accessibility service abuse untuk:

  1. Membuka uninstaller dan menghapus aplikasi bank asli
  2. Memandu installer untuk menginstall salinan yang sudah di-patch
  3. Salinan patched mempertahankan package name dan versi yang sama dengan aplikasi asli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Banking App Replacement]
     │
     ├── Hirudo RAT mendeteksi bank app target terinstall
     ├── Menggunakan Accessibility service untuk:
     │   ├── Uninstall aplikasi bank asli
     │   └── Install salinan patched (signed dengan test key)
     │
     ├── Salinan patched:
     │   ├── Package name sama
     │   ├── Versi sama
     │   ├── Kode bank hampir 100% utuh
     │   └── + 1 baris injected di Application class
     │        └── Load hooking engine dari bundled assets
     │
     └── Korban membuka "bank app" seperti biasa
         → Tidak ada perbedaan visual
         → Semua security check sudah di-bypass

Hooking Engine: YAHFA + Dobby

ThreatFabric melakukan reverse-engineering pada satu patched build dan menemukan bahwa operator hanya menambahkan satu baris di Application class. Baris ini memuat hooking engine self-contained dari bundled asset files setiap kali aplikasi diluncurkan.

Engine ini menggunakan dua framework open-source:

  • YAHFA (Yet Another Hook Framework for ART) — untuk hooking Java methods
  • Dobby — untuk hooking native functions

Kombinasi ini memberikan kontrol mendalam atas seluruh application stack.

Catatan penting: Hook hanya aktif setelah RAT utama menulis shared trigger file ke perangkat. Jadi patched app yang idle hampir tidak menunjukkan aktivitas mencurigakan.

Hook Behavior

Setelah diaktifkan, engine mengubah hasil security check bank:

Security CheckPerilaku NormalPerilaku Setelah Hook
Signature CheckMengembalikan certificate bank asliHook mengembalikan certificate bank asli, menyembunyikan test-key signature
Accessibility CheckMenampilkan daftar Accessibility services aktifHook mengembalikan list kosong — service malicious tidak terlihat
Screen ProtectionFLAG_SECURE memblokir screenshotHook menghapus flag — attacker bisa view dan record layar
Key AttestationVerifikasi device integrityHook re-sign attestation certificates dengan bundled keybox
Play IntegrityRequest ke Google serversHook relay request via plain HTTP ke server attacker

Play Integrity relay yang ditemukan menggunakan endpoint:

1
hxxp://43[.]225[.]157[.]157:8766/request_token

ThreatFabric mengonfirmasi bahwa setidaknya dua certificate dalam bundled keybox yang bocor sudah ada di Google’s attestation revocation list.

Kapabilitas RAT


Selain banking app replacement, Hirudo adalah full-featured RAT:

  • Credential Theft — Mengumpulkan banking passwords dan payment PINs melalui fake payment/authentication screens
  • Device Unlock Capture — Full-screen fake pattern overlay untuk menangkap pola unlock perangkat
  • SMS Theft — Mengumpulkan SMS dari bank dan wallet yang ditargetkan
  • Live Remote Control — Screen sharing dan remote control via WebRTC
  • Camera Access — Akses kamera perangkat secara remote
  • Fake Checkout — Transparent WebView menampilkan halaman checkout palsu saat dropper memicu pembayaran

Distribusi & Infrastruktur


Hirudo didistribusikan seperti aplikasi legitimate — menggunakan infrastruktur iklan nyata:

  • APK malicious di-serve dari Amazon CloudFront dengan route terpisah untuk setiap lure family
  • Campaign tracking menggunakan OpenInstall untuk atribusi dan Meta Pixel IDs
  • Halaman distribusi menampilkan tombol install ala Play Store
  • Beberapa download route masih aktif hingga Oktober 2026

Operator juga memiliki APK-processing panel (dapat diakses tanpa autentikasi) yang membangun “shell” dan payload APK menjadi lure dan patched banking app. Storage bucket dan credential sempat terekspos.

Backend: Operasi Fraud Skala Besar


Data backend yang ditangkap pada Agustus 2026 mengungkap operasi yang cukup matang:

  • Ribuan credential entries dari campaign shopping dan short-drama
  • Device records lengkap
  • Lock-screen history
  • Financial profiles dengan field monthly-income dan risk-score
  • Record yang diannotasi sebagai “phished” — menunjukkan workflow yang dirancang untuk monetisasi data curian

Targeting


Indonesia (Target Utama)

8 patched banking apps mencakup 7 bank Indonesia. Ini adalah satu-satunya negara dimana banking-app replacement sudah di-deploy secara aktif.

Target Lainnya (Dalam Kode)

Registry RAT mencantumkan 42 financial apps sebagai credential targets, mencakup:

NegaraStatus
IndonesiaReplacement aktif (8 apps, 7 bank)
ChinaCredential targets dalam kode
IndiaCredential targets dalam kode
MexicoCredential targets dalam kode
MoroccoCredential targets dalam kode
ThailandCredential targets dalam kode
MalaysiaBranding bank & wallet di fake checkout

Arsitektur yang modular menunjukkan bahwa replacement engine, lure framework, dan backend tidak terikat pada bank tertentu dan bisa dengan mudah diperluas ke region lain.

Deteksi


Sinyal Deteksi

  1. App Signature Change — Deteksi event dimana signature banking app berubah ke public test key (sinyal paling kuat)
  2. Timeline Correlation — Korelasikan: lure installation → fake update prompt → accessibility use → banking app uninstall/install → external communication
  3. Network Indicators — Traffic ke CloudFront routes, MQTT endpoints, dan Play Integrity relay destinations
  4. Accessibility Abuse — Monitoring Accessibility service yang tidak dikenal mengontrol uninstall/install flow

Hunting Queries

1
2
3
4
5
6
7
8
9
10
11
# Cek installed packages yang mencurigakan (via ADB)
adb shell pm list packages | grep -E "(agbbh|onev|koishort|zoyatv|zk7qpx|r9nkvx)"

# Cek signature banking app (contoh)
adb shell dumpsys package <banking.package.name> | grep -A5 "Signatures"

# Monitor network connections ke known C2
adb shell netstat -an | grep -E "(134\.122\.153\.136|43\.225\.157\.157)"

# Cek Accessibility services aktif
adb shell settings get secure enabled_accessibility_services

⚠ Penting: Prioritaskan keputusan server-side karena sinyal lokal di perangkat bisa di-spoof oleh hook. Jangan hanya bergantung pada keputusan yang dibuat di dalam aplikasi.

Mitigasi


Untuk Pengguna

  1. Jangan install APK dari sumber tidak resmi
  2. Jangan percaya in-app update yang meminta install aplikasi terpisah
  3. Hentikan proses jika banking app tiba-tiba di-uninstall dan diinstall ulang
  4. Aktifkan Google Play Protect
  5. Periksa permissions yang diminta — terutama Accessibility service dan Notification access

Untuk Administrator / SOC

  1. Restrict APK sideloading melalui MDM
  2. Verifikasi Play Integrity server-side, binding check ke session dan protected action
  3. Kombinasikan dengan attestation-key revocation checks
  4. Implementasikan transaction-risk controls
  5. Monitor traffic ke IOC network indicators

Untuk Banking App Developer

  1. Implementasikan server-side integrity verification — jangan hanya bergantung pada local checks
  2. Gunakan runtime application self-protection (RASP) yang sulit di-hook
  3. Deteksi hooking framework (YAHFA/Dobby) di runtime
  4. Bind Play Integrity check ke server-side session

Timeline


TanggalEvent
Juni 2026Halaman distribusi “1v1 vip” diarsip dengan Meta Pixel IDs
Agustus 2026ThreatFabric menangkap data backend — ribuan credential entries terekspos
September - Oktober 2026Beberapa CloudFront download routes masih aktif
14 Oktober 2026ThreatFabric mempublikasikan laporan lengkap

Indicator of Compromise (IOC)


Sample Hashes (SHA-256)

1
2
3
4
5
6
f796eb9ecf516e4f1fafcf89200d9f7d8ddd234f705e63f1bc8fc3ef583f0248  com.agbbh.kjdrttt   (Shopora - shopping dropper)
0097a0406be20544e98e981075427f40789db40fe4a53b1b4523383a945328b7  com.onev.vip        (1V1 X - adult-video dropper)
2e45277acfde3fb704179476b08f428f66a03670bbdbf2e8ec79c0b0333c009b  com.koishort.app    (KoiShort - casino/drama dropper)
d51f2bd7ffb49c224d8eaec2c8ca1c8ab9fce2fd5fdceea01eb54296c2f47b4d  com.zoyatv.app      (ZoyaTV - drama dropper)
425cd7072b5e9386ac94e97fe272980b6ef36240df6b5d77b371ab7378004c83  com.zk7qpx.mv9wlt   (Hirudo RAT - July build)
b2270c29b3d0a49a716730d6ef108cffec0b1a4b159dd02e93333fb85e492b99  com.r9nkvx.qw2mpl   (Hirudo RAT - v7.8.166)

Network Indicators

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# C2 Infrastructure
134.122.153.136:8085    (HTTP API)
134.122.153.136:18085   (HTTP API)
134.122.153.136:1883    (MQTT broker)
134.122.153.136:1884    (MQTT broker)
43.225.157.157:8766     (Play Integrity relay)
134.122.153.68:8080     (APK-processing panel)
134.122.153.92:8080     (APK-processing panel)
18.139.79.161           (APK source host / app-management console)

# Domains
www[.]helloharmonyos[.]com         (Lure registration & channel config)
jiekou[.]baojingtextile[.]cn      (RAT configuration API)

# CloudFront Distribution
d3s06yhcwfnwcx[.]cloudfront[.]net  (1V1 X download)
d21gcldn8gp80l[.]cloudfront[.]net  (KoiShort - casino route)
dydjjnnjg7jeb[.]cloudfront[.]net   (KoiShort - drama route)
d3q4tlm7pw29zr[.]cloudfront[.]net  (Patched banking apps)

Referensi


This post is licensed under do wtf you want with it.