Chapter 3 — Threat intelligence and OSINT: systems, data and dependencies
Lesson map
Lesson 03 published. Map, example, EX027.
flowchart TD
N0["Learning outcomes"]
N1["3.1 Systems and sources"]
N2["Lab — source dependencies"]
N3["3.2 Reading the result"]
N4["3.3 Data to keep"]
N5["3.4 Settings and supplier dependencies"]
N6["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Worked example"]
EX --> Q["Exercise EX027"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["3.1 Systems and sources"]
N2["Lab — source dependencies"]
N3["3.2 Reading the result"]
N4["3.3 Data to keep"]
N5["3.4 Settings and supplier dependencies"]
N6["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX027"]
[Learning outcomes]
|
v
[3.1 Systems and sources]
|
v
[Lab — source dependencies]
|
v
[3.2 Reading the result]
|
v
[3.3 Data to keep]
|
v
[3.4 Settings and supplier dependencies]
|
v
[Synthesis]
|
v
[Worked example] --> [Exercise EX027]
Learning outcomes
You will (1) list the charity's systems and the logs they offer; (2) catalogue intelligence sources and their dependencies; (3) find single points of failure; (4) choose simple protective settings informed by intelligence.
3.1 Systems and sources
EFBN uses cloud email for staff and volunteer coordinators, an online donation platform, a website, a shared drive and a volunteer sign-up form. All are cloud services; logs live in each provider's admin console. Sam checks which logs exist and for how long: email sign-ins for 30 days, donation platform logins for 90.
Sam's CTI never assumes on-premises collectors he does not have. The provider admin consoles are the only log sources in scope, and unofficial exports to personal drives are banned.
CCC alerts by email, national charity advisories on a web page, donation platform security notices by email, and volunteer reports through a shared form. Each of the four channels needs an owner who can step in if it breaks.
Lab — source dependencies
"""Lab (ch 03): list intelligence sources with dependencies and flag single points of failure (synthetic)."""
sources = [("CCC alerts", "email", ["coordinator inbox"]),
("National charity advisories", "web page", []),
("Donation platform notices", "email", ["coordinator inbox"]),
("Volunteer reports", "shared form", ["form owner Sam"])]
deps = {}
for name, channel, needs in sources:
for d in needs:
deps.setdefault(d, []).append(name)
for d, names in deps.items():
flag = "SINGLE POINT OF FAILURE" if len(names) > 1 or "Sam" in d else "ok"
print(f"{d}: {', '.join(names)} -> {flag}")
print("independent sources:", [n for n, _, needs in sources if not needs])
Run with python3 lab_sources.py. Verified output:
coordinator inbox: CCC alerts, Donation platform notices -> SINGLE POINT OF FAILURE
form owner Sam: Volunteer reports -> SINGLE POINT OF FAILURE
independent sources: ['National charity advisories']
3.2 Reading the result
CCC alerts and donation platform notices both depend on the coordinator inbox — if that mailbox fails or its owner leaves, both stop. Volunteer reports depend on a form Sam alone owns. Only national advisories are independent of any single person or mailbox. The fix: a shared mailbox read by two people and a second form owner.
The two single-point lines that lab_sources printed become checklist items with named deputies, and the shared CCC mailbox and the deputy form owner are checked off before Sam's holiday starts.
3.3 Data to keep
A simple log: date, source, label, what it said, what EFBN did. No volunteer personal data beyond what is needed to follow up; extra personal fields are refused at entry.
The log template makes the TLP label a pick list and will not save a row without one, so GREEN/AMBER mistakes are harder to make. Pick-list labels and banned personal columns keep the action log short enough for the Friday CCC feedback without privacy spills: each row already says what EFBN did.
3.4 Settings and supplier dependencies
Alerts about stolen charity passwords (Valid Accounts, T1078) justify two-step login on email and the donation platform. Alerts about ransomware (T1486) justify version history and a separate backup of the shared drive. Settings follow intelligence, not fashion.
Each MFA or backup change note quotes the ATT&CK id from the alert that triggered it, so an auditor can trace every setting back to the intelligence behind it.
If the donation platform is breached, EFBN depends on the platform's notice; it cannot invent vendor telemetry it was never given. Sam subscribes to the platform's status page and security notices.
The status-page check sits on the same Monday paper checklist as CCC reading, so vendor silence is noticed: a donation platform that has said nothing for weeks shows up the same morning as a gap, not months later.
Worked example
Sam turns on two-step login for the three coordinator accounts and the donation platform admin. A week later CCC reports password-stuffing against charity donation accounts; EFBN's sign-in log shows failed attempts but no success. Sam records the alert, the check and the outcome in the log.
Synthetic case. The attempts are invented.
Errors and limits
Free-tier cloud services may offer few logs; note what cannot be checked.
Exercises
- EX027 — Log windows. How long do email sign-in and donation login logs last at EFBN? Rubric: 3 = 30 and 90 days; 2 = one; 1 = wrong; 0 = none.
- EX028 — Inbox dependency. Which two sources depend on the coordinator inbox? Rubric: 3 = CCC alerts and donation platform notices; 2 = one; 1 = wrong; 0 = none.
- EX029 — Independent source. Which source was independent of any single person or mailbox? Rubric: 3 = national charity advisories; 2 = partial; 1 = wrong; 0 = none.
- EX030 — Removing the weak point. How should the inbox single point of failure be fixed? Rubric: 3 = shared mailbox read by two people; 2 = partial; 1 = vague; 0 = none.
- EX031 — Form owner. What fixes the dependency on Sam owning the form? Rubric: 3 = second owner; 2 = partial; 1 = vague; 0 = none.
- EX032 — Log columns. List the five fields of Sam's simple log. Rubric: 3 = date, source, label, content, action; 2 = three; 1 = one; 0 = none.
- EX033 — Two-step reason. Which technique justifies two-step login? Rubric: 3 = Valid Accounts T1078 (stolen passwords); 2 = name; 1 = T1486; 0 = none.
- EX034 — Ransomware setting. Which settings respond to ransomware intelligence? Rubric: 3 = version history and separate backup; 2 = one; 1 = firewall; 0 = none.
- EX035 — Platform breach. How will EFBN learn of a donation platform breach? Rubric: 3 = platform status page and security notices; 2 = partial; 1 = news only; 0 = none.
- EX036 — Stuffing outcome. What did the sign-in log show after the stuffing alert? Rubric: 3 = failed attempts, no success; 2 = partial; 1 = compromise; 0 = none.
- EX037 — Free-tier gap. What should Sam do when a service offers no useful logs? Rubric: 3 = note it as a gap that cannot be checked; 2 = partial; 1 = assume safe; 0 = none.
- EX038 — Personal data in logs. What personal data belongs in Sam's log? Rubric: 3 = only what is needed to follow up; 2 = partial; 1 = everything; 0 = none.
Synthesis
Know your systems and logs, map source dependencies, remove single points of failure and let intelligence choose your first settings.
Continue studying — chapter 03 of 04
← Chapter 02 (draft) · Course chapter index · Chapter 04 (draft) →