$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Niniejsza sekcja przedstawia reprezentatywne wyniki uzyskane dzięki protokołowi IOC-to-regex oraz podsumowuje ewaluację referencyjną służącą do oceny jego przydatności operacyjnej. W ramach ewaluacji referencyjnej przetworzono 3 156 raportów CTI powiązanych z technikami MITRE ATT&CK, przeanalizowano ponad 230 000 zdań, wyekstrahowano ponad 63 000 kandydatów na IOC oraz zweryfikowano wygenerowane wyrażenia regularne (regex) w odniesieniu do ponad 2 400 niezależnie zebranych ciągów znaków prawdy obiektywnej (ground-truth) z dziesięciu scenariuszy MITRE ATT&CK Evaluation. Ciągi znaków prawdy obiektywnej stanowią wyselekcjonowane przez ekspertów artefakty ataków, raportowane niezależnie przez dostawców rozwiązań cyberbezpieczeństwa podczas ćwiczeń MITRE ATT&CK Evaluation, a zatem odzwierciedlają wzorce strukturalne, które analitycy i dostawcy dokumentują w praktyce. Poniższe wyniki koncentrują się na zachowaniu przepływu pracy, poprawności strukturalnej oraz efektach ewaluacji istotnych dla operacyjnej analizy logów i przepływów detekcyjnych.
Przegląd całego procesu przedstawiono na Rysunku 1, który podsumowuje etapy wyszukiwania grup przechwytywania i generowania wyrażeń regularnych, stanowiące ramy dla pozostałych reprezentatywnych wyników.
Etap 1: Wynik analizy dokumentu
Rycina 2 przedstawia wynik Etapu 1, w którym wejściowy raport CTI jest analizowany i przekształcany w ujednoliconą reprezentację Markdown. Po pomyślnym wykonaniu interfejs wyświetla ustrukturyzowany podgląd dokumentu, zawierający granice sekcji oraz wskaźniki istotności.
Prawidłowe wykonanie objawia się spójną segmentacją akapitów oraz zachowaniem artefaktów technicznych, takich jak ścieżki do plików, klucze rejestru i fragmenty wiersza poleceń. Nadmierne ucięcie treści lub utrata formatowania na tym etapie mogą wpłynąć na późniejszą analizę i powinny zostać naprawione przed kontynuowaniem prac.
Etap 2: Ekstrakcja IOC w oparciu o konsensus
Rysunek 3 ilustruje wynik etapu 2, w którym kandydaci na IOC są wyodrębniani przy użyciu głosowania zespołowego wielu modeli LLM. Powstały interfejs prezentuje kolekcję IOC w formacie JSON, opatrzoną adnotacjami dotyczącymi liczby głosów oraz modeli, które do nich przyczyniły się.
Zachowane zostają jedynie te IOC, które spełniają skonfigurowany minimalny próg konsensusu. IOC wykluczone na tym etapie zazwyczaj odzwierciedlają halucynacje specyficzne dla danego modelu lub niejednoznaczne fragmenty tekstu. Ich wykluczenie jest oczekiwanym i pożądanym wynikiem, wskazującym na prawidłowe funkcjonowanie głosowania zespołowego.
Etap 3: Analiza i klasyfikacja IOC
Tabela 2 podsumowuje oczekiwane wyniki, automatyczne kroki walidacji oraz kontrole jakości przeznaczone dla analityka na każdym etapie protokołu.
Rysunek 4 przedstawia kandydatów na IOC, którzy nie osiągnęli progu konsensusu podczas głosowania zespołowego w Etapie 2, a których interfejsy powierzchniowe są udostępniane do inspekcji analityka. Takie kandydatury zazwyczaj odzwierciedlają halucynacje specyficzne dla modelu lub niejednoznaczne fragmenty tekstu. Rysunek 4 i Rysunek 5 odpowiadają zatem wynikom różnych etapów — zestawowi odrzuconemu w Etapie 2 oraz zestawowi zatrzymanemu w Etapie 3 — a nie alternatywnym widokom tego samego procesu w Etapie 3.
Rysunek 5 przedstawia tabelę zachowanych IOC wygenerowaną w Etapie 3 po parsowaniu JSON, kategoryzacji opartej na regułach oraz deduplikacji IOC. Dla każdego zachowanego IOC etap ten rejestruje zestandaryzowaną kategorię, tag źródła oraz oryginalny klucz ekstrakcji, jeśli jest dostępny, przed przekazaniem IOC do dalszej normalizacji.
Etap 4: Normalizacja IOC z wykorzystaniem grafów dla różnych typów IOC
Rycina 6, Rycina 7 oraz Rycina 8 przedstawiają reprezentatywne wyniki normalizacji dla trzech kategorii IOC omówionych w niniejszym badaniu: ścieżek do plików, kluczy rejestru i wskaźników wiersza poleceń. Dla każdej kategorii ryciny porównują oryginalny IOC wyodrębniony z raportu CTI z reprezentacją znormalizowaną, uzyskaną za pomocą analizy wspomaganej grafem.
W przypadku wszystkich typów IOC, protokół rozkłada każdy IOC na komponenty semantyczne i rozstrzyga relacje hierarchiczne, wykorzystując ustrukturyzowaną wiedzę zakodowaną w grafowej bazie danych. W obecnej implementacji baza Neo4j przechowuje znormalizowane węzły Ścieżki, Rejestru i CLI oraz wykorzystuje relacje sąsiedztwa do sprawdzenia, czy komponenty należą do rozpoznanych łańcuchów. Rola ta jest analogiczna do wykorzystania ustrukturyzowanej wiedzy ATT&CK podczas projektowania mechanizmów detekcji2.
Co istotne, ten etap normalizacji rejestruje jawne role semantyczne dla komponentów IOC, oznaczając je jako „zachowaj” (keep) lub „usuń” (discard), zamiast po cichu usuwać je z rekordu analizy. Znormalizowany ciąg znaków jest rekonstruowany głównie z komponentów oznaczonych jako zachowaj, podczas gdy komponenty do usunięcia pozostają dostępne jako metadane dla późniejszego generowania i walidacji wyrażeń regularnych (regex).
O prawidłowym wykonaniu tego etapu świadczą znormalizowane IOC, które zachowują istotny kontekst strukturalny i wykazują spójne etykietowanie grup przechwytywania w różnych typach IOC. Porównanie wizualne reprezentacji oryginalnych i znormalizowanych stanowi praktyczny mechanizm kontroli jakości, pozwalający zweryfikować, czy rozdzielczość grup przechwytywania została zastosowana w sposób spójny i bez niezamierzonej utraty informacji.
Etap 5: Generowanie wyrażeń regularnych z pomocniczym wyborem opartym na ograniczeniach
Rysunek 9 przedstawia wynik Etapu 5, w którym protokół generuje strukturalnie zgodne wyrażenia regularne z znormalizowanych IOC za pomocą iteracyjnego procesu walidacji. Implementacja łączy początkowy prompt generujący, diagnostyczne ponawianie zapytań w przypadku braku dopasowania kandydata do IOC, walidację z uwzględnieniem odrzucań oraz pętle ponowień z określonym limitem.
Biorąc pod uwagę znormalizowany IOC oraz powiązaną z nim specyfikację komponentów do zachowania/odrzucenia, przepływ pracy najpierw generuje wstępnego kandydata na wyrażenie regularne (regex). Następnie kandydat jest testowany względem IOC, w przypadku niepowodzenia dopasowania następuje ponowne wywołanie diagnostyczne, sprawdzane jest występowanie zakazanych odrzuconych tokenów, a następnie oceniana jest nadmierna generalizacja przy użyciu losowych ciągów negatywnych.
W przypadku, gdy wielu kandydatów spełnia podstawowe kryteria walidacji, protokół stosuje pomocniczy mechanizm selekcji oparty na ograniczeniach, aby zachować reprezentatywny regex do dalszego wykorzystania. Obecna implementacja ocenia kandydatów według wzoru `Score = n_cg - n_wc`, gdzie `n_cg` to liczba reprezentowanych komponentów zachowanych, a `n_wc` to liczba odrzuconych lub niezmapowanych tokenów obecnych w regexie.
Funkcję selekcji definiuje się jako:
Wynik = n_cg − n_wc
Jest to specjalizacja o równych wagach (α = β = 1) bardziej ogólnej postaci Score = α·n_cg − β·n_wc. Tutaj n_cg oznacza liczbę reprezentowanych komponentów zachowanych, a n_wc oznacza liczbę komponentów odrzuconych lub nieprzypisanych dodatkowych tokenów wprowadzonych ponownie przez wyrażenie regularne. Implementacja rejestruje również liczbę iteracji, listy błędów, szacowane zużycie tokenów, wykorzystanie pamięci podręcznej oraz telemetrię opóźnień dla każdego IOC. Ustawienie równych wag zostało zastosowane jako prosty, deterministyczny domyślny parametr dla implementacji referencyjnej; ponieważ traktuje ono brakujący komponent zachowany i ponownie wprowadzony komponent odrzucony jako równie niepożądane, w kontekstach wdrożeniowych, w których wyniki fałszywie ujemne i fałszywie dodatnie niosą ze sobą różne koszty operacyjne, preferowane mogą być inne wagi.
Jako kandydat najlepiej spełniający te ograniczenia wybierany jest końcowy regex. Wyklucza się wybór wyrażeń regularnych, które umieszczają wymagane komponenty grup przechwytujących wewnątrz konstrukcji opcjonalnych, np. ( ... )?, ponieważ osłabia to spójność semantyczną. Ten etap selekcji jest pomocniczy względem procesu generowania i nie ma służyć jako samodzielna metryka jakości.
Przegląd analityczny przetwarzania CTI
Rysunek 10 przedstawia przegląd wyników analizy CTI we wszystkich przetworzonych dokumentach. W ocenie referencyjnej ekstrakcja IOC z 3 156 raportów CTI dostarczyła ponad 63 000 kandydatów na IOC, w tym 12 195 ścieżek do plików, 2 302 kluczy rejestru oraz 10 286 wskaźników wiersza poleceń, przy czym pozostałe kandydaty należały do typów IOC niebędących celami wyrażeń regularnych.
Liczby te stanowią wysokopoziomową walidację potwierdzającą, że wyodrębnione wskaźniki koncentrują się w trzech kategoriach IOC objętych obecnym protokołem, wykazując jednocześnie, że wiele wyodrębnionych artefaktów pozostaje poza zakresem generowania wyrażeń regularnych. Podczas reprodukcji przepływu pracy należy podać dokładną liczbę przetworzonych raportów CTI, całkowitą liczbę kandydatów na IOC, liczby w podziale na kategorie oraz dostawcę, model, wersję modelu, temperaturę, liczbę powtórzeń i próg konsensusu zastosowane podczas ekstrakcji.
W ewaluacji referencyjnej wygenerowane wyrażenia regularne (regexy) oceniono w odniesieniu do ponad 2 400 niezależnie zebranych ciągów znaków prawdy obiektywnej (ground-truth) z dziesięciu scenariuszy MITRE ATT&CK Evaluation, osiągając średni wskaźnik trafień 99,1 % oraz średni wskaźnik niedopasowania między różnymi IOC na poziomie 0,8 %. W niniejszym manuskrypcie wskaźnik niedopasowania jest wykorzystywany jako miara specyficzności semantycznej: niedopasowanie występuje, gdy wyrażenie regularne wygenerowane dla jednego IOC pasuje również do ciągu znaków prawdy obiektywnej powiązanego z innym IOC. Wartość ta nie powinna być interpretowana jako końcowy operacyjny wskaźnik fałszywych alarmów, który zależy również od logiki reguł w dalszych etapach analizy oraz kontekstu wdrożenia.
Rozkład ten odzwierciedla strukturę korpusu CTI i pozwala użytkownikom zweryfikować, czy wyekstrahowane wskaźniki są zgodne z oczekiwanymi typami IOC. Znaczne odchylenia od oczekiwanych proporcji mogą wskazywać na problemy z analizą składniową lub ekstrakcją w górnym strumieniu danych i powinny zostać zbadane przed przejściem do normalizacji i generowania wyrażeń regularnych w dolnym strumieniu.
Analiza działań optymalizacji wyrażeń regularnych
Rysunek 11 podsumowuje działania wykonane podczas generowania i doprecyzowania wyrażeń regularnych. Rozkład obejmuje trzy rodzaje działań: wstępne generowanie wyrażeń regularnych, kroki optymalizacji sterowane przez LLM oraz regenerację w oparciu o ponowne próby.
Optymalizacja sterowana przez LLM odpowiada za 51,7 % wszystkich zaobserwowanych działań. Ta częstotliwość wskazuje, że sama wstępna generacja jest często niewystarczająca do stworzenia wyrażeń regularnych spełniających ograniczenia grup przechwytujących i wymagania wykluczania. Zamiast tego, w celu doprecyzowania kandydujących wyrażeń regularnych, aktywnie i wielokrotnie stosowana jest optymalizacja iteracyjna.
Zamiast odzwierciedlać nieefektywność, rozkład ten wykazuje, że proces optymalizacji jest niezbędnym i integralnym elementem protokołu podczas generowania zgodnych strukturalnie wyrażeń regularnych z złożonych danych wejściowych IOC.
Osobna charakterystyka skalowalności przeprowadzona na losowej próbie 6 000 IOC wygenerowanych za pomocą LLM do testów skalowalności (patrz Tabela Materiałów) wykazała medianę opóźnienia wynoszącą 2,95 s na IOC oraz średnie opóźnienie na poziomie 23,18 s. W tej samej charakterystyce odsetek poprawności składniowej kompilacji wyrażeń regularnych wyniósł 99,56 %, ogólna skuteczność generowania osiągnęła 99,4 %, średnie szacowane zużycie tokenów wyniosło około 3 986 tokenów na IOC, a przepływ pracy wymagał średnio około 7,89 wywołań LLM na IOC. Wskaźniki sukcesu w pierwszej próbie wyniosły 56,46 % dla pętli dopasowania i debugowania (match-debug loop) oraz 72,92 % dla pętli walidacji grup nieprzechwytywanych (non-capture-group validation loop). Pomiary te pomagają określić koszt obliczeniowy oraz przepustowość operacyjną w przypadku przetwarzania wsadowego.
W bieżącej charakterystyce referencyjnej do ponownego trenowania modelu nie wykorzystano eksperckiej weryfikacji podzbioru pobranych wyników; raportowane rezultaty odzwierciedlają automatyczne wykonanie potoku oraz opisane powyżej zestawy danych do ewaluacji końcowej.
Dowody operacyjne i obsługa błędów. Rysunek 12 przedstawia strukturę wyeksportowanego pliku regex SIEM wygenerowanego przez protokół, wraz z dowodami walidacji na poziomie reguł dla reprezentatywnych wzorców ścieżek plików, kluczy rejestru i wiersza poleceń. Rysunek 13 przedstawia odpowiadający mu pełny raport JSON, który ujawnia wszystkie wyniki poszczególnych etapów (wyekstrahowane, przeanalizowane i znormalizowane IOC wraz z wygenerowanymi wzorcami regex i flagami walidacji dla każdego IOC) i stanowi główny artefakt wykorzystywany przez narzędzia w dalszej części procesu. Rysunek 14 ilustruje sposób obsługi przez protokół zaszumionych danych wejściowych CTI: ścieżka pliku z neutralizacją znaków specjalnych (defanged) i zaburzonymi odstępami zostaje oznaczona na etapie analizy, skorygowana, znormalizowana do kanonicznego szablonu %TEMP%, a następnie przekonwertowana na kompilujący się i dopasowujący wyrażenie regularne. Ten przykład praktyczny uzupełnia dowody operacyjne przedstawione na Rysunku 12 oraz Rysunku 13, dokumentując zachowanie protokołu w sytuacji, gdy surowy tekst IOC odbiega od formy kanonicznej.

