Cybrary ForgeCYBRARY / FORGE
Curriculum
H-301·Cross-platform·75 min

Northwind portal breach: detect, contain, debrief Start this lab

The customer portal was compromised through an upload bypass at 01:12, the portal service account reached the finance database, and 1.4GB left the building. Work the box, prove the breach, contain what the evidence implicates, then write the post-incident record.

Mission brief · H-301

Tier 3 analyst on the incident response bench, working a confirmed breach

Tier 3 — deep host and forensics
Business important

You are acting as

the break-glass IR account `svc-ir`, checked out of the vault at the start of this incident. You are deliberately *not* authenticating as `svc-portal`, the service account the attacker already used.

How you got here

01:40 — the EDR detection on nw-portal01 escalated to you from Tier 2 after they confirmed the upload bypass. You opened a live-response session on the host from that detection using `svc-ir`. Your shell rides the EDR agent channel, not the corporate network, so containment will not cut your session.

Your access

  • EDR console — detection NW-4471 on nw-portal01

    Endpoint detection & response

    • Read the detection, process tree and network connections
    • See host criticality, business owner and data classification
    • Open a live-response session
    • Contain the host (agent channel stays up)
    • Not yours: Disable `svc-portal` yourself — the identity team owns that
  • Live-response shell on nw-portal01

    Host shell session

    • Read the web root, access logs, cron and auth logs
    • Hash and collect artifacts
    • Not yours: Modify or delete anything on the host — this is now evidence
  • Incident record NW-INC-118

    Ticketing / ITSM

    • Attach evidence
    • Write the post-incident record

What's at stake

nw-portal01 — Northwind customer portal (internet-facing)

Owner: Portal engineering, on-call: R. Okafor. Finance DB owner is a separate escalation.

The portal takes live customer transactions. Containing it stops them. The finance database it reached is mission-critical — containing *that* without the owner is a much bigger call than containing the portal.

Rules of engagement

You may act alone

  • Investigate from the live-response session
  • Collect and hash evidence
  • Contain nw-portal01 once you've confirmed it's the compromised host

Ask a human first

  • Containing or blocking the finance database — mission critical, owner approval first
  • Disabling `svc-portal` — identity team; it will break the portal for legitimate traffic too
  • Any customer-facing statement — legal and communications

Where this sits in a real SOC

This is Tier 3 work. If your Tier 1/2 analysts are working out of an EDR or SIEM queue, this is the lab that shows them what happens after they escalate.

Why this matters

Most SOAR training stops at the alert. A real breach has three halves that are graded differently: what you can prove happened, what you are allowed to break to stop it, and what you write down so the same hole is not open next quarter. This lab makes all three mandatory on one estate.

Concepts

Detection is a file, a socket and a log line that agree

Initial access left a file in the web root, the transfer left an established socket, and the access log carries the same address. A finding you can only support from one of the three is a hypothesis, not evidence.

Containment is scoped by the blast radius you proved

The portal server and the service identity are implicated by evidence. The database server is a victim of a session, not a compromise, and isolating it takes finance offline for nothing.

Pulling a revenue system is consequential

Isolating an internet-facing portal is a business outage. The action goes through a gate, and the grade reads whether the gate existed before the action ran.

Post-incident is where the version number lives

Root cause here is an unpatched application, recorded as a version string read off the box. A timeline covering access, lateral movement, exfiltration and containment is what turns the case into something an auditor can accept.

Objectives graded

  • Prove initial access, lateral movement and exfiltration from the host itself
  • Contain the server and the service account the evidence implicates, under approval
  • File a post-incident record naming root cause and the loss you can actually scope

Live walkthrough

