Udostępnij za pośrednictwem


Inspekcja i śledzenie zmian zadań zdarzeń w usłudze Microsoft Sentinel

Zadania incydentów zapewniają kompleksowe i jednolite traktowanie zdarzeń we wszystkich personelach SOC. Listy zadań są zwykle definiowane zgodnie z ustaleniami wykonanymi przez starszych analityków lub menedżerów SOC i wdrażane w praktyce przy użyciu reguł automatyzacji lub podręczników.

Analitycy mogą zobaczyć listę zadań, które muszą wykonać dla określonego zdarzenia na stronie szczegółów zdarzenia, i oznaczyć je jako ukończone w miarę ich działania. Analitycy mogą również tworzyć własne zadania na miejscu, ręcznie, bezpośrednio z poziomu incydentu.

W tym artykule wyjaśniono, jak menedżer SOC może przeprowadzać inspekcję historii zadań zdarzeń usługi Microsoft Sentinel i śledzić zmiany wprowadzone w całym cyklu życia, aby ocenić skuteczność zadań i ich wkład w wydajność soc i prawidłowe działanie.

Struktura tablicy Tasks w tabeli SecurityIncident

Tabela SecurityIncident jest tabelą inspekcji — nie przechowuje samych zdarzeń, ale raczej rejestruje życie zdarzenia: jego utworzenie i wszelkie wprowadzone zmiany. Za każdym razem, gdy zdarzenie zostanie utworzone lub zostanie wprowadzone zmiany w zdarzeniu, w tej tabeli zostanie wygenerowany rekord przedstawiający bieżący stan zdarzenia.

Dodanie szczegółów zadań do schematu tej tabeli umożliwia bardziej szczegółowe przeprowadzanie inspekcji zadań.

Szczegółowe informacje dodane do pola Zadania składają się z par klucz-wartość, które przyjmują następującą strukturę:

Key Opis wartości
Createdby Tożsamość, która utworzyła zadanie:
- adres e-mail: adres e-mail tożsamości
- name: nazwa tożsamości
- objectId: identyfikator GUID tożsamości
- userPrincipalName: nazwa UPN tożsamości
createdTimeUtc Godzina utworzenia zadania w formacie UTC.
lastCompletedTimeUtc Czas, w jaki zadanie zostało oznaczone jako ukończone, w formacie UTC.
lastModifiedBy Tożsamość, która ostatnio zmodyfikowała zadanie:
- adres e-mail: adres e-mail tożsamości
- name: nazwa tożsamości
- objectId: identyfikator GUID tożsamości
- userPrincipalName: nazwa UPN tożsamości
lastModifiedTimeUtc Czas ostatniej modyfikacji zadania w formacie UTC.
status Bieżący stan zadania: Nowy, Ukończono, Usunięty.
identyfikator zadania Identyfikator zasobu zadania.
title Przyjazna nazwa nadana zadaniu przez jego twórcę.

Wyświetlanie zadań zdarzeń w tabeli SecurityIncident

Oprócz skoroszytu Zadania zdarzeń można przeprowadzić inspekcję działania zadania, wykonując zapytanie względem tabeli SecurityIncident w dziennikach. W pozostałej części tego artykułu pokazano, jak to zrobić, a także jak odczytywać i interpretować wyniki zapytania w celu uzyskania informacji o działaniu zadania.

  1. Na stronie Dzienniki wprowadź następujące zapytanie w oknie zapytania i uruchom je. To zapytanie zwróci wszystkie zdarzenia, które mają przypisane zadania.

    SecurityIncident
    | where array_length( Tasks) > 0
    

    Do zapytania można dodać dowolną liczbę instrukcji, aby filtrować i zawęzić wyniki. Aby pokazać, jak wyświetlić i zrozumieć wyniki, dodamy instrukcje w celu filtrowania wyników, aby zobaczyć tylko zadania dla pojedynczego incydentu, a także dodamy instrukcję project , aby zobaczyć tylko te pola, które będą przydatne dla naszych celów, bez dużej ilości bałaganu.

    Dowiedz się więcej o korzystaniu z język zapytań Kusto.

    SecurityIncident
    | where array_length( Tasks) > 0
    | where IncidentNumber == "405211"
    | sort by LastModifiedTime desc 
    | project IncidentName, Title, LastModifiedTime, Tasks
    
  2. Przyjrzyjmy się najnowszej dokumentacji dla tego zdarzenia i znajdźmy listę skojarzonych z nim zadań.

    1. Wybierz rozszerzenie obok górnego wiersza w wynikach zapytania (które zostały posortowane w kolejności malejącej recency).

      Screenshot of query results showing an incident with its tasks.

    2. Pole Zadania to tablica bieżącego stanu wszystkich zadań w tym zdarzeniu. Wybierz rozszerzenie, aby wyświetlić każdy element w tablicy we własnym wierszu.

      Screenshot of query results showing an incident with its tasks expanded.

    3. Teraz zobaczysz, że w tym zdarzeniu znajdują się dwa zadania. Każda z nich jest reprezentowana z kolei przez rozszerzalną tablicę. Wybierz rozszerzenie pojedynczego zadania, aby wyświetlić jego informacje.

      Screenshot of query results showing an incident with a single task expanded.

    4. W tym miejscu zobaczysz szczegóły pierwszego zadania w tablicy ("0" jest pozycją indeksu zadania w tablicy). Pole tytułu zawiera nazwę zadania, jak pokazano w zdarzeniu.

