Skip to content
CYYBERLABS
Hands-on

Labs

Practical work you do, not watch. A live container lab drops you into a real shell; a simulation gives you the evidence a real incident produced and a console to work it. Sign in to launch any of them.

cloud

A set of IAM policies for a small cloud account. Trace the path from a low-privilege identity to account control, state it as a path, and choose the edge to cut.

Two architectures for the same requirement. The expensive one prevents exactly one failure, and the question is whether that failure is worth £40,000 a year here.

Push the Namespace Boundary

PractitionerSimulation

Compare a deployment identity’s intended scope with read-only canary requests across Kubernetes namespaces.

Hunt the Release Identity

PractitionerSimulation

Join Kubernetes metadata, RBAC and a change record without confusing permissions with observed use.

Hold the Namespace Line

SpecialistSimulation

Replace a cluster-wide grant and test cross-namespace denial alongside legitimate deployment access.

Cloud & containers

Five workloads, their role bindings, and forty minutes of audit log. The workload that reached the node is not privileged, mounts nothing, and does not run as root.

Seven layers, a clean-looking Dockerfile, and a scanner leading with a critical finding that changes nothing. The secret is in a layer the running container does not have.

crypto

A release-signing key is being used from an address the organisation does not own. Source control, a backup, an operator export and a build log are all candidates. Three are innocent.

An admin API on mutual TLS accepted a certificate it should not have. It is not the scary self-signed one. That was rejected correctly. It is the one with a perfect chain, and the reason is what the CA and the API each failed to check.

The vault with the key in the box

PractitionerLive shell

A “secure vault” encrypts a secret with real AES, and keeps the passphrase in the config file beside the ciphertext. The crypto is not broken. It protects nothing. Recover the secret it was supposed to hide.

You recover the vault secret the easy way, then turn around and read what this host kept: the shell history and the file access times that show the passphrase was read and the ciphertext was decrypted.

You recover the vault secret, then write a detection that flags a config storing a passphrase beside its ciphertext, prove it fires on the vulnerable vault, and prove it clears a config that keeps its key in a secrets manager.

detection

A purple exercise: 4769 telemetry from an emulated Kerberoasting run, with benign look-alikes and an evasion. Confirm the detection fires, stays quiet, and measure what the evasion costs.

A week of export-endpoint traffic with an attack hidden in it, and a blank page. Write a detection rule, run it against the whole log, and get its false positives to zero: the obvious indicator is in the business traffic too.

An internal preview tool serves reports by name and never checks the name stays in its own directory. Walk out of it to read a handover you were refused. Then read the log your own request wrote, and build the detection that catches it without flagging the ordinary previews.

Catch the Next Attempt

SpecialistSimulation

A simulated detection bench. Two rules fired on the night and were ignored for false positives. Build and test a role-aware rule that catches the first successful admin request and stays quiet on the registrar doing her job.

Close the Export Gap

SpecialistSimulation

A simulated validation bench. Four fixes were proposed for the statement-export breach. Replay the enumeration and a normal day (including a mobile app that legitimately pulls dozens of statements) to prove which control stops the attack without breaking real use.

Make Every Session Count

SpecialistSimulation

A simulated detection bench. The impersonation audit log held the whole answer and nobody read it. Build a rule that would have paged at 02:14 and stays quiet across four hundred legitimate impersonations in the same week.

Shut the Forgotten Door

SpecialistSimulation

A simulated validation bench. Three fixes are proposed for the utility breach and there is budget to do them in order. Replay the incident and a normal fortnight to find the one control that stops it outright, then the detection that would have caught it that night.

Lock Down the Checkout

SpecialistSimulation

A simulated validation bench. Four fixes were proposed for the checkout skimmer. Replay it to prove which control stops the card data leaving even after a malicious tag is published, then confirm the monitoring that turns eleven days into one hour.

Detection & response

Twelve authentication events across three hosts. One sequence is an adversary. Find it, and say what you can and cannot prove.

Encoded PowerShell on a workstation, a paste-site visit three minutes earlier, and a phishing email that morning. Each source alone tells you to reimage the machine. Read them against each other.

A morning queue sorted the way the console sorts it. The three alerts marked critical are an authorised test; the worst thing on the list is marked low.

The noisiest rule in the estate produced 2,983 alerts in ninety days and one confirmed incident. Four tunings are on the table. The one with the best-looking ratio suppresses the incident.

A five-stage intrusion ran for three days undetected, and the board was told the gap was analyst workload. Two of the five stages produced no usable telemetry at all. Find the blind spots, rank the fix, and test the claim.

