Jak przygotować / zbudować funkcje do wykrywania anomalii (dane bezpieczeństwa sieci)


9

Moim celem jest analiza dzienników sieciowych (np. Apache, syslog, audyt bezpieczeństwa Active Directory itd.) Przy użyciu wykrywania klastrów / anomalii do celów wykrywania włamań.

Z dzienników mam wiele pól tekstowych, takich jak adres IP, nazwa użytkownika, nazwa hosta, port docelowy, port źródłowy itd. (Łącznie 15-20 pól). Nie wiem, czy w dziennikach są jakieś ataki, i chcę podkreślić najbardziej podejrzane zdarzenia (wartości odstające).

Zazwyczaj wykrywanie anomalii oznacza punkty o niskim prawdopodobieństwie / częstotliwości jako anomalie. Jednak połowa zapisów dziennika zawiera unikalną kombinację pól. Tak więc połowa rekordów w zestawie danych będzie miała najniższą możliwą częstotliwość.

Jeśli używam wykrywania anomalii opartego na grupowaniu (np. Znajduję klastry, a następnie wybieram punkty, które są daleko od wszystkich centrów klastrów), muszę znaleźć odległość między różnymi punktami. Ponieważ mam 15-20 pól, będzie to wielowymiarowa przestrzeń, w której wymiarami są nazwa użytkownika, port, adres IP i tak dalej. Jednak odległość Mahalanobisa można zastosować tylko do normalnie rozmieszczonych obiektów. Oznacza to, że nie ma możliwości znalezienia odległości między punktami danych i budowy klastrów ...

Na przykład wyobraźmy sobie, że mam użytkowników Alice, Bob, Carol, Dave, Eve i Frank w zestawie danych 20 rekordów. Mogą mieć następującą liczbę wystąpień w bazie danych: 2,5,2,5,1,5. Jeśli po prostu zamapuję nazwy użytkowników na liczby, np

Alice --> 1
Bob --> 2
Carol --> 3
Dave --> 4
Eve --> 5
Frank --> 6

Następnie mój rozkład prawdopodobieństwa dla nazw użytkowników będzie wyglądał następująco:

p (1) = 0,1, p (2) = 0,25, p (3) = 0,1, p (4) = 0,25, p (5) = 0,05, p (6) = 0,25

Oczywiście nie jest to normalna dystrybucja, a to również nie ma większego sensu, ponieważ mogłem mapować nazwy użytkowników w inny sposób ...

Zatem proste mapowanie pól takich jak nazwa użytkownika, akcja, numer portu, adres IP i tak dalej na liczby nic nie przynosi.

W związku z tym chciałbym zapytać, w jaki sposób pola tekstowe są przetwarzane / funkcje są zwykle konstruowane, aby umożliwić wykrywanie nieprawidłowości / wartości odstających bez nadzoru?

EDYCJA: struktura danych.

Mam około 100 kolumn w tabeli bazy danych, zawierających informacje ze zdarzeń usługi Active Directory. Z tych 100 kolumn wybieram najważniejsze (z mojego punktu widzenia): SubjectUser, TargetUser, SourceIPaddress, SourceHostName, SourcePort, Computer, DestinationIPaddress, DestinationHostName, DestinationPort, Action, Status, FilePath, EventID, WeekDay, DayTime.

Zdarzenia to zdarzenia usługi Active Directory, w których identyfikator zdarzenia określa, co zostało zarejestrowane (np. Utworzenie biletu Kerberos, logowanie użytkownika, wylogowanie użytkownika itp.).

Próbka danych wygląda następująco:

+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| ID | SubjectUser | TargetUser | SourceIPaddress | SourceHostName | SourcePort | Komputer | DestinationIPaddress | DestinationHostName | DestinationPort | Akcja | Status | FilePath | EventID | WeekDay | DayTime |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 171390673 |? | | | | | domaincontroller1.domain.com | 1.1.1.1 | domaincontroller1.domain.com |? | / Uwierzytelnianie / Weryfikacja | / Sukces |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 173348232 |? | | | | | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Uwierzytelnianie / Weryfikacja | / Sukces |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 180176916 |? | | | | | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Uwierzytelnianie / Weryfikacja | / Sukces |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 144144725 |? | John.Doe | 3.3.3.3 | domaincontroller3.domain.com | 2407 | domaincontroller3.domain.com | 3.3.3.4 | domaincontroller3.domain.com |? | / Uwierzytelnianie / Weryfikacja | / Sukces |? | 4624 | 3 | 12345 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +

