The previous five lessons have built the module's complete armoury: the map of the discipline, the catalogue of technical attacks, social engineering, protection measures and access control. Now comes the reality check. This lesson analyses incidents that really happened, are public and are documented, and puts them through a reproducible method of analysis. We do not study them out of morbid curiosity or because of their size: we study them because in every one of them controls you already know about failed, and because the same causes recur with a regularity that is almost comic — until it is your company's turn. You will see Target, WannaCry, Equifax, SolarWinds, Colonial Pipeline and a case of misconfigured cloud storage; for each one, a table of control failure, the control that would have prevented it and the lesson applicable to Nimbus. And we will close with an hour-by-hour reconstruction of a fictitious but plausible incident at Nimbus Reservas, in order to answer the only question that matters: what would have changed the outcome.

Contents

  1. The method: how an incident is analysed
  2. Target (2013): the supplier as the way in
  3. WannaCry (2017): the known, unpatched vulnerability
  4. Equifax (2017): an outstanding patch and blind detection
  5. SolarWinds (2020): the supply chain and code signing
  6. Colonial Pipeline (2021): a VPN without MFA and a decision to pay
  7. A leak through misconfigured cloud storage
  8. The patterns that recur in all of them
  9. The Nimbus case: an hour-by-hour ransomware reconstruction
  10. Closing the module

  1. The method: how an incident is analysed

Without a method, incident analysis degenerates into anecdote ("they got a virus") or moral judgement ("they were careless"). Neither of those improves anybody's security. The following method has six steps and applies equally to a public case and to one of your own.

Step Question Why it matters
1. Timeline What happened and when? With dates: intrusion, detection, containment, disclosure The time between intrusion and detection is the metric that best predicts the damage
2. Initial vector How did they get in? It is where the chain breaks most cheaply (02-01)
3. Movement and escalation How did they get from the point of entry to the objective? It reveals the failures of segmentation and least privilege
4. Impact What was lost: data, money, availability, trust? It lets you size a reasonable investment in prevention
5. Control failures What control was missing, or existed but did not work? The central step. It distinguishes "we did not have it" from "we had it and never looked at it"
6. Lessons What changes in my organisation from tomorrow? Without this step, the analysis is entertainment

Three rules that make the analysis useful:

  1. Look for causes, not culprits. There is almost never a villain. There is an administrator with 400 alerts a day, an impossible delivery deadline or a procedure nobody has reviewed in three years. An analysis that ends by pointing at a person guarantees that next time nobody reports anything — exactly the cultural rule of 02-03.
  2. Distinguish the technical failure from the organisational one. In almost all the cases that follow, the technical control existed. What failed was the process around it: who looks at the alert, who applies the patch, who renews the certificate. Big incidents are rarely hard technical problems.
  3. Always ask "would it happen to us?" honestly. The natural reflex is to think "that happened because they were huge and careless". Almost always, the translation to an SME is direct and easier to exploit.

Note: the following cases are based on public information — official reports, hearings, researchers' publications and the companies' own statements. The figures and dates are the commonly accepted ones, but any analysis of somebody else's real incident must be taken with the caveat that the complete information is rarely public. The purpose here is educational, not forensic or accusatory.


  1. Target (2013): the supplier as the way in

Timeline

Approximate date Event
Sep-Nov 2013 Compromise of an HVAC supplier with access to Target's network
Nov 2013 Installation of malicious software on the point-of-sale terminals
Nov-Dec 2013 Capture of card data during the Christmas trading period
Nov-Dec 2013 The security tools generated alerts. They were not acted upon
Dec 2013 External warning (law enforcement) and public confirmation

Analysis

  • Initial vector: credentials belonging to an external supplier (air conditioning services) that had access to the corporate network for billing and remote monitoring tasks.
  • Movement: from that access, the network where the point-of-sale terminals operated was reached. The network was not adequately segmented: an air conditioning supplier should never be able to reach the payment environment.
  • Impact: tens of millions of card records and personal data records; direct and indirect costs in the hundreds of millions; the resignation of the chief executive and of the head of systems.
Control failure Control that would have prevented it Lesson for Nimbus
A supplier with broad, permanent access to the corporate network Just-in-time access, named, scoped to the specific system, with MFA (02-05) A-19 is exactly this case. The systems consultancy today has permanent, shared administrative access
No segmentation between the corporate network and the payment environment Segmentation with control between zones (02-04) Nimbus's data zone must be unreachable from the office and from third-party access
Alerts generated and not attended to Few alerts, with an owner and a procedure; a defined on-call rota (02-04, 05-02) Nimbus has the earlier problem: it does not even generate the alerts. When it does, it will have to decide who looks at them
Detection by a third party, not its own Centralised logging and its own detection The worst scenario is finding out from a customer or from the press

The fact that makes Target the most cited case in the history of corporate security: the tools worked. They detected the malicious activity and raised the alarm. The failure was not technological, it was one of process: nobody with decision-making authority attended to those alerts in time. It is the perfect illustration of the NIST CSF imbalance you diagnosed in 02-01: plenty of Protect, little Detect understood as the organisational capacity to respond to what has been detected.


  1. WannaCry (2017): the known, unpatched vulnerability

Timeline

Date Event
March 2017 The vendor publishes the patch for the vulnerability in the file sharing protocol (SMB)
April 2017 The corresponding exploit is made public
12 May 2017 WannaCry spreads worldwide in hours: more than 200,000 machines in 150 countries
12 May 2017 (afternoon) A researcher registers a domain present in the code — the "kill switch" — and halts the spread of that variant
Following days Variants without a kill switch appear

