Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when reverse-engineering or detecting malware — static triage + capa/YARA-X, emulation/DBI/.NET unpacking, dynamic/fileless/Volatility 3 memory analysis, C2 config extraction (Cobalt Strike/CAPE), C2 traffic detection (JA4+, beaconing)
.claude/skills/hypnguyen1209-malware-analysis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 107% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 36% | 0% |
| Technique | ATT&CK | CWE | Reference | Script | |-----------|--------|-----|-----------|--------| | Hash/imphash/Rich/ssdeep/TLSH triage + PE anomalies | T1027 | CWE-506 | references/static-triage-capa.md | scripts/triage.py | | Per-section entropy + packer/RWX/EP heuristics | T1027.002 | CWE-1066 | references/static-triage-capa.md | scripts/triage.py | | Obfuscated string recovery (FLOSS) | T1140, T1027.013 | CWE-656 | references/static-triage-capa.md | scripts/triage.py | | Capability detection → ATT&CK (capa, static+dynamic) | T1027 | CWE-506 | references/static-triage-capa.md | scripts/triage.py | | Emulation unpacking (Unicorn/unipacker/Speakeasy/Qiling) | T1140, T1620 | CWE-656 | references/unpacking-deobfuscation.md | scripts/auto_unpack.py | | DBI unpacking via API hooks (Frida) | T1055, T1620 | CWE-656 | references/unpacking-deobfuscation.md | scripts/frida_unpack.js | | .NET deobfuscation/unpacking (de4dot/dnSpyEx) | T1027, T1140 | CWE-656 | references/unpacking-deobfuscation.md | scripts/frida_unpack.js | | Sandbox detonation + behavioral capture | T1497 | CWE-506 | references/dynamic-fileless-memory.md | scripts/mem_triage.py | | Memory injection/hollowing/ghosting analysis (Vol3) | T1055, T1055.012 | CWE-506 | references/dynamic-fileless-memory.md | scripts/mem_triage.py | | AMSI/ETW in-memory patch + patchless detection | T1562.001 | CWE-693 | references/dynamic-fileless-memory.md | scripts/mem_triage.py | | Fileless WMI/registry/PowerShell persistence | T1546.003, T1547.001, T1059.001 | CWE-506 | references/dynamic-fileless-memory.md | scripts/mem_triage.py | | Cobalt Strike / AdaptixC2 config extraction | T1071.001, T1573 | CWE-798 | references/config-c2-extraction.md | scripts/cs_config_extract.py | | Config framework at scale (MACO/CAPE) | T1071.001 | CWE-798 | references/config-c2-extraction.md | scripts/cs_config_extract.py | | Generic unknown-C2 protocol RE + decoder | T1573, T1071.004 | CWE-311 | references/config-c2-extraction.md | scripts/cs_config_extract.py | | Beacon cadence/jitter detection (PCAP/Zeek) | T1071.001, T1029 | CWE-778 | references/network-c2-detection.md | scripts/beacon_profiler.py | | JA4+ TLS/HTTP/cert fingerprinting (Sliver/Havoc JA4X) | T1071.001, T1573 | CWE-295 | references/network-c2-detection.md | scripts/beacon_profiler.py | | Tunneled/DoH C2 surfacing (cloudflared/chisel) | T1572, T1568.002, T1071.004 | CWE-441 | references/network-c2-detection.md | scripts/beacon_profiler.py | | YARA-X family rule authoring + FP validation | T1027 | CWE-506 | references/yara-detection-engineering.md | scripts/yara_gen.py |
bash# 1. Static triage: hashes + PE anomalies + capability combos + FLOSS/capa/YARA-X python3 scripts/triage.py sample.exe --floss --capa --yara rules/family.yar --json out/triage.json capa -j sample.exe > out/capa.json # capabilities -> ATT&CK # 2. Unpack (try emulation first; DBI fallback in isolated VM) python3 scripts/auto_unpack.py sample.exe -o out/dumps/ # static emulation, no detonation frida -f C:\sample.exe -l scripts/frida_unpack.js --no-pause # DBI, isolated VM only de4dot sample.exe -o cleaned.exe # .NET layer # 3. Dynamic + memory (capture mem BEFORE remediation) python3 scripts/mem_triage.py -f mem.raw --vol vol --patch-hunt --json out/mem.json # 4. Config + C2 extraction python3 scripts/cs_config_extract.py beacon.bin --json # Cobalt Strike python3 1768.py -S beacon.bin # full CS incl. runtime/heap config configextractor sample.bin # MACO/MWCP/CAPE at scale # 5. Network C2 detection python3 scripts/beacon_profiler.py capture.pcap --min-beacons 6 # cadence/jitter zeek -r capture.pcap LOCAL ja4 && zeek-cut ja4 ja4s ja4x < ja4.log # JA4+ pivots # 6. Detection engineering python3 scripts/yara_gen.py --family samples/fam/ --name Fam --goodware /usr/bin --out rules/fam.yar yara-x fmt rules/fam.yar && yara-x scan rules/fam.yar /corpus/
| Technique | Telemetry/IOC | Detection (Sigma/EDR) | OPSEC note | |-----------|---------------|------------------------|------------| | Static triage | None (offline) | n/a — feeds YARA/imphash hunting | Read-only, no execution; isolate sample dir | | Emulation unpack | None (no detonation) | n/a | Preferred first pass; safe, no network | | DBI/manual unpack | Sysmon 8/10 (CallTrace UNKNOWN), RWX commit | EDR memory scan; RWX-then-exec Sigma | DETONATES — isolated VM, snapshot, FakeNet; loaders self-delete, dump first | | Injection/hollowing | malfind/hollowprocesses; EID 8/10 | Vol3 hollow/ghosting/pebmasquerade; CreateRemoteThread | Capture memory pre-remediation | | AMSI/ETW patch | amsi.dll load + patched prologue; B8 00..C3 stub | Sigma T1562.001; debug-reg+VEH for patchless | Patchless evades byte scans — watch Dr0-Dr7 | | Fileless persistence | WMI consumers; PS 4104; Run-key blobs | Vol3 registry/wmi; Sysmon 13/22 | Lives in WMI/registry/memory — no disk file | | Config extraction | C2 host/UA/pipe/watermark | YARA config table; Suricata on C2 URI/SNI | Offline; handle watermark/keys per ROE | | Beacon detection | Periodic outbound deltas | beacon_profiler CV score; Suricata threshold | Passive on captured traffic | | JA4+ fingerprint | JA4/JA4S/JA4X/JA4H tuples | Zeek ja4 watchlist (Sliver/Havoc JA4X) | JA4X needs TLS1.3 cert visibility at proxy | | YARA-X authoring | None | The rules themselves | Validate 0-FP on goodware before deploy |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 17,067 | 6,494 | -62% | 1 | 1 | 0% | 2,957 | 2,843 | -4% | 0 | 0 | — |
case-02 | pass→pass | 20,322 | 22,086 | +9% | 1 | 1 | 0% | 3,128 | 6,182 | +98% | 0 | 0 | — |
case-03 | fail→pass | 6,922 | 4,670 | -33% | 1 | 1 | 0% | 1,279 | 3,173 | +148% | 0 | 0 | — |
case-04 | fail→pass | 13,325 | 9,519 | -29% | 1 | 1 | 0% | 1,913 | 3,897 | +104% | 0 | 0 | — |
case-05 | fail→pass | 10,489 | 5,931 | -43% | 1 | 1 | 0% | 1,641 | 3,391 | +107% | 0 | 0 | — |
case-06 | pass→pass | 4,000 | 3,784 | -5% | 1 | 1 | 0% | 638 | 3,209 | +403% | 0 | 0 | — |
case-07 | fail→pass | 17,484 | 10,392 | -41% | 1 | 1 | 0% | 2,706 | 4,297 | +59% | 0 | 0 | — |
case-08 | pass→pass | 26,736 | 23,816 | -11% | 1 | 1 | 0% | 2,365 | 6,644 | +181% | 0 | 0 | — |
case-09 | fail→pass | 18,367 | 9,252 | -50% | 1 | 1 | 0% | 2,902 | 3,947 | +36% | 0 | 0 | — |
case-10 | pass→pass | 14,296 | 10,737 | -25% | 1 | 1 | 0% | 2,157 | 4,186 | +94% | 0 | 0 | — |
case-11 | fail→pass | 12,739 | 6,907 | -46% | 1 | 1 | 0% | 2,071 | 3,712 | +79% | 0 | 0 | — |
case-12 | fail→pass | 11,915 | 9,409 | -21% | 1 | 1 | 0% | 1,957 | 3,994 | +104% | 0 | 0 | — |
case-13 | pass→pass | 21,220 | 23,206 | +9% | 1 | 1 | 0% | 3,271 | 5,973 | +83% | 0 | 0 | — |
case-14 | pass→pass | 17,014 | 11,574 | -32% | 1 | 1 | 0% | 2,649 | 4,337 | +64% | 0 | 0 | — |
case-15 | pass→pass | 11,902 | 11,884 | -0% | 1 | 1 | 0% | 1,817 | 4,369 | +140% | 0 | 0 | — |
case-16 | pass→pass | 16,684 | 16,776 | +1% | 1 | 1 | 0% | 2,792 | 5,285 | +89% | 0 | 0 | — |
case-17 | fail→pass | 19,032 | 18,945 | -0% | 1 | 1 | 0% | 2,602 | 5,145 | +98% | 0 | 0 | — |
case-18 | fail→pass | 17,984 | 16,227 | -10% | 1 | 1 | 0% | 2,646 | 5,162 | +95% | 0 | 0 | — |
case-19 | fail→fail | 15,033 | 14,504 | -4% | 1 | 1 | 0% | 2,563 | 4,883 | +91% | 0 | 0 | — |
case-20 | pass→pass | 20,485 | 20,911 | +2% | 1 | 1 | 0% | 3,383 | 5,952 | +76% | 0 | 0 | — |
case-21 | pass→pass | 12,358 | 9,968 | -19% | 1 | 1 | 0% | 1,928 | 4,061 | +111% | 0 | 0 | — |
case-22 | pass→pass | 23,529 | 33,969 | +44% | 1 | 1 | 0% | 4,079 | 7,311 | +79% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.