Jump to: 🔥 Challenge News ⚡ Intel 🔬 Research Labs 📡 All News →

Malware Analysis Bootcamp

From triage fundamentals to advanced reverse engineering — static analysis, dynamic sandboxing, x86/x64 assembly, Ghidra, unpacking, ransomware/RAT/rootkit analysis, and YARA rule writing. All tools free. All labs use safe samples.

6
Phases
18
Modules
240
Days
100%
Free Tools
Phase 1 · Static Analysis
Examining Malware Without Executing It
Static analysis extracts intelligence from a malware sample without running it — by examining the file structure, strings, imports, code sections, and metadata. A skilled static analyst can determine malware family, capabilities, and IOCs in 15 minutes on a sample they have never seen before.
📅 35 days🎯 No RE experience needed🛠 PEStudio · CyberChef · Detect-It-Easy · FLOSS · VirusTotal
MOD 01 The Malware Analyst's Lab — Safe Environment Setup Days 1-5
Safety First
Never execute malware samples on your host machine, never connect your analysis VM to the production network, always work from snapshots, and never store real malware on cloud-synced drives (Google Drive, OneDrive). A single mistake can compromise your entire system or your organisation's network.
Tutor Explanation

Malware analysis requires an isolated environment — a dedicated virtual machine with no network access (or a completely isolated network), snapshotted to a clean state so you can restore after each analysis. The VM should have all necessary tools pre-installed and nothing of value (no real credentials, no real data, no production access).

The gold standard analysis VM is FlareVM — a Windows VM with every malware analysis tool pre-installed. REMnux is the Linux equivalent. Both are free. Between them they cover 90% of analysis tasks you will encounter.

Analysis Environment Setup
FlareVM (Windows analysis): Install Windows 10 VM in VirtualBox/VMware. Run FlareVM installer (github.com/mandiant/flare-vm). It installs: x64dbg, Ghidra, PE-bear, PEStudio, FLOSS, Detect-It-Easy, CyberChef, and 100+ other tools automatically.

REMnux (Linux analysis): Pre-built VM from remnux.org. Includes: Volatility 3, Cutter, radare2, YARA, oledump, pdfid, and all Linux analysis tools. Best for document malware, script analysis, and Linux samples.

Network isolation: Set VM network adapter to Host-Only or Isolated. Never NAT — never allow malware to reach the internet and phone home (or worse, receive commands and attack your network). For dynamic analysis requiring network: use INetSim (traffic simulation) or a dedicated VLAN with FakeNet-NG.

Snapshot discipline: Take a "clean" snapshot before any analysis. After each analysis session: revert to clean. Never accumulate samples on one VM state.
Daily Tasks — Week 1
Install VirtualBox (free). Create a Windows 10 VM with 4GB RAM and 80GB disk. Isolate networking to Host-Only. Install FlareVM. Take a clean snapshot. Verify you can revert to clean snapshot in under 60 seconds.
Easy
Install REMnux VM from remnux.org (pre-built OVA, import directly into VirtualBox). Verify all major tools are present: Volatility 3, YARA, Cutter, oledump. Take a clean snapshot.
Easy
Write your personal malware analysis SOP: network configuration before analysis, snapshot checklist, where samples are stored (encrypted 7z with password), tool launch order, and post-analysis cleanup procedure. Discipline before tools.
Medium
MOD 02 15-Minute Triage Workflow — From Unknown File to Known Threat Days 6-20
Tutor Explanation

Most malware analysis in a SOC or IR context is triage — quickly answering "is this malicious, what family, what does it do, what IOCs does it produce?" in 15 minutes, not 15 hours. The triage workflow is a fixed sequence that gets progressively deeper until the question is answered. If step 1 answers it, stop. If not, proceed to step 2. Most samples are resolved by step 3.

The 15-Minute Triage Workflow
Step 1 — Hash (1 min): SHA256 the file. Check VirusTotal, MalwareBazaar (bazaar.abuse.ch), and Hybrid-Analysis. If detection ratio is >10/70, you have the family and existing reports. Stop here.

Step 2 — File identification (2 min): Run Detect-It-Easy (DiE) — identifies file type and packer/protector. Run file command on Linux. Magic bytes tell you the true file type regardless of extension. An .exe with PDF magic bytes is suspicious.

Step 3 — Strings (3 min): Run FLOSS (FLARE Obfuscated String Solver) — extracts all printable strings AND decodes obfuscated/encoded strings that normal strings would miss. Look for: URLs and domains, registry keys, Windows API names, file paths, mutex names, and configuration data.

Step 4 — Imports (3 min): Open in PEStudio. The imports section shows which Windows API functions the binary uses. Network functions (WSAStartup, connect, send, recv) → C2 capability. Cryptographic functions (CryptEncrypt) → ransomware possibility. Process injection APIs (VirtualAllocEx, WriteProcessMemory, CreateRemoteThread) → injection capability.

