All cases
#015 · Sample Analysis

Case study · Sample Analysis

Analysis of an Android Remote Access Trojan (RAT)

A mobile security analyst submits a commercially packed, obfuscated Android APK to AVL Code with one natural-language instruction. Under read-only sandbox, VT disabled and no way to unpack, entropy plus string/resource static analysis alone identifies a banking trojan/RAT targeting Huawei, Xiaomi, OPPO, vivo and Samsung — a Critical-rated full report with IOC list, deployable YARA rules and five remediation steps, usable the same day.

AVL Code · Landi N2.5-Flash (provided by AVL-Zero)· Android · 4,917,977-byte APK · overall entropy 7.72· Constraints: VT disabled · read-only sample sandbox · unpacking/depacking unavailable· Deliverable: full analysis report · IOC list · YARA rules· Threat level Critical

Session replays & reports are original records in Simplified Chinese · Built with AVL Code + the Landi model

Overview

  1. 01

    Submission probe — entropy 7.72 nails it as a "packed APK"

    You hand AVL Code the MD5-named sample: format probing says APK, string extraction measures entropy, and 7.72 plus walls of random garbage fixes the "commercial-grade packer" verdict — while predicting the unpacking route will hit walls.

  2. 02

    Breaking through — three failed unpacking rounds, one brand string rewrites the direction

    You watch Python, PowerShell and 7z all fall short; back on the built-in string engine, the brand-detection string huawei,hinova,tianyi turns the verdict around.

  3. 03

    Evidence chains up — five malicious behaviors match five brands

    Round after round of targeted sec.strings extraction surfaces fake lock screens, screen recording, camera capture, overlay windows and accessibility configs, while five brands’ icons confirm the interface-disguise capability.

  4. 04

    Verdict and delivery — Critical report + IOCs + YARA

    You receive the integrated report: RAT/banking-trojan verdict, inferred attack chain, hash and component-path IOCs, deployable YARA rules and five remediation steps.

Task for AVL Code

Help me analyze a94f85b04bafce6a961d989f46f481e8 and produce a complete analysis report covering basic information, malicious harm, main malicious behaviors, IOCs and more

Prerequisites: The sample file (named by MD5) is already in the workspace and read-only; AVL Code is logged in. VT was disabled and the Python/unpacking toolchain unavailable during the session — neither blocks the main flow, which falls back to string/resource forensics after unpacking fails

Reproduction materials at the end of this article Try it yourself ↓

Submission Probe

One instruction sends the sample in. AVL Code does not run a sandbox first — VT is disabled, so it goes straight to file-format probing plus pure static analysis:

You type → AVL Code
Help me analyze a94f85b04bafce6a961d989f46f481e8 and produce a complete analysis report covering basic information, malicious harm, main malicious behaviors, IOCs and more
AVL Code runs → you see
VT disabled → switches to file-format probing + static analysis
→ File header: PK — ZIP/APK
→ Structure: an Android APK built on the Material Design 3 component library
→ Overall entropy 7.72 · 99% of printable strings are random garbage
→ Verdict: a heavily packed/obfuscated commercial-grade APK; the normal unpacking route is expected to fail

Unpacking and Degradation

The entropy verdict already predicted unpacking would fail, but the route has to be walked to count. Within the same instruction AVL Code tries and fails in a chain:

You type → AVL Code
Help me analyze a94f85b04bafce6a961d989f46f481e8 …… (the same instruction still running, no new input)
AVL Code runs → you see
Unpacking attempts in a chain: Python → PowerShell → 7z all fail; plaintext Manifest not obtained
→ Falls back to built-in capability: repeated targeted sec.strings extraction of readable strings
→ Key strings surface: huawei,hinova,tianyi — brand-targeted detection
→ Followed to xiaomi,mi,redmi and the activity_* family of suspicious component names

Resource Forensics

With the direction fixed, string extraction becomes search-by-map, and the resource directory names that survived the packer hand over the malicious capabilities one by one:

You type → AVL Code
…… a complete analysis covering basic information, malicious harm, main malicious behaviors, IOCs and more
AVL Code runs → you see
sec.strings keeps extracting, and component/resource evidence chains up
→ Fake lock screen / screen recording / camera capture / phishing pages / authorization-bait activities
→ Three overlay windows · accessibility-abuse configs · privacy-bypass routes
→ Brand icons: Huawei / Xiaomi / OPPO / vivo / Samsung
→ Final pass hunts URLs and network strings: no network IOCs inside the packer

Verdict and Delivery

The evidence chain closes; AVL Code archives every finding and integrates them into a report you can take straight into a ticket:

You type → AVL Code
…… produce a complete analysis report
AVL Code runs → you see
memory.memorize archives all findings → integrates them into the full analysis report
→ Verdict: Android remote-access trojan (RAT) / banking trojan · threat level Critical
→ Attack chain (inferred): accessibility authorization bait → background listening/auto-clicking → overlay + fake lock screen → camera capture/recording → data exfiltration
→ IOCs: 3 file hashes + component paths + string traits · 1 YARA rule (fires on 5 of 10 traits)
→ Five remediation steps: hash blocklist / unpack and deep-reverse / monitor accessibility permissions / official channels only / audit installed devices

Try it yourself

Reproducing this case takes one instruction: import the sample (named by MD5) into the workspace and paste the following, or import the session to replay the full process:

› Help me analyze <sample MD5> and produce a complete analysis report covering basic information, malicious harm, main malicious behaviors, IOCs and more
  • VT disabled, read-only sample sandbox and no unpacking — none of these three constraints breaks the main flow: AVL Code automatically degrades to string/resource forensics when unpacking fails; on replay, whether unpacking tools are available only changes the intermediate path, not the final deliverable. If your threat-intel channel is available, you can add a lane of online corroboration. The session export is the summary variant (tool calls folded into counts); component and resource details live in the report.pdf published with the case.

Next question: The report lists "extract the original DEX from the packer for deep reversing" as remediation step 2 — the natural next task is obtaining the unpacked DEX, recovering C2 communication and the exfiltration channel, and upgrading these string traits into network-layer IOCs.