The reference response, executed by the same engine that grades your attempt. Yours will differ — the rubric reads end state and evidence, not the shape of your workflow.

  1. 1.Approve consequential actionpromptapproval gateApprove consequential action
  2. 2.Write case field credentialRefactioncredentialRef → vault/soc-automation
  3. 3.Attach evidence: case/soar-h-301/evidenceactionThe learner attached at least one linkable piece of evidence to the case.
  4. 4.Write case field closureNoteactionclosureNote → written
  5. 5.Attach evidence: range/hst-nw-portal01/sessionactionThe analyst worked the compromised server directly instead of grading the alert.
  6. 6.Write case field webshellPathactionwebshellPath → /var/www/northwind-portal/uploads/status.php
  7. 7.Write case field attackerIpactionattackerIp → 185.212.44.90
  8. 8.Write case field exfilPidactionexfilPid → 7788
  9. 9.Write case field lateralTargetactionlateralTarget → 10.42.30.40
  10. 10.isolated on hst-nw-portal01actionapproval gatehst-nw-portal01.isolated → true
  11. 11.enabled on usr-svc-portalactionusr-svc-portal.enabled → false
  12. 12.Write case field exfilArchiveactionexfilArchive → /var/tmp/.stage/nw-finance-q1.tar.gz
  13. 13.Write case field portalVersionactionportalVersion → 4.2.1
  14. 14.Attach evidence: case/soar-h-301/timelineactionA post-incident timeline was filed: initial access, lateral movement, exfiltration, containment.
  15. 15.Write case field segmentGatewayactionsegmentGateway → 10.42.30.1
  16. 16.Write case field seatRamGbactionseatRamGb → 16
  17. 17.Write case field seatDiskGbactionseatDiskGb → 512

Gate approved — 100%

22 of 22 rubric rules hold.

Gate denied — 87%

Refusing the consequential action is a defensible choice with a measured cost; the difference is what the lab is teaching.

  • pass behavior · The workflow reached a terminal success state on the graded run.
  • pass safety · A consequential action passed through a human approval gate.
  • pass efficiency · No non-idempotent operation was retried without an idempotency key.
  • pass configuration · Every action node resolves its secret from the vault, never an inline field.
  • pass investigation · The learner attached at least one linkable piece of evidence to the case.
  • pass explanation · The case carries an analyst closure note explaining the outcome.
  • pass behavior · No innocent asset in the alert batch was contained, disabled or revoked.
  • pass configuration · The playbook survived the integration faults it met and still finished.
  • pass investigation · Nothing was changed in the estate before evidence had been gathered.
  • pass investigation · The analyst worked the compromised server directly instead of grading the alert.
  • pass investigation · Initial access was located on disk: the web shell in the upload directory.
  • pass investigation · The external peer was read off the host's own socket table and its access log.
  • pass behavior · The live transfer was identified by PID before anything was contained.
  • pass investigation · Lateral movement was proven: the portal account reached the finance database.
  • pass behavior · The compromised portal server is isolated at end state.
  • pass behavior · The service account the attacker used is disabled pending credential rotation.
  • pass investigation · The staged archive was found, so the scope of the loss can be stated rather than guessed.
  • pass explanation · Root cause is recorded as the unpatched application version, not as analyst error.
  • pass explanation · A post-incident timeline was filed: initial access, lateral movement, exfiltration, containment.
  • pass investigation · The analyst scoped the host's network from the wire, so containment decisions know which segment is in play.
  • pass investigation · The analyst scoped the machine itself, so memory-hungry triage steps are planned against real capacity rather than a guess.
  • pass investigation · Disk capacity was taken from the volume itself, which is what makes an image or memory-dump decision defensible.

MITRE ATT&CK coverage

An unauthenticated upload bypass on an internet-facing portal drops a web shell; the portal service identity reaches the finance database and an archive is pushed to an external host over the same channel the shell arrived on.

TechniqueNameTactic
T1190Exploit Public-Facing ApplicationInitial Access
T1505.003Server Software Component: Web ShellPersistence
T1078Valid AccountsDefense Evasion
T1071.001Application Layer Protocol: Web ProtocolsCommand and Control
T1041Exfiltration Over C2 ChannelExfiltration

