OpenKAT – een modulair open source security platform
| Joost Krapels |
Security
Software
![](https://softwarezaken.nl/wp-content/uploads/2024/05/fatma-betul-icen-oQ_sj-7CR4I-unsplash.jpg)
Bij ICT Institute zijn we fan van open source. We hebben onze standaard Security Verified openbaar beschikbaar gesteld, maken graag gebruik van Linux, en waarderen goede open source software. In januari ontdekten wij OpenKAT, een open source security monitoring tool ontwikkeld in opdracht van het ministerie van VWS in de coronatijd. Wij hebben er een paar maanden enthousiast gebruik van gemaakt, en in dit artikel vertellen wij er meer over.
OpenKAT
De Open Source Kwetsbaarheden Analyse Tool, OpenKAT, is een modulaire security monitoring tool. Er worden continu security-gerelateerde data over interessante objecten (websites, servers, DNS, etc.) opgehaald, die vervolgens vertaald worden in bevindingen. Zoals de naam doet vermoeden, staan katten centraal als thema. Alle modules hebben een passende foto van een leuke kat, en de verschillende componenten zijn kat-gerelateerd. OpenKAT werkt als volgt:
- Boefjes verzamelen informatie van interne of externe bronnen
- Output van de Boefjes wordt als ruwe data opgeslagen in de Bytes database
- Whiskers normaliseren de ruwe data uit Bytes, en vormen het om tot bruikbare data-objecten
- De data-objecten worden opgeslagen in de Octopoes database
- Bits zijn business rules, die informatie ophalen uit Octopoes en eventueel nieuwe Boefjes inzetten
- Mula is de scheduler die op de juiste momenten Boefjes inzet
Er zijn meerdere manieren om OpenKAT te draaien. De eenvoudigste manier is om een Debian Virtual Machine aan te maken, en het OpenKAT installatiescript te draaien. Een handmatige installatie via Docker kan natuurlijk ook.
OpenKAT bevat een standaard set aan Boefjes en Whiskers, te bekijken in de KAT-alogus. Ontwikkelaars kunnen hun eigen Boefjes en Whiskers schrijven met Python en JSON, maar de syntax hiervan is vrij complex. Onze bijdrage heeft tot doel om het maken van Boefjes en Whiskers voor een breder publiek toegankelijk te maken. Om die reden hebben wij een Proof of Concept implementatie met Node-RED gemaakt, zodat basiskennis van IT en JavaScript genoeg is om je eigen complexe Boefjes en Whiskers te maken.
Drie Boefjes en een Whisker uit de KAT-alogus.
Node-RED
Node-RED is een visueel programmeerplatform dat werkt via flows; nodes die onderling (JSON) messages uitwisselen. In tegenstelling tot de meeste andere low-code platforms, is het puur event-based. Een node creëert een nieuwe message, wijzigt een message, of voert een actie uit op basis van een message. Voorbeelden van nodes zijn:
- Inject nodes kunnen handmatig of bij start van de flow een message de flow insturen.
- Debug nodes laten zien wat de inhoud van een message is op een bepaald moment in de flow.
- Function nodes bieden plek voor volledige JavaScript scripts
- Switch nodes hebben meerdere mogelijke outputs, en kiezen hiertussen op basis van een eigenschap van de message.
- HTTP Request nodes sturen een HTTP request (GET, POST, etc.) naar een ingevoerde URL en geven de response door als message.
Een volledig overzicht van de basisnodes is op de website van Node-RED te vinden. Vanwege de event-based insteek, wordt Node-RED veel in de IoT voor (home) automation gebruikt. De tool biedt ook tal van plugins gecreëerd door de community zoals een Dashboard, PostgreSQL integratie, verzameling Modbus nodes, en nodes voor de aansturing van Home Assistant.
Onze bijdrage
De Proof of Concept
Wij hebben een set van twee Node-RED flows ontwikkeld, waar gebruikers zelf Boefjes en Whiskers voor OpenKAT in kunnen ontwikkelen. Deze twee flows zijn samen een Proof of Concept om het OpenKAT development team te laten zien hoe een integratie van Node-RED in OpenKAT er in de praktijk uit kan zien. Node-RED draait, net als de componenten van OpenKAT, in een Docker container. Containers kunnen onderling communiceren; bij deze PoC is er gekozen voor HTTP.
Groepen in de flow Boefjes. Twee voor de connectie en één Boefje.
De twee flows, Boefjes en Whiskers respectievelijk, werken als volgt:
Boefjes
De Boefjes flow bevat twee groepen voor de OpenKAT-invoer en -uitvoer, respectievelijk “BoefjeTasks IN from OpenKAT” en “Raw data OUT to Bytes”. Ieder Boefje heeft zijn eigen groep, met een Link in en Link out node. BoefjeTasks worden momenteel ontvangen op poort 1995 als HTTP, en uitvoer naar Bytes wordt verzonden met behulp van een HTTP POST naar port 1997.
Whiskers
De Whiskers flow bevat twee groepen voor de OpenKAT-invoer en -uitvoer, respectievelijk “NormalizerTasks IN from OpenKAT” en “objectData data OUT to Octopoes”. Elke Whisker heeft zijn eigen groep, met een Link in en een Link out node. NormalizerTasks worden momenteel ontvangen op poort 1997 als HTTP, en de uitvoer naar Octopoes wordt verzonden met behulp van een HTTP POST naar port 1998.
Volgende stappen
De volgende stap is om de Node-RED-container daadwerkelijk te verbinden met OpenKAT. De integratie is ontworpen om als container te draaien om zo goed mogelijk op de huidige architectuur van OpenKAT aan te sluiten. Voor een werkende volledige integratie in OpenKAT moeten nog drie uitdagingen worden overwonnen:
- Het bijwerken van de Node-RED flows om BoefjeTasks en NormalizerTasks correct te accepteren en de juiste data te sturen naar Bytes en Octopoes.
- Een Node-RED-container toevoegen die de flows van deze PoC bevat, en deze opnemen in de orchestration van OpenKAT.
- Het creëren van een Node-RED Boefje en Node-RED Whisker in de OpenKAT KAT-alogus, waar configuratie voor de Node-RED-modules kan worden gedaan.
Hierna zouden OpenKAT-gebruikers relatief eenvoudig hun eigen Boefjes en Whiskers moeten kunnen maken. De code van de Proof of Concept is gedeeld met het OpenKAT team. Als Node-RED in de toekomst daadwerkelijk in OpenKAT geïntegreerd wordt, zullen we deze blogpost uiteraard updaten.
Image credit: @betistriridye via Unsplash
![](https://softwarezaken.nl/wp-content/uploads/2018/03/JoostK_website-150x150.jpg)
Joost Krapels MSc. heeft zijn BSc. in Artificial Intelligence en zijn MSc. in Information Sciences gehaald aan de VU Amsterdam. Bij ICT Institute adviseert hij over informatiebeveiliging (CISSP, Security+, IRCA/CQI Lead Auditor), privacy (CIPP/E), praktisch toepassen van de AVG, en voert hij IT Due Diligence onderzoek uit.