Integrated Attack Tracking and Evidence
← Stage index | Quick sheet | Master Notes | Strategy map | Study methods: Complete attacks and retain reproducible evidence
Goal: finish an unfamiliar scoped target by keeping the current attack state, candidate paths and required evidence synchronized. This is the integration procedure for the earlier stages; it does not replace their service- and technique-specific procedures.
Establish the operating contract
Before interacting with a target, record:
scope and explicit exclusions
objective and required evidence
starting identity/credential and whether it is local, domain or application scoped
source host, interface, route and DNS context
allowed/restricted tools and the current Metasploit target decision
case directory and note/evidence locations
cleanup or restoration obligations
An interesting vulnerability is not automatically the objective. The attack is complete only when the required access or privilege is verified and the reproduction/evidence chain is retained.
Create a private case workspace using target-neutral names until the real scope is known:
mkdir -p case/{00-admin,01-scans,02-services,03-web,04-exploits,05-loot,06-sessions,07-screenshots,08-report}
touch case/00-admin/{scope.md,state.md,credentials.md,routes.md,hypotheses.md,transitions.md}
Do not put exam or private target material in a public repository.
Maintain a live state map
Keep target-specific values in a private case/lab record, not this public repository.
HOSTS
- host/IP | role | reachable from | open services | evidence file
IDENTITIES
- local/domain identity | credential type | validated services | privilege | source
ROUTES
- source -> listener/tunnel -> pivot -> destination | DNS point | callback path
HYPOTHESES
- observation | hypothesis | prerequisite | next discriminating test | status
TRANSITIONS
- old state -> action -> new access/identity/route | decisive output | evidence
EVIDENCE COVERAGE
- objective | reproduction complete? | identity/IP proof? | screenshot? | panel/task state
Label each claim observed, inferred, possible, confirmed, disproven or inconclusive. Close a path only with a test that addressed its prerequisite; do not confuse a tool error with a disproven attack hypothesis.
Run the attack as a state machine
Observe
→ Enumerate
→ Interpret
→ Hypothesize
→ Validate prerequisite
→ Exploit the confirmed primitive
→ Verify the new state
→ Re-enumerate from that state
→ Escalate, move or pivot
→ Capture evidence and cleanup
The sequence is a loop, not a one-time checklist. A state change routes work back to the relevant earlier stage:
| New state | Mandatory re-entry |
|---|---|
| Hostname, address, interface, listener or route | Discovery and service identification from the source position that can reach it |
| Credential, key, hash or ticket | Classify identity/material, validate compatible access, then authenticated enumeration |
| Application role/session | Revisit the same application and objects through the new authorization view |
| Command execution or shell | Verify host/identity/network, repair the session, transfer only what is needed, start local enumeration |
| Administrator/root/SYSTEM | Re-enumerate protected files, credentials, services, sessions, routes and domain context |
| Domain identity/group/right | Rebuild reachable host/service/object paths and validate the specific right |
| Pivot or proxy | Repeat discovery from the new vantage point; separately design callback and delivery routes |
Keep two queues
The coverage queue prevents missed surfaces:
host/source position → endpoint → confirmed application → required enumeration → state
The hypothesis queue prevents random exploitation:
observation → possible transition → prerequisite → cheapest discriminating test
→ decisive success/failure → next action
Do not spend the whole assessment deepening one hypothesis while high-value coverage remains unknown. Conversely, do not keep scanning after a confirmed path only to avoid validating it.
Rank candidate paths
Create one card per distinct mechanism:
Observation:
Desired state transition:
Required prerequisites:
Already confirmed:
Still unknown:
Cheapest discriminating test:
Success means:
Failure means:
Noise/change/cleanup:
Handoff if successful:
Status/evidence:
Rank without false numerical precision:
- Confirmed prerequisite, direct objective transition. Test first.
- Strong observation, one cheap missing prerequisite. Validate next.
- Useful information path. Prefer when it can unlock several branches.
- Multiple unsupported assumptions or disruptive action. Defer.
- Disproven prerequisite. Close until new evidence changes it.
Evidence strength overrides technique popularity. Prefer low-cost tests that split plausible explanations and create reusable information. A path that succeeds only after several unverified assumptions is not yet a high-priority path.
Standalone attack workflow
Use the earlier procedure linked at each transition; the integration layer owns order and state:
- Record scope, objective, source position and evidence requirements.
- Establish TCP coverage, bounded UDP coverage and confirmed application identities.
- Enumerate every confirmed service in its anonymous/current context; map web requests, hosts, parameters, content and roles.
- Search files, configuration, repositories and application data for identities or prerequisites.
- Build candidate cards for manual application weaknesses, compatible credentials and exact public-exploit prerequisites.
- Validate one prerequisite at a time and prove the smallest useful effect.
- Convert execution into a verified session; record host, identity, privilege, interfaces and routes.
- Capture the initial-access transition and any required unprivileged objective before changing state.
- Enumerate local privilege paths as controlled object → effective permission → privileged consumer → trigger → effect.
- Verify the elevated identity, capture required evidence, re-enumerate protected context and remove exercise artifacts.
- Reconstruct the ordered reproduction path while the commands and assumptions are still known.
Failure at a step returns to its owning block. Do not skip service enumeration because one banner suggests a CVE, and do not start privilege escalation before proving which host and identity the shell represents.
Assumed-breach AD workflow
starting credential
→ local/domain identity + DNS/time/DC context
→ reachable host/service map
→ users/groups/computers/shares/SPNs/ACLs/sessions
→ ranked identity or host transition
→ compatible password/hash/ticket use
→ verified session/new identity
→ re-enumeration
→ route/movement to next host
→ higher domain privilege/objective
Keep five variables together for every edge:
controlled identity
effective group/right
target object or host
required protocol/route
resulting identity/access
BloodHound and enumerators generate candidate edges. Validate the underlying group membership, ACL, session, service right, route and authentication material before acting. After every new identity or host session, repeat authenticated enumeration rather than continuing from the old authorization view.
For multihop work, maintain a route diagram and a separate callback diagram. A route that permits an operator tool to reach a service does not prove that a payload can return to its handler.
Capture every state transition
Linux:
date -Is
hostname
id
ip addr
ip route
Windows:
echo %DATE% %TIME%
hostname
whoami /all
ipconfig /all
route print
For each access or escalation, retain:
- the observation that selected the path;
- the exact command/request with secrets redacted in the reusable copy;
- relevant output or response;
- host and identity verification;
- the effect/new capability;
- cleanup/restoration; and
- the next re-enumeration result.
Use a compact transition packet:
time/timezone | source host/interface | target host/service | starting identity
observation | prerequisite | exact action | decisive output
new identity/access/route | evidence files | cleanup | next re-enumeration
Capture the transition when it happens. Reconstructing it later risks losing a required token, request, route, working directory, listener or source identity.
Save tool output deliberately
mkdir -p evidence/nmap evidence/web evidence/loot evidence/screenshots
nmap -Pn -sV -sC -p PORTS TARGET -oA evidence/nmap/TARGET-services
script -q -f evidence/session.txt
Run exit when finished so the transcript closes and flushes. Do not record unrelated secrets in a broad transcript.
Start-Transcript -Path .\evidence\powershell-session.txt
# commands
Stop-Transcript
Hash important transferred or generated artifacts:
sha256sum FILE | tee FILE.sha256
Never publish credentials, flags, target IPs, full private transcripts or copyrighted course text to this repository.
Proof/evidence checkpoint
Current official exam guidance requires proof-file content to be displayed from its original location in an interactive target shell and included in a screenshot with the target IP. The control-panel submission is separate and must occur before the exam ends. Recheck the guide immediately before an exam because these rules can change.
Linux example layout:
hostname; id; ip addr
cat /root/proof.txt
Windows example layout:
hostname & whoami & ipconfig
type C:\Users\Administrator\Desktop\proof.txt
Use the actual objective-provided path and required identity. Do not use AI on actual exam targets, proofs or reports; the current guide prohibits AI chatbots during the exam.
Public exploit evidence
For an unmodified exploit, retain its source URL rather than pasting pages of code. For a modified exploit, retain:
- original URL and version/commit;
- local modified copy;
- a focused diff/highlight of changes;
- why each change was necessary;
- build/interpreter command and dependencies;
- payload-generation command, if any; and
- exact execution and result verification.
git diff --no-index original.py modified.py > exploit-changes.diff
sha256sum original.py modified.py
Reproduction-path template
### Objective / result
**Starting state:** source host, network position and identity.
1. Observation and evidence.
2. Enumeration command/request and decisive output.
3. Vulnerability/prerequisite validation.
4. Exploitation command/request, including required listener/route.
5. Session verification: host, identity and privilege.
6. Escalation evidence and final verification.
7. Cleanup/restoration.
**Artifacts:** screenshots, saved output, hashes and exploit source/diff.
Write steps in execution order. Explain why a command was needed and what the output established; a transcript alone is not a report.
Dead-end recovery
Treat stagnation as a state problem, not an instruction to try more commands. Warning signs include unchanged evidence, repeated disproven tests, increasingly exotic mechanisms, tool switching without a new hypothesis, and work whose success would not advance the objective.
When progress stalls:
- Freeze the current host/identity/route/credential map.
- Mark each path with the last decisive result.
- Recheck scan/service/application coverage and authenticated views.
- Separate environment/tool failure from a disproven prerequisite.
- Choose the cheapest test that can change the decision.
- Switch paths when the expected information gain is higher.
- Return only when new evidence changes an assumption.
Use this failure router:
| Symptom | Classification | Next action |
|---|---|---|
| Tool cannot reach any known-good endpoint | Environment/route failure | Repair source interface, proxy, DNS or tool configuration |
| Test did not exercise the claimed prerequisite | Inconclusive | Replace it with a discriminating test |
| Exact prerequisite is absent | Disproven path | Close the card until state changes |
| Authentication works but action is denied | Authorization boundary | Enumerate service/object rights under that identity |
| New credential or route exists but old enumeration is unchanged | Stale state | Re-enumerate from the new identity/vantage point |
| Many weak possibilities, no decisive observation | Coverage gap | Return to surface/service/application enumeration |
Build the report from transitions
For every achieved objective, the report path should read:
starting state and scope
→ decisive enumeration
→ prerequisite/vulnerability validation
→ exact exploitation action
→ session/identity verification
→ privilege or movement transition
→ final objective evidence
→ cleanup/restoration
Include only enough non-decisive enumeration to make the selection understandable. Screenshots need captions and nearby interpretation; they do not replace commands or prose. Raw transcripts are supporting artifacts, not the final narrative.
Current official exam grading follows the target order used in the report. Keep target/objective labels aligned with the control panel and place each target's complete chain together.
Final PDF and archive validation
Recheck the current guide immediately before a mock or exam. The current baseline is one PDF inside a non-password-protected .7z, exact case-sensitive filenames and an archive no larger than 200 MB:
7z a OSCP-OS-XXXXX-Exam-Report.7z OSCP-OS-XXXXX-Exam-Report.pdf
7z l OSCP-OS-XXXXX-Exam-Report.7z
7z t OSCP-OS-XXXXX-Exam-Report.7z
md5sum OSCP-OS-XXXXX-Exam-Report.7z
Windows hash fallback for a local rehearsal:
Get-FileHash -Algorithm MD5 -LiteralPath '.\OSCP-OS-XXXXX-Exam-Report.7z'
Inspect every exported PDF page before archiving. Confirm that code is not clipped, screenshots remain readable, captions match the correct target and the archive contains only the required PDF. Required scripts and PoCs belong as text inside that PDF, not as extra archive members. The current guide recommends creating/uploading from Kali and warns of a Windows 11 archive compatibility issue. Compare the local MD5 with the upload site's value, click the final submission control and retain the acknowledgement.
The official Word or LibreOffice template is the reliable baseline. A Markdown/Pandoc pipeline, including Hexdump's report/ generator, is a viable alternative only after a complete dummy export/archive rehearsal; do not install or debug a new report stack during an assessment.
Final quality checks
- Commands are copyable and placeholders/secrets are resolved in the private report.
- Screenshots are legible and show required identity/IP/proof context.
- Every claim is supported by nearby evidence.
- Target order and objective labels match the control panel.
- Exploit modifications and payload-generation steps are documented.
- The final PDF is visually reviewed after export.
- Archive name/format/size and upload hash match current official requirements.
Tooling for this section
| Tool or utility | Purpose | Required context | Baseline | Decisive output | Failure cue |
|---|---|---|---|---|---|
| Plain Markdown/editor | Portable live state and reproduction notes | Private case directory | Six ledgers and transition packets above | Current state and next action can be recovered without memory | Notes contain commands but no interpretation/state |
Nmap -oA and client-native output options | Preserve raw enumeration evidence | Authorized scoped target | Save output beside target/service record | Raw and human-readable result exists | Terminal-only output cannot be reconstructed reliably |
script / PowerShell transcript | Record interactive command sequences | Local shell; avoid recording unrelated secrets | script -q -f evidence/session.txt / Start-Transcript | Timestamped command/output stream | Transcript is not a report and may omit GUI/HTTP state |
| Screenshot utility | Capture required visual proof and decisive GUI/request state | Readable display and private storage | Capture one objective/context per image | Legible proof, IP, identity/context as required | Cropped, unreadable or wrong-host image |
sha256sum / Get-FileHash | Integrity for artifacts and evidence | Local files | Hash original/modified/transferred files | Matching expected digest | A hash does not establish exploit success |
| Official Word/LibreOffice template | Baseline report composition/export | Template and tested local editor | Export dummy report to PDF before assessment | Visually correct PDF | Broken code wrapping/images after export |
7z plus md5sum/Get-FileHash | Package and verify final report | Final reviewed PDF and exact OSID naming | Commands above | One PDF, archive test succeeds, local/upload MD5 match | Wrong name, extra files, password or size over limit |
No new attack tool is required for Block 15. The value comes from disciplined state/evidence handling around the tools already taught.
Sources
- Supplied PEN-200 Chapter 27 pp. 963–1017, especially pp. 963–968 and 1015–1016; Chapter 5 pp. 94–113.
- getSH Home and AD flow, source snapshot
e1f62dd - Current OSCP+ exam guide
- Current OSCP+ reporting requirements
- Hexdump report workflow: optional Markdown/Org → Pandoc/LaTeX → PDF/7z path; use only after local rehearsal.