Rysunek 1: Ogólna architektura protokołu konwersji IOC na wyrażenia regularne (regex). Rysunek przedstawia kompletny przebieg procesu. Kandydujące ciągi IOC wygenerowane przez nadrzędny ekstraktor IOC są dekomponowane i porównywane z węzłami referencyjnymi w grafie Neo4j zasilanym dokumentacją systemu Windows (krok 1), co pozwala na odzyskanie znanych komponentów ścieżek, rejestru oraz wiersza poleceń (krok 2). Fragmenty zmienne lub specyficzne dla środowiska są oznaczane jako do odrzucenia i wykluczane z znormalizowanej rekonstrukcji, przy jednoczesnym zachowaniu ich w metadanych komponentów, co daje znormalizowane IOC z etykietami zachowania lub odrzucenia na poziomie komponentów (krok 3). Znormalizowane IOC są następnie przekazywane do etapu generowania wyrażeń regularnych opartego na LLM (krok 4), który tworzy kandydackie wyrażenia regularne, które są punktowane i iteracyjnie optymalizowane pod kątem ograniczeń grup przechwytujących oraz reguł tokenów odrzuconych (krok 5), aż do wyboru ostatecznego wyrażenia regularnego (krok 6). Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rysunek 2: Wynik analizy dokumentu w Etapie 1. Porównanie oryginalnego raportu CTI z podglądem przeanalizowanego dokumentu. Lewy panel przedstawia oryginalny raport CTI w formacie PDF, natomiast prawy panel wyświetla ujednoliconą reprezentację w formacie Markdown wygenerowaną przez parser. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rysunek 3: Ekstrakcja IOC oparta na konsensusie z wykorzystaniem głosowania zespołu multi-LLM. Interfejs przedstawia proces ekstrakcji IOC oparty na zespole oraz jego wyniki pośrednie. Czerwona ramka wyróżnia skonfigurowane instancje LLM uczestniczące w ekstrakcji IOC, w tym wybranych dostawców oraz liczbę powtórzeń procesu ekstrakcji wykonanych dla każdego modelu. Niebieska ramka wskazuje zdefiniowany przez użytkownika próg konsensusu, który określa minimalną liczbę wystąpień wymaganą do zachowania danego IOC. Po zagregowaniu wyników ekstrakcji ze wszystkich modeli i powtórzeń, kandydaci na IOC, którzy pojawiają się rzadziej niż wynosi próg, są odrzucani. Pomarańczowa ramka pokazuje końcowy zestaw zachowanych IOC, które spełniają kryterium konsensusu i są przekazywane do kolejnych etapów analizy. Kliknij tutaj, aby wyświetlić większą wersję tego rysunku.