A threat-intel report on a commodity loader arrives, and your customer runs the host in front of you. Decide whether it is affected, on what evidence, and which of the report’s indicators is worth nothing here, on purpose.

You take the SOC desk with a full queue and a clock. A scanner trips the IDS all night, the backup job looks like a brute force, the EDR reads LSASS by design, and one alert in the pile is an actual intrusion. Disposition the noise, find it, and prove it.

A week of office logins and one that does not belong. Learn the move every blue-team job is built on: you do not read a log, you ask it (who appears most, how many failed, and which one is the odd one out).

The same reporting host as the red lab, from the blue seat: take root through the world-writable maintenance script, then find what the box recorded of it, the changed script, its permissions, and the root-owned file the scheduled job made for you.

Trace the Grade Shift

PractitionerSimulation

A simulated SOC workstation the morning after. A grade was changed that nobody approved. Using the access log, the records audit trail and the service desk, establish which account did it, how, and how much else it reached.

Find the Breach in the Flood

PractitionerSimulation

A simulated bank SOC. A volumetric flood has filled the incident channel for a week; a journalist says customer statements are on a leak forum. Separate the loud-but-harmless flood from the quiet request loop that actually took the data.

Unmask the Impersonator

PractitionerSimulation

A simulated platform security workstation. A customer asks why a support engineer entered their tenant at 2am with no ticket. Using the impersonation audit log and the ticket system, find how many tenants this happened to and how the credential was used.

Follow the Midnight Login

PractitionerSimulation

A simulated SOC. A low-priority alert flags a VPN sign-in from a former contractor. Using the identity system and the VPN and network logs, establish whether the account is really inactive, what the session reached, and whether customer data was exposed.

Trace the Checkout Leak

PractitionerSimulation

A simulated retail security workstation. The card networks have flagged the shop as a common point of purchase for fraud. Using the front-end monitor, the tag-manager history and the identity log, find what is taking card numbers, when it started, and how it got there.

Forensics & malware

A process view from a memory image of a suspected-compromised host. Find the process running code it should not be, and separate what the image proves from what must be inferred.

A hypothesis, one query across 412 hosts, and no alert to start from. Two of the results are rare and harmless, one is common and harmless, and one is what the hypothesis predicted.

A hunt for WMI persistence across 412 hosts. Every result is accounted for, and reporting that correctly, with the right caveat, is harder than reporting an incident.

One incident, three decision points, and information arriving between them. Disabling the account is wrong at 02:14 and correct at 03:14, and nothing about the account changed.

Nothing alerted. A signed binary runs 22,000 times a week for good reasons, and on three hosts it has a parent it has nowhere else. Find the finding in the frequency table, not in any single row, and do not grab the rarest one.

A finished incident report going to a board on Friday, and the evidence register beside it. Most of it is good, which is what makes the two failures worth catching.

A disk image is about to be disclosed to a hostile expert. One discrepancy in the record looks alarming and is fine; one detail looks routine and is a genuine break. Find both, and say which is which.

A shell on a web host somebody has already been inside. Find how they got in, what they took, and what they left running.

A host is running something that shouldn’t be, and it is hiding in the process list under a kernel-thread name. A process can rename itself; it cannot hide the binary it runs or the process that started it. Read the tree, not the names.

Run a sleeping agent under a kernel-thread name so it slides past an eye skimming the process list, then see for yourself the two facts on the box that still give the disguise away.

Run the disguised agent, then write a detection that keys on a kernel-thread name carrying a real on-disk binary, prove it flags the impostor, and prove it stays silent on the sanctioned monitor and normal processes.

Foundations

Five messages, one morning. The one with a failed authentication check is legitimate, the obvious spoof was correctly quarantined, and the phish passed SPF, DKIM and DMARC. Work out how, and what that says about what those checks are for.

The only critical finding is on a host with no network route to anything. The one that matters is medium, on the payment path, with an exploit in circulation for eleven days.

A draft notification that understates one number, overstates one certainty, omits one unknown, and gets one sentence exactly right.

Four emails. The spoof of your own CEO failed every authentication check and was delivered anyway; a real vendor invoice failed SPF and looks like the threat. Read the headers, not the vibe, and say which is which, and why the spoof got through.

Your first shell

ExplorerLive shell

A real terminal, four small things to do, and nothing you can break. Read a file, find a file, search inside one, and check who you are. The point is not difficulty: it is stopping being afraid of the prompt.