Analysis

  • Initial vector: direct exploitation of an SMB vulnerability on systems that were exposed or reachable from a compromised network. The patch had been available for two months.
  • Movement: automatic, worm-like propagation, with no human intervention: each infected machine scanned and infected others. That is what explains the speed.
  • Impact: services paralysed in multiple countries. The best-documented case is that of the British public health system: thousands of appointments and operations cancelled, ambulances diverted, diagnostic equipment out of action. The damage was not the ransom: it was the operational shutdown.
Control failure Control that would have prevented it Lesson for Nimbus
A critical patch left unapplied for two months Patch management with a committed deadline (7 days for critical ones) and measurement (02-04) Nimbus today has no committed deadline and no way of knowing which version each machine has
An obsolete protocol enabled without any need Surface reduction: switch off what is not used (01-04) Nimbus's http.server, node_exporter and snmpd are the same kind of finding
A flat network that allowed the propagation Segmentation (02-04) A compromised laptop in the Valencia office must not be able to talk to the data zone
Out-of-support systems in critical use Inventory with life cycle and a replacement plan (01-04) The forgotten NAS from the 01-04 exercise is exactly this
Insufficient or untested backups Immutable backups and a restore test (02-04) It is measure #2 of the 30-day plan

The uncomfortable lesson of WannaCry: there was no novel technique, no 0-day at the moment of the attack, no sophistication. It was a known vulnerability, with a patch available, left unapplied. The least glamorous measure in the 02-04 catalogue — patching — would have neutralised the biggest mass-propagation incident of recent history.

And a clarification about the kill switch that is usually told badly: it was not an organised defence or anybody's plan. It was a researcher who analysed the code, saw a lookup of an unregistered domain and registered it for a few dollars. It stopped that variant. Trusting your company's survival to somebody having that idea in time is not a strategy.


  1. Equifax (2017): an outstanding patch and blind detection

Timeline

Date Event
March 2017 The critical Apache Struts vulnerability and its patch are published
March 2017 The organisation circulates the instruction to patch internally. The affected system is not patched: the verification scan does not detect it
May 2017 The attackers exploit the vulnerability and get in
May-July 2017 76 days of access: they discover credentials in the clear, reach dozens of databases and exfiltrate data in small fragments
29 July 2017 A traffic inspection certificate that had been expired for ~10 months is renewed. That same day the anomalous traffic is detected
Sept 2017 Public disclosure

Analysis

  • Initial vector: a critical vulnerability known and with a patch available for two months in a web application reachable from the Internet.
  • Movement: once inside, the attackers found credentials stored in the clear that gave them access to dozens of databases unrelated to the initially compromised system. A total absence of segmentation and of least privilege.
  • The blind detection: the device that inspected encrypted outbound traffic needed a valid certificate. That certificate had been expired for around ten months, so the inspection was not working. The attackers exfiltrated for 76 days through a channel the organisation believed it was watching.
  • Impact: sensitive personal data of almost 150 million people; fines and settlements in the hundreds of millions; resignations at the top.
Control failure Control that would have prevented it Lesson for Nimbus
A critical patch not applied on an exposed system A reliable inventory + verified patch management, not merely instructed "We gave the instruction" is not a control. The control is checking that it was done, and the inventory (01-04) is what makes that possible
A verification scan that did not cover the affected system Scan coverage cross-checked against the inventory (05-01) If the scanner cannot see an asset, that asset does not exist for you but it does for the attacker
Credentials in the clear inside the network A secrets manager; no credentials in files (02-04) The leaked .env of the chained attack of 02-02 is the same pattern
No segmentation: one web system gave access to dozens of databases Segmentation and least privilege (01-03, 02-04) The nimbus_api role with no DELETE and no access to payroll is exactly this defence
A detection control expired and unsupervised Supervision of the state of the controls themselves; certificate expiry alerts The most transferable lesson of the case: a control that fails silently is worse than not having it, because it produces false confidence
76 days of exfiltration with no detection An alert on anomalous outbound volume (02-04) The mass export alert in the 90-day plan

The lesson that makes Equifax the most instructive case of all: the organisation had the detection control. It had bought it, installed it and configured it. But it had not worked for ten months and nobody knew. Hence the rule worth engraving:

Every control needs a control that verifies it is still working. Certificates that expire, agents that stop reporting, backups that start failing, alerts that were disabled "temporarily" a year ago. A defence degrades silently, and silence looks a great deal like security.

Immediate practical application for Nimbus: a monthly check that answers five questions: are all the machines reporting to the EDR? are all the log sources still arriving? did the last backup complete and was it restored? does any certificate expire within 30 days? have the five alerts from 02-04 ever fired (if never, perhaps they are broken)?


  1. SolarWinds (2020): the supply chain and code signing

Timeline

Date Event
~2019 The attackers compromise the vendor's software build environment
March-June 2020 Legitimately signed updates containing malicious code are distributed
Up to 18,000 organisations Install the compromised update; a small subset is targeted for subsequent exploitation
December 2020 A security company detects the compromise in its own systems and makes it public

Analysis

  • Initial vector: compromise of the vendor's build process. The malicious code was inserted before signing, so the update went out signed and verified by the legitimate vendor.
  • Why it was so hard to detect: every usual control passed. The file came from the right supplier, through the right channel, with the right signature. The software behaved normally for weeks before activating, and its command and control traffic imitated the product's legitimate protocol.
  • Impact: access to the networks of public bodies and large companies; an investigation and remediation cost that is hard to quantify, and a lasting impact on trust in the automatic update model.
