Pisanie reguł Sigma
Przenośna składnia reguł wykrywania
Pisanie reguł Sigma to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Czym jest Sigma
Sigma to uniwersalny, niezależny od dostawcy format sygnatur dla detekcji opartych na logach. Logikę detekcji zapisuje się raz w YAML, a następnie konwertuje do Splunk SPL, zapytań Elastic, Sentinel KQL i wielu innych backendów.
Sigma jest dla detekcji w logach tym, czym YARA jest dla detekcji w plikach: przenośnym wspólnym językiem. Pozwala zespołom publicznie udostępniać reguły i unikać przepisywania tej samej koncepcji dla każdego systemu SIEM.
Budowa reguły
Reguła Sigma jest dokumentem YAML zawierającym sekcje wymagane i opcjonalne. Najważniejsze z nich to title, logsource i detection.
title: Suspicious PowerShell Encoded Command
id: 7e3f3c1a-1f2b-4c3d-9a8b-1234567890ab
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\\powershell.exe'
CommandLine|contains: '-enc'
condition: selection
level: highBlok logsource
Blok logsource informuje konwerter, do których logów odnosi się reguła. Nie wysyła on bezpośrednio zapytań do danych; podczas konwersji wybiera właściwe mapowanie pól i indeks.
Typowe klucze:
product— np. windows, linux, awscategory— np. process_creation, network_connection, file_eventservice— np. sysmon, security, sshd
Należy wybrać najbardziej szczegółową kombinację obsługiwaną przez dane, aby pipeline poprawnie mapował pola.
Selekcje i identyfikatory wyszukiwania
W sekcji detection definiuje się co najmniej jeden nazwany identyfikator wyszukiwania (selekcję). Każdy z nich jest mapą kryteriów typu pole-wartość. Wiele pól w jednej selekcji jest łączonych operatorem logicznym AND.
W tym przypadku oba warunki muszą być prawdziwe, aby dopasować selection.
detection:
selection:
EventID: 4688
NewProcessName|endswith: '\\whoami.exe'
condition: selectionModyfikatory pól
Modyfikatory precyzują sposób dopasowywania wartości. Dołącza się je do nazwy pola po znaku potoku.
contains— dopasowanie podciągustartswith/endswith— dopasowanie zakotwiczoneall— każda wartość z listy musi być obecnare— wyrażenie regularnebase64offset|contains— dopasowanie podciągów zakodowanych w base64
Modyfikatory można łączyć; są stosowane od lewej do prawej, w podanej kolejności.
detection:
selection:
CommandLine|contains|all:
- 'Invoke-WebRequest'
- 'DownloadString'
condition: selectionListy i mapy jako OR / AND
Logiką wewnątrz selekcji rządzą dwie zasady:
- Lista wartości przypisana do jednego pola oznacza OR — dopasowanie dowolnej wartości wystarczy.
- Mapa wielu pól oznacza AND — wszystkie pola muszą pasować.
Poniżej Image pasuje do jednego z dwóch plików binarnych, a User musi mieć wartość SYSTEM.
detection:
selection:
Image|endswith:
- '\\net.exe'
- '\\net1.exe'
User: 'SYSTEM'
condition: selectionWyrażenie condition
Element condition łączy nazwane selekcje za pomocą logiki boolowskiej. To tutaj wyraża się filtry i wykluczenia.
Dostępne operatory to and, or, not, nawiasy oraz agregacje, takie jak count(). Można również użyć 1 of selection* / all of selection*, aby odwołać się do grup identyfikatorów według prefiksu.
detection:
selection:
EventID: 4625
timeframe: 5m
condition: selection | count() by SourceIp > 10Odfiltrowywanie szumu
Aby pomijać znaną prawidłową aktywność, należy zdefiniować osobny identyfikator i odjąć go w warunku za pomocą not. Dzięki temu logika złośliwej aktywności pozostaje czytelna, a wykluczenia są jawne.
W tym przypadku reguła uruchamia się, gdy rundll32 tworzy połączenie sieciowe, z wyjątkiem znanego prawidłowego procesu aktualizacji.
detection:
selection:
Image|endswith: '\\rundll32.exe'
filter_legit:
ParentImage|endswith: '\\MicrosoftEdgeUpdate.exe'
condition: selection and not filter_legitMetadane do triage
Oprócz logiki dobre reguły zawierają metadane, które pomagają osobom reagującym na incydenty szybko działać i ułatwiają inżynierom utrzymanie pokrycia.
level— informacyjny, niski, średni, wysoki, krytycznytags— techniki ATT&CK, np. attack.t1059.001falsepositives— znane nieszkodliwe wyzwalaczereferences— raporty dotyczące zagrożeń lub dokumentacjaauthoridate
Te pola wymagają kilku minut pracy, a podczas incydentu oszczędzają wiele godzin.
Reguły korelacji
Reguły dotyczące pojedynczych zdarzeń nie potrafią wyrażać ataków wieloetapowych. Reguły korelacji Sigma łączą wiele reguł bazowych w czasie, aby wykrywać sekwencje i wzorce.
Obsługiwane typy obejmują event_count (N dopasowań w oknie), value_count (różne wartości, np. wielu użytkowników z nieudanymi próbami logowania) oraz temporal (najpierw reguła A, potem reguła B). Pozwala to wykryć na przykład udane logowanie tuż po serii nieudanych prób.
name: bruteforce_then_success
correlation:
type: temporal
rules: [failed_logins, successful_login]
group-by: [SourceIp, TargetUser]
timespan: 10mKonwersja do backendu
Za pomocą sigma-cli można konwertować regułę do docelowego języka zapytań. Pipeline przetwarzania mapuje nazwy pól Sigma na rzeczywisty schemat danych.
Wynikiem jest gotowe do wdrożenia zapytanie, które można wkleić lub wysłać za pomocą API.
sigma convert -t splunk -p sysmon \
-f default rule.yml
# Example output (Splunk SPL):
# Image="*\\powershell.exe" CommandLine="*-enc*"Szybki test
Sprawdź swoją znajomość logiki detekcji Sigma.
Podsumowanie
Potrafi już Pan/Pani tworzyć przenośne reguły Sigma:
logsourcewybiera logi i mapowania pól, które mają zastosowanie- Selekcje to nazwane kryteria pole-wartość (pola = AND, listy wartości = OR)
- Modyfikatory, takie jak contains, endswith, all i re, doprecyzowują dopasowanie
conditionłączy selekcje za pomocą and/or/not, filtrów i agregacji- Osobne identyfikatory filter odejmują znany prawidłowy szum
- Metadane (level, tags, falsepositives) przyspieszają triage
sigma convertkompiluje regułę do backendu systemu SIEM
Następnie powiąże Pan/Pani te reguły z technikami przeciwnika za pomocą MITRE ATT&CK.
Często zadawane pytania
Czy lekcja „Pisanie reguł Sigma” jest bezpłatna?
Tak — pełny tekst „Pisanie reguł Sigma” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Pisanie reguł Sigma”?
Przenośna składnia reguł wykrywania Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?
Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Pisanie reguł Sigma”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?
Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Zasady Detection-as-Code
- Pisanie reguł Sigma
- Mapowanie na MITRE ATT&CK
- Testowanie i dostrajanie mechanizmów wykrywania