Why Good Reporting Matters

Penetration testing is not only about finding weaknesses. It is also about producing a clear record of what was tested, what was observed, what was exploited, and what the client should do next. A report is a time-bound snapshot of the target environment, so it should state when the work happened, who performed it, what source systems were used during testing, and any special conditions such as VPN access or internal jump hosts.

This matters because the report is usually the only part of the engagement that most stakeholders will ever read. Technical teams need evidence and reproduction steps, managers need prioritization, and executives need a clear explanation of business risk without jargon. If the testing was strong but the report is weak, the engagement loses value because the client cannot turn your work into action. In practice, reporting is the mechanism that converts offensive testing into remediation, budgeting, and long-term security improvement.


Building a Repeatable Note-Taking System

There is no perfect note-taking system that fits every tester, but there should always be a repeatable structure behind it. During an engagement, you need a place to track credentials, promising attack paths, service enumeration, web application research, Active Directory work, payload usage, scope details, and a high-level activity log. This structure is not just for personal convenience; it protects you when a client asks whether a specific host was scanned on a particular day or whether a certain payload was ever used. Over-documenting is usually far safer than leaving gaps that later become impossible to reconstruct.

Some note categories are especially valuable because they map directly into the final report. An Attack Path section helps you preserve the exact sequence that led to compromise, which later becomes the narrative behind a chained finding or post-exploitation summary. A Credentials section centralizes compromised secrets, while Findings folders let you store the narrative and the evidence for each issue in one place. Separate sections for vulnerability scan review, service research, OSINT, scope information, and payload logging prevent duplication of work and make it much easier to return to partially explored ideas without losing context.

A simple project folder layout can save a large amount of time once the assessment becomes noisy. Keeping administrative documents, deliverables, evidence, scans, logging output, notes, OSINT results, and retest data in predictable locations makes it easier to build the report as you work instead of reconstructing it at the end. This is especially important on large internal tests, where poor organization often leads to missed evidence, repeated enumeration, or accidental scope drift.

mkdir -p ACME-IPT/{Admin,Deliverables,Evidence/{Findings,Scans/{Vuln,Service,Web,'AD Enumeration'},Notes,OSINT,Wireless,'Logging output','Misc Files'},Retest}
tree ACME-IPT

Logging, Artifacts, and Evidence Handling

Logging matters because memory is unreliable and screenshots alone are rarely enough. Raw scanner output, terminal logs, exploit attempts, and payload usage records help prove what happened during the engagement and give the client something concrete to correlate against internal logs. Tools such as the tmux-logging plugin are useful because they capture command history with minimal friction, which is far better than trying to rebuild an exploit sequence from memory later.

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
touch ~/.tmux.conf
tmux source ~/.tmux.conf
tmux new -s reporting

It is equally important to track artifacts left behind in the client environment. If you upload a web shell, create a user, change a service configuration, disable a defensive control, or place a payload on disk, you should record the host, timestamp, path, description, and cleanup status. File hashes are also useful because they make it easier for the client to search for the exact object later. Even if you remove everything yourself, including these details in your working notes or appendices shows professionalism and helps separate your activity from any future incident response noise.

Evidence should be accurate, minimal, and safe to share. Terminal output is usually better than terminal screenshots because it is easier to format, highlight, redact, and copy into reproduction steps. When screenshots are necessary, they should include only relevant information and clearly show the target URL, host, or application context. Sensitive data should never be obscured with blur or pixelation, because those methods can sometimes be reversed; solid redaction blocks applied directly to the image are a much safer choice.

Choosing the Right Deliverables

Not every assessment produces the same kind of report, so the deliverable should match the engagement. A vulnerability assessment is mostly about enumerating and validating scanner results, while a penetration test goes further by exploiting issues, chaining weaknesses, and showing impact. Internal and external versions of both can differ significantly because the perspective changes the expected findings and the level of access available. This distinction matters because a client who buys a vulnerability scan should not expect a full attack narrative, and a client who buys a penetration test should expect far more than a scanner export with severity labels.

Beyond the main report, many engagements require additional outputs. A draft report is often issued first so the client can review wording, ask questions, and provide management responses before the final version is published. Remediation retests usually focus only on the original findings and affected systems rather than repeating the entire assessment. Some clients may also need attestation letters, slide decks for technical or executive presentations, findings spreadsheets for ticket import, or rapid vulnerability notifications when a critical internet-exposed issue needs immediate attention during the test window.

These extra deliverables support different audiences and different business needs. A spreadsheet helps operations teams sort findings by owner or environment, an attestation letter helps with third-party assurance requirements, and a slide deck gives leadership a faster summary than a long report. Rapid notifications are especially important for directly exploitable critical findings, because waiting until final delivery may expose the client to unnecessary risk.


