stratocyberlab

Stratosphere Cyber Range to learn cybersecurity attacking and defending techniques locally in your computer

https://github.com/stratosphereips/stratocyberlab

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary

Keywords

attack cvut cyber-range cyber-security cyberrange cybersecurity defense education infosec introduction-to-security master-class playground
Last synced: 6 months ago · JSON representation

Repository

Stratosphere Cyber Range to learn cybersecurity attacking and defending techniques locally in your computer

Basic Info
Statistics
  • Stars: 80
  • Watchers: 5
  • Forks: 25
  • Open Issues: 5
  • Releases: 11
Topics
attack cvut cyber-range cyber-security cyberrange cybersecurity defense education infosec introduction-to-security master-class playground
Created almost 2 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct Citation Security

README.md

StratoCyberLab

Logo

StratoCyberLab is an offline security cyber range to test your knowledge and capabilities on cybersecurity. It was developed by the Stratosphere Laboratory with two primary goals:

  • To setup local-only security environments for remote students of Introduction to Security class to follow weekly classes.
  • To allow anyone to run local-only realistic cyber range to practice attacking & defending skills in the form of challenges (think HackTheBox but local in your computer!)


Logo

See a demo video on Youtube!

Features

  • Local-only. No internet is required after download. No cloud. No tracking. No login. No data collection.
  • Many cybersecurity exercises in a form of 'challenges'.
  • Predefined environments of networks and services for remote students of Introduction to Security class
  • The lab runs using docker containers on a shared virtual network(s)
  • A container is created for the user to start from. You can install any tool you want without modifying your own host computer.
  • A web interface to manage the challenges and play.
  • All the challenges can be played from the web interface using the built-in WebSSH terminal.
  • AI-assisted. The web interface has a local LLM (using ollama) to assist in your hacking. You can change the model used.

Requirements

Hardware

Resource consumption depends a lot on the user actions. We do not recommend starting all challenges at once as this may require a lot compute by generating a lot of network traffic and starting many services.

However, we estimate the minium requirements to be 3GB of disk space and 2GB of spare RAM. (Note that downloading the LLM model will require extra 5GB of disk space)

Software

The only requirement to run StratoCyberLab is to have docker (v>20.10) installed.

How to start

To start the lab do: bash git clone https://github.com/stratosphereips/stratocyberlab.git cd stratocyberlab docker compose up

This uses the already prepared docker-compose.yml file.

After the lab bootstraps, navigate in your browser to http://127.0.0.1/ to access a lab's dashboard.

The dashboard contains: * Predefined environments for each weekly class of Introduction to Security class for remote students * List of standalone hacking challenges * Challenges are divided by difficulty into 3 categories EASY, MEDIUM, HARD * Each challenge has multiple tasks. * Tasks are solved by finding a flag (usually in a format BSY{...}) and submitting the flag in the dashboard. * Each challenge must be individually started from the dashboard before playing * Chat with a local AI assistant using llama3 model * Usage and downloading of the model is optional and can be initiated from the dashboard. By default no model is downloaded. * Built-in SSH web shell to interact with deployed services in the lab * The SSH connection is made to a hackerlab container. * If preferred, you can connect directly using SSH from your terminal to the hackerlab container with command ssh root@127.0.0.1 -p 2222 and password ByteThem123

Troubleshooting

Q: I pulled new updates but the lab is running the old version.

A: Depending on the changes, sometimes it's required to force docker to re-build the containers. Please run the lab using a command docker compose up --build

Q: I see REMOTE HOST IDENTIFICATION warning when trying to SSH into the hackerlab container

A: The ID of hackerlab container is re-generated when the container is recreated. Add -o UserKnownHostsFile=/dev/null option to your SSH command to fix the issue.

Q: I have a windows OS and the challenges are not working correctly for me

A: Git for Windows puts CRLF line endings to checkout files by default which may break some desinged functionality. Please either replace all the CRLF line endings with LF or set this behaviour globally to your git using these commands (note that you have to re-clone the repository again after making this change to take effect) bash git config --global core.autocrlf false git config --global core.eol lf

Development

We appreciate all PRs with new challenges or bug fixes.

Please refer to a separate Development documentation at ./docs/development.md.

