Case study
Automatyczny raport zmianowy
Skrypt rozpoznaje zakres bieżącej zmiany, pobiera z SIEM dane z tego okresu, grupuje je według reguł i wypełnia szablon Word: datę, godziny zmiany, liczbę alertów i listę reguł ze szczegółami.
- Technologie
- Python
- python-docx
- Query DSL
- Word (DOCX)
Kontekst
Każda zmiana w SOC przygotowuje raport ze swojej pracy. Wcześniej każdy robił go po swojemu, a mój skrypt ujednolicił go do jednego wspólnego szablonu.
Problem
Ręczne liczenie alertów według reguł i przepisywanie szczegółów z SIEM do szablonu na każdej zmianie to powtarzalna praca.
Moja rola
Napisałem skrypt w Pythonie, który przygotowuje cały raport: rozpoznaje zakres zmiany, pobiera alerty z SIEM, grupuje je według reguł i wypełnia szablon Word. Uruchamia go skrypt w PowerShell na koncie pracownika.
Dane i narzędzia
- Wejście
- alerty z SIEM za okres zmiany
- Szablon
- dokument Word z polami
{{data}},{{godziny}},{{liczba_alertow}}i{{alerty}} - Wyjście
- gotowy plik DOCX
- Uruchamianie
- skrypt w PowerShell na koncie pracownika
Jak działa
Rozpoznanie zmiany
Skrypt sprawdza bieżącą godzinę w danej strefie czasowej, ustala, która zmiana trwa, i wyznacza jej zakres czasu, przeliczony na UTC do zapytania.
Pobranie alertów
Zapytanie do SIEM o alerty z zakresu bieżącej zmiany.
Grupowanie według reguł
Każda reguła dostaje licznik alertów, a wybrane typy reguł także dodatkowe szczegóły potrzebne w raporcie.
Lista reguł w szablonie
W miejsce
{{alerty}}trafia lista punktów w formatowaniu szablonu, od najczęstszej reguły: „reguła: liczba: N× szczegół”.Data, godziny, liczba alertów
Te pola są podmieniane bezpośrednio w XML pliku DOCX, także w polach tekstowych, kształtach, nagłówkach i stopkach, nawet gdy Word podzielił pole na kilka fragmentów tekstu.
• WAF – reguła przykładowa A: 12: 8x [szczegół 1], 4x [szczegół 2]
• Windows – reguła przykładowa B: 4: 3x logon - lab-user01, 1x logon - lab-user02
• Windows – reguła przykładowa C: 2: 2x lab-admin01Kluczowe decyzje
- Szablon Word zamiast generowania od zera
- Raport wygląda tak jak ustalony szablon, a skrypt podmienia tylko treść.
- Podmiana pól w XML
- python-docx nie sięga do pól tekstowych i kształtów, a Word potrafi podzielić pole na kilka fragmentów, dlatego część pól jest podmieniana bezpośrednio w XML.
- Szczegóły zależne od typu reguły
- Różne typy reguł potrzebują w raporcie innych szczegółów, więc skrypt dobiera je do typu reguły, a gdy brakuje pola, sięga po kolejne.
Stan
Raport powstaje codziennie, zwykle na każdej zmianie, uruchamiany skryptem w PowerShell. Korzysta z niego cały zespół SOC.
Ograniczenia
- Szczegóły są rozpisywane tylko dla wybranych typów reguł; dla pozostałych raport podaje samą liczbę alertów.
- Szablonu i prawdziwych raportów nie publikuję, przykład powyżej jest syntetyczny.