Control failure Control that would have prevented or limited it Lesson for Nimbus
A compromised build environment Isolation and hardening of CI/CD; reproducible, verifiable builds Nimbus's CI has access to production: it is a high-value target and must be treated as one
Code signing certified origin, not the absence of malice Verification of behaviour, not just of origin A valid signature says who made it, not whether it is safe
Management software with very high privileges across the whole network Least privilege for administration software too What permissions does each tool Nimbus installs actually have?
No egress filtering Control of outbound traffic: only the necessary destinations (02-04) The command and control channel got out unobstructed
No component inventory SBOM so you can answer "do we use it?" in minutes (02-04) It is one of the steps in the CI yaml of 02-04

The honest conclusion, and the reason this case is special: against an adversary with state-level resources who compromises the build chain of a legitimate supplier, an SME like Nimbus has no realistic preventive defence. Pretending otherwise would be dishonest. What it can do, and it is exactly the "assume breach" approach of 01-03:

  1. Limit the privileges of all third-party software. If a monitoring tool does not need to be a domain administrator, it should not be one.
  2. Control outbound traffic. A command and control channel needs to get out. Egress filtering with an allowlist is the defence that is genuinely within reach.
  3. Detect behaviour, not just origin: a known tool doing something it never used to do.
  4. Maintain an SBOM so you can answer quickly when the next case is published.
  5. Reduce the number of third parties with privileged access. Each one is an additional supply chain you do not control.

  1. Colonial Pipeline (2021): a VPN without MFA and a decision to pay

Timeline

Date Event
Before May 2021 The password of a disused VPN account appears in a dump of leaked credentials. The account had no MFA
6-7 May 2021 Access using that credential; ransomware deployment with prior exfiltration
7 May 2021 The company voluntarily halts the pipeline's operation as a precaution, given the uncertainty about the scope
8 May 2021 A ransom of several million is paid in cryptocurrency
Following days The decryption tool turns out to be so slow that the company falls back on its own backups
Weeks later The authorities recover a significant part of the payment

Analysis

  • Initial vector: a single credential, from an old VPN account that was still active, with a reused password that had appeared in somebody else's breach, with no second factor. No exploit, no 0-day, no sophisticated phishing.
  • Movement: from that access to the corporate network, the attacker exfiltrated data and deployed ransomware.
  • The most instructive detail: the industrial system that moves the fuel was not encrypted. The shutdown was a business decision: unable to determine with certainty the scope of the compromise or to bill correctly, the company chose to halt operations. In other words, the operational impact was caused by uncertainty, not by the encryption.
  • Impact: fuel shortages on the east coast of the United States, panic buying, a regional emergency declaration.
Control failure Control that would have prevented it Lesson for Nimbus
A VPN account without MFA Mandatory MFA on all remote access, no exceptions (02-05) It is measure #1 of the 30-day plan of 02-04
A disused account still active Recertification and offboarding of orphaned accounts (02-05) The unused-access query of 02-05
A reused password that had appeared in a breach Checking against leaked lists; a password manager (02-05) It applies to all 38 people at Nimbus
Inability to bound the scope quickly Segmentation and logging that lets you answer "how far did they get?" (02-04) Without logging, the honest answer is "we don't know", and that answer forces a shutdown
No rehearsed response plan An incident response plan (04-05) Nimbus today has nobody to call at three in the morning

On the decision to pay, which is what gets debated most and understood worst:

  • Paying did not restore the service. The decryption tool provided was so slow that the real recovery was done with the company's own backups. That is a frequent outcome: decryption tends to be slow, partial and unreliable.
  • Paying does not solve the exfiltration. The data had already left. The second extortion is not cancelled by the first payment.
  • Paying funds the business model and marks the organisation as a payer, which increases the probability of another attack.
  • And even so, there are situations in which an organisation with no valid backups faces going out of business. That is why the only decision taken before the incident, and the one that makes the discussion unnecessary, is to have tested immutable backups.

Legal note: paying ransoms has legal, tax, insurance and potential sanctions implications that vary with the jurisdiction and with the identity of the attacking group. In a real case, the decision must be taken with legal advice and in coordination with the competent authorities. This course does not recommend paying; it describes the case for educational purposes.

The structural lesson for Nimbus: an enormous company, with budget and with critical infrastructure, was brought to a halt by a reused password on a forgotten account. If that is the vector, size and budget do not protect you. What protects you is identity hygiene, which is free.


  1. A leak through misconfigured cloud storage

This case is not a particular company: it is a pattern that has recurred hundreds of times over the last decade, in companies of every size. We treat it as a case because it is, by some distance, the most likely one for Nimbus.

Typical timeline

Moment Event
Day 0 Somebody creates a bucket for "a test" or a one-off export and marks it public so as not to fight with the permissions
Days 1-N Real data is copied into the bucket: an export, a dump, a set of attachments
Months The bucket is forgotten. Nobody inventories it, nobody reviews it
One day A third party's automated scanner finds it: there are tools that permanently crawl for public buckets
Afterwards The data appears for sale, or a researcher warns the company, or the press publishes it

Analysis

  • Initial vector: none. There is no intrusion, no exploitation, no stolen credential. The data was public and somebody downloaded it. Technically, it is not even an attack.
  • Why it recurs so much: the public permission solves an immediate problem ("my access doesn't work") and the cost shows up months later; the person who configured it is usually not the one who suffers the consequences; and there is no alarm signal at all — the bucket works perfectly.
  • Typical impact: complete exposure of the data held, with no limit and no traceability of who downloaded it. In breach notification terms, it is the worst scenario: you have to assume full access by unknown parties.