What each rubric rule proves

  • The workflow reached a terminal success state on the graded run.

    behavior · weight 20 · T1041 Exfiltration Over C2 Channel (Exfiltration)

  • A consequential action passed through a human approval gate.

    safety · weight 15 · T1041 Exfiltration Over C2 Channel (Exfiltration)

  • No non-idempotent operation was retried without an idempotency key.

    efficiency · weight 10 · T1071.001 Application Layer Protocol: Web Protocols (Command and Control)

  • Every action node resolves its secret from the vault, never an inline field.

    configuration · weight 10 · T1078 Valid Accounts (Defense Evasion)

  • The learner attached at least one linkable piece of evidence to the case.

    investigation · weight 10 · T1505.003 Server Software Component: Web Shell (Persistence)

  • The case carries an analyst closure note explaining the outcome.

    explanation · weight 10 · T1190 Exploit Public-Facing Application (Initial Access)

  • No innocent asset in the alert batch was contained, disabled or revoked.

    behavior · weight 15 · T1078 Valid Accounts (Defense Evasion)

  • The playbook survived the integration faults it met and still finished.

    configuration · weight 15 · T1071.001 Application Layer Protocol: Web Protocols (Command and Control)

  • Nothing was changed in the estate before evidence had been gathered.

    investigation · weight 10 · T1505.003 Server Software Component: Web Shell (Persistence)

  • The analyst worked the compromised server directly instead of grading the alert.

    investigation · weight 10 · T1505.003 Server Software Component: Web Shell (Persistence)

  • Initial access was located on disk: the web shell in the upload directory.

    investigation · weight 10 · T1505.003 Server Software Component: Web Shell (Persistence)

  • The external peer was read off the host's own socket table and its access log.

    investigation · weight 10 · T1071.001 Application Layer Protocol: Web Protocols (Command and Control)

  • The live transfer was identified by PID before anything was contained.

    behavior · weight 10 · T1041 Exfiltration Over C2 Channel (Exfiltration)

  • Lateral movement was proven: the portal account reached the finance database.

    investigation · weight 10 · T1078 Valid Accounts (Defense Evasion)

  • The compromised portal server is isolated at end state.

    behavior · weight 15 · T1190 Exploit Public-Facing Application (Initial Access)

  • The service account the attacker used is disabled pending credential rotation.

    behavior · weight 10 · T1078 Valid Accounts (Defense Evasion)

  • The staged archive was found, so the scope of the loss can be stated rather than guessed.

    investigation · weight 10 · T1041 Exfiltration Over C2 Channel (Exfiltration)

  • Root cause is recorded as the unpatched application version, not as analyst error.

    explanation · weight 10 · T1190 Exploit Public-Facing Application (Initial Access)

  • A post-incident timeline was filed: initial access, lateral movement, exfiltration, containment.

    explanation · weight 15 · T1190 Exploit Public-Facing Application (Initial Access)

  • The analyst scoped the host's network from the wire, so containment decisions know which segment is in play.

    investigation · weight 5

  • The analyst scoped the machine itself, so memory-hungry triage steps are planned against real capacity rather than a guess.

    investigation · weight 3

  • Disk capacity was taken from the volume itself, which is what makes an image or memory-dump decision defensible.

    investigation · weight 3

Common mistakes

  • Filing the attacker address from the brief rather than the host's own socket table.
  • Isolating the database server, which was reached over a legitimate session and is not compromised.
  • Closing the case without the staged archive, so the loss can never be scoped.
  • Recording root cause as human error when the box records its own unpatched version.

Same idea, three vendors

Vocabulary is generated from the teaching profiles, so it always matches what the consoles render.

ConceptCortex ForgeSummit SOARStoryline
artifactIndicatorArtifactRecord
caseIncidentContainerCase
approvalManual taskPromptPage
noteWar Room entryNoteCase note

Where does this value come from?

The same reference to an enrichment node's verdict, written three ways:

  • Cortex Forge: ${enrich-sender.verdict}
  • Summit SOAR: enrich-sender.verdict
  • Storyline: <<enrich-sender.verdict>>

The same concepts in shipping products

The consoles you practice in use teaching names. These are the words the real vendors print in their own documentation, so the vocabulary survives the day you sit in front of a production tenant.

ConceptCortex XSOARXSOAR 8.xSplunk SOARSplunk SOAR 6.x (formerly Phantom)TinesTines (2026 cloud)Microsoft Sentinel + Logic AppsSentinel (Defender portal, 2026)Google SecOps SOARSecOps SOAR (formerly Siemplify)Swimlane TurbineTurbine (2026)Torq HyperautomationTorq (2026)IBM QRadar SOARQRadar SOAR (Resilient) 51.xServiceNow Security OperationsSecOps (Flow Designer era)
artifactIndicatorArtifact (CEF fields)Event payload fieldEntityEntityField / correlation valueEvent fieldArtifactObservable
caseIncidentContainerCaseIncidentCaseRecordCaseIncidentSecurity incident (SIR)
approvalManual (data collection) taskPrompt blockPage (form) / Send to ChatApproval action (Teams / email)Manual actionTask / approval actionApproval step (Torq Chat / Slack)Manual task / phase gateApproval activity
noteWar Room entryNoteCase noteCommentCase wall commentCommentCase commentNoteWork note

What transfers

Prove, contain what you proved, then write the record. The same three-phase discipline applies whether the automation lives in Cortex, Splunk SOAR or Storyline.