Die Idee
Die Idee ist, eine AI für die Zuweisung der passenden Iindex- und Sourcetype-Definitionen einer zu gernerierenden Splunk Suche zu nutzen.
Damit soll/wird es möglich sein, aus einer einfachen Aufstellung aller index und sourcetype von Slpunk, die passenden Werte einer zu konvertierenden SIGMA-Regel zuweisen zu können. Damit wird ein maximaler Automatismus in der Konvertierung von beliebigen Sigma-Regeln nach Splunk erreicht.
https://github.com/icepaule/sigma2splunk
Hier meine Fassung aus dem (noch privaten) GitHUB.
Sigma2Splunk
Update vom 2025-02-28
Sigma2Splunk ist eine automatisierte Lösung zur Umwandlung von SIGMA-Regeln in Splunk-Suchen (SPL). Zusätzlich nutzt das System AI, um für jede SIGMA-Regel die passende Technologie zu bestimmen und mit den korrekten index und sourcetype aus index_mapping.csv
zu versehen.
📌 Installation
1️⃣ Docker & Docker-Compose installieren (falls noch nicht vorhanden)
apt update && apt install -y docker.io docker-compose git
systemctl enable docker --now
2️⃣ Repository klonen & in das Verzeichnis wechseln
git clone https://github.com/icepaule/sigma2splunk.git
cd sigma2splunk
3️⃣ AI-Modell herunterladen (falls nicht vorhanden)
Speichere das Mistral-9B-Instruct-Modell in den Ordner models/
:
mkdir -p models
wget -O models/mistral-9b-instruct.gguf https://huggingface.co/RichardErkhov/cloudyu_-_Mistral-9B-Instruct-gguf/resolve/main/Mistral-9B-Instruct.Q8_0.gguf
4️⃣ Docker-Container bauen und starten
docker-compose up --build -d
🏗 Docker-Setup
Docker-Compose Konfiguration (docker-compose.yml
)
services:
sigma2splunk:
build: .
container_name: sigma2splunk
ports:
- "5005:5005"
volumes:
- ./sigma_rules:/app/sigma_rules
- ./converted_rules:/app/converted_rules
- ./models:/app/models
- ./index_mapping.csv:/app/index_mapping.csv
- ./trailing_footer.txt:/app/trailing_footer.txt
environment:
- PYTHONUNBUFFERED=1
- PATH=/root/.local/bin:$PATH
shm_size: '6gb'
restart: unless-stopped
Dockerfile (Dockerfile
)
FROM python:3.10-slim
WORKDIR /app
RUN apt-get update && apt-get install -y git build-essential cmake python3-dev wget && rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt
RUN sigma plugin install splunk
COPY models /app/models
RUN chmod 644 /app/models/*
COPY . .
EXPOSE 5005
CMD ["python", "sigma2splunk.py"]
⚙ Funktionalitäten
🔄 Automatische SIGMA-Konvertierung
- Alle SIGMA-Regeln aus
sigma_rules/
werden automatisch verarbeitet und in Splunk-Queries (.spl
) konvertiert. - Die konvertierten Regeln werden in
converted_rules/
gespeichert.
🤖 AI-gestützte Technologieerkennung
- Die AI (Mistral-9B) analysiert die SIGMA-Regel und bestimmt die passende Technologie.
- Basierend auf dieser Technologie wird in
index_mapping.csv
die beste index/sourcetype-Kombination gewählt.
📊 Index- und Sourcetype-Zuordnung
- Falls die AI keine passende Technologie findet, werden Standardwerte
index=* sourcetype=*
verwendet.
🛠 Manuelle Konvertierung einer SIGMA-Regel
Falls eine Regel nicht automatisch verarbeitet wird, kann sie auch manuell konvertiert werden:
docker exec -it sigma2splunk sigma convert /app/sigma_rules/rule.yml --target splunk --without-pipeline > /app/converted_rules/rule.spl
🛠 Fehlersuche & Monitoring
🚀 Docker-Logs anzeigen
docker-compose logs -f sigma2splunk
🐳 Container neustarten
docker-compose restart sigma2splunk
🛠 Prüfen, ob die AI funktioniert
Falls AI-Probleme auftreten, kann das Modell direkt getestet werden:
docker exec -it sigma2splunk python3 -c 'from llama_cpp import Llama; model = Llama(model_path="/app/models/mistral-9b-instruct.gguf"); print(model("Welche Technologie für Windows-Security-Logs?"))'
📥 Index-Mapping (index_mapping.csv
)
Diese Datei enthält die bekannten index / sourcetype-Kombinationen. Falls nötig, können weitere hinzugefügt werden.
Beispiel:
index,sourcetype,technology
windows_security,WinEventLog:Security,windows
linux_syslog,syslog,linux
firewall_logs,cisco:firewall,network
Falls die AI eine neue Technologie erkennt, wird diese hier ergänzt.
🚀 Repository aktualisieren & Änderungen pushen
Falls Anpassungen gemacht wurden, können diese mit folgendem Skript hochgeladen werden:
./git_push_update.sh
Alternativ manuell:
git add .
git commit -m "Update vom $(date +%Y%m%d)"
git push origin main
🚀 Zukunftspläne & Erweiterungen
- 🔄 Verbesserte AI-Erkennung für noch genauere Zuordnungen.
- 📊 Mehr Logging & Monitoring für bessere Fehleranalyse.
- 📁 Automatische Aktualisierung von
index_mapping.csv
mit neuen Erkennungen.
📞 Support & Feedback
Falls Probleme auftreten oder Ideen für Verbesserungen bestehen, einfach eine Issue auf GitHub erstellen.
📝 Lizenz & Danksagung
Dieses Projekt basiert auf der Sigma-CLI und nutzt das Mistral-9B-Instruct-Modell zur Technologieerkennung.
🔹 Lizenz: MIT
🔹 Ersteller: icepaule
🔹 Special Thanks an die SigmaHQ & HuggingFace Community 🚀