Rycina 4: IOC odrzucone w drodze głosowania zespołowego na etapie 2. Widok zestawiony kandydatów na IOC, którzy nie spełnili skonfigurowanego progu minimalnej liczby głosów podczas głosowania zespołowego i zostali wyświetleni do wglądu analityka. Odrzucone kandydatury zazwyczaj odzwierciedlają halucynacje specyficzne dla modelu lub niejednoznaczne fragmenty tekstu i nie są przekazywane do kroku kategoryzacji na etapie 3. Kliknij tutaj, aby wyświetlić powiększoną wersję tej ryciny.

Rycina 5: Zestaw zachowanych IOC ze zstandaryzowaną klasyfikacją. Kandydaci na IOC zachowani po przetwarzaniu w Etapie 3 są przedstawieni wraz ze swoimi zstandaryzowanymi kategoriami, tagami źródłowymi oraz oryginalnymi kluczami ekstrakcji, jeśli były dostępne. Tabela ta przedstawia ustrukturyzowane dane wejściowe IOC wykorzystywane w etapie normalizacji. Aby wyświetlić powiększoną wersję tej ryciny, kliknij tutaj.

Rysunek 6: Normalizacja IOC ścieżki pliku przy użyciu analizy wspomaganej grafem. Porównanie oryginalnego IOC ścieżki pliku z jego znormalizowaną reprezentacją. Przeszukiwanie oparte na grafie odpytuje znane komponenty ścieżki według znormalizowanej nazwy i oznacza każdy komponent jako „zachowaj” (keep) lub „odrzuć” (discard). Identyfikatory dysków oraz zmienne fragmenty nazw plików mogą zostać oznaczone jako „odrzuć” w rekordzie komponentu, podczas gdy forma znormalizowana jest rekonstruowana głównie z zachowanych segmentów strukturalnych, wymaganych do późniejszego konstruowania wzorców. Kliknij tutaj, aby wyświetlić większą wersję tego rysunku.