Łącznie mam około 150 milionów wydarzeń. Różne zdarzenia mają wypełnione różne pola i nie wszystkie zdarzenia dotyczą logowania / wylogowywania użytkownika.


„Jednak odległość Mahalanobisa można zastosować tylko do normalnie rozmieszczonych obiektów.” Właściwie eliptyczny. Czy możesz opublikować kilka pierwszych wierszy zestawu danych (lub niektóre fałszywe liczby, ale posiadające te same funkcje, co w rzeczywistości)?
user603,

Zakładam, że kształt eliptyczny oznacza iloczyn dwóch normalnie rozłożonych cech, o różnych średnich i standardowych odchyleniach, ale wciąż normalnie rozłożonych.
Andrey Sapegin,

Nie, kształt eliptyczny oznacza kształt cienia piłki nożnej w 2D, piłki nożnej w 3D i ogólnie piłki nożnej w wymiarze D w przestrzeni D.
user603

Z ciekawości. Czy możesz udostępnić niektóre dane / z jakim zestawem danych pracujesz? Czy jest to zestaw badań publicznych / akademickich?
sabalaba

Niestety nie jest to publiczny zestaw danych i nie mogę go udostępnić. Jednak powinien istnieć znany zestaw danych KDDCup 1999 lub zestaw danych Scan34 z Honeynet ( old.honeynet.org/scans/scan34 ). Oba zestawy danych zawierają dzienniki (nie ruch sieciowy) do analizy (Apache, Snort, syslog itp.). W zestawie danych, który mam, większość dzienników to dzienniki usługi Active Directory. Nie jestem pewien, czy są dostępne jakieś publiczne zdarzenia AD / Windows do analizy (wcześniej korzystałem z samodzielnie wygenerowanego zestawu danych z powodu braku prawdziwego). Ponadto zestaw danych, który mam, jest bardzo duży (150 milionów rekordów).
Andrey Sapegin

Odpowiedzi:


2

Zdecydowanie nie jestem ekspertem w wykrywaniu anomalii . Jest to jednak interesujący obszar i oto moje dwa centy. Po pierwsze, biorąc pod uwagę uwagę, że „odległość Mahalanobisa można zastosować tylko do normalnie rozmieszczonych obiektów”. Natknąłem się na niektóre badania, które dowodzą, że nadal można korzystać z tej miary w przypadku niestandardowych danych. Sprawdź sam ten artykuł i ten raport techniczny .

Mam również nadzieję, że przydatne okażą się następujące zasoby dotyczące wykrywania nienadzorowanej anomalii (AD) w kontekście bezpieczeństwa sieci IT , przy użyciu różnych podejść i metod: ten artykuł przedstawiający geometryczne ramy dla AD bez nadzoru; ten dokument , w którym zastosowano podejście klastrowe oparte na gęstości i siatce ; slajdy prezentacji , które wspominają o użyciu samoorganizujących się map dla AD.

Na koniec proponuję, abyś zapoznał się z moimi odpowiedziami, które moim zdaniem są istotne dla tematu, a zatem mogą być pomocne: odpowiedź na temat metod klastrowania , odpowiedź na temat klastrowania niezwiązanego z odległością i odpowiedź na temat opcji oprogramowania dla AD .


1
Dziękuję za linki, są bardzo przydatne. (1) Pierwszy artykuł, o którym wspomniałeś, jest bardzo interesujący. Wydaje się, że można później zmienić rozkład na normalny, aby zastosować odległość Mahalanobisa później. Spróbuję się w to dostać. (2) Czy wiesz, czy istnieją jakieś inne podejścia, np. Pewne miary podobieństwa, takie jak odległość kuzyna, które nie działają na odległości? (3) Wspomniane slajdy prezentacji koncentrują się jednak na pakietach ruchu sieciowego, a nie na dziennikach.
Andrey Sapegin,

