Module 0: About This Class#

What the two days look like, and how the lab works — before any technical content. This is also your reference for the environment: come back to it whenever you’re unsure where something lives or how to reach it. (Deciding whether the class is for you? The homepage has the schedule and prerequisites.)

Slides#

Your browser can't display the PDF inline. Download the slides.

Open slides in a new tab · Download

What the deck covers#

  • Introductions and the rules of the room
  • The class arc — build, audit, break — and the day-by-day schedule
  • Your lab environment: your VM, the inference proxy (small / large), your Day-2 targets
  • Getting in: VPN, the student portal, spend caps and rate limits
  • A live tour of this website, and how each day runs

The rest of this page is the written version of the environment tour, in more detail than the slides — the part worth bookmarking.

The shape of it#

Every student gets their own Linux VM. All AI inference flows through a class proxy (so it’s metered, rate-limited, and paid for centrally). The attack targets you’ll face on Day 2 run as your own dedicated instances on a shared class lab host. A small S3 bucket moves files around. That’s the whole world:

flowchart LR
    subgraph you["You"]
        L["Your laptop<br/>(Cisco network / VPN required)"]
    end
    subgraph vm["Your student VM"]
        P["pi + python + your code<br/>labs in ~/labs"]
    end
    subgraph svc["Class lab host"]
        M["Your SmartMail instances (Lab 4)"]
        V["Your vulnbox (Lab 5)"]
        C["CTFd leaderboard"]
    end
    PX["Class inference proxy<br/>models: small / large"]
    B["AWS Bedrock<br/>(Claude models)"]
    S3[("Class S3 bucket<br/>materials / portal / reports")]
    L -- "SSH" --> P
    L -- "browser" --> M & V & C
    P -- "$CLASS_API_URL" --> PX --> B
    P <--> S3

Containment is part of the design. Your VM has almost no internet egress: it can reach the proxy, AWS endpoints, the class lab host, and (late Day 1) other students’ VMs on one port. Several labs depend on this boundary — don’t fight it.

Getting in#

  1. Be on the Cisco network or VPN — the lab only accepts connections from Cisco IP ranges.

  2. Open the student portal and sign in to download your SSH key and see all your credentials (hostname, API key, Day 2 target URLs). Connect:

    ssh -i <your-key.pem> ubuntu@<your-hostname>
  3. That’s the only login you need. No AWS console, no cloud knowledge.

What’s already on your VM#

ThingWhere / how
Lab materials + checkers~/labs (one directory per lab)
pi, preconfiguredjust run pi — it talks to the class proxy, model small by default; switch with /model
Python + openai library, semgrep, dockeron $PATH
Your API credentialsenv vars, already exported: $CLASS_API_URL, $CLASS_API_KEY, $CLASS_STUDENT_ID, $CLASS_BUCKET
The Foundry spec + spec-kit (Lab 6.1)~/foundry-security-spec, specify

The two models#

AliasWhat it isUse it for
smallfast, cheapDay 1 labs, building ShareBox
largestronger reasoningDay 2 auditing, exploitation, the capstone

Your key has a hard spend cap and a rate limit. Hitting the rate limit (HTTP 429) is normal under heavy use — back off and retry; the instructor can adjust limits per lab block.

Where things run (especially on Day 2)#

When in doubt about where to do something:

ActivityWhere
SSH sessions, pi, Python, semgrep, exploit curls, your Lab 6 Validatoryour student VM
SmartMail web UI (Lab 4)your laptop browser
CTFd leaderboardyour laptop browser
Student portal / your portal fileeither — the same URLs work from both your laptop and your VM

Every lab service is HTTPS on its own subdomain of the class domain — your SmartMail instances, your vulnbox, and the CTFd leaderboard each have a name like https://s07-mail1.class.…/ or https://ctf.class.…/. Your portal file lists one URL per target; the same URLs work identically from your laptop and your VM, so the URL you exploit with curl from the VM is exactly the URL you open in the browser. No ports to remember, no certificate warnings to click through.

Your credentials (Day 2 targets included)#

Day 2 targets are personal: your own SmartMail instances and your own vulnbox, with your own credentials and flags. Everything — URLs, usernames, passwords, the leaderboard link — is on your page in the student portal. From your VM you can also fetch the same content as text:

aws s3 cp "s3://$CLASS_BUCKET/portal/$CLASS_STUDENT_ID.md" -

Only you can read yours.

The CTF#

A leaderboard (CTFd) runs through the whole class. Register once with any username, then submit every flag you capture — Lab 4’s injection ladder and Lab 5’s vulnbox vulns all score. Points follow difficulty. Attack only your own instances; flags are per-student, so a shared answer is instantly visible to the instructors.

When something breaks#

  • Lab materials look stale or missing: sudo /opt/class/fetch-materials.sh
  • pi misbehaving: check ~/.pi/agent/models.json points at $CLASS_API_URL
  • 429s everywhere: you’re rate-limited — slow down, chunk your prompts
  • Anything else: flag an instructor; the fix is usually one command on our side