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.
1---2name: malware-report-writer3description: Create professional malware analysis reports for enterprise security teams and incident response. Use when you need to write, structure, or improve a malware analysis report, produce executive summaries, author YARA rules, or format IOCs and detection rules for professional delivery.4---56# Malware Report Writer78Create professional, comprehensive malware analysis reports for enterprise security teams, incident response, and threat intelligence.910## Execution Model1112- **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.13- **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`.14- **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.15- **Defang at write time.** Run any IOC list through `python3 scripts/ioc_extract.py` (repo root) rather than defanging by hand.16- **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.17- **State what was not done.** Phases skipped, network not observed, packer not defeated — these go in the report's limitations, not silently omitted.1819## When to Use This Skill2021Use this skill when the user needs to:22- Create a complete malware analysis report from analysis findings23- Structure analysis results into professional documentation24- Write executive summaries for malware samples25- Format IOCs and detection rules for delivery26- Review or improve existing malware reports27- Prepare report documentation for stakeholders2829## Quick Start3031### Creating a New Report32331. `cat analysis_state.md`; `ls` the evidence and detection directories; read the phase outputs you need342. Copy `assets/report_template.md` to `reports/<sample>_report.md`353. Populate each section from the evidence, citing it (file, line, event) so every claim is traceable364. Author and test the YARA rule; paste Sigma/Suricata rules from `detection-engineer` verbatim375. Run the Quality Checklist below and `references/best_practices.md`; fix, then deliver3839### Report Structure4041The standard report includes these sections in order:42431. **Executive Summary** - High-level overview for non-technical stakeholders442. **Sample Information** - Basic file metadata and hashes453. **Static Analysis** - File structure, strings, imports/exports, resources464. **Dynamic Analysis** - Runtime behavior, system changes, network activity475. **IOCs** - Organized by type (file, network, host indicators)486. **Detection Rules** - YARA rules and optionally Sigma rules497. **Malware Classification** - Family, type, capabilities508. **Remediation and Mitigation** - Actionable response steps519. **Technical Details** - Additional deep-dive analysis5210. **Conclusion** - Final summary and assessment5311. **References** - External resources and links5412. **Appendix** - Timeline, tools used, screenshots5556## Key Principles5758### Professional Quality59- Use precise technical language with clear explanations60- Include all three hash types (MD5, SHA1, SHA256)61- Provide full context for every finding62- Document methodology and tools used63- Include timestamps and version information6465### Professional Report Requirements66Industry-standard reports require:67- Complete technical documentation of malware samples68- Professional format suitable for enterprise delivery69- Working detection rules based on malware characteristics70- Clear IOCs that can be operationalized7172**Critical:** The quality of your report reflects your professionalism. Allocate sufficient time for writing and review.7374### Audience Awareness75Structure content for multiple audiences:76- **Executive Summary**: Non-technical decision makers77- **Technical Sections**: Security analysts and researchers 78- **IOCs/Detection**: SOC teams and detection engineers79- **Remediation**: Incident responders8081## Writing Guidelines8283### Executive Summary84- 2-4 paragraphs maximum85- Plain language, minimal jargon86- Answer: What? How critical? What actions?87- Include key findings in bullet points8889### Technical Analysis90- Document both positive and negative findings91- Provide evidence for every claim92- Use code blocks for technical artifacts93- Include screenshots when they add value94- Connect behaviors to specific evidence9596### IOCs Section97**Format:**98- Group by type (file, network, host)99- Include context for each indicator100- Provide confidence levels if uncertain101- Test IOCs for accuracy before including102103**Defanging (required):** All IOCs in reports MUST be defanged to prevent accidental activation:104- URLs: `http` → `hxxp`, `https` → `hxxps` (e.g., `hxxps://malicious[.]example[.]com/payload`)105- Domains: bracket the dot before the TLD (e.g., `evil[.]com`, `sub.domain[.]net`)106- Email addresses: `@` → `[@]` (e.g., `attacker[@]evil[.]com`)107- IP addresses: bracket each dot separator (e.g., `192[.]168[.]1[.]1`)108109**Avoid:**110- Environment-specific artifacts111- Personal/analyst system information112- Common legitimate values113- Untested indicators114115### Detection Rules116**YARA Rules:**117- Test against sample (must detect)118- Test against clean files (must not false positive)119- Include metadata: author, date, description, hash120- Use meaningful string and variable names121- Add comments explaining detection logic122- Set appropriate conditions to balance detection and false positives123124**Testing YARA rules** (run these; paste the results into the report's detection section):125```bash126command -v yara || echo "yara not installed: pip install yara-python / apt install yara — mark rule UNTESTED"127yara -w -s detections/yara/family.yar samples/sample.exe # must match; -s shows which strings hit128yara -w -s detections/yara/family.yar samples/unpacked.exe # and the unpacked/dropped stages129yara -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)130```131A 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.132133**Best practices:**134```yara135rule Malware_Family_Variant {136 meta:137 description = "Detects Malware_Family based on C2 configuration"138 author = "Analyst Name"139 date = "2025-10-25"140 hash = "abc123..."141 reference = "Internal analysis"142 143 strings:144 $c2_config = { 48 8B ?? ?? ?? ?? ?? 48 8D ?? ?? } // Config access pattern145 $ua_string = "Mozilla/4.0 (Suspicious UA)" ascii146 $mutex = "Global\\UniqueMalwareMutex" wide147 148 condition:149 uint16(0) == 0x5A4D and // MZ header150 filesize < 2MB and151 2 of them152}153```154155### Common Mistakes to Avoid156- Over-relying on automated tool output without interpretation157- Listing findings without explaining significance158- Missing critical hashes or file metadata159- Weak or untested detection rules160- Vague remediation recommendations161- Poor grammar/spelling162- Inconsistent formatting163- Environment-specific artifacts in IOCs164165## Best Practices Reference166167For detailed guidance on report quality, writing style, and common pitfalls, see `references/best_practices.md`.168169Key topics covered:170- Report writing principles (clarity, completeness, objectivity)171- Structure guidelines for each section172- IOC quality standards173- Detection rule best practices174- Audience considerations175- Quality checklist176- Efficient workflow strategies177178## Quality Checklist179180Before submitting any report, verify:181182**Technical Accuracy:**183- [ ] All three hash types included and verified184- [ ] File paths are complete and accurate185- [ ] Timestamps include timezone186- [ ] Process IDs included for process activity187- [ ] Tool versions documented188189**Detection Rules:**190- [ ] YARA rules tested against sample (detects correctly)191- [ ] YARA rules tested against clean files (no false positives)192- [ ] Rules include complete metadata193- [ ] Conditions are appropriate and not over-matching194195**IOCs:**196- [ ] Grouped by type (file, network, host)197- [ ] Context provided for each IOC198- [ ] All IOCs defanged (hxxp/hxxps, [.] for domains and IPs, [@] for email)199- [ ] No environment-specific artifacts200- [ ] All IOCs validated201202**Report Quality:**203- [ ] Executive summary is non-technical and actionable204- [ ] All sections completed205- [ ] Grammar and spelling checked206- [ ] Consistent formatting throughout207- [ ] Evidence supports all claims208- [ ] Remediation steps are specific and prioritized209210**Professional Standards:**211- [ ] Report is professional and enterprise-ready212- [ ] Detection rules work and are well-documented213- [ ] Technical details demonstrate thorough analysis214- [ ] Report answers: What is it? What does it do? How to detect? How to remove?215216## Output Format217218Create reports in Markdown format using the template structure. For professional delivery:2191. Create report in Markdown using the template2202. Convert to PDF for professional appearance (if required)2213. Ensure all sections are complete2224. Include any screenshots as appendix items2235. Verify detection rules are included and tested224225## Example Usage226227**User request:** "Write the report for the ransomware sample"228229**What you do:**2301. Read `analysis_state.md`, the triage report, dynamic summaries, and the Sigma/Suricata files already created.2312. Copy the template to `reports/<sample>_report.md`; fill all 12 sections from evidence, citing sources.2323. Write the YARA rule from runtime strings / ransom-note markers / mutex; run `yara` against the sample and a clean corpus; record the result.2334. Defang the IOC section with `ioc_extract.py`; remove lab artifacts.2345. Write remediation ordered by urgency (isolate → block C2 → remove persistence → recover), and the limitations section.2356. Run the Quality Checklist; ask the user only for analyst name, audience, and any gap you could not close.2367. Print the executive summary and the file path.