1
W odniesieniu do innych podejść, pomyślałem o 2: (1) jednoklasowa maszyna SVM mogłaby znaleźć korelację między cechami, gdyby zastosowano model wielomianowy; (2) wiersze dziennika zagrożeń jako zdania i używaj podobieństwa kuzyna, aby je grupować / grupować. Pierwszą próbowałem już zaimplementować, ale działa już ponad tydzień na 1 procesorze (najpierw trenuję model na pierwszej połowie danych, a następnie stosuję się do drugiej. Potem odwrotnie). Drugie podejście zakłada przestrzenną przestrzeń (np. Każda inna wartość nazwy użytkownika będzie cechą).
Andrey Sapegin,

1
@AndreySapegin: Jeśli wyniki twoich obecnych prób nie będą wystarczająco dobre, możesz wypróbować inne podejścia, wspomniane w artykułach, o których wspominałem. To był pomysł. Jeszcze jedno - wypróbuj oprogramowanie ML Open Source GraphLab (niektóre z nich są teraz oznaczone jako Dato): dato.com/products/create/open_source.html . Oprogramowanie GraphLab jest wydajne i bardzo skalowalne nie tylko dla rdzeni procesorów, ale także procesorów, a nawet maszyn.
Aleksandr Blekh

1
@AndreySapegin: W moim strumieniu ResearchGate pojawiła się praca mojego kolegi z uniwersytetu. Myślę, że może być to dla ciebie bardzo pomocne (wykorzystuje podejście ANN do wykrywania włamań - za pomocą fajnej biblioteki Encog ML, której jest twórcą i głównym współtwórcą - Encog jest również skalowalny poprzez wielordzeniowość i GPU). Oto artykuł: researchgate.net/profile/Jeff_Heaton/publication/… . Oto informacje na temat Encog: heatonresearch.com/encog .
Aleksandr Blekh

1
Wszystkim, którzy przyznali nagrodę za moją odpowiedź: doceniam twoją hojność, a także doceniam moje wysiłki w kierunku uzyskania wysokiej jakości odpowiedzi.
Aleksandr Blekh

3

Po pierwsze, myślę, że są pewne rzeczy, do których możesz się pogodzić.

Jednym z twardych ograniczeń, które widzę w tym problemie, jest to, że prawdopodobnie powinieneś być przygotowany na dość wysoki współczynnik fałszywie dodatnich. O ile mi wiadomo, podstawowa szybkość zapisu będącego częścią anomalii sieci jest dość niska (potrzebne cytowanie). Nazwijmy to kursem 1000: 1, ze względu na argument. Wtedy nawet jeśli zaobserwujesz wzorzec, który jest 100 razy bardziej prawdopodobny, jeśli rekord jest wtargnięciem, to jeśli jest to legalne, Reguła Bayesa mówi, że szanse późniejsze wynoszą 10: 1, że ruch jest nadal legalny.

Innym problemem jest to, że niektóre ingerencje są trudne do wykrycia nawet w zasadzie . Na przykład, jeśli ktoś społecznie skonstruował mnie, żebym dał mu mój komputer, a następnie zalogowali się do tej usługi i pobrali jeden ściśle tajny plik, nad którym pracowałem, byłoby to dość trudne do znalezienia. Zasadniczo wystarczająco zdeterminowany atakujący może sprawić, że jego natrętne zachowanie będzie prawie arbitralnie zbliżone do normalnego zachowania systemu.

Co więcej, twoi przeciwnicy są inteligentnymi, a nie statystycznymi procesami, więc jeśli zaczniesz wykrywać jakiś wzór i go wyłączać, mogą po prostu zareagować, nie przestrzegając już tego wzoru. Dlatego na przykład zobaczysz wiele wiadomości spamowych ze spacjami między wszystkimi literami (oferującymi „ V I A G R A” lub cokolwiek innego). Filtry antyspamowe odkryły, że ciąg „viagra” był spamem, więc napastnicy właśnie zaczęli robić coś innego.