Writing the Report That People Will Actually Use

The most valuable reports filter noise and focus attention on what matters. During large engagements, you may accumulate thousands of lines of scanner output, exploratory notes, and low-value informational issues that are not worth the same time as remote code execution or credential compromise. Good reporting does not hide those observations, but it prioritizes clearly so that the client understands what threatens the environment most and why.

An effective report usually includes a few core pieces: an executive summary, a recommendation summary, the detailed findings, and selected appendices. The executive summary should explain the main risks in plain language for a non-technical audience, while the recommendation summary translates those problems into short-, medium-, and long-term corrective actions. The findings section then provides the technical detail, evidence, and remediation guidance needed by engineers and administrators. Appendices support the report with scope, methodology, severity definitions, credential summaries, artifact logs, additional affected assets, or password analysis when those items add real value.

The executive summary is where many reports either become effective or fail completely. It should be brief, concrete, and readable by someone who does not work in offensive security every day. Instead of saying you performed Kerberoasting or password spraying, explain that you obtained access by abusing weak authentication controls and predictable passwords, then describe what kinds of systems or data became accessible as a result. Clear language and business-relevant consequences are far more useful than jargon or acronyms.

How to Write a Strong Finding

Each finding should answer a simple question: what is wrong, why does it matter, how can the client confirm it, and what should they do next. At minimum, a finding needs a clear description, impact statement, affected assets, remediation guidance, references, and reproducible evidence. Optional fields such as CVE identifiers, OWASP or MITRE references, CVSS scores, and exploitability notes can add structure, but they do not replace good writing. A polished finding should feel specific to the client environment, not like a generic block pasted from a vulnerability database.

Reproduction steps are one of the most important parts of the finding because they determine whether the client’s technical teams can validate and fix the issue efficiently. Each major step should be separated clearly, and complex attacks should be broken into multiple figures or code blocks rather than buried in one large screenshot. If configuration is required, show that configuration before execution, then show the result separately. Narrative between figures is useful because it explains what the tester was doing and why, which helps the reader follow the logic instead of staring at disconnected output.

Good remediation advice is concrete, practical, and vendor-neutral whenever possible. Telling the client to “harden the system” or “buy product X” is lazy because it shifts the investigative burden back onto the reader. A better recommendation explains exactly which setting, path, registry hive, policy, or workflow should change, and it includes a realistic note about testing changes safely before broad deployment. This approach not only helps the client remediate faster, but also shows that the finding author understood the root cause well enough to recommend a credible fix.

Reference selection matters more than many testers realize. A useful reference should explain the issue or the fix clearly, avoid unnecessary vendor marketing, and be accessible without a paywall or overwhelming theoretical detour. The goal is not to impress the reader with a large bibliography but to give them a fast path to trustworthy supporting material. Over time, building your own sanitized findings library and internal reference set becomes one of the biggest quality improvements a reporting team can make.

Templates, QA, and Client Communication

Reporting gets dramatically easier once you stop treating each engagement as a blank page. Every common assessment type should have a clean template, and those templates should be maintained intentionally rather than copied from the previous client’s report. Whether you use Word, a reporting platform, or a findings database, the objective is the same: reduce repetitive writing, improve consistency, and prevent embarrassing mistakes such as leaving another client’s name or scope details in the document. A findings database is especially valuable because recurring issues should not be rewritten from scratch every time they appear.

Microsoft Word remains frustrating, but it can still be effective when used carefully. Styles, captions, automatic numbering, a table of contents, bookmarks, custom language settings for code blocks, and a simple QA checklist all help reduce formatting drift and last-minute cleanup. Macros can also automate client names, dates, scope blocks, and template pruning, which becomes increasingly useful once you handle many similar engagements. The broader lesson is that reporting should be systematized just like enumeration or exploitation, because repeated manual work is where inconsistency usually appears.

Quality assurance is the final control that protects the value of the entire engagement. At least one reviewer other than the author should check the report for technical accuracy, grammar, formatting, and clarity, and larger teams often benefit from separate technical and editorial QA passes. A sloppy report will make the client question the thoroughness of the testing, even when the findings are correct.

Client communication should stay active throughout the assessment, not just at delivery time. Start notifications, stop notifications, vulnerability alerts for urgent issues, and a review meeting after the draft report all help reinforce trust and reduce surprises. The report review meeting is especially useful because it gives the client space to ask technical questions, clarify context, and align on any final edits before the document is marked as final. A well-run reporting process makes the client feel informed and supported, which is often just as important as the technical findings themselves.


Reference

This article is based on my personal study notes from the Information Security Foundations track.

Full repository: https://github.com/lameiro0x/pentesting-path-htb