Rysunek 7: Normalizacja wskaźników IOC kluczy rejestru za pomocą analizy wspomaganej grafem. Normalizacja wskaźnika IOC klucza rejestru poprzez rozstrzyganie hierarchicznych struktur rejestru wspomagane grafem. Skrócone klucze główne są rozwijane do kanonicznych uli rejestru, a analizator wyodrębnia najdłuższy ciągły znany podciąg rejestru, pomijając placeholdery hostów, wartości przypominające SID oraz tokeny przypominające GUID. Wynikowe rekordy zawierają etykiety zachowania/odrzucenia dla każdego zachowanego komponentu i generują kanoniczną ścieżkę rejestru do dalszego przetwarzania. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rysunek 8: Normalizacja IOC w wierszu poleceń z wykorzystaniem analizy wspomaganej grafami. Porównanie oryginalnego IOC z wiersza poleceń oraz jego znormalizowanej reprezentacji. Protokół tokenizuje wiersz poleceń z zachowaniem ciągów znaków w cudzysłowie, normalizuje początkowy token polecenia poprzez wyszukiwanie w Neo4j (jeśli jest to możliwe) i rekurencyjnie analizuje osadzone fragmenty przypominające ścieżki lub klucze rejestru. Stabilne komponenty powiązane z poleceniem są oznaczane jako keep (zachowaj), zmienne argumenty jako discard (odrzuć), a końcowa kanoniczna struktura polecenia jest rekonstruowana z elementów zachowanych. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rycina 9: Selekcja kandydatów wyrażeń regularnych w oparciu o ograniczenia. Dla każdego znormalizowanego IOC generowanych jest wiele kandydatów wyrażeń regularnych (regex) przy użyciu iteracyjnego procesu walidacji. Zastosowano mechanizm punktacji oparty na ograniczeniach w celu wyboru końcowego wyrażenia regularnego, które zachowuje wyznaczone komponenty grup przechwytujących, ograniczając jednocześnie niepożądane zmienne podciągi. Kliknij tutaj, aby wyświetlić większą wersję tej ryciny.