Control failure Control that would have prevented it Lesson for Nimbus
A bucket created with no restrictive access policy Secure by default: account-level public access block, which makes it impossible to mark anything public (01-03) A five-minute setting on account A-05 removes the entire class of risk
Real data in a temporary environment Minimisation and pseudonymised data outside production (02-04) The "to be reviewed" classification of the A-22 pre-production environment is exactly this risk
No storage inventory Inventory and a quarterly review of what is left over (01-04) The most cost-effective security hour of the quarter
No automatic configuration check Automated review in CI that fails on a public resource (02-04) It is already in the 90-day plan
No object access logging Storage access logging Without it, you cannot know who downloaded what, and you have to assume the worst

The direct connection with Nimbus is not hypothetical: the 01-04 inventory already turned up Sara's payroll sheet with an "anyone with the link can view" setting. It is the same phenomenon, in another service and on a smaller scale. A public link is a publication: links get forwarded, indexed and leaked.

And the scenario that ought to keep you awake: if somebody exports a dump of the Nimbus database to debug a problem and leaves it in an accessible bucket, the exposure is not a few e-mail addresses, it is the complete diaries of forty clinics, with the sensitivity load you already know from the context rule of 01-04.

Note on legal implications: an exposure of this kind involving data that reveals health information triggers specific obligations of notification and of risk assessment for those affected, with demanding deadlines. It must be handled with the compliance owner and legal advice; it is covered in 06-03 and 04-05.


  1. The patterns that recur in all of them

Ordered by frequency across the six cases analysed. None is exotic. None requires an expensive product.

Pattern Cases where it appears Translation to Nimbus
1. A known, unpatched vulnerability WannaCry, Equifax A committed 7-day deadline for critical patches and a way of verifying it was applied
2. Absence of segmentation Target, WannaCry, Equifax, Colonial Closed data zone; isolated guest wifi; bounded third parties
3. Weak identity: no MFA, orphaned accounts, reused credentials Colonial, Target, Equifax MFA on all administrative accounts; quarterly recertification
4. Third parties with excessive access Target, SolarWinds, Colonial A-19: the consultancy, with named, just-in-time access
5. Late or blind detection Target, Equifax, SolarWinds Centralised logging and five alerts somebody attends to
6. Controls that fail silently Equifax (expired certificate), Target (ignored alerts) A monthly check that the controls are still alive
7. Badly stored secrets Equifax, and Nimbus's own case in 02-02 A secrets manager; scanning in CI; rotate before you investigate
8. Insufficient or untested backups WannaCry, Colonial Immutable backups in a separate account; a timed quarterly restore
9. Improvised crisis management Target, Equifax, Colonial A written response plan (04-05) and prepared communications
10. Size does not protect you All of them The causes are identical at SME scale, and there they are easier to fix

The three cross-cutting conclusions:

  1. Almost no big incident starts with a sophisticated technique. They start with an outstanding patch, a forgotten account, a supplier with too much access or a badly set permission. Sophistication, when it appears, comes after getting in.
  2. In almost every case, the control existed and did not work. Target had alerts; Equifax had traffic inspection; Colonial had a VPN. What was missing was the process that keeps a control a control: somebody who looks, somebody who verifies, somebody who renews.
  3. Time to detection is the variable that most determines the damage. 76 days at Equifax, weeks at Target, months at SolarWinds. The NIST CSF Detect function — Nimbus's weakest according to your own diagnosis in 02-01 — is what separates an incident from a catastrophe.

  1. The Nimbus case: an hour-by-hour ransomware reconstruction

Fiction, but built out of the patterns above and out of the real findings of the Nimbus inventory. It is what would happen if nothing you have learned in this module were applied.

9.1 Background

  • The systems consultancy (A-19) has permanent administrative remote access, with shared accounts between its engineers and no MFA.
  • The backups (A-03) are in the same cloud account (A-05) as production and are reachable with the same administration credentials.
  • Logging exists, but nobody reviews it. There are no alerts configured.
  • Nimbus has never tested a full restore.

9.2 Timeline

flowchart TB
    D0["DAY -45 - The consultancy suffers a breach.\nCustomer access credentials are leaked.\nNimbus never finds out: nobody tells it"]
    D0 --> D1["DAY 0 - 22:14 - Access with the consultancy's\nshared account. No MFA. Nobody notices:\nnight-time access by the consultancy is normal"]
    D1 --> D2["DAY 1-3 - Internal reconnaissance.\nThe infrastructure is mapped, the backups\nand the database are located"]
    D2 --> D3["DAY 4 - 03:40 - On the application server a .env\nfile is found with the cloud provider\ncredential (A-05)"]
    D3 --> D4["DAY 5-12 - Escalation. With A-05 they gain\ncontrol of buckets, database, backups\nand the whole infrastructure"]
    D4 --> D5["DAY 13-19 - EXFILTRATION.\n1.2 TB: the full database, the attachments\nbucket with scanned reports, source code.\nSlow egress, in working hours, drawing no attention"]
    D5 --> D6["DAY 20 - 02:10 - SABOTAGE OF RECOVERY.\nDeletion of backups, snapshots and replicas.\nThis is the point of no return"]
    D6 --> D7["DAY 20 - 04:30 - Encryption of volumes,\ndatabase and buckets.\nRansom note in the console"]
    D7 --> D8["DAY 20 - 08:05 - Ruben takes calls from\nclinics: 'we cannot open the diary'.\nDETECTION BEGINS, 20 DAYS LATE"]

9.3 The first 72 hours of the crisis