Documentation on adaptations

If you want to use a new LLM model follow the instructions here

Connection Architecture

The diagram of connectivity and IP address of all containers is ./docs/connection_architecture.md.

Owner

  • Name: Stratosphere IPS
  • Login: stratosphereips
  • Kind: organization
  • Location: Prague

Cybersecurity Research Laboratory at the Czech Technical University in Prague. Creators of Slips, a free software machine learning-based behavioral IDS/IPS.

GitHub Events

Total
  • Fork event: 9
  • Create event: 77
  • Issues event: 6
  • Release event: 11
  • Watch event: 33
  • Delete event: 7
  • Member event: 1
  • Issue comment event: 16
  • Push event: 89
  • Pull request review comment event: 10
  • Pull request review event: 7
  • Pull request event: 26
  • Gollum event: 1
Last Year
  • Fork event: 9
  • Create event: 77
  • Issues event: 6
  • Release event: 11
  • Watch event: 33
  • Delete event: 7
  • Member event: 1
  • Issue comment event: 16
  • Push event: 89
  • Pull request review comment event: 10
  • Pull request review event: 7
  • Pull request event: 26
  • Gollum event: 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1
  • Total pull requests: 3
  • Average time to close issues: 14 minutes
  • Average time to close pull requests: 4 months
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 1.0
  • Average comments per pull request: 1.33
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 3
  • Average time to close issues: 14 minutes
  • Average time to close pull requests: 4 months
  • Issue authors: 1
  • Pull request authors: 2
  • Average comments per issue: 1.0
  • Average comments per pull request: 1.33
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • HappyStoic (3)
  • neodark (1)
  • friggingee (1)
  • sai4869 (1)
  • Lubos-source (1)
  • AlyaGomaa (1)
Pull Request Authors
  • HolecekM (4)
  • xyizko (3)
  • verovaleros (3)
  • neodark (1)
  • HappyStoic (1)
  • coresolutiondoteu (1)
  • MariaRigaki (1)
  • hollmmax (1)
  • friggingee (1)
  • Lubos-source (1)
  • AlyaGomaa (1)
  • rojikada (1)
  • eldraco (1)
Top Labels
Issue Labels
enhancement (4) bug (3)
Pull Request Labels
enhancement (3)

Dependencies

challenges/what-is-the-date/meta.json cpan
challenges/what-is-the-date/Dockerfile docker
  • python 3.11-slim-bullseye build
dashboard/Dockerfile docker
  • cgr.dev/chainguard/python latest build
  • cgr.dev/chainguard/python latest-dev build
  • node 22-alpine build
dashboard/client/package-lock.json npm
  • 114 dependencies
dashboard/client/package.json npm
  • @rollup/plugin-commonjs ^25.0.0 development
  • @rollup/plugin-node-resolve ^15.0.0 development
  • @rollup/plugin-terser ^0.4.0 development
  • http-proxy-middleware ^2.0.0 development
  • polka ^0.5.2 development
  • rollup ^3.25.0 development
  • rollup-plugin-css-only ^4.3.0 development
  • rollup-plugin-livereload ^2.0.0 development
  • rollup-plugin-svelte ^7.0.0 development
  • svelte ^3.0.0 development
  • @xterm/addon-fit ^0.10.0
  • @xterm/xterm ^5.5.0
  • bootstrap ^5.3.2
  • sirv-cli ^2.0.0
  • socket.io-client ^4.7.5
  • xterm ^5.3.0
  • yaml ^2.3.0
dashboard/server/requirements.txt pypi
  • eventlet *
  • flask *
  • flask-socketio *
  • ollama *
  • paramiko *
.github/workflows/autotag.yml actions
  • actions/checkout v2 composite
  • anothrNick/github-tag-action 1.36.0 composite
challenges/famous-quotes-lfi/meta.json cpan
challenges/hello-world/meta.json cpan
challenges/template/meta.json cpan
challenges/famous-quotes-lfi/Dockerfile docker
  • python 3-slim build
challenges/hello-world/Dockerfile docker
  • python 3-slim build
challenges/template/Dockerfile docker
  • busybox latest build
docker-compose.yml docker
hackerlab/Dockerfile docker
  • debian bookworm build