Rysunek 10: Rozkład wyekstrahowanych IOC w raportach CTI. Podsumowanie wyników ekstrakcji IOC przedstawiające całkowitą liczbę wskaźników zidentyfikowanych w raportach CTI oraz ich rozkład w obrębie ścieżek do plików, kluczy rejestru i wskaźników wiersza poleceń. Widok ten zapewnia wysokopoziomową walidację zakresu treści CTI oraz przebiegu procesu ekstrakcji. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rycina 11: Rozkład działań optymalizacyjnych podczas generowania wyrażeń regularnych. Podział działań wykonywanych podczas generowania wyrażeń regularnych, w tym generowania wstępnego, optymalizacji sterowanej przez LLM oraz regenerowania w oparciu o ponowienie próby. Optymalizacja sterowana przez LLM stanowi 51.7 % wszystkich działań, co pokazuje, że iteracyjne ulepszanie jest niezbędnym elementem protokołu tworzenia wyrażeń regularnych spełniających ograniczenia grup przechwytujących. Kliknij tutaj, aby wyświetlić powiększoną wersję tej ryciny.

Rysunek 12: Reprezentatywny wyeksportowany plik regex. Przykładowa zawartość eksportu regex SIEM (siem_rules.txt) wygenerowanego zgodnie z protokołem. Każdy wpis zawiera źródłowy wskaźnik IOC, przypisaną kategorię (ścieżka pliku, klucz rejestru lub wiersz polecenia) oraz zwalidowany wzorzec regex. Dołączona tabela walidacji podsumowuje oczekiwane zachowanie oraz dowody systemowe wykorzystane do potwierdzenia poprawności każdego typu reguły. Kliknij tutaj, aby wyświetlić powiększoną wersję tego rysunku.

