Join our Newsletter — 33% off our NHI Course

How should malware analysts approach reverse engineering when they first encounter a suspicious binary?

Start with triage before deep reversing. Run the sample in a sandbox, extract strings, note obvious behaviors, and use that context to guide disassembly. Static reverse engineering is most useful when you need to understand capabilities, confirm environment-dependent behavior, or inspect code paths that dynamic analysis cannot reliably surface.

Why triage comes before disassembly

The first pass on a suspicious binary should be about reducing uncertainty, not proving the final answer. Triage tells you whether the sample is a loader, dropper, credential thief, persistence mechanism, or something benign with noisy indicators, and that context prevents wasted effort in the wrong code paths. It also helps you decide whether the sample is safe to execute at all and what telemetry to preserve before you change its state.

Start with low-friction checks: hash the file, identify its format, inspect metadata, extract strings, check imports, and note anything that hints at packing, anti-debugging, persistence, network activity, or environment checks. Then run it in a controlled sandbox to observe process creation, file writes, registry or config changes, mutexes, and outbound connections. Those early observations shape the reversing plan and often tell you which behaviors deserve deeper static analysis.

When static and dynamic findings disagree, treat that gap as a clue rather than a failure. Some binaries only reveal their real logic after conditions such as time delays, specific locale settings, domain membership, or user interaction are met. In those cases, reverse engineering is most useful when it is guided by the behaviors you have already observed, not when it starts as a blind code walk.

One useful reference point for triage discipline is the CIS Controls v8, which reinforces malware defenses, logging, and asset visibility as prerequisites for analysis. For defenders who want case-study context on how malicious binaries and related tooling expose secrets and tokens in practice, NHIMG’s Shai Hulud npm malware campaign and CircleCI Breach show why early context gathering matters.

What to look for before you open the disassembler

Good triage is about building a short list of hypotheses. If the sample is packed, the reverse-engineering task is often to recover the unpacked payload or identify the unpacking trigger. If it is not packed, the task may be to map imports and strings to likely capabilities, then confirm them in execution traces. If it contains obvious encryption, compression, or network indicators, your first question should be which artifacts are likely to be decoded at runtime rather than visible statically.

Static review should not be delayed until you know everything dynamically. It is still the best path for understanding control flow, command handling, persistence logic, and error handling, especially when the sample uses delayed execution or environment-dependent branches. The practical goal is to choose the right level of effort: full function-level reversing for behavior that matters, and lighter inspection for routines that only support setup or obfuscation.

Useful artifacts to capture early include command-line arguments, dropped filenames, contacted domains or IPs, mutex names, scheduled task names, registry keys, and any distinctive API usage. Even a small set of indicators can tell you whether the sample behaves like a stage one loader, a lateral-movement utility, or an exfiltration tool. That distinction changes what you reverse first and what you can defer.

If you want a broader body of real-world compromise patterns to compare against, NHIMG’s 52 NHI Breaches Analysis is useful for understanding how attackers chain initial compromise, token abuse, and downstream access. For malware work specifically, that same kind of pattern recognition helps you separate the binary’s core capability from the noise added by packaging or evasion.

Practitioner judgement: how to sequence reverse engineering work

What to prioritise: treat behavior discovery as the first deliverable, not a side activity. If the sample changes the environment, reaches for network resources, or spawns child processes, prioritise those branches because they usually explain the operator’s intent faster than a full linear decompilation.

What to verify: confirm whether the sample’s apparent purpose matches its runtime behavior. A file that looks like a simple downloader may actually serve as a launcher, credential harvester, or persistence implant once executed under the right conditions. Verification means checking both what the code suggests and what the sandbox shows.

What good looks like: you can explain the sample’s entry conditions, the main execution path, and the observable effects without guessing. At that point, deeper static reversing becomes a targeted exercise, usually focused on payload construction, configuration parsing, or hidden branches that the sandbox did not exercise.

Practitioner takeaway: the fastest path to reliable reverse engineering is to let triage define the problem, then use static analysis to confirm and extend what execution already revealed. That order keeps you from over-investing in the wrong code path and gives you a better chance of understanding the sample’s real capability, not just its surface shape.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK address the attack and risk surface, while CIS Controls v8 and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
CIS Controls v8 CIS Control 10 — Malware Defenses Malware triage depends on detecting and containing malicious code behavior.
CIS Control 8 — Audit Log Management Sandbox and host telemetry are essential to observe what a binary actually does.
CIS Control 1 — Inventory and Control of Enterprise Assets Triage starts by identifying the sample's provenance, format, and execution context.
Recommendation — Apply Control 10 to detect, contain, and analyze suspicious binaries before deeper execution. Centralize logs and sandbox telemetry to preserve execution evidence for analysis. Inventory the host and sample context so analysts can scope the reversing effort correctly.
MITRE ATT&CK T1027 — Obfuscated Files or Information Packed or obfuscated binaries often require triage before meaningful disassembly.
T1057 — Process Discovery Sandboxed binaries often reveal intent by spawning or inspecting processes during execution.
T1105 — Ingress Tool Transfer Suspicious binaries commonly download or stage payloads that must be observed in triage.
Recommendation — Detect obfuscation early and plan unpacking or deobfuscation before deep reversing. Map observed process behavior to identify the sample's operational objective. Trace network-delivered payloads and stage content before analyzing the final implant.
NIST CSF 2.0 DE.CM — Continuous Monitoring Dynamic analysis is a monitoring activity that captures runtime behavior of the sample.
Recommendation — Use monitoring data to validate behavioral hypotheses generated during triage.