Larm och ärendehantering i ELK-stacken
I den här blogginlägget ska vi testa ett plugin till Kibana. Kibana är en del av ELK-stacken. ELK står för Elasticsearch, Logstash och Kibana. Simovits använder ofta Elasticsearch för logganalys då det är öppen mjukvara och väldigt skalbart.
Elasticsearch vilket är en distribuerad sökmotor byggd på Apache Lucene.
Kibana är ett webbgränssnitt som integrerar med data i Elasticsearch.
Logstash är en loggmottagare för att skjuta in data i Elasticsearch.
Det vi kommer titta närmare på är ett plugin till Kibana som heter SOC Workflow App och finns att hämta på https://github.com/socprime/soc_workflow_app_ce. Beskrivningen på GitHub säger följande om pluginet:
SOC Workflow App helps Security Analysts and Threat Hunters explore suspicious events, look into raw events arriving at Elastic stack and view Saved Searches saved by teammates. Carry out investigations based on automatically generated alerts from SIEM, EDR, IDS arriving at Elastic stack, Elastic Machine Learning alerts and Threat Intelligence data enrichments from Anomali ThreatStream & MISP.
Enligt dokumentation på projektet ska installationen ske med kibanas plugin manager. Dock kommer detta steg misslyckas då paketet som distribueras i installationsfilen inte är komplett. Det saknas några beroende som pluginet kräver. Detta är lätt fixat genom att bygga upp dessa enligt följande:
- Extrahera zip-filen /dist/soc_workflow_app_nnnn.zip
- Uppdatera Kibana version till rätt version i package.json
- Installera npm om det inte är gjort. Bygg beroende i package.json med ”npm install” i samma mapp som filen. Detta kommer bygga beroendena i ”node_modules”
- Komprimera den uppackade mappen ”zip -r soc_workflow_ce-1.6.3.zip kibana/”
- Installera kibana pluginet ”/usr/share/kibana/bin/./kibana-plugin install file:///PATH_TO_FILE/soc_workflow_ce-xxxxx.zip” (glöm inte file://)
SOC Workflow använder sig även av ett antal index enligt dokumentation:
- ”alerts_ecs*” – for events that need to be investigated by SOC. That could be correlation events generated by logstash or scripts
- ”alerts_logs*” – for workflow stages and comments history
- ”case_ecs*” – is used to store cases
- ”case_logs*” – for case stages and comments history
- ”sigma_doc” – is used for storing SIGMA documents for data enrichment
- ”playbook” – for playbooks.
Skapa templates för dessa index: https://github.com/socprime/soc_workflow_app_ce/blob/master/resources/templates/
Så nu är det bara att starta om Kibana för att komma åt det nya pluginet.
Själva pluginet är uppdelat i fyra delar:
- Cases – Ärenden skapade genom pluginet
- Alerts – Larm som genereras t.ex. från logstash eller annan loggmottagare
- Events – Händelser genom olika fördefinierade frågor
- Playbooks – Guider för olika typer av larm och händelser
Cases
Nedan visas hur cases ser ut. Här finns en möjlighet att skapa ärenden och senare berika och undersöka dem närmare med information från uppslagningar mot egendefinierade källor.
Även här finns en bugg i pluginet. För att skapa source.ip och destination.ip behöver de läggas till i /usr/share/kibana/plugins/soc_workflow_ce/config/case_enabled_field_list.json:
{ "key": "source.ip", "title": "source.ip" }, { "key": "destination.ip", "title": " destination.ip " }
När detta är genomfört kommer dessa fält att skapas när ett nytt ärende skapas. När ärendet har skapats finns möjligheten att genomföra uppslagningar och berikningar från olika fält i ärendet.
För att skapa dessa uppslagningar så behöver de definieras i filen external_lookup.json. Några exempel på definierade uppslagningar:
[ {}, { "Lookup": [ { "name": "CyberChef", "link": "https://gchq.github.io/CyberChef/#input=[[value]]", "functions": [ "base64" ] }, { "name": "Google", "link": "https://www.google.com/search?q=[[value]]" }, { "name": "VirusTotal-IP", "link": "https://www.virustotal.com/#/ip-address/[[value]]" }, { "name": "Cymon-Lookup", "link": "https://cymon.io/[[value]]" }, { "name": "ThreatCrowd", "link": "https://www.threatcrowd.org/ip.php?ip=[[value]]" } ] } ]
Det finns även möjlighet att köra fördefinierad script genom att editera config/external_command.json. I den här filen kan script länkas eller enklare kommandon köras för olika uppslagningar t.ex. mot olika threatintel-plattformar eller bearbeta data enligt behov.
Alerts
Är en modul för larmsättning och ett sätt för att skicka larm till pluginet. Detta kan göras t.ex. med hjälp av Logstash eller det verktyg ni använder för att skicka vidare loggar till Elasticsearch. Det görs genom att skicka in data till Elasticsearch indexet alerts_ecs de kan sedan mappas in mot guider (playbooks) för att sätta upp en rutin hur ärendet hanteras.
Playbooks
Är ett sätt att bygga upp guider för att underlätta sättet organisationen hanterar olika typer av larm. Här kan information infogas om hur de olika fallen ska hanteras och även relatera dessa till olika larm och ärenden.
Summering:
SOC workflow App fyller ett syfte i Kibana. Dock så finns det flera förbättringsmöjligheter för applikationen. Skulle vilja se ett lättare sätt att uppdatera fält, samt att dokumentationen förbättras. Finns även stöd för Sigma (https://github.com/Neo23x0/sigma), vilket jag inte undersökt närmare. Sigma är en generisk definition för SIEM larm som sedan kan översättas till t.ex. ArchSight, Splunk eller Kibana frågor. Jag kommer fortsätta använda pluginet då jag tycker om möjligheten att skapa larm och även direkt i Kibana kunna skapa ärenden.
+ Bra funktion för att skapa ärenden i Kibana
+ Bra larmfunktion
+ Lätt att utföra externa uppslagningar från fält i Kibana
– Lite sparfattig dokumentation
– Borde gå att konfigurera vilka fält som används av applikationen. T.ex. så kanske vi vill använda srcip istället för source.ip för att stämma överens med mappning mot andra loggkällor.
– Applikationen känns lite ofärdig. Distributionspaketet går inte att installera utan modifieringar, skapandet av source.ip etc.