Rycina 13: Reprezentatywny pełny raport JSON. Wynik końcowy potoku (pipeline) wygenerowany po uruchomieniu wszystkich pięciu etapów protokołu na reprezentatywnym raporcie CTI. Dokument JSON rejestruje plik źródłowy, liczbę przeanalizowanych sekcji, wyodrębnione IOC zgrupowane według kategorii, zrekategoryzowane rekordy z etapu 3 z tagami źródłowymi, różnice normalizacji z etapu 4 oraz wzorce regex z etapu 5 z flagami walidacji dla każdego IOC. Raport zawiera również metadane sukcesu i błędów na najwyższym poziomie, które umożliwiają narzędziom w dalszych etapach wykrycie częściowych awarii. Kliknij tutaj, aby wyświetlić większą wersję tej ryciny.

Rycina 14: Błędne lub zaszumione dane wejściowe: identyfikacja i korekta. Przykład praktyczny pokazujący, w jaki sposób protokół identyfikuje zaszumiony IOC i naprawia go. Surowe dane wejściowe %T E M P%\malware[.]exe zostają oznaczone, ponieważ token zmiennej środowiskowej zawiera wstawione spacje, a rozszerzenie pliku zostało zneutralizowane (defanged). Krok korekty usuwa wstawione znaki białych znaków i przywraca dosłowną kropkę; normalizacja w etapie 4 rozszerza %TEMP% do kanonicznego szablonu katalogu Temp systemu Windows; a etap 5 generuje wyrażenie regularne, które kompiluje się i dopasowuje do poprawionego, znormalizowanego IOC. Przykład ten ilustruje sposób obsługi zaszumionych danych wejściowych omówiony w sekcji Dyskusja. Kliknij tutaj, aby zobaczyć powiększoną wersję tej ryciny.
| Element | Typ | Wartość / Schemat | Przykład | Uwagi |
| Etykieta węzła | Label | :Path | Windows, System32, cmd.exe | Przechowuje komponenty ścieżki plików systemu Windows |
| Etykieta węzła | Label | :Registry | SOFTWARE, Microsoft, Windows NT | Przechowuje komponenty kluczy rejestru poniżej głównych uli (root hives) |
| Etykieta węzła | Label | :CLI | powershell.exe, -ExecutionPolicy, Bypass | Przechowuje tokeny poleceń i parametry |
| Właściwość węzła | String | name | cmd.exe | Oryginalna wielkość liter; używana do wyświetlania w znormalizowanym wyniku |
| Właściwość węzła | String | name_lower | cmd.exe | Forma małymi literami; używana jako klucz wyszukiwania dla wszystkich zapytań MATCH |
| Relacja | Krawędź skierowana | (a)-[:NEXT]->(b) | (Windows)-[:NEXT]->(System32) | Oba punkty końcowe mają tę samą etykietę; koduje natywną sąsiedniość w systemach Windows |
| Ograniczenie | Unikalność | n.name_lower UNIQUE na etykietę | - | Zastosowane do :Path, :Registry, :CLI |
| Źródło danych | Zakres | Windows 8, 10, 11 | - | Systemy operacyjne klientów wprowadzone do grafu |
| Źródło danych | Zakres | Windows Server 2012, 2016, 2019, 2022 | - | Systemy operacyjne serwerów wprowadzone do grafu |
Tabela 1: Schemat grafu Neo4j wykorzystany do normalizacji IOC (Etap 4). Przedstawia trzy etykiety węzłów (Path, Registry, CLI), ich wspólny schemat właściwości (name, name_lower), skierowaną relację sąsiedztwa wykorzystywaną do krawędzi porządkowania natywnego, ograniczenia unikalności oraz wersje klienta i serwera Windows, które zasilają graf.
| Etap | Oczekiwany wynik | Zautomatyzowana walidacja | Kontrola jakości skierowana do analityka |
| Etap 1: Analiza dokumentu | Zunifikowany tekst Markdown, podzielony na fragmenty po 4000 znaków przed przetwarzaniem przez model LLM. | — | Wizualna kontrola podglądu Markdown w celu potwierdzenia, że ścieżki do plików, klucze rejestru, fragmenty wiersza poleceń i granice sekcji nie zostały naruszone podczas parsowania; zmiana backendu w przypadku ucięcia ciągów technicznych. |
| Etap 2: Ekstrakcja IOC | Plik JSON z trzema kluczami najwyższego poziomu (File Paths, Command Lines, Registry Keys); w przypadku włączenia głosowania zespołowego – liczba głosów dla każdego IOC oraz metadane dotyczące modeli wnoszących wkład. | Filtr progu konsensusu (min_votes) wyklucza wskaźniki kompromitacji (IOC), których liczba głosów jest niższa od skonfigurowanego progu. | Analiza odrzuconych kandydatów w celu odróżnienia halucynacji od zbyt rygorystycznego głosowania przed dostosowaniem parametru min_votes. |
| Etap 3: Analiza i klasyfikacja wskaźników kompromitacji (IOC) | Kategoryzowana lista wskaźników kompromitacji (IOC): każdy wskaźnik IOC sparowany ze znormalizowaną kategorią, tagiem źródłowym oraz oryginalnym kluczem ekstrakcji, jeśli jest dostępny. | Mapowanie na standaryzowane kategorie za pomocą reguł opartych na wyrażeniach regularnych i heurystyk wzorców IOC; usuwanie duplikatów par (IOC, kategoria). | Kontrolna weryfikacja skategoryzowanych wyników pod kątem kandydatów niejednoznacznych lub zaszumionych (Rysunek 4A). |
| Etap 4: Normalizacja z wykorzystaniem Neo4j | Forma znormalizowana per-IOC z etykietami zachowania/odrzucenia na poziomie komponentów. | Zapytania Cypher (i)-(iii) w odniesieniu do grafu referencyjnego Windows; deterministyczne przetwarzanie wstępne jako rozwiązanie zapasowe w przypadku braku dostępności Neo4j. | Analiza wszystkich przypadków całkowitego odrzucenia w celu zidentyfikowania luk w pokryciu grafu; rozszerzenie danych grafu o referencje specyficzne dla dostawcy lub środowiska w razie potrzeby. |
| Etap 5: Generowanie i punktowanie wyrażeń regularnych | Ostateczny regex dla każdego IOC wraz z wynikiem kandydata, historią optymalizacji, liczbą iteracji oraz telemetrią dla każdego IOC. | Test dopasowania, statyczne kontrole jakości, kontrola tokenów zabronionych z uwzględnieniem granic, test nadmiernej generalizacji na 5 deterministycznych próbkach negatywnych; przejście do dopasowania częściowego z najwyższą punktacjąą (flaga used_fallback). | Przegląd historii optymalizacji dla zapasowych wyrażeń regularnych; diagnostyczna inspekcja pozycji błędu zgodnie z IOC przed regeneracją. |
Tabela 2: Podsumowanie wyników etapów i walidacji. Przypisuje każdy etap protokołu (1–5) do oczekiwanego artefaktu, dowodu automatycznej walidacji wygenerowanego przez potok (status kompilacji wyrażeń regularnych, współczynnik trafień, współczynnik niezgodności krzyżowych wskaźników IOC, liczba iteracji optymalizacji) oraz odpowiadającej im kontroli jakości przeprowadzanej przez analityka (porównanie wizualne, inspekcja odrzuconych kandydatów oraz przegląd kategorii).
Plik uzupełniający 1: Dosłowne prompty LLM. Dosłowne prompty systemowe i ludzkie wykorzystane do ekstrakcji IOC w etapie 2 oraz generowania i optymalizacji wyrażeń regularnych w etapie 5.Kliknij tutaj, aby pobrać ten plik.
Plik uzupełniający 2: Szczegóły implementacji dla etapów 4 i 5. Szczegóły algorytmiczne i implementacyjne wspierające normalizację IOC wspomaganą grafem w etapie 4 oraz walidację za pomocą wyrażeń regularnych, punktację i kontrolę iteracji w etapie 5. Kliknij tutaj, aby pobrać ten plik.