Identity & access

Five tokens reached a payroll service in one morning and four were correctly rejected. The one that was accepted satisfied every check the service performs and was minted for something else entirely.

Eight answers on a supplier questionnaire. Two are unfalsifiable, two are true and irrelevant, one is contradicted by the evidence they attached themselves, and one is better than anybody asked for.

A portal that decides who you are from a cookie you hold. Log in with the one account you were given, read what the cookie actually says, and become an administrator you were never issued.

The forgeable portal from the defender chair: forge the admin cookie yourself, then prove from the login logic the host holds that the session was never issued and that any cookie claiming admin is crafted.

The forgeable portal again, now to defend for real: forge the admin cookie, then write a check that decodes a session role, flags the role login can never issue, and prove it fires on the forgery while clearing a genuine user session.

Step Into the Support Seat

PractitionerSimulation

A simulated research workstation. A SaaS platform published a debug log containing a support API token that was never rotated. Use it, under an authorised engagement, to reach the support console and show how far a leaked service credential travels.

Wake the Ghost Account

PractitionerSimulation

A simulated assessment workstation. A water utility believes a contractor’s VPN account is disabled. It is not, and the network behind it is flat enough that the account reaches an operations dashboard full of customer data.

Challenge the Recovery Desk

PractitionerSimulation

Replay a synthetic help-desk exception that verifies reachability of a caller’s contact instead of account ownership.

Track the Account Takeover

PractitionerSimulation

Investigate help-desk verification and application-session evidence after a password reset.

Take Back Control

SpecialistSimulation

Prove unverified recovery is refused, legitimate recovery survives, and incident sessions and factors are removed.

Linux

Enumeration output from a Linux host holds one path from an unprivileged account to root. Find it, state it as a path, and choose the edge to cut.

A web server is calling out to somewhere it should not. Forty files changed that night and most of them are a package update. Find the persistence, and find the file whose two timestamps disagree.

Four candidate audit rules, measured volumes for each, and an alert budget. The best coverage produces 2.1 million events a day; the best ratio catches the wrong event entirely.

A host reported twelve days late. auth.log has rotated past the window, the journal was volatile and the host has rebooted, and auditd was never installed. Establish what can still be established, and be exact about what cannot.

Walk the account that became root

PractitionerLive shell

A shell on a host where a service account climbed to root through a file it should never have been able to change. Find the file, the account, and what root now runs that nobody approved.

You have root, three real audit findings, and a service that must still work when you are done. The fastest way to pass a permissions audit is to lock everything down; do that and you break the app. Fix exactly enough.

malware

The sandbox said it was clean

PractitionerSimulation

A sample that does nothing at all in a standard analysis environment, and installs a service in one that differs by a single property. Find the gate, and say what each half of the analysis missed.

A shell on an analysis host with a quarantined sample. No network, nothing to detonate, only what static triage gives you: what it talks to, what it dropped, and how it comes back.

On the same analysis host, study the captured sample and reproduce its behaviour in writable space: stage a hidden loader, embed a C2, attempt the beacon, and lay the scheduled re-run.

Reproduce the dropper on the analysis host, then author a detection that fires on the hidden staged loader and stays silent on ordinary files, proving it with a true positive and a true negative.

networking

Two hours of resolver logs, one connection summary, and a tunnel-detection rule that was already deployed and did not fire. Find the channel, prove the direction, and explain the miss.

Eight hours of outbound TLS from one workstation. No payload is available and none is needed: the most metronomic connection here is legitimate, and the one that matters jitters.

An external notification names one address for four thousand machines. Three collectors recorded the same ninety seconds and each distorts it differently.

A card-data environment is attested as isolated from the corporate network, enforced by one explicit deny rule. The rule works. The isolation does not: a two-hop path is open, and the flows show it has been used.

A shell on a host with something still running on it. Find the process that does not belong, where it calls home, and what starts it on boot.

A day of DNS queries, and one internal host quietly exfiltrating files over them a few bytes at a time. Find it on volume, entropy, and a record type nobody’s browser needs. Then read what it took, because base32 is not encryption.

You are the operator: take a short file list, encode it into base32 subdomain labels, and shape the DNS queries that would carry it off the host past every control that never inspects DNS.

Reproduce the DNS tunnel in the resolver log, then author a detection that fires on the exfiltrating host and stays silent on a day of ordinary queries, proving both the true positive and the true negative before you write it up.

