OpenKAT
main #290d38c 2023-06-09
Contents
Introduction
What is OpenKAT
Introduction
White papers
Securityconcept
Who is OpenKAT for?
Where do I start with OpenKAT?
Where is the software located?
Responsible disclosure
What are the plans for the future?
How does OpenKAT work?
General notes
Basic concepts
Objects, the data model and recursivity
Indemnification
Users and organizations
System design
Collection: Boefjes and Whiskers
Storage: Bytes and Octopoes
Analysis: Bits
Reports
User Guide
Web interface
Crisis Room
KAT catalog
Findings
Objects
Tasks
Users and organizations
Organizations
Users
Rights and functions per user type
User management
OpenKAT Objects
Properties
Start scan
View Findings
Scan levels and indemnities
Indemification by user
Inheritance
Extended profiles
Bits
Reports
My first scan
Trusted timestamps in OpenKAT
About the protocol
Available timestamp servers
How to verify a timestamp?
Plugins for OpenKAT: boefjes, whiskers and bits
What types of plugins are there?
How does it work?
Where to start?
Existing boefjes
Object-types, classes and objects.
Example: the boefje for shodan
Normalizers
Adding object-types
Bits: businessrules
Add Boefjes
Modules
Modules
Rocky - frontend
Mula - scheduler
Octopoes - datamodel
Bytes - raw data storage
Boefjes and whiskers - scanners and normalizers
Keiko - reporting tool
Manon - styling
Installation and deployment
How do I install OpenKAT?
Production environments
Pre-built Docker images
Debian packages
Development environment
make kat
Minimum requirements
Example infrastructure
Production: Container deployment
Container images
Setup
Container commands
Env variables
Boefjes / Katalogus
Bytes
Octopoes
Mula
Rocky
Upgrading
Production: Debian packages
Prerequisites
Downloading and installing
Set up the databases
Rocky DB
KAT-alogus DB
Bytes DB
Mula DB
Create Rocky superuser and set up default groups and permissions
Set up RabbitMQ
Installation
Add the ‘kat’ vhost
Configure Bytes credentials
Restart KAT
Start KAT on system boot
Start using OpenKAT
Upgrading OpenKAT
Production: Hardening OpenKAT
DJANGO_ALLOWED_HOSTS
DJANGO_CSRF_TRUSTED_ORIGINS
SESSION_COOKIE_AGE
Security headers
SSL/TLS on nginx
Obscuring errors to the clients
Web Application Firewall
Continue reading
Development: make kat
make kat
Requirements
Before installing
Getting Started
Updates
Clean reinstallation
OpenTelemetry
Test or develop via GitPod
Gitpod test environment
Adding NGINX to OpenKAT
Background
Installation
Logging
Activation
SSL certificates
Restart NGINX and go
Security settings
Debugging and troubleshooting
Healthpage
Processes
Docker containers
Packaged versions
Debian package service logs
Diskspace in debug mode
XTDB memory size
Permissions
How do I customize LaTeX reports ?
Styling changes
Text colours
Readable findings
Changing fonts
Release notes
OpenKAT 1.9
New Features
Bug fixes
Upgrading
Full Changelog
OpenKAT 1.8
New Features
Bug fixes
Upgrading
Development containers
Full Changelog
OpenKAT 1.7
New Features
Upgrading
Debian packages
Full Changelog
OpenKAT 1.6
Full Changelog
OpenKAT 1.5
New Features
Upgrading
Containers
Debian packages
Full Changelog
Project Guidelines
Project management
Feature Milestones
Bugs and Feature Requests
Pull Requests
In-depth content discussions
Development
Code
Tools
Pre-commit
Type Hinting
Testing
Unit Tests
Integration Tests
Development Environment
Merge Strategy
Branching
Reviews
Code commenting and documentation
Technical diagrams
OpenKAT background and concepts
Indemnification statements
Safe viewing of boefjes-data (dutch)
OpenKAT as educational tool (dutch)
Contributions
Contribute to Codebase
Contribute Documentation
Contributor Social Contract
Code of Conduct
Security
Feature flow
Getting features in the main branch
1. Approved Features / Need Refinement → Refined Tasks
2. In Progress → Review
3. Review → QA review
4. QA Review → Ready for Merge
5. Ready for merge → Done
Releasing features
Environments for the extended QA
Checklist for QA
Extended checklist for QA
Project statuses
Developer documentation
Rocky
Stack
Running Rocky
Containerized
Locally
Installation
Running
First run
Testing
Database
KATalogus View Structure
Fonts license
Fredoka
Open Sans
Tabler icons
Rocky Design
Running a boefje
Rocky View Structure
Overview of child Views of the OrganizationViews
Exhaustive overview of OctopoesViews
KATalogus Views
Scheduler
Purpose
Architecture
Stack, packages and libraries
External services
Project structure
Running / Developing
Prerequisites
Running
Testing
Boefjes
Prerequisites
KATalogus
Organisations
Repositories
Plugins
Settings
Environment variables
Design
Running as a Docker container
Running the worker directly
Example job
Running a tool or normalizer directly using a job file
Boefje and normalizer structure
Running the test suite
Bytes
Installation
With Docker
Without Docker
Configuration
Hashing and Encryption
Observability
Design
Design: C2 Container level
Design: C3 Component level
Development
Code style and tests
Migrations
Export SQL migrations
Production
Performance tuning
Octopoes
Instructions
Environment variables
Run Octopoes API
Run the event processor
Healthcheck
OOI
Origin
Origin through declaration
Origin through observation
Origin through inference
Graph mutations
Code Architecture
Sequence: save_origin
Sequence: process update ooi
Crux / XTDB
OOI
Relationships
A few example records
OOI Reference
Octopoes API
OctopoesAPIConnector
Abstract classes / subclassing
Querying
Tests
Keiko
Installation requirements
File system permissions
Running the API
Environment variables
Logging
Building a new template
Generating a report
Testing a report with command line
GitHub Templates
Bug Report Template
Feature Request Template
Pull Request template for authors
Code review checklist for PR’s
QA checklist for PR’s
UI/UX design documentation
Figma
Design process
Fundamentals
Components
Design workfile
For review
Approved for implementation
OpenKAT
Release notes
Edit on GitHub
Release notes
Releases
OpenKAT 1.9
OpenKAT 1.8
OpenKAT 1.7
OpenKAT 1.6
OpenKAT 1.5