Case study · Sample Analysis
Analysis of the tflower Ransomware
You are an incident-response engineer assigned to identify a ransomware event, holding only an unpacked 64-bit tflower ransomware sample (shared externally by hash alone). Work through this article and you will hold a full MD analysis report named after the sample hash: an AES-256-CBC + RSA hybrid-encryption verdict, C2 and ransom-note contacts, complete IOCs and remediation advice, with the threat level rated Critical.
Target: 1.37 MB unpacked Windows PE32+ (x64 console subsystem) ransomware· Constraints: pure static · zero sample execution · SHA256 only, shared externally· Model: AVL-Zero · Landi N2.5· Process: single-round instruction · 17 tool calls (sec.strings ×6 / sec.hexdump / memory.memorize / fs.write)· Deliverable: full MD analysis report (verdict / encryption / IOCs / harm / remediation)
Session replays & reports are original records in Simplified Chinese · Built with AVL Code + the Landi model
Overview
- 01
Submit and identify — six rounds of string extraction uncover the full ransomware picture
You hand AVL Code the sample SHA256 and the report requirements in one sentence, and watch it go from PE classification to partitioned string extraction, digging out encryption, C2 and the ransom note section by section.
- 02
Verify to confirm — the C2 is re-checked at the hex level
Key data is never settled by a single extraction: sec.hexdump returns to the byte level to confirm the C2 URL, and a key finding only counts once it is archived via memory.memorize.
- 03
Deliver — the MD report goes straight to the archive
The full analysis report lands on disk named after the sample SHA256 — verdict, IOCs, harm and remediation shaped in one pass, threat level Critical.
Task for AVL Code
6c75998580fb05c01b10f4703299ffd782bec55c8765c030b8a4760fff6045fe Analyze this sample for me and produce a complete analysis report — harm, IOC overview, with a title like "XXX trojan analysis" — and save it as an MD report Prerequisites: AVL Code is logged in; the sample is reachable by the tools in the workspace (only the SHA256 is shared publicly for this case)
Reproduction materials at the end of this article Try it yourself ↓
String Extraction
The first discipline of ransomware identification is not touching the sample. You state the SHA256 and the report requirements once, and leave the rest to the execution process:
6c75998580fb05c01b10f4703299ffd782bec55c8765c030b8a4760fff6045fe Analyze this sample for me and produce a complete analysis report — harm, IOC overview, with a title like "XXX trojan analysis" — and save it as an MD reportFetches basic sample info (first batch of 8 tool calls) → classifies as an x64 PE console program
→ Six consecutive rounds of sec.strings partitioned extraction → key information found in round one, so the scope widens
→ Locks onto the C2-communication and malicious-behavior string regions → locates the C2 URL, ransom note and other key dataVerification and Delivery
A URL seen in strings still has to be confirmed at the byte level — the final self-check before the report. The same single instruction drives the whole process; you add no further input:
6c75998580fb05c01b10f4703299ffd782bec55c8765c030b8a4760fff6045fe Analyze this sample for me and produce a complete analysis report — harm, IOC overview, with a title like "XXX trojan analysis" — and save it as an MD reportsec.hexdump returns to the byte level → confirms the C2 URL: https://www.adamaitalycup.it/wp-includes/wp-merge.php (a compromised Italian website)
→ memory.memorize archives the findings · fs.write generates the report 6c759985….md
→ Report summary: AES-256-CBC + RSA hybrid encryption · contact mailboxes ×2 · developer tag MinghuaQu (tflower) · Run-key proxycap persistence · shadow-copy deletion / recovery blocking / Recycle Bin wipe · VS2017 + OpenSSL static build
→ Threat level: CriticalTry it yourself
Paste the line below into the AVL Code session (swap in your sample’s hash) and leave the rest to the execution process:
<sample SHA256> Analyze this sample for me and produce a complete analysis report — harm, IOC overview, with a title like "XXX trojan analysis" — and save it as an MD report - This is a single-round session: identification, verification and delivery are all driven by that one instruction, and the export contains no follow-up input. The first batch of 8 tool calls and the details of each sec.strings / sec.hexdump round are folded in the exported HTML; the downloadable .zsession or the report.pdf can restore them. The IOC counts (4 file hashes and so on) and "victim hostname and encryption state reported over HTTP(S)" come from the existing case entry and the report PDF; the session export body does not lay them out item by item.
Next question: The IOC list is in hand; the obvious next step is turning it into detection capability that actually blocks: ban the C2 domain, sweep the network for the proxycap Run key — then ask whether the encryption behavior can be captured as a YARA rule so the detection line recognizes it too.