Moment What happens What is missing
Day 20, 08:05 Rubén takes the third call from a clinic. He thinks it is a performance issue Nobody has yet associated the symptoms with a security incident
08:40 Lucía logs into the console and finds the ransom note. The disaster is confirmed
09:00 Marta calls the team together. Nobody knows what to do first: disconnect? tell customers? call whom? There is no response plan (04-05)
09:30 A restore is attempted. The backups have been deleted. The last usable backup is on an external disk from 5 weeks ago, unverified Backups neither immutable nor separated
11:00 The consultancy is contacted. It admits having suffered a breach a month and a half ago. It never told its customers Contract with no notification clause (04-04)
13:00 Marta asks which data has left. There is no way to answer: there is no bucket access logging and the database logs rotated after 7 days No logging and insufficient retention
Day 21 40 clinics have been without a diary for 24 hours. They start working on paper. Two customers announce they are considering terminating The impact is a business one, not a technical one
Day 22 The attackers send samples of patient data and give 72 hours before publishing Double extortion (02-02)
Day 22 Marta discovers she has to notify the breach and does not know with what scope, because it is impossible to determine what left The uncertainty forces her to assume the worst case (06-03)

9.4 Analysis using the method from section 1

Step Analysis
1. Timeline 45 days since the supplier's breach; 20 days inside Nimbus; detection by the customers, not by Nimbus; recovery measured in weeks
2. Initial vector A shared third-party credential with no MFA, leaked in the third party's own breach
3. Movement A credential in a .env file → cloud account A-05 → total control. A single hop, because there was no segmentation of privilege
4. Impact 40 clinics halted; 1.2 TB exfiltrated including data revealing health information; backups destroyed; breach notification with an undetermined scope; loss of customers and of reputation (A-20)
5. Control failures See the table below
6. Lessons See section 9.5
# Control failure Control that would have prevented it Pattern from section 8
1 Permanent, shared third-party access with no MFA Named accounts + MFA + just-in-time with expiry (02-05) 3, 4
2 Nimbus does not find out about its supplier's breach A contractual incident notification clause (04-04) 4
3 The A-05 credential in a .env file on the server A secrets manager; short-lived credentials; scanning in CI (02-04) 7
4 A single credential gives total control of everything Separation of accounts, least privilege, segmentation (01-03, 02-04) 2
5 Backups in the same account and deletable Immutable backups in a separate account (02-04) 8
6 20 days without detection; 1.2 TB exfiltrated unnoticed Centralised logging + an outbound volume alert (02-04) 5
7 Night-time third-party access raises no alert at all An alert on administrative use outside the agreed window (02-04) 5
8 Logs rotated after 7 days: impossible to determine the scope 90 days hot retention, 1 year cold 5, 6
9 A restore never tested A timed quarterly test (02-04) 8
10 No response plan and no defined contacts A one-page plan with roles and phone numbers (04-05) 9

9.5 What would have changed the outcome

This is the most valuable exercise in the whole module: it is not enough to list failures, you have to rank which ones matter.

Control Would it have prevented the entry? Would it have limited the damage? Cost
MFA on the consultancy's access Yes. The leaked credential would not have been enough None
Just-in-time access with expiry Yes. The access did not exist at 22:14 on an ordinary day Low
Named accounts No, but it would have allowed much earlier detection and scoping Yes None
The A-05 secret in a manager, not in .env No Yes, decisively. With no escalation to A-05, the compromise stays on one server Low
Immutable backups in a separate account No Yes, decisively. Recovery in hours instead of weeks; destruction impossible Low
An alert on anomalous outbound volume No Yes. 1.2 TB in 7 days is impossible to hide from a trivial alert Low
An alert on administrative access outside the window No Yes. Detection on day 0, not on day 20 None
90-day log retention No Yes, in order to determine the scope and be able to notify accurately Low
A written response plan No Yes. It reduces the chaos of the first 72 hours None
A notification clause with the supplier No Yes. 45 days of advance warning None

The three conclusions:

  1. Two controls of zero or low cost — MFA and just-in-time access for the third party — would have prevented the incident entirely. They would not have mitigated it: they would have stopped it.
  2. Two low-cost controls — the secret in a manager and immutable backups — would have turned a catastrophe into a manageable incident. With the secret protected, the attacker stays on one server. With immutable backups, Nimbus restores in hours and the ransom loses all its leverage.
  3. None of the ten controls requires buying a security product. They are all in the 30 and 90-day plan of 02-04. The incident does not happen for lack of budget: it happens for lack of decision.

And the alternative scenario, to see it in the positive. With the measures of 02-04 and 02-05 applied, the story would be this: day 0, 22:14 — an access attempt with the consultancy's credential; MFA fails; an alert is raised for a third-party access attempt outside the agreed window; Lucía sees it the next morning, calls the consultancy, discovers its breach, revokes the access and rotates the credentials. Total duration of the incident: one morning. Impact: zero.


  1. Closing the module

flowchart LR
    L1["02-01\nScope, frameworks\nand the attack cycle"] --> L2["02-02\nTechnical attacks\nby phase"]
    L2 --> L3["02-03\nSocial engineering\nand phishing"]
    L3 --> L4["02-04\nProtection\nmeasures"]
    L4 --> L5["02-05\nIdentity and\naccess control"]
    L5 --> L6["02-06\nReal cases:\nwhat always fails"]
    L6 --> M3["MODULE 3\nCryptography:\nthe mechanism that\nunderpins the defences"]

You have worked through the whole conflict: who attacks, how, through where, what you defend yourself with and what happens when you do not. And the real cases have closed the circle by showing that the concepts of this course are not theory: they are exactly the controls that were missing in every one of those headlines.


Common Mistakes and Tips