Z tego powodu uważam, że warto zastanowić się nad tym, jakie rodzaje intruzów uważasz, że warto spróbować je wykryć. Na pewno są tutaj nisko wiszące owoce, więc nie pozwól, aby doskonały był wrogiem dobra i spróbuj wymyślić algorytm, który może wykryć wszystkie włamania.


Poza tym porozmawiajmy o nisko wiszącym owocu. Tutaj myślę, że może być produktywne dla ciebie, aby przenieść jednostkę analizy z pojedynczych rekordów do grupy rekordów.

Na przykład powiedziałeś, że połowa wszystkich rekordów ma unikalne kombinacje pól. Ale przypuszczalnie na przykład większość źródłowych adresów IP pojawia się w więcej niż jednym rekordzie - to inne pola w żądaniu zmieniają się i sprawiają, że kombinacja jest unikalna. Jeśli grupujesz wnioski według adresów IP, możesz zadawać pytania takie jak:

  • Czy niektóre adresy IP wydają się uwierzytelniać jako niezwykle wielu użytkowników (lub wyjątkowo niewielu)?
  • Czy w niektórych adresach IP występuje wyjątkowo duża liczba niepowodzeń uwierzytelniania?
  • Czy niektóre adresy IP mają nietypowy wzór czasów dostępu (na przykład dużo aktywności około 3 nad ranem w strefie czasowej lub żądania co 1 sekundę w ciągu dnia)?

Możesz robić podobne rzeczy dla innych grup, takich jak nazwa użytkownika:

  • Czy ten użytkownik uwierzytelnia się z innego komputera, gdy wcześniej używał tego samego komputera do wszystkich żądań?
  • Czy ten użytkownik nagle dotyka części systemu plików, której nigdy wcześniej nie dotknął?

Nie znam żadnych gotowych klasyfikatorów, które wydają się szczególnie do tego odpowiednie, ponieważ potencjalne zachowanie użytkowników jest tak zróżnicowane i prawdopodobnie najbardziej interesują Cię zmiany zachowań w czasie. Oznacza to, że prawdopodobnie chcesz zbudować jakiś model tego, co każdy użytkownik / adres IP / cokolwiek może zrobić w przyszłości, i oznaczyć wszelkie odchylenia od tego modelu. Ale to dość intensywny proces, jeśli użytkownicy mają różne wzorce zachowań!

Z powodu tej trudności myślę, że na razie bardziej wydajne może być wykonanie analizy w trybie eksploracyjnym, którą opisałem powyżej. To prawdopodobnie poinformuje cię o tym, jakie typy wzorców są najciekawsze, a następnie możesz zacząć używać fantazyjnych algorytmów statystycznych do wykrywania tych wzorców.


2
Dziękuję za odpowiedź, to dobra uwaga. Jak rozumiem, oferujesz skupienie się na prostszej analizie niż wykrywanie anomalii. Z technicznego (branżowego) punktu widzenia masz rację. Robię jednak badania i chciałbym skoncentrować się na analizie uczenia maszynowego. Przeprowadzona przez nas analiza oparta na zapytaniach, którą już przeprowadziliśmy (może nie do końca identyczna z oferowanymi przez Ciebie zapytaniami, ale podobna) ... Kolejnym argumentem przemawiającym za tym jest to, że wiele przedsiębiorstw obecnie próbuje WYKRYWAĆ anomalie oprócz „normalnego” ( prościej, ale nadal spełnia) zapytania i zasady ...
Andrey Sapegin

2

Myślę, że przede wszystkim musisz mieć zestaw danych, który rejestruje dane przez okres bez ataków. Ten zestaw danych powinien przechwytywać wariacje właściwe dla normalnego działania systemu. Chciałbym podkreślić, że nie chodzi o posiadanie zestawu danych z adnotacjami.

