Malware Report Writer
Create professional, comprehensive malware analysis reports for enterprise security teams, incident response, and threat intelligence.
Execution Model
- You write the report. Read
analysis_state.md and the evidence directory yourself (triage report, procmon_summary.txt, sysmon_summary.txt, tshark exports, decoded scripts, detection rule files) and draft every section from that. Ask the user only for what the evidence cannot tell you: engagement name, analyst name, audience, classification/TLP, and gaps you have flagged.
- Locate skill files. Scripts and reference files ship in this skill's directory. Set
R="${CLAUDE_PLUGIN_ROOT:-<dir containing this SKILL.md>}" once (when installed as a plugin $CLAUDE_PLUGIN_ROOT is set; otherwise it is this skill folder). Your working directory is the user's analysis workspace, so prefix every script path below with $R, e.g. python3 "$R"/scripts/ioc_extract.py.
- Author the YARA rule from the evidence (runtime-decrypted strings, unique UA/URI, mutex, PDB path, config markers) and test it yourself when
yara is installed — see Testing YARA rules. If it cannot be tested, mark the rule UNTESTED in the report; never present an untested rule as validated.
- Defang at write time. Run any IOC list through
python3 scripts/ioc_extract.py (repo root) rather than defanging by hand.
- Output is a file. Write
reports/<sample>_report.md in the user's workspace (create the directory), then print the executive summary and the quality-checklist result. Never leave template placeholders in the delivered file.
- State what was not done. Phases skipped, network not observed, packer not defeated — these go in the report's limitations, not silently omitted.
When to Use This Skill
Use this skill when the user needs to:
- Create a complete malware analysis report from analysis findings
- Structure analysis results into professional documentation
- Write executive summaries for malware samples
- Format IOCs and detection rules for delivery
- Review or improve existing malware reports
- Prepare report documentation for stakeholders
Quick Start
Creating a New Report
cat analysis_state.md; ls the evidence and detection directories; read the phase outputs you need
- Copy
assets/report_template.md to reports/<sample>_report.md
- Populate each section from the evidence, citing it (file, line, event) so every claim is traceable
- Author and test the YARA rule; paste Sigma/Suricata rules from
detection-engineer verbatim
- Run the Quality Checklist below and
references/best_practices.md; fix, then deliver
Report Structure
The standard report includes these sections in order:
- Executive Summary - High-level overview for non-technical stakeholders
- Sample Information - Basic file metadata and hashes
- Static Analysis - File structure, strings, imports/exports, resources
- Dynamic Analysis - Runtime behavior, system changes, network activity
- IOCs - Organized by type (file, network, host indicators)
- Detection Rules - YARA rules and optionally Sigma rules
- Malware Classification - Family, type, capabilities
- Remediation and Mitigation - Actionable response steps
- Technical Details - Additional deep-dive analysis
- Conclusion - Final summary and assessment
- References - External resources and links
- Appendix - Timeline, tools used, screenshots
Key Principles
Professional Quality
- Use precise technical language with clear explanations
- Include all three hash types (MD5, SHA1, SHA256)
- Provide full context for every finding
- Document methodology and tools used
- Include timestamps and version information
Professional Report Requirements
Industry-standard reports require:
- Complete technical documentation of malware samples
- Professional format suitable for enterprise delivery
- Working detection rules based on malware characteristics
- Clear IOCs that can be operationalized
Critical: The quality of your report reflects your professionalism. Allocate sufficient time for writing and review.
Audience Awareness
Structure content for multiple audiences:
- Executive Summary: Non-technical decision makers
- Technical Sections: Security analysts and researchers
- IOCs/Detection: SOC teams and detection engineers
- Remediation: Incident responders
Writing Guidelines
Executive Summary
- 2-4 paragraphs maximum
- Plain language, minimal jargon
- Answer: What? How critical? What actions?
- Include key findings in bullet points
Technical Analysis
- Document both positive and negative findings
- Provide evidence for every claim
- Use code blocks for technical artifacts
- Include screenshots when they add value
- Connect behaviors to specific evidence
IOCs Section
Format:
- Group by type (file, network, host)
- Include context for each indicator
- Provide confidence levels if uncertain
- Test IOCs for accuracy before including
Defanging (required): All IOCs in reports MUST be defanged to prevent accidental activation:
- URLs:
http → hxxp, https → hxxps (e.g., hxxps://malicious[.]example[.]com/payload)
- Domains: bracket the dot before the TLD (e.g.,
evil[.]com, sub.domain[.]net)
- Email addresses:
@ → [@] (e.g., attacker[@]evil[.]com)
- IP addresses: bracket each dot separator (e.g.,
192[.]168[.]1[.]1)
Avoid:
- Environment-specific artifacts
- Personal/analyst system information
- Common legitimate values
- Untested indicators
Detection Rules
YARA Rules:
- Test against sample (must detect)
- Test against clean files (must not false positive)
- Include metadata: author, date, description, hash
- Use meaningful string and variable names
- Add comments explaining detection logic
- Set appropriate conditions to balance detection and false positives
Testing YARA rules (run these; paste the results into the report's detection section):
command -v yara || echo "yara not installed: pip install yara-python / apt install yara — mark rule UNTESTED"
yara -w -s detections/yara/family.yar samples/sample.exe # must match; -s shows which strings hit
yara -w -s detections/yara/family.yar samples/unpacked.exe # and the unpacked/dropped stages
yara -w -r detections/yara/family.yar /usr/lib /usr/bin clean/ 2>/dev/null | head # must print nothing (clean corpus; add a Windows clean dir if available)
A rule that matches only on strings present in the packed sample is a hash in disguise; prefer runtime-decrypted strings, config markers, mutexes, and code patterns, and require 2 of them or more with a filesize bound.
Best practices:
rule Malware_Family_Variant {
meta:
description = "Detects Malware_Family based on C2 configuration"
author = "Analyst Name"
date = "2025-10-25"
hash = "abc123..."
reference = "Internal analysis"
strings:
$c2_config = { 48 8B ?? ?? ?? ?? ?? 48 8D ?? ?? } // Config access pattern
$ua_string = "Mozilla/4.0 (Suspicious UA)" ascii
$mutex = "Global\\UniqueMalwareMutex" wide
condition:
uint16(0) == 0x5A4D and // MZ header
filesize < 2MB and
2 of them
}
Common Mistakes to Avoid
- Over-relying on automated tool output without interpretation
- Listing findings without explaining significance
- Missing critical hashes or file metadata
- Weak or untested detection rules
- Vague remediation recommendations
- Poor grammar/spelling
- Inconsistent formatting
- Environment-specific artifacts in IOCs
Best Practices Reference
For detailed guidance on report quality, writing style, and common pitfalls, see references/best_practices.md.
Key topics covered:
- Report writing principles (clarity, completeness, objectivity)
- Structure guidelines for each section
- IOC quality standards
- Detection rule best practices
- Audience considerations
- Quality checklist
- Efficient workflow strategies
Quality Checklist
Before submitting any report, verify:
Technical Accuracy:
Detection Rules:
IOCs:
Report Quality:
Professional Standards:
Output Format
Create reports in Markdown format using the template structure. For professional delivery:
- Create report in Markdown using the template
- Convert to PDF for professional appearance (if required)
- Ensure all sections are complete
- Include any screenshots as appendix items
- Verify detection rules are included and tested
Example Usage
User request: "Write the report for the ransomware sample"
What you do:
- Read
analysis_state.md, the triage report, dynamic summaries, and the Sigma/Suricata files already created.
- Copy the template to
reports/<sample>_report.md; fill all 12 sections from evidence, citing sources.
- Write the YARA rule from runtime strings / ransom-note markers / mutex; run
yara against the sample and a clean corpus; record the result.
- Defang the IOC section with
ioc_extract.py; remove lab artifacts.
- Write remediation ordered by urgency (isolate → block C2 → remove persistence → recover), and the limitations section.
- Run the Quality Checklist; ask the user only for analyst name, audience, and any gap you could not close.
- Print the executive summary and the file path.