Final Project: Malware Analysis Report
Due Date: 2026-06-12 23:59:59
All Students
Introduction
You will perform a complete, end-to-end analysis of an unknown malware sample and produce a professional-grade analysis report. This project synthesizes all of the skills developed during the term: triage, static analysis, dynamic analysis, anti-analysis bypass, malware classification, shellcode analysis, and automated analysis via fuzzing and symbolic execution.
The sample set is described in the below table. Find your assigned family using the last digit of your university ID number. Quakbot is unassigned and available as an extra credit family — perform the same full analysis on it for additional credit.
| Family | Type | Assigned | SHA256 | Link |
|---|---|---|---|---|
| WannaCry | Ransomworm | 0, 1 | 521acfa745e99821f387a1ab22b991a4813c2f93a0a92978f3742fc9ceac2efd |
bazaar.abuse.ch |
| MimiKatz | Credential dumper | 2, 3 | f56b6877b0bb45a7ac23e785142fec6b7b24e5ccead9f26fb5aa294223fdd8aa |
bazaar.abuse.ch |
| Emotet | Banking trojan/loader | 4, 5 | 251037ceebfbacd419b663ebcf0e01ec80a2c46dbfc85f66492c8585b481fb8c |
bazaar.abuse.ch |
| TrickBot | Banking trojan | 6, 7 | 12898ccc6a9cf84dda412ea2bc17de58de6742ffae8392a84294fb7f95fcde27 |
bazaar.abuse.ch |
| Gootkit | Rootkit/banker | 8, 9 | 566d48c7acb52cbe910bccc646d70a026ee25924cdb5751d3526864df49c69bb |
bazaar.abuse.ch |
| Quakbot | Banking trojan | — | 29ca6ec9910beb1243a1c556c593a987dd990a0b996618443bb6c61703ee6d2a |
bazaar.abuse.ch |
What You Must Do
Perform a thorough analysis of your assigned sample using all techniques covered in the course:
- Triage — file type, hash, packing detection, VirusTotal check
- Static analysis — PE/ELF structure, imports/exports, string extraction (including FLOSS), IDA Classroom and Cutter disassembly and decompilation
- Dynamic analysis —
strace/ltrace, Wireshark network capture, sandbox submission (Any.run or Hybrid Analysis) - Anti-analysis — identify any techniques present and document your bypass approach
- Classification — determine the malware family/type and justify with evidence
- IOC extraction — compile a complete list of indicators of compromise
- YARA rule — write a detection rule for your sample
- Shellcode (if applicable) — if the sample contains or drops shellcode, analyze it: identify the position-independence mechanism, resolve the API hashing or name-matching routine, and document what the shellcode does
- Automated analysis (optional, extra credit) — apply AFL++ or angr to the sample or an associated dropper; document what the automated tool found that manual analysis did not
What to Turn In
Submit via your GitLab repo in a directory called final/. The primary deliverable is final/final.md, a professional malware analysis report with the following sections:
- Executive Summary — 1 paragraph non-technical summary suitable for a manager or client
- Technical Summary — brief overview of the sample and key findings
- Triage Results — file metadata, hashes, packing info, VirusTotal results
- Static Analysis — PE/ELF structure findings, notable imports, IDA/Cutter analysis with annotated screenshots
- Dynamic Analysis — behavioral findings from tracing and network capture, sandbox comparison
- Anti-Analysis Techniques — techniques observed and how you addressed them
- Classification — malware family, capabilities, likely threat actor targeting (if determinable)
- Indicators of Compromise — complete IOC table (file hashes, file paths, registry keys, network indicators, mutex names, etc.)
- YARA Rule — detection rule for the sample (also saved as
final/rule.yar) - Methodology — describe your analysis workflow and tools used
- Limitations — what you could not determine and why
Include all supporting screenshots within the final/ directory, referenced from the markdown.
Grading Criteria
- Completeness: all required sections present and substantive
- Accuracy: findings are correct and well-supported with evidence
- Clarity: report is well-organized and understandable
- IOC quality: IOCs are specific and actionable
- YARA rule: rule is functional and not overly broad
Graduate Students (CS 592)
Additional Requirements
In addition to the full analysis above, graduate students must also complete one of the following:
Option A: Comparative Analysis
Obtain a second sample from the same malware family as your assigned sample (use MalwareBazaar or a similar public repository). Perform triage and basic static analysis on the second sample and write a 1–2 page comparison:
- What code or behavior do the samples share? (shared functions, strings, network infrastructure)
- What differs between them? (version differences, new capabilities, rebranding)
- What does this suggest about the malware author’s development practices?
Submit this as final/final-592.md.
Option B: Threat Intelligence Report
Research the threat actor or campaign associated with your malware sample. Using only public sources (threat intelligence reports, academic papers, vendor blogs), write a 2–3 page threat intelligence summary covering:
- Known attribution (nation-state, criminal group, hacktivist, etc.) and confidence level
- Historical campaigns using this malware family
- Typical targets and TTPs (MITRE ATT&CK mapping)
- Defensive recommendations for an organization targeted by this actor
Submit this as final/final-510.md with a bibliography of all sources.
Option C: Automated Analysis
Apply fuzzing and symbolic execution to a component of your assigned malware or its associated dropper/loader:
- Fuzz the sample (or a parsing function extracted from it) with AFL++ for at least 30 minutes. Document the corpus, any crashes found, and their root cause.
- Use angr to automatically explore at least one interesting function — for example, a license/C2 check, a decryption routine, or an anti-analysis condition. Write a script that solves for the input that bypasses or triggers the behavior.
- Compare what the automated tools found versus what manual analysis revealed.
Submit this as final/final-510.md including your AFL++ crash inputs and angr solve scripts.