9d2ca3
Amadey-downloader-dropped second-stage payload cluster. OpenCTI internal family label; co-tagged
dropped-by-amadeyacross 20+ corpus samples.Contested: The label covers at least two distinct build clusters: (1) MinGW-w64 PE32+ droppers with encrypted
.datapayloads, and (2) Go 1.25.4 PE64 infostealers with randomized module paths and fabricated Authenticode. Samplea7b9f3ddbelongs to cluster (2) but carries the same OpenCTI label. ^[/intel/analyses/a7b9f3dda435b7f2d0dfbd1e0c8d50cb824cb60fe3343a61a5fd6aa643763c4e.html]
Overview
The 9d2ca3 label groups a class of Windows x64 droppers dropped by the Amadey downloader botnet. Every observed sample follows the same build template: a MinGW-w64 PE32+ with a tiny .text section (< 50 KB) and an oversized .data section (2–3 MB) that carries the encrypted secondary payload. The import table is stripped to C runtime imports plus VirtualProtect and Sleep. No .rsrc section, no signing, no embedded icons.
All samples in this cluster have been static-only in this corpus: no CAPE Windows guest is available, and capa/floss tooling is not configured. The inner payload and C2 infrastructure remain opaque until dynamic detonation.
Build Stack
- Toolchain: MinGW-w64, LinkVersion 14.0 (GCC 14.x era).
- Format: PE32+ x86-64, 7 sections (
.text,.rdata,.data,.pdata,.00cfg,.tls,.reloc). - Linker flags: ASLR + DEP + High Entropy VA enabled; no Control Flow Guard (
.00cfgnear-empty). - Resource: Absent — no icon masquerade, no version-info masquerade.
- Signing: Unsigned across all observed samples.
- Import table: ~36 imports. Only
msvcrt.dll(CRT) andKERNEL32.dll(VirtualProtect,Sleep,SetUnhandledExceptionFilter,TlsGetValue). - Anti-analysis: Mild.
__set_app_typegate present but is standard MinGW CRT behavior. The real defense is structural: near-zero imports and an encrypted .data magazine.
Deploy / TTPs
| Technique | ID | Evidence |
|---|---|---|
| Software Packing | T1027.002 | Encrypted payload in .data section, decrypted at runtime |
| Process Injection (inferred) | T1055 | Dropper resolves payload then likely injects/hollows a child process |
| Reflective Code Loading (inferred) | T1620 | No embedded PE in static; payload shape unknown until runtime |
| Persistence (inferred) | T1547.001 | Registry Run keys used by final payload after decryption (not visible in static) |
| Sandbox Evasion (structural) | T1497.001 | Payload only decrypts in-memory; static sandboxes see only the stub |
Go cluster variant (sample a7b9f3dd)
A distinct second-stager under the same label. Build fingerprint:
- Toolchain: Go 1.25.4,
CGO_ENABLED=0,trimpath=true - Module path: randomized per-build (e.g.
uyiUNvZdvAGQnhv) - Function names: ~28 randomized main-package symbols visible in
.symtab - Signing: Fabricated Authenticode (PE security dir with leaf CN=
askart.com, issuer=WE1) - Anti-analysis: No static C2, no .rsrc, junk delay loops in
main.Jtruwhtr - Behaviour:
VirtualAllocresolved via Gosyscall._LazyProc_; probable in-memory payload staging
See full analysis at /intel/analyses/a7b9f3dda435b7f2d0dfbd1e0c8d50cb824cb60fe3343a61a5fd6aa643763c4e.html.
Go cluster variant (sample 29149758 — newer sibling)
Second observed Go infostealer under the same label, with significant builder drift:
- Toolchain: Go 1.25.4,
CGO_ENABLED=0,trimpath=true - Module path:
wqeHivEQWBGOQgj(randomized) - Function names: 39 randomized main-package symbols (up from 28 in a7b9f3dd)
- Signing: Same fabricated Authenticode serial as sibling
cc4aa789(CDDA1164C88E40890E189788E7C9F32B, CN=askart.com, issuer=WE1) - Anti-analysis: Fused-string API decoding — DLL/API names are concatenated into
.rdatablobs and sliced at runtime viasyscall._LazyProc_; no standaloneVirtualAllocstring in static output - Behaviour: Custom in-memory PE export walker (
main.fvcmychoeu), PRNG-seeded delay loops (main.Wqmcsrfqooezj), host fingerprinting (hostname,PID,pagesize), then enters an idle GUI loop - Size: 12 MB (vs ~2.5 MB for a7b9f3dd) — suggests embedded payload or expanded string tables
See full analysis at /intel/analyses/2914975816372d0dc79b777915f66955d312213ea036b84ff16ad5ab0bcfdd66.html.
Notable Analyses
/intel/analyses/2d39ed5ea7f2547233f534c4e78edef047051c26c115ac120663705be96b8e5d.html— Deep-dive on the MinGW-w64 shell, oversized.datadecryption, and structural anomalies.
Capabilities
oversized-encrypted-data-sectionmingw-w64-build-artifactsminimal-import-tablevirtualprotect-memory-remappingsleep-delay-anti-sandboxdata-section-payload-decryptiongo-lazyproc-virtualalloc-runtime-resolutionfused-string-api-decodinggo-custom-pe-export-walkerprng-seeded-sandbox-delayhost-fingerprinting-idle-loop
Related
- peb-walking-api-resolution — Some Amadey payloads use PEB export-hash walking for API resolution, though this stub relies on the import table.
- Amadey downloader (external, Malpedia
win.amadey) — the upstream delivery mechanism for this cluster.