Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First Draft #1

Merged
merged 16 commits into from
Jun 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: ci
on:
push:
branches:
- master
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.x
- run: pip install -r requirements.txt
- run: mkdocs gh-deploy --force
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Enowars Documentation

## Development

You need to have python installed or just use GitPod
```bash
# 1. Install Dependencies
pip install -r requirements.txt

# 2. Run the preview locally
mkdocs serve
# 3. Make your changes and see them update live
# 4. Commit and the CI Pipeline will deploy your changes.
```

To get to know what is possible with MkDocs have a look at the [Documentation](https://squidfunk.github.io/mkdocs-material/reference/abbreviations/).
Binary file added docs/assets/bambictf5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 70 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Welcome to Enowars

Enowars is a Framework for running A/D CTF events.

## Overview

It's complex:


```mermaid
graph TB
EnoLauncher
EnoEngine
EnoFlagSink
EnoELK
database[(Database)]
router{Router}
checker1[[Checker 1..N]]


router --> team
router --> EnoFlagSink
EnoEngine -->|send logs| EnoELK
EnoEngine -->|send scoreboard data| EnoScoreboard
EnoEngine -->|plan checks| database
database -->|get reports| EnoEngine
EnoLauncher -->|run| checker1
EnoLauncher -->|report| database
EnoFlagSink --> database
checker1 --> router
checker1 -->|send logs| EnoELK



subgraph teams[Team Networks]
team[Team 1..N]
end
```
Now that you've seen this beautiful 😁 chart everything should be clear. For everyone else see below.


### Infrastructure

Click here to get up and running with the underlying [OS and Network stuff](infrastructure/infrastructure.md).

If you are the software guy/girl have a look at the [engine](infrastructure/engine.md).

### Services and Checkers

If you want to program your own service and submit it to us have a look at our [Create a service Guide](service/getting-started.md).

> Previous [Services](https://github.com/enowars?q=enowars) can be found on our [Github Page](https://github.com/enowars?q=enowars)

### Miscellaneous

To support everything we have an army of rogue shell and python scripts, as well as Libraries for testing.

[EnoChecker](https://github.com/enowars/enochecker)









> TBD: [Specification](https://github.com/enowars/specification)

--8<-- "includes/abbreviations.md"
21 changes: 21 additions & 0 deletions docs/infrastructure/engine.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Engine Installation


## Overview
The [Engine](https://github.com/enowars/EnoEngine) is the core Software glueing everything togehter, it consists of:

- EnoEngine
- EnoLauncher
- EnoFlagSink
- EnoELK
* Elasticsearch
(search engine, noSQL)
* Logstash (ingest and transform data)
* Kibana (webfrontend)
- EnoMoloch
- [ScoreBoard](https://github.com/enowars/EnoLandingPage)


## Setup

> How to setup the engine for a CTF?
5 changes: 5 additions & 0 deletions docs/infrastructure/infrastructure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Infrastructure Setup

## Getting started

Everything is inside here: https://github.com/enowars/bambictf
56 changes: 56 additions & 0 deletions docs/infrastructure/round.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Inner Workings

In order to store flags to capture and check whether a teams service is still running nominally the Engine dispatches several requests in each round.

## Request Types

| Request | Purpose |
| :--------- | :------------------------------------------ |
| `putflag` | Inserts the flag into the service |
| `getflag` | Retrieves the flag from the service |
| `havoc` | Checks the service functionality |
| `putnoise` | Insert other (public) data into the service |
| `getnoise` | Check other (public) data |

## Basic requests

```mermaid
sequenceDiagram
Gameserver->>+Checker: putflag
Checker->>+Service: store flag
Gameserver->>+Checker: getflag
Checker->>+Service: retrieve flag
Service->>+Checker: retrieve flag

```

## Timing

One round generally lasts 60 seconds. It is divided into 4 quarters, which each last 15 seconds.
The checker tasks are called in the depicted way:

> TODO: Are those scheduled right (the slides differ)?

```mermaid
gantt
title Timing
dateFormat mm-ss
axisFormat %M-%S
section Round 1

putflag (Round 1 flags) :r1p1, 00-00, 15s
getflag (old flags) :r0g2, 00-00, 15s

getflag (old flags) :r0g2, 00-30, 15s
havoc :r1h1, 00-30, 15s
putnoise :r1pn1, 00-30, 15s

getflag (Round 1 flags) :r1g1, 00-45, 15s
getflag (old flags) :r0g3, 00-45, 15s

section Round 2

putflag :a1, 01-00, 15s

```

17 changes: 17 additions & 0 deletions docs/infrastructure/test-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Test Setup

If you want a cheap way to test all of your service and infrastructure on one VM, that's you guide.

## Installation




## Managing the server

```bash
# Start Engine Services
bash tmux.sh
# Monitor EnoEngine
tmux a -t enoengine_session
```
Loading