Następnie spróbuję połączyć wszystkie (lub podzbiory) metryk w jeden. Ta nowa metryka powinna odzwierciedlać ilość „zaskoczenia”. Na przykład niska wartość oznacza, że ​​system działa normalnie, wartość szczytowa / plateau o wysokiej wartości oznacza, że ​​nastąpiła szybka zmiana. Mam na myśli wykresy w stylu wykresów CUSUM lub Shewhart.

Czy możesz podać przykłady dostępnych danych? Czy to głównie łańcuchy, liczby, wskaźniki 1/0?


1

Możliwe jest nauczenie się bayesowskiej sieci między funkcjami, biorąc pod uwagę pewne dane w tle bez ataków. Nauka sieci bayesowskiej jest przydatna, ponieważ uwalnia warunkową niezależność między funkcjami. Dlatego nie masz do czynienia z każdą możliwą kombinacją funkcji. Na przykład, jeśli funkcja A wpływa na B i C, a funkcje B i C razem wpływają na D, to uczysz się modelu, w jaki sposób A wpływa na B, jak wpływa na C i jak B i C łącznie wpływają na D. Ten model będzie wymagał znacznie mniej parametry niż cały rozkład prawdopodobieństwa i jest głównym powodem, dla którego stosuje się sieci bayesowskie zamiast tylko przechowywania całego łącznego rozkładu prawdopodobieństwa. Aby przetestować anomalię w przypadku sieci bayesowskiej, oblicz prawdopodobieństwo nadejścia punktu danych przy użyciu wyuczonego modelu sieci bayesowskiej. Jeśli prawdopodobieństwo jest bardzo niskie,


Problem polega na tym, że bardzo trudno jest pobrać próbkę danych bez ataków. Często nikt nie wie, czy w zestawie danych są jakieś ataki.
Andrey Sapegin,

0

Myślałem, że odpowiedź Bena Kuhna była pragmatyczna i wnikliwa.

Teraz moje własne doświadczenie obejmuje klasyfikację tekstu, systemy eksperckie, klastrowanie i bezpieczeństwo. Biorąc pod uwagę to tło, ja lubię myśleć, że może mam coś do dodania do rozmowy. Jednak poprzednie stwierdzenia Bena Kuhna podkreślają, że proste podejście może wywołać wiele fałszywych trafień. Personel IT, w obliczu wielu fałszywych alarmów, zwykle „wycisza się”, ponieważ po prostu nie ma czasu na ściganie fałszywych alarmów.

Co więc zrobić?

Z pewnością dzienniki zawierające ataki mogą być pomocne, ale wtedy mamy catch-22, chyba że firmy w jakiś sposób udostępnią dane o atakach. Podczas gdy niektóre start-upy z Doliny Krzemowej mogą dążyć do takiego podziału zagrożeń, co jeszcze możemy zrobić?

Jednym z możliwych podejść jest stworzenie symulacji sieci, a następnie znalezienie sposobu na wygenerowanie ataków przeciwko symulacji. To znaczy, załóżmy, że tworzymy symulację, w której czarne czapki (również symulowane) nie są wcześniej znane białym czapkom. Biorąc pod uwagę te ataki, możemy następnie spróbować stworzyć algorytmy, które powinny wykryć te ataki. Jeśli czarne czapki działają niezależnie od białych czapek, wtedy mamy prawdziwą bitwę, która się rozegra. Jeśli atakujący włamią się do systemu lub nie zostaną wykryci, białe czapki poniekąd zawiodły.

Można nawet mieć strukturę motywacyjną, gdy analitycy bezpieczeństwa w zespole czarnego kapelusza są nagradzani za ich sukcesy (bryczesy lub nieodkryte ataki). Podobnie grupa składająca się z białych czapek jest nagradzana za zatrzymywanie bryczesów i / lub wykrywanie ataków.

