Przejdź do treści
Piotr Szkudlarek

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

  1. 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.

  2. Pobranie alertów

    Zapytanie do SIEM o alerty z zakresu bieżącej zmiany.

  3. Grupowanie według reguł

    Każda reguła dostaje licznik alertów, a wybrane typy reguł także dodatkowe szczegóły potrzebne w raporcie.

  4. Lista reguł w szablonie

    W miejsce {{alerty}} trafia lista punktów w formatowaniu szablonu, od najczęstszej reguły: „reguła: liczba: N× szczegół”.

  5. 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.

Lista reguł w raporcie - przykład syntetycznytext
• 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-admin01

Kluczowe 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.