Identity
Cryptographic hashes, size, format, architecture, signature state, acquisition path, timestamps, container relationships, and sample handling history.
Cyber Knowledge · Domain 05 of 11 · Practitioner field guide
A source-backed, lab-first guide to answering the questions that matter: what a suspicious artifact is, what it can do, what it actually did, how confidently it relates to a family or campaign, and which durable controls, detections, hunts, and intelligence records should follow.
Handle only artifacts you are authorized to possess and analyze. Treat every unknown sample as executable, preserve provenance and hashes, use disposable isolated systems, disable shared folders and credentials, control egress, snapshot before execution, and never upload restricted material to a public service. This guide teaches defensive analysis—not malware development or uncontrolled deployment.
Version 1.0 Published Source review: Status: maintained practitioner guide Maintained by Andrey Pautov Editorial policy and corrections
Start here
Malware analysis is disciplined reduction of uncertainty. Every action should answer a defined question and produce reviewable evidence. A long list of strings, sandbox events, or model-generated claims is not analysis until an analyst explains identity, behavior, confidence, limitations, and operational consequence.
Stop rule: stop when the decision can be made with sufficient confidence. Do not execute merely because execution is possible. If static evidence establishes that a document is a benign test fixture, dynamic detonation adds risk without value. If behavior changes by environment, preserve the uncertainty and escalate deliberately.
What good looks like
Cryptographic hashes, size, format, architecture, signature state, acquisition path, timestamps, container relationships, and sample handling history.
Observed and inferred process, file, registry, persistence, credential, network, discovery, injection, and impact behaviors—with evidence and confidence.
Important functions, data flows, configuration handling, decoding/decryption, capability gates, anti-analysis logic, and execution conditions.
High-quality YARA candidates, behavioral detections, hunt leads, ATT&CK mappings, network indicators, enrichment pivots, and collection requirements.
Family and campaign hypotheses separated from fact, relationships to parent/dropper/payload/configuration, source citations, and attribution limits.
Scope, containment priority, eradication needs, recovery caveats, affected assets, retrospective search criteria, and the evidence required to close the case.
Foundations
Separate what the artifact contains, what a tool reports, what was observed at runtime, and what the analyst concludes. This prevents a string from becoming a false capability, a sandbox label from becoming a family identity, or a shared IP from becoming attribution.
Observed: directly captured from the exact artifact or runtime.
Derived: deterministically decoded or computed with a documented method.
Corroborated: supported by an independent source or method.
Inferred: analytically plausible but not directly demonstrated.
Unknown: unanswered, inaccessible, or outside scope.
A hash match is not family proof. An import is not executed behavior. A URL in a resource is not contacted infrastructure. An ATT&CK technique is not attribution. A compiler timestamp is not a trusted build date. A high-entropy region is not automatically encrypted. A model summary is not evidence.
Safety engineering
Core curriculum
The modules are ordered to favor cheap, safe, high-information work first. Experienced analysts can jump directly to a question, but the evidence record should remain continuous.
Create a defensible chain from acquisition to decision before any parser or sample execution changes the environment.
Related Cyber Knowledge: Digital Forensics & Incident Response (DFIR) — Evidence integrity, order of volatility, and chain of custody
Determine what the bytes actually represent instead of trusting extensions, MIME labels, or filenames.
1200km practice: use the FileInfo project as a first-pass concept, then confirm important results with format-aware tools and manual inspection.
Related Cyber Knowledge: Vulnerability Research & Exploit Development — Binary formats, ABI, loaders, and mitigations
Extract maximum useful context without executing the artifact.
1200km guides: Strings analysis, PE Import Analyzer, and static triage to unpacking.
Related Cyber Knowledge: Vulnerability Research & Exploit Development — Source review and static analysis
Understand machine state well enough to validate decompiler output and reason through behavior the compiler did not preserve for you.
Related Cyber Knowledge: Vulnerability Research & Exploit Development — Memory-safety and low-level weakness classes
Turn binary structure into reviewed functions, meaningful names, recovered types, and testable behavioral explanations.
Tools: Ghidra, IDA, Binary Ninja, radare2/Cutter, Rizin, objdump, and platform debuggers. Tool agreement increases confidence; it does not replace analyst review.
Related Cyber Knowledge: Vulnerability Research & Exploit Development — Source review and static analysis
Observe state change in a disposable environment while controlling noise, trigger conditions, and containment.
Primary tools: Process Monitor, Process Explorer, Autoruns, Sysmon, Wireshark/tcpdump, FakeNet-NG/INetSim, API monitors, and reproducible sandboxes.
Related Cyber Knowledge: Digital Forensics & Incident Response (DFIR) — Endpoint live response and volatile acquisition
Pause at decision points, inspect machine state, verify hypotheses, and recover material that exists only at runtime.
1200km practice: use the AIDebug 3.1 full release review as the platform map for binary intake, PE/ELF triage, functions, strings, Ghidra, optional AI review, controlled debugging, and reports. Continue with PE File Structure for Malware Analysis, Strings Analysis for Malware Analysis, and Assembly for Malware Analysis to validate each evidence layer.
Related Cyber Knowledge: Vulnerability Research & Exploit Development — Dynamic analysis, debugging, and tracing
Identify transformations that conceal code or behavior, recover a stable representation, and retain the relationship to the original sample.
1200km guides: Unpacker and static obfuscation analysis.
Related Cyber Knowledge: Vulnerability Research & Exploit Development — Exploitability validation and laboratory exploit engineering
Recover evidence that is absent, encrypted, deleted, injected, or transformed on disk.
Related Cyber Knowledge: Digital Forensics & Incident Response (DFIR) — Memory forensics and runtime reconstruction
Analyze multi-stage delivery and execution where the most important logic is encoded in scripts, macros, templates, archives, or living-off-the-land commands.
Related Cyber Knowledge: Secure Code & Application Security — Files, parsers, serialization, URL fetching, and isolation
Analyze APK identity, manifest exposure, code, resources, native libraries, permissions, certificates, network behavior, and runtime abuse on a disposable mobile environment.
1200km lab: build an Android analysis lab, use the terminal APK analysis toolkit, and follow the Android malware-analysis guide.
Related Cyber Knowledge: Vulnerability Research & Exploit Development — Mobile and Android vulnerability research
Explain how the sample locates infrastructure, formats messages, authenticates, receives tasks, moves data, and changes behavior by configuration.
Related Cyber Knowledge: Digital Forensics & Incident Response (DFIR) — Network, DNS, proxy, VPN, and email forensics
Turn sample-specific evidence into reusable knowledge without overstating family identity, campaign, actor, or technique.
Platform path: use AdversaryGraph Malware Analysis for sample findings, then pivot reviewed techniques and indicators into the public ATT&CK workspace or full platform workflows.
Related Cyber Knowledge: Cyber Threat Intelligence (CTI) — Module 3 — Core Frameworks Models
Use AI to accelerate mechanical work while keeping samples, evidence, tool execution, and security decisions under deterministic control.
1200km ecosystem: AIDebug, AdversaryGraph RAG/MCP, and malware-family behavior mapping.
Related Cyber Knowledge: AI Security — Prompt injection, instruction hierarchy, and secure output handling
Applied practice
Does an unknown PE provide sufficient evidence for persistence, injection, and networking claims?
The report distinguishes imported capability, reachable code, and observed behavior. It avoids claiming injection merely because memory and thread APIs appear in the import table.
Can automated function explanation accelerate prioritization without treating generated text as fact?
The assistant produces leads and structured notes; the analyst retains the evidence link and final claim authority.
Can a high-entropy PE be safely unpacked and tied to the runtime payload?
Original and recovered artifacts remain linked by hashes, address ranges, process context, and analyst method. The packer is not reported as the malware family.
Which declared mobile capabilities are reachable and which are actually exercised?
The final map separates permission presence, reachable implementation, observed behavior, and untested conditions.
Is an executable private-memory region malicious injection, a legitimate runtime, or an incomplete observation?
The conclusion is based on provenance, content, execution, and causality rather than an RWX heuristic alone.
How should a reviewed sample become a connected investigation record rather than a flat report?
AdversaryGraph keeps source evidence and analyst decisions connected while clearly separating its workbench role from a dedicated detonation sandbox.
Hands-on curriculum
Use benign fixtures, purpose-built training artifacts, or samples distributed for an authorized course. Do not download random live malware to complete these exercises.
Receive a password-protected training archive. Build an intake record, hash original/container/children, define handling, record questions, and prove the original remained unchanged.
Analyze mislabeled benign PE, ELF, script, and document fixtures. Identify actual types, architectures, nesting, signature state, timestamps, resources, and misleading metadata. Use the PE File Structure practical guide to document header chains, RVA mappings, directories, and loader evidence.
Produce strings-with-offsets, import capability clusters, resources, entropy map, classifier output, hypotheses, next actions, and explicit non-claims. Follow Strings Analysis for Malware Analysis to separate observations, working hypotheses, and validation requirements.
Compile small benign programs and explain the generated control flow, arguments, stack/register state, loops, switch logic, indirect calls, and optimized differences. Follow the Assembly for Malware Analysis practical guide and reproduce its AIDebug exercises.
Import a training binary, validate analysis settings, identify key functions, rename with evidence, recover a configuration structure, and produce an address-cited behavior map.
Run a safe simulator from clean snapshots under two environment conditions. Correlate process, file, registry, and network differences and explain trigger behavior.
Design and execute five targeted breakpoints against a training binary to recover runtime configuration and validate API arguments without aimless stepping.
Use a benign packed fixture. Identify the packer stage, capture the payload at transfer, hash it, validate imports/code, and document the original-to-payload relationship.
Analyze a provided memory image containing both JIT/private executable memory and a simulated injection. Build evidence that distinguishes them and document acquisition limitations.
Use the 1200km Android analysis lab or a purpose-built fixture. Map manifest components to code and validate selected behaviors on a synthetic emulator profile.
Write one family-oriented YARA rule and one telemetry detection. Test positives, close variants, benign controls, common libraries, performance, suppressions, and version metadata.
Take one authorized training case from intake through static/dynamic analysis, code review, configuration, classification, ATT&CK/MBC mapping, YARA, hunt query, IR/CTI handoff, executive summary, peer review, and archive.
Tooling
| Question | Representative tools | Evidence to retain | Common failure |
|---|---|---|---|
| What is this artifact? | file/libmagic, hash tools, ExifTool, Detect It Easy, PEStudio/pefile/LIEF, readelf, otool, 7-Zip | Tool/version, command, hashes, parsed structure, raw offsets | Trusting extension, timestamp, or one parser |
| What capabilities are suggested? | FLOSS, strings, capa, YARA, PE Import Analyzer, String Analyzer | Offsets/addresses, rule versions, confidence, supporting code | Turning presence into execution |
| How does the code work? | Ghidra, IDA, Binary Ninja, radare2/Cutter, Rizin | Database, addresses, types, annotations, reasoning | Trusting decompiler pseudocode literally |
| What changed at runtime? | Procmon, Process Explorer, Autoruns, Sysmon, ETW, strace, auditd | Baseline/diff, trace, process tree, timestamps, conditions | Noise without causal correlation |
| What did it communicate? | Wireshark, tcpdump, FakeNet-NG, INetSim, mitmproxy where authorized | PCAP, simulated-service config, DNS/TLS/HTTP context | Attributing shared infrastructure |
| What appears only in memory? | Volatility 3, WinDbg, GDB, x64dbg, ProcDump, platform acquisition tools | Image/dump hash, OS/build, process/address context | Calling any executable private memory injection |
| How is it packed? | DIE, debuggers, Scylla/loader tooling, custom scripts, 1200km Unpacker | Unpack point, ranges, dumps, rebuilt metadata, relationship | Confusing packer and family |
| What does the APK do? | apktool, jadx, Androguard, MobSF, Frida, objection, adb | Package/cert, manifest paths, code references, runtime logs | Equating permissions with malicious action |
| How can defenders reuse it? | YARA, capa/MBC, Sigma/backend queries, ATT&CK, AdversaryGraph | Rule provenance, corpus test, technique citation, owner | Brittle IOC-only content |
| Can AI accelerate review? | AIDebug, local/private LLM, RAG, bounded MCP tools | Model/prompt/sources/tool calls/output/reviewer edits | Leaking samples or accepting hallucinated claims |
Reproducibility
| Record group | Required fields |
|---|---|
| Case | Case ID, objective, authority, requester, analyst/reviewer, handling, dates, scope, restrictions, stop condition |
| Artifact | Artifact ID, parent ID, original name, normalized type, size, hashes, acquisition source/time, storage path, signature/certificate, extraction method |
| Environment | Snapshot ID, OS/build, architecture, installed tools and versions, clock/locale, privilege, network mode, simulated services, egress policy |
| Observation | Timestamp, subject, action, object, value, process/address/offset, method/tool, raw evidence reference, condition, reproducibility |
| Claim | Statement, state (observed/derived/corroborated/inferred/unknown), confidence, supporting evidence IDs, alternatives, limits, reviewer disposition |
| Indicator | Value/type, normalization, role, source artifact, first/last observed, confidence, handling, expiration/review date, false-positive context |
| Behavior | MBC/ATT&CK mapping, exact behavior, code/runtime evidence, platform, technique definition citation, confidence, detection opportunity |
| Output | Rule/query/report version, owner, validation corpus/case, results, limitations, review/expiry, distribution, downstream ticket |
{
"artifact_id": "sample-001:payload-002",
"sha256": "<64 lowercase hex characters>",
"relationship": {"parent": "sample-001", "type": "drops"},
"observation": {
"state": "observed",
"subject": "process:training-loader.exe",
"action": "writes",
"object": "file:%TEMP%\\training-payload.dll",
"evidence": ["procmon:event:481", "artifact:payload-002"],
"condition": "lab_profile=online-simulated"
},
"claim": {
"text": "The training loader writes the payload before launching it.",
"confidence": "high",
"limitations": ["Observed only on the recorded Windows lab build."]
}
}
Detection engineering
This intentionally non-operational example shows rule structure. Replace training markers only with features supported by your authorized analysis and test corpus.
import "pe"
rule Training_Family_Component_Review_Only
{
meta:
description = "Illustrative structure; not a production family signature"
author = "1200km field-guide example"
date = "2026-07-27"
status = "review"
source_artifacts = "documented in private evidence record"
strings:
$marker_a = "TRAINING_CONFIG_V1" ascii
$marker_b = { 54 52 41 49 4E 49 4E 47 } // "TRAINING"
condition:
uint16(0) == 0x5A4D and
pe.is_pe and
filesize < 5MB and
all of ($marker_*)
}
Deliverable
Troubleshooting
| Symptom | Likely cause | Corrective action |
|---|---|---|
| Hash reputation says clean | Unknown sample, new variant, source coverage, wrong child hash | Treat as unknown; verify artifact graph; continue question-driven analysis |
| Tools disagree on file type | Malformed header, polyglot, overlay, embedded object, parser limitation | Inspect magic/structure manually; compare parsers; cite offsets |
| Everything looks encrypted | Compression, resources, signed data, media, packer, small sample statistics | Use regional entropy plus format/context and runtime evidence |
| Huge string list, little value | No offsets/provenance, library noise, decoded/literal mixed | Group by region/function/encoding; trace consumers; label derivation |
| Decompiler output is impossible | Wrong architecture/base, data as code, packing, bad boundary, indirect flow | Repair analysis settings; validate disassembly and runtime state |
| Sample exits immediately | Missing argument/config, anti-analysis, locale/time/user check, dead C2 | Form hypotheses from code; vary one controlled condition at a time |
| Sandbox and local run disagree | Different OS/build, trigger, network response, time, privilege, state | Compare complete environment manifests and traces; preserve both |
| Dumped payload will not parse | Wrong stage/range, relocations/imports absent, memory-only layout | Validate transfer point; capture mapping; reconstruct only as documented |
| RWX alert marks legitimate app | JIT, unpacking, security product, runtime, browser behavior | Use provenance, thread start, bytes, handles, and known-good control |
| YARA matches common software | Generic strings/library/packer/compiler feature | Use distinctive feature combinations and benign near-neighbor testing |
| ATT&CK map contains dozens of techniques | Capability inflation from strings/imports/model output | Require behavior-specific evidence and definition-aligned citations |
| Family names conflict | Vendor taxonomy, shared builder, packer, component/family confusion | Preserve aliases and feature basis; use neutral cluster until supported |
| AI invents function purpose | Insufficient bounded context or pattern completion | Require address/cross-reference evidence, alternatives, and human review |
| MCP tool attempts network access | Overbroad permission or untrusted sample instructions | Block by policy, log attempt, reduce tool authority, regression-test control |
| IOC causes excessive blocking | Shared service, expired infrastructure, role/context omitted | Add role, tenant/path context, confidence, TTL, review, and behavior correlation |
Peer review
Language
Artifact: a file, memory region, configuration, packet capture, log, or derived object preserved for analysis.
Behavior: action performed or attempted by code in a stated context.
Capability: what code appears able to do; not necessarily reached or executed.
Configuration: data that controls endpoints, identifiers, features, timing, keys, or execution conditions.
Decompiler: tool that reconstructs higher-level pseudocode from machine code; output is an interpretation, not original source.
Dropper/loader/payload: distinct roles for placing, loading, and performing primary functionality; one artifact can combine roles.
Dynamic analysis: observation of runtime behavior in a controlled environment.
Family: analyst/vendor grouping of related malware based on defined shared features.
IOC: observable value used as an investigation lead; quality depends on role, context, confidence, and time.
Memory injection: cross-process or in-process placement/execution of code; requires more evidence than an executable memory permission.
Packer: transformation that wraps/compresses/encrypts an executable and restores code at runtime.
Provenance: documented origin and transformation history of an artifact or claim.
Static analysis: inspection without executing the artifact.
Unpacking: recovering and validating the representation used after a packing transformation.
YARA: pattern language and engine for identifying/classifying files or memory using strings, metadata, modules, and conditions.
MBC: Malware Behavior Catalog, a behavior vocabulary tailored to malware analysis and related to ATT&CK concepts.
Release gate
Connected original research
Compare reported AI-assisted malware development, tooling, evasion, and code-generation coverage across the indexed publications.
Read the study Explore the dashboard Search 108 indexed references