Wyświetlanie zadań dodanych do listy

  1. Dodajmy zadanie do zdarzenia, a następnie wrócimy tutaj, ponownie uruchomimy zapytanie i zobaczymy zmiany w wynikach.

    1. Na stronie Incydenty wprowadź numer identyfikatora zdarzenia na pasku wyszukiwania.

    2. Otwórz stronę szczegółów zdarzenia i wybierz pozycję Zadania na pasku narzędzi.

    3. Dodaj nowe zadanie, nadaj mu nazwę "To zadanie jest zadaniem testowym!", a następnie wybierz pozycję Zapisz. Ostatnie zadanie pokazane poniżej to, co należy zrobić:

      Screenshot shows incident tasks panel.

  2. Teraz wróćmy do strony Dzienniki i ponownie uruchomimy nasze zapytanie.

    W wynikach zobaczysz, że w tabeli znajduje się nowy rekord dla tego samego incydentu (zwróć uwagę na znaczniki czasu). Rozwiń rekord i zobaczysz, że podczas gdy rekord, który widzieliśmy wcześniej, miał dwa zadania w tablicy Tasks , nowy ma trzy. Najnowsze zadanie jest właśnie dodane, jak widać według jego tytułu.

    Screenshot of query results showing an incident with its newly created task.

Wyświetlanie zmian stanu zadań

Teraz, jeśli wrócimy do tego nowego zadania na stronie szczegółów zdarzenia i oznaczymy je jako ukończone, a następnie wrócimy do pozycji Dzienniki i ponownie uruchomimy zapytanie, zobaczymy kolejny nowy rekord dla tego samego zdarzenia, tym razem pokazując nowy stan zadania jako Ukończono.

Screenshot of query results showing an incident task with its new status.

Wyświetlanie usuwania zadań

Wróćmy do listy zadań na stronie szczegółów zdarzenia i usuńmy dodane wcześniej zadanie.

Gdy wrócimy do dzienników i ponownie uruchomimy zapytanie, zobaczymy kolejny nowy rekord, tym razem tylko stan zadania — ten o nazwie "To zadanie jest zadaniem testowym!" — zostanie usunięta.

Jednak gdy zadanie pojawi się po raz taki w tablicy (ze stanem Usunięty ), nie będzie już wyświetlane w tablicy Tasks w nowych rekordach dla tego zdarzenia w tabeli SecurityIncident . Istniejące rekordy, takie jak te, które widzieliśmy powyżej, będą nadal zachowywać dowody, że to zadanie kiedyś istniało.

Wyświetlanie aktywnych zadań należących do zamkniętego zdarzenia

Poniższe zapytanie umożliwia sprawdzenie, czy zdarzenie zostało zamknięte, ale nie wszystkie przydzielone zadania zostały ukończone. Ta wiedza może pomóc w sprawdzeniu, czy wszelkie pozostałe luźne końce dochodzenia zostały wniesione do wniosku — wszystkie odpowiednie strony zostały powiadomione, wszystkie komentarze zostały wprowadzone, wszystkie odpowiedzi zostały zweryfikowane itd.

SecurityIncident
| summarize arg_max(TimeGenerated, *) by IncidentNumber
| where Status == 'Closed'
| mv-expand Tasks
| evaluate bag_unpack(Tasks)
| summarize arg_max(lastModifiedTimeUtc, *) by taskId
| where status !in ('Completed', 'Deleted')
| project TaskTitle = ['title'], TaskStatus = ['status'], createdTimeUtc, lastModifiedTimeUtc = column_ifexists("lastModifiedTimeUtc", datetime(null)), TaskCreator = ['createdBy'].name, lastModifiedBy, IncidentNumber, IncidentOwner = Owner.userPrincipalName
| order by lastModifiedTimeUtc desc

Następne kroki