The loader is a persistence surface
LD_PRELOAD works per process; /etc/ld.so.preload works for every process on the box. One unsigned library in that file is enough to hide files, connections and users from userspace tools.
Two POSTs to an image directory returned 200 on the Northwind portal, and minutes later ld.so.preload began loading an unsigned library into every new process. Work the web tier, prove the webshell and the preload hook, contain the live session, and record the version that allowed the upload.
Mission brief · H-305
the break-glass IR account `svc-ir`, checked out of the vault for this incident — never the compromised identity
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.
EDR console (detections + live response)
Endpoint detection & response
Live-response shell on the affected host
Host shell session
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.
You may act alone
Ask a human first
This is the case where the host starts lying to you. Once /etc/ld.so.preload names an attacker library, every new process — including your `ls` and your `ps` — loads it. The lesson is to notice the hook early and to weigh host tooling accordingly.
LD_PRELOAD works per process; /etc/ld.so.preload works for every process on the box. One unsigned library in that file is enough to hide files, connections and users from userspace tools.
Two POSTs to an image directory returning 200 is the initial access. The webshell then exists on disk in a place no image should be executable from — find both before you decide what to contain.
Containment passes a gate. The database host answered a normal application connection and stays up; isolating it turns an incident into an outage.
Real workers are children of the master with predictable command lines. The imposter names a peer and a port on its own command line — that is the beacon.
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.
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.
An unauthenticated upload on the portal drops a PHP web shell, and the operator hijacks the dynamic linker with /etc/ld.so.preload so a rootkit library loads into every new process on the web tier.
| Technique | Name | Tactic |
|---|---|---|
| T1190 | Exploit Public-Facing Application | Initial Access |
| T1505.003 | Server Software Component: Web Shell | Persistence |
| T1574.006 | Hijack Execution Flow: Dynamic Linker Hijacking | Defense Evasion |
| T1071.001 | Application Layer Protocol: Web Protocols | Command and Control |
| T1078 | Valid Accounts | Defense Evasion |
The workflow reached a terminal success state on the graded run.
behavior · weight 20 · T1190 Exploit Public-Facing Application (Initial Access)
A consequential action passed through a human approval gate.
safety · weight 15 · T1190 Exploit Public-Facing Application (Initial Access)
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 web tier directly instead of grading the alert text.
investigation · weight 10 · T1505.003 Server Software Component: Web Shell (Persistence)
The preload hook was found, so the analyst knows why host tooling cannot be trusted.
investigation · weight 10 · T1574.006 Hijack Execution Flow: Dynamic Linker Hijacking (Defense Evasion)
The injected library was identified by full path, so it can be removed and hashed.
investigation · weight 10 · T1574.006 Hijack Execution Flow: Dynamic Linker Hijacking (Defense Evasion)
The upload source was proven from the access log and the live socket table.
investigation · weight 10 · T1071.001 Application Layer Protocol: Web Protocols (Command and Control)
The live beacon was identified by PID before anything was contained.
behavior · weight 10 · T1071.001 Application Layer Protocol: Web Protocols (Command and Control)
The webshell was located, so containment removes the interactive re-entry path.
behavior · weight 10 · T1505.003 Server Software Component: Web Shell (Persistence)
The compromised web tier host is isolated at end state.
behavior · weight 15 · T1190 Exploit Public-Facing Application (Initial Access)
The web identity the shell executed as is disabled pending rebuild.
behavior · weight 10 · T1078 Valid Accounts (Defense Evasion)
Root cause is recorded as the unpatched portal version carrying the upload advisory.
explanation · weight 10 · T1190 Exploit Public-Facing Application (Initial Access)
A post-incident timeline was filed: upload, shell execution, preload hook, beacon, 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
Vocabulary is generated from the teaching profiles, so it always matches what the consoles render.
| Concept | Cortex Forge | Summit SOAR | Storyline |
|---|---|---|---|
| artifact | Indicator | Artifact | Record |
| case | Incident | Container | Case |
| approval | Manual task | Prompt | Page |
| note | War Room entry | Note | Case note |
The same reference to an enrichment node's verdict, written three ways:
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.
| Concept | Cortex XSOARXSOAR 8.x | Splunk 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.x | ServiceNow Security OperationsSecOps (Flow Designer era) |
|---|---|---|---|---|---|---|---|---|---|
| artifact | Indicator | Artifact (CEF fields) | Event payload field | Entity | Entity | Field / correlation value | Event field | Artifact | Observable |
| case | Incident | Container | Case | Incident | Case | Record | Case | Incident | Security incident (SIR) |
| approval | Manual (data collection) task | Prompt block | Page (form) / Send to Chat | Approval action (Teams / email) | Manual action | Task / approval action | Approval step (Torq Chat / Slack) | Manual task / phase gate | Approval activity |
| note | War Room entry | Note | Case note | Comment | Case wall comment | Comment | Case comment | Note | Work note |
When host tooling and network data disagree, believe the network. Off-box evidence survives on-box tampering.