Jak nieistniejące nazwy domenowe mogą pomóc w wykryciu botnetów DGA?

Data publikacji: 01/10/2015, piotrb

dga_icon

Algorytmy generowania domen (ang. Domain Generation Algorithm) używane są w botnetach do utrudnienia blokowania połączeń do serwerów Command and Control, a także do zapobiegania przejęciu infrastruktury danego botnetu. Ich głównym celem jest stworzenie dużej liczby nazw domenowych, które zwykle wyglądają jak pseudolosowe ciągi znaków, np. pkjdgjwzcr.pl. Tylko niektóre z wygenerowanych domen są rejestrowane przez botmastera, niemniej zainfekowane maszyny wysyłają zapytania DNS o wszystkie z nich. Z tego powodu boty mogą otrzymywać dużą liczbą odpowiedzi o nieistnieniu domeny (non-existent domain – NXDomain). W tym wpisie pokażemy na przykładzie różnych metod detekcji jak takie zachowanie może być wykorzystane do wykrycia botnetów DGA.

Nieistniejące domeny w botnetach DGA

Zainfekowana maszyna starając się połączyć z serwerem C&C wysyła zapytanie DNS o odpowiednią domenę. Jeśli nie została zarejestrowana przez botmastera, system DNS zwraca informację, że ona nie istnieje. W botnetach DGA to algorytm generuje listę domen, która jest następnie używana przez bota. Jest to możliwe dzięki temu, że zarówno ofiara, jak i botmaster posiadają identyczny algorytm generacji domen, używający tego samego ziarna. Zwykle zapytania wysyłane są aż do odnalezienia zarejestrowanej domeny, tzn. takiej, do której botmaster przypisał adres IP. Schemat powyższej komunikacji został przedstawiony na rysunku poniżej.

nx_gen_pl

Wysoki poziom odpowiedzi NXDomain można traktować jako anomalię i analizować przy wykorzystaniu systemów detekcji. Niestety czasami taka sytuacja może być wywołana przez działanie niezłośliwych aplikacji, np. przeglądarkę Chrome (więcej informacji można znaleźć tutaj). Ze względu na to systemy wykrywania muszą być przystosowane do rozpoznawania niegroźnych wystąpień takich błędów, np. przez wprowadzenie mechanizmu whitelist.

Odpowiedzi NXDomain jako anomalia

Odpowiedzi NXDomain mogą służyć jako główna baza dla systemów detekcji botnetów. Przykładem może być system S. Krishnan i in., w którym takie odpowiedzi używane są w testowaniu sekwencyjnym hipotez, a tym samym do obliczania poziomu reputacji maszyn. Jeśli odpowiedź NXDomain pochodzi ze znanej strefy domenowej (tzn. już wcześniej odpytywanej), miara reputacji jest aktualizowana w kierunku klasy niezłośliwej. W przeciwnym wypadku reputacja danej maszyny jest odpowiednio zmieniana by odzwierciedlić podobieństwo jej zachowania do bota. Zasada detekcji jest prosta: jeśli maszyna pyta o wiele nieistniejących domen, których wcześniej nie używała, to jej zachowanie jest podejrzane.

Grafy niepowodzenia

Niektóre systemy detekcji botnetów wykorzystują odpowiedzi NXDomain do tworzenia grafów niepowodzenia DNS. Reprezentują one zależności między nazwami domenowymi a klientami, które o nie pytały. Wierzchołki takich grafów opisują domeny i maszyny, natomiast krawędzie łączą te wierzchołki, pomiędzy którymi doszło do wymiany wiadomości NXDomain. Takie podejście zaprezentowali N. Jiang i in. Przez zastosowanie algorytmów dekompozycji autorzy mogli utworzyć spójne klastry, które zostały przeanalizowane pod kątem rodzaju użytego złośliwego oprogramowania. Przykład odnalezionego przez autorów podgrafu kratowego ukazującego botnet Conficker.A został przedstawiony poniżej.


jiang_pl

Zawężanie analizy

Systemy detekcji botnetów mogą używać odpowiedzi NXDomain do filtrowania maszyn przeznaczonych do analizy. W ten sposób wysyłanie zapytań o nieistniejące domeny mogłoby wskazywać, że dany komputer może być zainfekowany, a zatem należy go monitorować. Taki mechanizm wykorzystuje system H. Guerid i in., w którym testowane są te maszyny, które odebrały zbyt dużo odpowiedzi NXDomain. Po takiej prefiltracji, komputery grupowane są według podobieństwa odpytywanych, nieistniejących domen. Kolejnym krokiem jest sprawdzenie, o które prawidłowo rozwiązane domeny pytała większość członków grupy. Są one uważane tym samym za podejrzane. Niemniej jeśli któraś z nich występuje w innych grupach, to jest uznawana za popularną, niezłośliwą domenę i jest wyłączana z wyników. Ostatecznie uzyskiwana jest lista działających domen serwerów C&C.

Jeden z elementów procesu detekcji

Analiza odpowiedzi NXDomain może być jednym z kilku elementów w procesie detekcji. Właśnie w ten sposób wykorzystywana jest w systemie R. Sharifnya i in., w którym podobnie jak u N. Jiang i in. obserwowane maszyny mają przyznawany pewien poziom reputacji. Oprócz analizy odpowiedzi NXDomain autorzy zaproponowali także wykorzystanie własności leksykalnych domen oraz korelacji zachowań między maszynami w monitorowanej sieci. Dzięki temu system może być odpowiednio dostosowany do warunków panujących w danej sieci oraz używać informacji zarówno o działaniu grup, jak i pojedynczych maszyn.

Podsumowanie

Jak pokazaliśmy na powyższych przykładach (oczywiście przedstawiliśmy tylko kilka metod wykrywania i nie jest to ich pełny przegląd) odpowiedzi NXDomain są często używane w systemach detekcji botnetów DGA. Niemniej ich wykorzystanie powinno być traktowane jako jeden z elementów detekcji. Głównym powodem jest fakt, że nie tylko botnety mogą generować odpowiedzi NXDomain. Jak pokazaliśmy w jednym z poprzednich wpisów, istnieje wiele nieszkodliwych źródeł dodatkowego szumu, które mogą powodować fałszywe alarmy. Co więcej, także do botnetów mogą zostać wprowadzone dodatkowe techniki utrudniające wykrycie, np. zmniejszenie liczby odpytywanych domen lub wykonywanie zapytań w różnych odstępach czasowych.