Step 5 — Sandbox (5 min): Submit to any.run (free, interactive) or Hybrid-Analysis (free). While it runs, review sections, resources, and entropy in PEStudio. When sandbox completes: review process tree, network connections, file drops, and registry changes.

Step 6 — IOC extraction (1 min): From FLOSS output and sandbox report: extract C2 domains/IPs, mutex names, file drop paths, registry persistence keys, scheduled task names. These are your detection IOCs.
Lab 2.1 — Triage 10 Real Samples
1Download 10 samples from MalwareBazaar (bazaar.abuse.ch/browse) — use the "recent" view and pick samples tagged with known families (AgentTesla, AsyncRAT, Redline, QakBot). Store in password-protected 7z archives (password: infected).
2For each sample, complete the triage workflow and fill in a report template: SHA256 · file type · packer (if any) · interesting strings (top 5) · key imports · sandbox verdict · malware family · C2 IOCs · persistence mechanism.
3Compare your findings to existing reports on ANY.RUN or Triage. How much did you get right? What did you miss? The gaps reveal what to study next.
4Submit one sample to any.run interactively (free account gives 14 interactive sessions/month). Watch the malware execute in real time. Observe: what processes does it spawn? What does it write to disk? What network connections does it make?
Daily Tasks — Weeks 2-3
Triage one new sample every day for two weeks (14 samples total). Time yourself — target under 15 minutes per sample by the end of week 2. Track your accuracy against existing reports and your speed improvement over time.
Medium
Build a personal IOC reference database. For each triaged sample: save SHA256, family, C2 IOCs, mutex names, and file drop paths. After 14 samples, look for patterns — do the same C2 IPs appear in multiple samples? The same mutex name? These are campaign-level IOCs.
Hard
MOD 03 PE Format Deep Dive — Reading the Binary Structure Days 21-35
Tutor Explanation

The Portable Executable (PE) format is the file format for Windows executables (.exe, .dll, .sys). Understanding its structure is essential for malware analysis — it tells you how the binary is organised, what code it contains, what data it uses, and crucially, when something is wrong (packed/obfuscated executables have very different PE structure from normal ones).

Every PE file starts with the DOS header (MZ signature), followed by the PE header (machine type, timestamp, number of sections), the optional header (entry point address, image base, subsystem), and then the section table. The sections contain the actual content: .text (code), .data (initialised data), .rdata (read-only data including strings and imports), .rsrc (resources — icons, manifests, embedded files), and sometimes custom sections added by packers.

PE Red Flags — What Indicates Malware or Packing
High entropy sections: Normal code has entropy of ~6.0. Packed or encrypted code has entropy approaching 8.0 (maximum). PEStudio shows entropy per section. A .text section with entropy 7.9 is almost certainly packed.

Suspicious section names: Standard sections are .text, .data, .rdata, .rsrc, .reloc. Non-standard names (UPX0, .themida, .vmp, or random names like .XHGSQ) indicate packers or protectors.

Few imports, many in a suspicious DLL: Normal executables import dozens of functions from multiple DLLs. A packed binary may import only LoadLibrary and GetProcAddress — it resolves everything else at runtime, hiding its true capabilities.

Timestamp anomalies: PE headers contain a compile timestamp. A timestamp of 1970-01-01 or far in the future indicates it has been zeroed or faked. A timestamp from 2008 on a modern malware sample with current C2 infrastructure suggests timestamp tampering.

Resources with high entropy: Malware frequently embeds encrypted payloads, configuration data, or additional executables in the resources section. Resource entropy approaching 8.0 warrants extraction and further analysis.

Overlay data: Data appended after the last section (the overlay). Normal in some installers, but malware uses overlays to store encrypted payloads that are decrypted at runtime. PEStudio highlights this.
Daily Tasks — Weeks 4-5
Analyse the PE structure of five legitimate Windows binaries (notepad.exe, calc.exe, chrome.exe, an Office binary, a game executable). Build a reference for what "normal" looks like: typical section names, typical entropy ranges, typical import counts. Malware stands out most clearly against a solid normal baseline.
Easy
Find a UPX-packed malware sample on MalwareBazaar. Confirm packing via DiE and high section entropy in PEStudio. Unpack with upx -d sample.exe. Compare PE structure before and after unpacking: section count, import count, entropy, and strings. Document what was hidden by the packer.
Medium
Advanced: extract a resource with high entropy from a malware sample using PE-bear or Resource Hacker. Save the resource as a binary file. Run file identification on it — is it an executable? An encrypted blob? A ZIP? A configuration file? Carving embedded payloads is a core malware analysis skill.
Hard