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

Northwind order portal breach: the Windows side Start this lab

An IIS application server took an unrestricted upload at 02:47, the app-pool identity reached the order file server over SMB, and a 3.1GB archive is leaving right now. Work the box with cmd.exe, prove all three phases, then contain what the evidence implicates.

Mission brief · H-302

Tier 3 analyst on the incident response bench

Tier 3 — deep host and forensics
Business important
Track default

You are acting as

the break-glass IR account `svc-ir`, checked out of the vault for this incident — never the compromised identity

How you got here

The detection fired in the EDR console. You opened a live-response session from that detection, so your shell rides the EDR agent channel — containing the host will *not* cut you off, which is exactly why you contain from here rather than over SSH.

Your access

  • EDR console (detections + live response)

    Endpoint detection & response

    • Read the detection and process tree
    • Look up host criticality, owner and VIP flags
    • Open a live-response session on the host
    • Contain the host over the agent channel
    • Not yours: Disable user accounts (that's the identity team)
    • Not yours: Delete evidence
  • Live-response shell on the affected host

    Host shell session

    • Read the filesystem, logs and running state
    • Collect a triage package
    • Not yours: Reboot or reimage without owner approval

What's at stake

The affected host

Owner: The system's business owner, named on the asset record

Containing a host you haven't identified can stop revenue. Check criticality and owner before you isolate anything.

Rules of engagement

You may act alone

  • Investigate from the live-response session
  • Collect evidence and triage packages
  • Contain a standard-criticality host

Ask a human first

  • Containing a mission-critical host — asset owner and on-call manager first
  • Disabling a user identity — identity team, and HR/legal if it looks like an insider

Why this matters

The Linux half of this breach taught the three phases. Windows changes the evidence, not the discipline: the shell is cmd.exe, persistence hides in scheduled tasks and Run keys rather than unit files, and lateral movement is an SMB logon by a service identity nobody thinks of as a user. Analysts who can only work Linux stall on exactly this box.

Concepts

cmd.exe has its own evidence verbs

`tasklist` for processes, `netstat -ano` for sockets keyed by PID, `dir /s /b` for full paths under the web root, `reg query` and `schtasks` for what survives a reboot. The same three-way agreement between file, socket and log still decides whether you have a finding.

The app-pool identity is the account that moved

The SMB session to the file server was authenticated by the IIS application pool identity. Containment scopes to that identity and the server it ran on — not to the file server, which answered a legitimate logon.

Isolating an order server is a revenue outage

The containment action is consequential and passes a gate. The estate carries a benign lookalike so blanket action shows up as damage in the grade.

On Windows, eradication means the task and the Run key

Killing the transfer process leaves a scheduled task that re-launches the implant every fifteen minutes. Post-incident is graded on naming that task and the unpatched application version behind the upload.

Objectives graded

  • Work a Windows server with cmd.exe: tasklist, netstat, dir /s /b, reg query, schtasks
  • Prove initial access, SMB lateral movement, exfiltration and the persistence that survives a reboot
  • Contain the server and the app-pool identity under approval, then file the post-incident record

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-302/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-app02/sessionactionThe analyst worked the compromised Windows server directly instead of grading the alert.
  6. 6.Write case field webshellPathactionwebshellPath → C:\inetpub\wwwroot\northwind\uploads\status.aspx
  7. 7.Write case field attackerIpactionattackerIp → 91.219.238.44
  8. 8.Write case field exfilPidactionexfilPid → 6624
  9. 9.Write case field lateralTargetactionlateralTarget → 10.42.30.60
  10. 10.isolated on hst-nw-app02actionapproval gatehst-nw-app02.isolated → true
  11. 11.enabled on usr-svc-iisactionusr-svc-iis.enabled → false
  12. 12.Write case field persistenceTaskactionpersistenceTask → NorthwindUpdateSync
  13. 13.Write case field appVersionactionappVersion → 9.4.2
  14. 14.Attach evidence: case/soar-h-302/timelineactionA post-incident timeline was filed: upload, shell execution, SMB logon, 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 Windows server directly instead of grading the alert.
  • pass investigation · Initial access was located on disk: the .aspx shell in the upload directory.
  • pass investigation · The external peer was read off the host's own connection table and the IIS log.
  • pass behavior · The live transfer was identified by PID before anything was contained.
  • pass investigation · Lateral movement was proven: the app-pool identity reached the order file server over SMB.
  • pass behavior · The compromised application server is isolated at end state.
  • pass behavior · The application pool identity the attacker inherited is disabled pending rotation.
  • pass behavior · The persistence mechanism was found, so eradication can outlive the process kill.
  • pass explanation · Root cause is recorded as the unpatched application version, not as analyst error.
  • pass explanation · A post-incident timeline was filed: upload, shell execution, SMB logon, 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 unrestricted upload on an IIS application server drops an .aspx web shell that spawns encoded PowerShell; the app-pool identity authenticates to the order file server over SMB, a scheduled task keeps the implant alive, and an archive is pushed to an external host.

TechniqueNameTactic
T1190Exploit Public-Facing ApplicationInitial Access
T1505.003Server Software Component: Web ShellPersistence
T1059.001Command and Scripting Interpreter: PowerShellExecution
T1021.002SMB/Windows Admin SharesLateral Movement
T1053.005Scheduled Task/Job: Scheduled TaskPersistence
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 · T1059.001 Command and Scripting Interpreter: PowerShell (Execution)

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

    configuration · weight 10 · T1021.002 SMB/Windows Admin Shares (Lateral Movement)

  • 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 · T1021.002 SMB/Windows Admin Shares (Lateral Movement)

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

    configuration · weight 15 · T1059.001 Command and Scripting Interpreter: PowerShell (Execution)

  • 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 Windows 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 .aspx 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 connection table and the IIS log.

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

  • 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 app-pool identity reached the order file server over SMB.

    investigation · weight 10 · T1021.002 SMB/Windows Admin Shares (Lateral Movement)

  • The compromised application server is isolated at end state.

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

  • The application pool identity the attacker inherited is disabled pending rotation.

    behavior · weight 10 · T1021.002 SMB/Windows Admin Shares (Lateral Movement)

  • The persistence mechanism was found, so eradication can outlive the process kill.

    behavior · weight 10 · T1053.005 Scheduled Task/Job: Scheduled Task (Persistence)

  • 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: upload, shell execution, SMB logon, 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

  • Reaching for Linux verbs — `ps aux` and `ss -tnp` do not exist on this host.
  • Filing the relative page name instead of the full path from `dir /s /b`.
  • Disabling a human account when the identity that moved was the application pool.
  • Closing the case after killing the PID, leaving the scheduled task in place.

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

Every enterprise estate is mixed. Being able to prove the same three phases with cmd.exe and with bash is what makes an analyst deployable on either side of the incident.