On the same beacon host, build the attacker's side yourself: a config-driven agent that phones home on a fixed interval from a path no package owns, plus the boot service that would bring it back, staged in the box's writable /tmp.

On the beacon host, run the attack and then engineer its detection: reproduce a config-driven agent that checks in on a fixed interval, write a rule that keys on that interval, and prove it catches the beacon while clearing normal activity.

Offensive & purple

A red team ran five techniques against an estate whose coverage matrix marked all five covered. Two produced no alert, one produced an alert for the wrong reason. Find all three, and say what "covered" should have meant.

Eight recorded events, five of which are an intrusion. They map onto five techniques across five tactics, and a sixth tactic must have happened and left nothing. Work out why.

One compromised workstation, four credentials, five destinations. Work out which an adversary reasoning about cost would take, and therefore which the defender should close first.

Six honeytoken placements, an attack-path graph, and the trip counts from a red-team exercise. You may keep two. The one that fired most is the one to cut, and the one that fired once is the one that worked.

A shell on a host as the unprivileged analyst account, and a warehouse credential in /root you cannot read. Root cron runs a maintenance script every minute, and a backup change nobody reviewed left that script world-writable. Rewrite it, wait for the tick, and take what your account was refused.

The same host as the red lab, from the purple seat: take root through the world-writable maintenance script, then prove where a detection belongs, since watching the job file for an illegal change catches it and watching for a privileged process cannot.

Web

Application logs and a code excerpt from a reported incident. Confirm whether SQL injection occurred, locate the sink, and recommend the fix that removes the class.

An application is being exploited through its URL-import feature. A firewall rule was deployed mid-incident and the alerts stopped. Work out what happened after that, and choose a fix that survives an attacker who reads it.

A day of application logs in which nothing failed. No errors, no anomalies, no 403s, because the check that would have produced one was never written.

An injection was reported, four patches were proposed, and every one of them defeats the payload in the report. Decide which one actually fixes the application, and what proof would have told you without asking.

A shell on an application host after someone read other people's invoices. The source is on the box. Find the route that never asks who is calling, the field it should have compared, and the address that walked the ids.

A shell on a host that runs an internal export tool. The tool checks a destination before it queues a report, and it does it by handing your input to a shell. Prove it, and reach what your own account cannot.

The same export host as the red lab, from the blue seat. Run the command injection yourself, then read the check log the tool writes and pick your own request out of a week of ordinary destination checks. The bug is real; this time the job is to recognise it after the fact.

The same export host as the red lab, from the purple seat. Run the command injection, then write a log-scan detection for it and prove it fires on your attack and stays quiet on a week of ordinary destination checks. The exercise is the signature: what makes it robust rather than brittle.

A shell on the billing host where one authenticated route returns any invoice by id without checking who is asking; confirm the flaw in the source and show how far walking the ids reaches.

A shell on the billing host after a caller read invoices that were not theirs; reproduce the id walk from the source and log, then write a detection that flags one source pulling sequential ids while clearing an ordinary profile read.

A shell on the same web host from the attacker's side: perform the path-traversal read that lifts the database credential, then inspect the scheduled job left behind that keeps the foothold across a restart.

A shell on the same web host after the intrusion: reproduce the path-traversal read, then author a detection that flags the traversal requests from one source and clears the ordinary browser traffic beside them.

Beyond Your Record

PractitionerSimulation

A simulated student laptop where the records system checks a role on its pages but not on the printable view of them. Reach another student’s record, then a staff-only amendment form, using nothing but an ordinary student account.

Beyond Your Statement

PractitionerSimulation

A simulated assessment workstation. A bank’s statement-export API returns a document for whatever account reference it is given, without checking the caller owns it. Prove it with one request that is not yours, under a scope that says stop there.

Test the Checkout Boundary

PractitionerSimulation

A simulated assessment workstation. An online retailer’s tag manager lets marketing publish scripts to the checkout page with no engineering review, and the page has no content-security policy. Prove that an unreviewed script can read the card field, and discover the skimmer already there.

Windows

Endpoint protection, a backup agent, and one more process all read LSASS on the same host in the same hour. Decide which is the incident, prove it from the process tree, and explain why the other two are not.

A directory export where every row is unremarkable and three of them compose into a path from a helpdesk account to the domain. Find it, and say which edge to cut.

A detection nobody has the definition for. Eight alerts, four comparable events that produced nothing, and a change record that describes a rule this is not.

SMB signing is attested as required on all servers, verified by opening the domain GPO. On the file servers the control exists to protect, the effective setting is the opposite, and the gpresult proves it.