Common mistakes:

  • Reading the cases as other people's stories. "They were gigantic and careless" is the mental mechanism that prevents learning. The translation to an SME is direct and almost always easier to exploit.
  • Stopping at the initial vector. The vector explains how they got in; the failures of segmentation, privilege and detection explain why the damage was enormous.
  • Looking for culprits. An analysis that ends on a person changes nothing and guarantees that next time nobody reports anything.
  • Confusing "we had the control" with "the control was working". Equifax had traffic inspection. It had been blind for ten months.
  • Believing an antivirus would have stopped WannaCry. What would have stopped it was the patch published two months earlier.
  • Thinking that paying the ransom resolves the incident. It does not return the exfiltrated data, decryption tends to be slow and partial, and it marks the organisation as a payer.
  • Treating the supplier's breach as the supplier's problem. The data and the customers are yours, and so is the responsibility towards them.
  • Analysing an incident without producing concrete changes with an owner and a date. That is entertainment in the format of a report.

Tips:

  • Apply the six-step method to any incident that turns up in the news. Half an hour of analysis is worth more than a whole course of headlines.
  • After each case, ask yourself the uncomfortable question: "which of our controls is today's Equifax expired certificate?". There is usually one.
  • Set up the monthly control health check: agents reporting, log sources arriving, backups completed, certificates close to expiry, alerts that have ever fired.
  • When you analyse an incident of your own, write the timeline before the conclusions. The causes emerge on their own once the hours are in order.
  • Keep the analysis and review it after six months: half the agreed actions are usually still outstanding, and knowing that is more useful than assuming the opposite.
  • Practise the exercise of section 9.5 — which controls prevent and which controls mitigate — with any risk in your organisation. It is the fastest way to prioritise well.

Exercises

Exercise 1 — Analysing an incident with the complete method

A 50-person SME offering a document management SaaS suffers this incident:

  • 15 January: a critical vulnerability is published in the document processing library they use. The patch comes out the same day.
  • 2 February: an attacker exploits the vulnerability on the document conversion server, which is reachable from the Internet.
  • 2-20 February: the attacker discovers that this server has mounted the network folder where all the customers' documents are stored, with read and write permissions.
  • 20 February: they exfiltrate 400 GB of documents.
  • 21 February: they encrypt the network folder and the backups, which were on the same storage array.
  • 21 February: customers report that they cannot get access. The incident is discovered.
  • 22 February: the team discovers that the alerting system sends e-mails to the address of an administrator who left the company eight months ago.

Required: (a) apply the six steps of the method; (b) build the control failure → control that would have prevented it table; (c) identify which patterns from section 8 appear; (d) give the two controls that would have changed the outcome and justify why those and not others; (e) point out the failure of 22 February and explain which case in this lesson it resembles.

Exercise 2 — Translating a real case to Nimbus

Choose Target or Equifax and produce a complete translation to Nimbus Reservas.

Required:

  1. Write the timeline of the equivalent incident at Nimbus, with the team's real names, assets from the A-01…A-22 inventory and specific times.
  2. Identify which elements of Nimbus's current environment make that incident possible today.
  3. List the controls that would prevent it, stating which are already in the 30/90/180-day plan of 02-04.
  4. Estimate the impact on Nimbus across four dimensions: operational, financial, reputational and regulatory.
  5. Draft the communication paragraph Marta would send to customers within the first 24 hours, bearing in mind that the full scope is not yet known.

Exercise 3 — Designing the detection that was missing

Go back to the Nimbus case in section 9. The attacker was inside for 20 days without being detected.

Required: (a) for each of the five phases of the attack (initial access, reconnaissance, escalation, exfiltration and backup sabotage), define one detectable signal and the log source that would contain it; (b) write the corresponding alert rule in pseudocode or SQL; (c) rank the five alerts by the ratio of detection value to implementation cost; (d) for each alert, define who receives it, on which channel and what they do in the first 15 minutes; (e) explain why it is preferable to have these five alerts rather than fifty.


Solutions

Solution 1

(a) The six-step method:

  1. Timeline: 18 days from publication of the patch to exploitation; 19 days inside with no detection; detection by the customers on 21 February. Recovery predictably long or impossible.
  2. Initial vector: a known critical vulnerability, with a patch available since 15 January, on a server exposed to the Internet.
  3. Movement: nothing sophisticated. The conversion server already had mounted the folder with every customer's documents, with read and write permissions. A single hop, by defective design.
  4. Impact: 400 GB of customer documents exfiltrated; data and backups encrypted; service outage; breach notification with a broad scope; serious reputational damage for a SaaS whose product is precisely the custody of documents.
  5. Control failures: see the table below.
  6. Lessons: section (d).

(b) Control failures:

Failure Control that would have prevented it
A critical patch left unapplied for 18 days on an exposed system Patch management with a 7-day deadline for critical patches and verification of application
A conversion server with read and write access to every document of every customer Least privilege: access only to the documents of the task in hand, and read-only; isolation of the processing component
No segmentation between the exposed server and the data storage Segmentation: what faces the Internet does not touch the data store directly
Backups on the same array as production data Immutable backups, on another system and with different credentials
19 days of activity and 400 GB of egress with no detection An alert on anomalous outbound volume; centralised logging
Alerts sent to an ex-employee's address Recertification; alerts to a team channel or alias, never to a person; periodic verification that the alert arrives

(c) Patterns present: 1 (a known, unpatched vulnerability), 2 (absence of segmentation), 5 (late detection), 6 (a control that fails silently), 8 (insufficient backups) and 10 (size does not protect you). Six out of ten, in a small company's incident.

(d) The two decisive controls:

  1. Patching to deadline. It would have prevented the entry entirely. It is the only control on the list that stops the incident rather than mitigating it, and that is why it comes first.
  2. Immutable, separated backups. They do not prevent the entry or the exfiltration, but they turn the possible disappearance of the company into an interruption of hours. It is the control that removes the most impact per euro invested.

The other controls (segmentation, least privilege, alerts) are equally necessary, but these two are the ones that change the outcome: the first stops it happening; the second stops it being terminal.