W tym układzie nie ma nic idealnego. Oczywiście prawdziwe czarne czapki mogą przekroczyć talenty „przyjaznego” zespołu czarnych kapeluszów. Niemniej jednak, jako osoba, która ma dużą analizę danych, wydaje mi się, że bardzo trudno jest oszacować sukces białych czapek bez lepszego zrozumienia czarnych czapek. Najważniejsze jest to. Jeśli nie wiemy, co robią prawdziwe czarne czapki, następną najlepszą rzeczą są przyjazne czarne czapki.

Mam też dość nietypowy pomysł. Przypuśćmy, że oprócz przyjaznych czarnych czapek i białych czapek istnieje zespół szarego kapelusza. Co to znaczy być szarym kapeluszem? Pomysł jest prosty. Szare czapki mogą patrzeć na to, co robią przyjazne czarne czapki i białe czapki. Ale dlaczego?

Załóżmy, że przyjazne czarne kapelusze przeprowadzają ataki przy użyciu podejść A, B i C, a białe kapelusze nigdy nie odkrywają żadnego z tych trzech podejść. Cóż, szare czapki mają uprawnienia do patrzenia na to, co robią zarówno przyjazne czarne czapki, jak i białe czapki, i próbują zastanowić się, jakie zasady można zastosować, aby odkryć te niewykryte ataki. Jeśli szary kapelusz znajdzie takie zasady, zespół szarego kapelusza może następnie podzielić się tymi zasadami z zespołem białego kapelusza bez szczegółowego opisu dokładnych ataków.

Mamy nadzieję, że te „wskazówki” dostarczone przez zespół z szarym kapeluszem popchną zespół z białym kapeluszem we właściwym kierunku, nie ujawniając zbyt wiele.

Z perspektywy czasu przepraszam, jeśli moja odpowiedź tak naprawdę nie dotyczy konkretnych technik. Oczywiście moja odpowiedź nie dotyczy konkretnych technik. Ale z mojego doświadczenia wynika, że ​​wiele problemów w uczeniu maszynowym - w tym w zakresie bezpieczeństwa - często kończy się niepowodzeniem, ponieważ dane są niewystarczające. Takie podejście, przy użyciu białych czapek, szarych czapek i czarnych czapek, może pomóc w uzyskaniu danych, które pozwoliłyby firmie ochroniarskiej (lub personelowi IT) nie tylko oszacować skuteczność ich obrony, ale zapewnić strukturę organizacyjną, która popycha zespół białego kapelusza do stopniowej poprawy ich obrony i monitorowania.

Naprawdę nie mam pojęcia, czy proponowane przeze mnie podejście jest oryginalne. Nigdy nie słyszałem o szarych czapkach, ale tak naprawdę uważam, że rola szarych czapek może mieć kluczowe znaczenie dla popychania białej drużyny do przodu, bez ujawniania zbyt wiele.


Uwaga: moje użycie tutaj terminu „szary kapelusz” nie jest standardowe. Zobacz http://www.howtogeek.com/157460/hacker-hat-colors-explained-black-hats-white-hats-and-gray-hats/ . Dlatego zamiast tego należy użyć innego terminu, być może „kapelusz w paski”.

Ale wciąż pomysł pozostaje ten sam: kapelusz w paski może pomóc w pośredniczeniu między pracą przyjaznych czarnych czapek a obrońcami (białymi czapkami), dzięki czemu niektóre pomysły i wskazówki można rozsądnie udostępnić białym czapkom.


1
Wygląda na to, że przypadkowo utworzyłeś drugie konto - zobacz tutaj, jak je połączyć. Umożliwi to edycję własnych postów.
Silverfish,

0

Ponieważ opublikowałem oryginalne pytanie, przeprowadziłem wiele badań na ten temat i mogę teraz podać moje wyniki jako odpowiedź.

Przede wszystkim w naszym laboratorium opracowujemy system SIEM, który wykorzystuje algorytmy wykrywania anomalii. Opis systemu i algorytmów jest dostępny w moim artykule W kierunku systemu do kompleksowej analizy zdarzeń bezpieczeństwa w sieciach na dużą skalę

Poza tym w odpowiedzi na podobne pytanie na temat Cross Validated napisałem krótkie podsumowanie dotyczące postępowania z takimi danymi

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.