Lesson 3.4

Planning an Investigation

Learning Objectives

  • Fill out a scope sheet and intelligence requirements before starting any investigation
  • Build a collection plan and source checklist that map requirements to sources
  • Keep a pivot log, parking lot, and time budget during an investigation
  • Follow a complete, realistic recon investigation from question to findings
  • Reuse these templates for the labs in this module

How to Use This File

The first half is a set of copy-and-paste templates. The second half is a complete walkthrough showing the templates filled in for a fictional company. Students should copy the templates into their own notes at the start of every lab.

All data in the walkthrough is fictional. IP addresses use the ranges reserved for documentation (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24), so they don’t point at anyone’s real systems.


Part 1: Templates

Template A: Scope Sheet

## Scope Sheet
- **Investigation name:**
- **Requester / client:**
- **Authorization:** (document name, date, who signed)
- **Decision this supports:**
- **Targets in scope:** (organizations, domains, IP ranges, named roles)
- **Explicitly out of scope:** (personal accounts, family members, home addresses, third-party providers, other orgs with similar names)
- **Allowed methods:** [ ] Passive  [ ] Semi-passive  [ ] Active (list techniques)  [ ] Social engineering
- **Prohibited actions:** (e.g., logging in, contacting staff, downloading breach data)
- **OPSEC level:** Low / Medium / High, and why
- **Data handling:** (where notes are stored, who can see them, when they're deleted)
- **Total time budget:**
- **Deadline:**
- **Point of contact for scope questions:**

Template B: Intelligence Requirements

## Intelligence Requirements
| ID | Question | Why it matters (decision) | Done when... | Time box |
|----|----------|---------------------------|--------------|----------|
| R1 |          |                           |              |          |
| R2 |          |                           |              |          |
| R3 |          |                           |              |          |

Tips:
- Write each requirement as a question with a clear answer.
- “Done when” is your stopping rule (e.g., “confirmed by 3 independent examples”).
- 3–6 requirements is plenty for a class lab.

Template C: Collection Plan

## Collection Plan
| Req | Source type | Specific source / query | Passive? | Status | Notes |
|-----|-------------|-------------------------|----------|--------|-------|
| R1  |             |                         |          | Not started / Done / No results | |

Template D: Source Checklist

Tick each source category as you consider it, even if you decide to skip it. (Details for each category are in Module 5 OSINT Sources.)

## Source Checklist
- [ ] Search engines (multiple engines, advanced operators)
- [ ] Organization's own website and documents
- [ ] Terms of service / privacy policy (what's allowed, what's hinted at)
- [ ] Job postings
- [ ] Professional networking and social media (organization-level)
- [ ] Code repositories
- [ ] Domain registration (WHOIS/RDAP)
- [ ] DNS records and passive DNS
- [ ] Certificate Transparency logs
- [ ] Internet scan search engines
- [ ] Web archives
- [ ] Public records and business filings
- [ ] News and press releases
- [ ] Breach notification services (authorized domains only)
- [ ] Images / geospatial (office locations)
- [ ] Other: ______

Template E: Pivot Log

## Pivot Log
| # | From | Method / source / query | To | Confidence | In scope? | Time (UTC) | Evidence file |
|---|------|-------------------------|----|------------|-----------|------------|---------------|
| 1 |      |                         |    |            |           |            |               |

Confidence values: Confirmed / Likely / Possible / Unverified.

Template F: Parking Lot

## Parking Lot (interesting, but not answering a requirement right now)
| # | Lead | Why it might matter | Scope concern? | Decision (pursue / drop / ask client) |
|---|------|---------------------|----------------|---------------------------------------|

Template G: Time Budget Tracker

## Time Budget
| Req | Budget | Used | Status | Reassess note |
|-----|--------|------|--------|---------------|
| R1  | 45 min |      |        |               |
| Total | 4 h  |      |        |               |

Template H: Findings Summary

## Findings
| Req | Finding | Confidence | Supporting pivots | Gaps / next steps |
|-----|---------|------------|-------------------|-------------------|

The full report format belongs to Module 7 Verification & Reporting. The findings table is the bridge between your working notes and that report.


Part 2: Walkthrough — External Exposure Review of Company X

Background (fictional)

Company X is a 200-person regional logistics company. Its domain is companyx.com. Its IT director has hired your team for an external exposure review: find out what an attacker could learn about the company from public sources before a planned authorized phishing simulation and external penetration test next month.

Step 1: Scope Sheet (filled in)

## Scope Sheet
- **Investigation name:** Company X External Exposure Review
- **Requester / client:** IT Director, Company X
- **Authorization:** Signed statement of work + rules of engagement, dated (fictional)
- **Decision this supports:** Design of next month's phishing simulation and external pentest; exposure-reduction recommendations
- **Targets in scope:** Company X (the legal entity), companyx.com and its subdomains, IP range 198.51.100.0/24 (confirmed by client), employees' professional presence
- **Explicitly out of scope:** employees' personal social media, family members, home addresses, third-party SaaS providers' systems, "Company X Holdings" (unrelated company with a similar name)
- **Allowed methods:** [x] Passive  [x] Semi-passive  [ ] Active  [ ] Social engineering (next month, separate RoE)
- **Prohibited actions:** logging into anything, contacting staff, downloading breach data, using any credentials found
- **OPSEC level:** Low-medium (client knows; IT staff don't, to keep the simulation realistic)
- **Data handling:** encrypted team folder; deleted 30 days after report delivery
- **Total time budget:** 6 hours
- **Point of contact for scope questions:** IT Director

Notice the “similar name” exclusion. Mixing up organizations is one of the most common OSINT errors.

Step 2: Intelligence Requirements

ID Question Why it matters Done when… Time box
R1 What is Company X’s email address format? Needed for realistic phishing and to assess exposure Confirmed by 3 independent examples 45 min
R2 What internet-facing hosts and login portals exist? Target list for next month’s pentest; attack surface CT logs, passive DNS, and scan DB checked; list reconciled with client’s IP range 90 min
R3 What technologies does Company X use (email, VPN, security tools)? Pretext realism and pentest focus Each technology confirmed by 2 sources 60 min
R4 Which roles and departments are publicly identifiable? Phishing target selection; awareness training Department counts established from professional sources 60 min
R5 What sensitive details are exposed unintentionally (documents, code, metadata)? Direct exposure-reduction recommendations Site documents and public code searched 60 min

That’s 5.25 hours, leaving 45 minutes for processing and writing findings.

Step 3: Collection Plan (excerpt)

Req Source type Specific source / query Passive? Status
R1 Org website Contact and press pages Semi-passive (use archive copy) Done
R1 Search engine "@companyx.com" Passive Done
R1 Document metadata site:companyx.com filetype:pdf, then metadata review Semi-passive (downloads from site) Done
R2 CT logs Search for %.companyx.com Passive Done
R2 Passive DNS Historical records for companyx.com Passive Done
R2 Scan search engine Search the client’s IP range Passive Done
R3 DNS MX and TXT records Semi-passive Done
R3 Job postings Company careers page, job boards Passive Done
R4 Professional networking Company page employee list Passive Done
R5 Code repositories Search for companyx.com in public code Passive Done

Step 4: Collection and Pivot Log (excerpt)

# From Method / source To Confidence In scope? Time (UTC) Evidence
1 companyx.com Archived contact page info@, press@ addresses Confirmed Yes 13:05 ev-001.png
2 companyx.com Search "@companyx.com" maria.lopez@companyx.com in a trade association newsletter Confirmed Yes 13:12 ev-002.png
3 companyx.com PDF metadata (annual safety report) Author “Tom Nguyen”, creator user tnguyen Confirmed Yes 13:20 ev-003.txt
4 Pivots 2, 3 Comparison Email format first.last@; internal username format first-initial + last Email: Confirmed (with #6); username: Likely Yes 13:30 —
5 companyx.com CT log search 14 subdomains incl. vpn., mail., sso., dev-portal. Confirmed (certs issued) Yes 13:48 ev-004.csv
6 Careers page Job posting contact hr.jobs@ and sam.patel@companyx.com Confirmed Yes 14:02 ev-005.png
7 dev-portal.companyx.com Passive DNS Resolves to 203.0.113.40 — outside the client’s confirmed range Confirmed Unclear — ask client 14:10 ev-006.png
8 198.51.100.0/24 Scan search engine 3 hosts with services seen: web, VPN portal, remote desktop Likely (data 5 weeks old) Yes 14:25 ev-007.png
9 companyx.com MX + TXT records Cloud email provider; verification tokens for a project-tracking SaaS and an e-signature SaaS Confirmed Yes 14:40 ev-008.txt
10 Job posting “Network Engineer” Careers page Names a specific firewall vendor and SIEM product Likely (1 source) Yes 14:55 ev-009.png
11 Pivot 10 IT manager’s professional profile skills Same firewall vendor Confirmed (2 sources) Yes 15:05 ev-010.png
12 Professional networking Company employee list 87 profiles; IT 6, Finance 9, HR 4, Operations 51, Other 17 Likely (profiles may be stale) Yes 15:40 ev-011.csv
13 “companyx.com” Public code search Config file in a former contractor’s repo containing dev-portal.companyx.com and a hardcoded API key Confirmed Yes (org data); key not used 16:20 ev-012.png (key redacted)

Step 5: Parking Lot

# Lead Why it might matter Scope concern? Decision
P1 An employee’s personal photo account shows their badge Badge design useful for physical pretext Personal account: out of scope Drop; mention generically in awareness recommendations
P2 dev-portal hosted outside client range (pivot 7) Could be a cloud host or a third party Might not be client-owned Ask client before including in pentest target list
P3 “Company X Holdings” appears in several results Similar name Different organization Drop; note in report to avoid confusion

Step 6: Processing

  • Merged subdomains from CT logs and passive DNS: 14 + 5 → 16 unique
  • Normalized employee titles into departments
  • Redacted the API key in the evidence screenshot and noted it was not tested or used
  • Tagged every item with its requirement

Step 7: Analysis — Findings

Req Finding Confidence Supporting pivots Gaps / next steps
R1 Email format is first.last@companyx.com Confirmed 2, 4, 6 —
R1 Internal usernames likely follow first-initial + last Likely 3, 4 Only one example; mention as a hypothesis
R2 16 subdomains, including VPN, SSO, and a developer portal Confirmed 5, 7 Client to confirm ownership of dev-portal host
R2 A remote desktop service appears exposed on one host Likely 8 Data is 5 weeks old; confirm during authorized active testing
R3 Cloud email platform; project-tracking and e-signature SaaS in use Confirmed 9 —
R3 Specific firewall vendor in use Confirmed 10, 11 SIEM product only in one source (Possible)
R4 ~87 employees identifiable, including 6 in IT Likely 12 Professional profiles can be outdated
R5 Hardcoded API key for the developer portal in a former contractor’s public repo Confirmed 13 Client should revoke the key immediately
R5 PDF metadata leaks author names and internal usernames Confirmed 3 Recommend metadata scrubbing

Analytic judgments (what it means for the decision):
- Phishing pretexts using an e-signature request or project-tracking notification would look realistic, because both services are confirmed in use.
- The exposed API key is the highest-priority finding and should be reported to the client immediately, not held until the final report.
- The remote desktop exposure and dev-portal ownership need confirmation before next month’s active testing.

Step 8: Dissemination

  • Immediate notice to the IT Director about the exposed API key (same day)
  • Report following the structure in Module 7: executive summary, scope and method, findings with confidence, risk, recommendations
  • Handling: employee names summarized as counts by department in the main report; full list in a restricted appendix only because the phishing simulation needs it

Step 9: Feedback

The IT Director confirms dev-portal is a legitimate cloud host they own and adds it to next month’s scope. They ask a new question: “Are any of our IT staff credentials in breach data?” This becomes a new requirement (R6) with its own authorization check and data handling rules (see Module 2 and Module 6).

Time Budget (final)

Req Budget Used Status
R1 45 min 30 min Done early
R2 90 min 100 min Over by 10; reassessed at 90 and continued to resolve pivot 7
R3 60 min 45 min Done
R4 60 min 50 min Done
R5 60 min 70 min Over by 10; stopped after the API key finding
Processing + findings 45 min 55 min Done
Total 6 h 5 h 50 min Within budget

Lessons from the Walkthrough

  • Scope decisions happen all the time, not just at the start (pivots 7 and 13, parking lot P1–P3).
  • Similar names are a trap; write exclusions into the scope sheet.
  • Some findings can’t wait for the final report.
  • Found credentials are reported, never used.
  • Stale data is labeled as such and handed to active testing for confirmation.
  • Minimize personal data in deliverables: counts instead of names where possible.

Key Terms

  • Scope sheet: a one-page summary of what’s authorized, what’s excluded, and how data is handled
  • Statement of work (SOW): the contract document describing the engagement
  • Rules of engagement (RoE): the specific rules for what testers may do and when
  • External exposure review: an assessment of what an organization reveals to the internet
  • Documentation IP ranges: address blocks reserved for examples (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24)
  • Analytic judgment: a conclusion about what findings mean for the decision

Key Takeaways

  • Fill out a scope sheet before you open a browser
  • Every requirement needs a “done when” stopping rule and a time box
  • Map each requirement to sources in a collection plan
  • Log every pivot with confidence and a scope decision
  • Park interesting-but-off-target leads instead of chasing them
  • Critical findings (like exposed keys) get reported right away
  • Findings tables bridge working notes and the final report

References

Free to use, copy, change and teach. Security For the Folks dedicates this course to the public domain under CC0 1.0 Universal: no permission or credit needed. Quoted material and the sources it links to belong to their own authors.