(e) The failure of 22 February — alerts sent to an ex-employee's address — is exactly the Equifax case: a detection control that existed, was paid for and was configured, and had not worked for eight months without anybody knowing. The consequence is the same: false confidence, which is worse than not having the control, because it stops you looking for alternatives. And it shares a root cause with Colonial Pipeline: an identity that outlived its holder's departure. The fix is twofold: alerts directed to a team alias and a monthly check that the alerts really do arrive — by firing a test alert, for instance.

Solution 2 (worked through with the Target case; Equifax is analogous)

1. Equivalent timeline at Nimbus:

Moment Event
Day -30 An engineer at the external consultancy falls for a targeted phishing e-mail. His machine is compromised
Day -25 The attacker finds on that machine the remote access credentials for several of the consultancy's customers, Nimbus (A-19) among them
Day 0, 23:40 First access to Nimbus's infrastructure with the consultancy's shared account. No MFA. Nobody reviews it
Day 1-4 Reconnaissance. It is discovered that from the administration network the data zone (A-01) can be reached with no intermediate control at all
Day 5 Direct access to PostgreSQL with the administrative credentials found in a runbook (A-17)
Day 6-15 Progressive extraction of end-customer data and of attachments from bucket A-02
Day 16 An anomalous cost alert on the cloud account reaches Lucía's mailbox. With 200 e-mails that day, it is marked "review later"
Day 34 A customer reports having received an e-mail containing real data about their patients and demanding a payment
Day 34 The response begins, a month after the initial access

2. What makes it possible today: the consultancy's permanent, shared access with no MFA (A-19); the absence of segmentation between the administration network and the data zone; administrative credentials in runbooks (A-17); the absence of alerts that anyone attends to; the absence of access logging for bucket A-02; and no process at all for reviewing third-party access.

3. Controls and where they fit in the 02-04 plan:

Control Plan phase
Mandatory MFA for the consultancy 30 days
Named accounts per external engineer 30 days
Moving credentials out of the runbooks and into the secrets manager 30 days
Centralised logging and an alert on administrative access outside the window 90 days
An alert on anomalous export volume 90 days
Segmentation of the data zone and a bastion host with MFA 180 days
Just-in-time access with expiry for A-19 180 days
A contractual incident notification clause 180 days (04-04)

4. Estimated impact across four dimensions:

  • Operational: the service keeps running (there is no encryption), but the team spends weeks on investigation and response, and all development stops.
  • Financial: costs of forensic analysis, legal advice, communication, a possible fine and, above all, loss of contracts. For a B2B SaaS, the biggest cost is non-renewal.
  • Reputational: direct damage to asset A-20. The clinics entrusted their patients' data; the problem is one of trust, not of technology.
  • Regulatory: a breach of personal data that reveals health information, with obligations to notify the authority and, probably, those affected. It must be handled with the compliance owner and legal advice (06-03).

5. Marta's communication within the first 24 hours:

"Dear customer,

On [date] we detected unauthorised access to part of our infrastructure, originating in the credentials of an external supplier with technical access to our systems. We have revoked that access, isolated the affected systems and activated our response procedure with the support of external specialists.

We are determining precisely which information may have been affected. We do not yet have the definitive scope and we will not communicate unconfirmed estimates. We will write to you again within 72 hours at the latest, even if only to say that the investigation is continuing.

What we can confirm now: the service remains operational; payment data is tokenised at our gateway and is not stored on our systems; and we have notified the supervisory authority in accordance with our obligations.

Your direct point of contact for any question is [name and telephone number]. I am deeply sorry about this situation and I will keep you personally informed.

Marta Solves — CTO, Nimbus Reservas, S.L."

The five decisions behind this communication: it goes out early even though not everything is known; it neither minimises nor speculates; it says explicitly what is not yet known; it commits to a deadline for the next communication and keeps it even if there is no news; and it gives a named point of contact. The most common and most expensive mistake is waiting until you have all the information: by the time it arrives, the customer has already heard from somewhere else and trust is broken. Crisis communication is developed in 04-05.

Solution 3

(a) and (b) Signals, sources and rules:

Phase Detectable signal Source Rule
Initial access Authentication of a third-party account outside the agreed window Remote access / bastion log username IN (third_party_accounts) AND hour NOT BETWEEN agreed_window → immediate alert
Reconnaissance A burst of discovery commands or database catalogue queries from an administrative session Bastion log / PostgreSQL log COUNT(queries to information_schema) > 20 in 10 min
Escalation Use of the A-05 credential from an unusual IP or service Cloud account log event IN (AssumeRole, ListBuckets) AND ip NOT IN (known_ranges)
Exfiltration Anomalous outbound volume from the application network or mass bucket downloads Network metrics / object access log egress_bytes_hour > 5 × avg_30_days or GetObject > 1000/hour
Backup sabotage Any delete operation against the backup storage Backup account log event IN (DeleteObject, DeleteBucket, DeleteSnapshot) AND account = backupscritical
-- Worked example: third-party access outside the agreed window.
-- Runs every 5 minutes over the centralised log.
SELECT username, source_ip, ts, target_system
  FROM remote_access
 WHERE username IN (SELECT username FROM third_party_accounts)
   AND ts > now() - interval '5 minutes'
   AND (EXTRACT(hour FROM ts) NOT BETWEEN 9 AND 19
        OR EXTRACT(isodow FROM ts) IN (6, 7)              -- weekend
        OR NOT EXISTS (SELECT 1 FROM access_windows w
                        WHERE w.username = remote_access.username
                          AND now() BETWEEN w.start_at AND w.end_at));

(c) Ranked by value/cost:

# Alert Value Cost Justification
1 Deletion in the backup storage Maximum Minimal It is the attack's point of no return. Zero false positives: nobody legitimately deletes backups. And if the backups are immutable, the alert points directly to an attack in progress
2 Third-party access outside the window Very high Minimal It detects on day 0 instead of day 20. It is a trivial query over a log that already exists
3 Anomalous outbound volume High Low 1.2 TB in 7 days is impossible to hide. It detects on day 13
4 Use of A-05 from an unusual IP High Medium It requires maintaining the list of known ranges, but it detects the day 4 escalation
5 Reconnaissance in the database Medium Medium Noisier and with more false positives (a legitimate developer generates similar patterns)

(d) Recipient and the first 15 minutes:

Alert Received by Channel First 15 minutes
Backup deletion Lucía and Marta Automated phone call + channel Check whether there is a planned operation; if not, assume an incident: cut off the account involved and activate the response plan
Third-party access outside the window Lucía (on call) Security channel with notification Check whether there is an open ticket or request; if not, call the consultancy on the number held on file (02-03) and suspend the access as a precaution
Outbound volume Lucía Security channel Identify source and destination; if the destination is unknown, block the egress and preserve evidence
Anomalous A-05 use Lucía and Marta Channel + e-mail Review the actions performed with that credential; rotate the credential first, investigate afterwards
Reconnaissance in the DB Lucía Channel, without urgent notification Review at the next pass; correlate with other signals

(e) Why five and not fifty. Three reasons, and the third is decisive:

  1. Real capacity. Nimbus has one person with a percentage of their time for this. Fifty alerts produce fatigue and, after three weeks, all of them get ignored. It is exactly what happened at Target: the alerts existed and nobody acted.
  2. Coverage by phase, not by technique. These five cover the five phases of the attack. Having just one of them working at any of those phases is enough to break the chain. You do not need to cover every technique: you need to cover every moment.
  3. Every alert must have an owner, a channel and a procedure. Writing those three fields for five alerts is an afternoon's work; for fifty, it is a project that never gets finished. An alert with no owner is not an alert: it is a log line with more words in it.

The healthy progression is to start with five that genuinely work, and to add a new one every time an incident or a simulation reveals a blind spot. That is the zero-cost purple team of 02-01: detection grows out of what actually happens, not out of a theoretical catalogue.


Conclusion

You have closed the module with the reality check. You have a six-step method of analysis — timeline, initial vector, movement, impact, control failures and lessons — with its three rules: look for causes and not culprits, distinguish the technical failure from the organisational one, and always ask honestly whether it would happen to us. And you have applied it to six real incidents whose teachings are now part of your judgement: Target, where the tools detected and nobody acted, and where an air conditioning supplier reached the payment environment; WannaCry, where the biggest mass-propagation episode of recent history would have been neutralised by a patch published two months earlier; Equifax, with its outstanding patch, its credentials in the clear and — above all — its detection control expired for ten months, from which comes the most transferable rule of the lesson: every control needs a control that verifies it is still working; SolarWinds, which teaches that a valid signature certifies origin and not the absence of malice, and against which the only honest strategy for an SME is to limit privileges, control egress and detect behaviour; Colonial Pipeline, where a password reused on a forgotten account with no MFA brought critical infrastructure to a halt, and where paying did not restore the service; and the leak through misconfigured storage, the most likely pattern for Nimbus, in which there is not even an attack.

From all of them you have extracted the ten patterns that recur — patching, segmentation, weak identity, third parties with excessive access, late detection, controls that fail silently, badly stored secrets, untested backups, improvised crisis management and the finding that size does not protect you — together with the three cross-cutting conclusions: that almost no big incident starts with a sophisticated technique, that in almost all of them the control existed and did not work, and that time to detection is the variable that most determines the damage. And you have reconstructed hour by hour a ransomware incident at Nimbus that comes in through the consultancy's remote access, escalates by means of a secret forgotten in a .env, exfiltrates 1.2 TB over seven days and destroys backups that sat in the same account as production; with its complete analysis and, above all, with the answer to the question that gives the whole exercise its meaning: two zero-cost controls — MFA and just-in-time access for the third party — would have prevented it entirely, and two more low-cost ones — the secret in a manager and immutable backups — would have turned the catastrophe into a morning's work. None of them requires buying anything.

Now run through, in your head, the defences you have accumulated across these six lessons: TLS protecting traffic in transit, the 120-second signed URLs of the attachments bucket, the HMAC signature that authenticates the gateway webhook, DKIM certifying Nimbus's e-mail, the FIDO2 passkeys that resist phishing because the key never leaves the device, the JWT's RS256 signature validated with the issuer's public key, the encryption at rest of the database and of the immutable backups, the constant-time comparison of the TOTP code, the code signing of the SolarWinds updates. All of them — absolutely all of them — rest on the same foundation: cryptography. So far we have used it as a black box that works; from here on we are going to open it up.

In Module 3: Cryptography we will study what is inside that box and why it can be trusted. We will begin with the fundamentals and the vocabulary, work through symmetric and asymmetric cryptography with their complementary roles, hash functions, HMAC and the secure storage of passwords — which is where it is finally explained how Nimbus should store its users' passwords —, the protocols that combine all those pieces, such as the TLS you have been taking for granted for six lessons, key management, certificates and PKI, which is the genuinely hard problem, and finally the practical applications in a system like Nimbus's. We start with Introduction to Cryptography (03-01).

Fundamentals of Information Security Course

Module 1: Introduction to Information Security

Module 2: Cybersecurity

Module 3: Cryptography

Module 4: Risk Management and Protection Measures

Module 5: Security Tools and Techniques

Module 6: Best Practices and Regulations

Module 7: Final Project

© Copyright 2026. All rights reserved