Wykrywanie botnetowych domen DGA: o fałszywych alarmach w detekcji

Data publikacji: 17/04/2015, piotrb

dga_icon

Algorytmy generowania domen (Domain Generation Algorithms) używane są w botnetach do tworzenia specjalnie skonstruowanych nazw domenowych odsyłających do serwerów C&C. Ma to na celu uniemożliwienie przejęcia domen botnetowych lub utrudnienie zablokowania połączeń do tych serwerów (np. przez blacklisty). Domeny te składają się najczęściej ze zbitek losowych znaków, np.: gdvf5yt.pl, które dla ludzi nie mają żadnego sensu, ale z powodzeniem zapewniają łączność. Zajmując się wykrywaniem domen generowanych przez DGA (ich użycie opisywaliśmy np. tu i tu) natrafiliśmy na domeny, które w pewnym stopniu są podobne do tych botnetowych ze względu na dziwny wygląd, ale które jednak są używane do innych celów. Znajomość tych domen przydaje się w wyeliminowaniu dużej liczby fałszywych alarmów systemów detekcji botnetów DGA. W tym wpisie przedstawione zostaną przykłady niezłośliwego występowania takich dziwnych domen, a w kolejnym przypadki, które można rozpatrywać jako zagrożenie.

Dziwne zapytania programu antywirusowego

Jako pierwszy rozpatrzymy przypadek domen tworzonych przez system McAfee GTI File Reputation, zastosowany m. in. w ich programie antywirusowym dla korporacji czy systemach HIPS. Szczegółowo zostało to opisane w artykule „DNS Noise: Measuring the Pervasiveness of Disposable Domains in Modern DNS Traffic” przez Yizheng Chen i in. Systemy McAfee w razie wykrycia podejrzanego pliku (wykonywalnego, PDF, APK), którego złośliwości nie mogą potwierdzić przy użyciu swojej lokalnej bazy sygnatur, wysyłają specjalne zapytanie DNS do systemu reputacyjnego. Zawarte są w nim informacje o podejrzanym pliku, jego skrót oraz informacje o środowisku i wersji oprogramowania McAfee. Dane te są kodowane jako domeny wyższych rzędów i doklejane do sufiksu avqs.mcafee.com lub avts.mcafee.com.
Przykłady zapytań:

0.0.0.0.1.0.0.4e.135jg5e1pd7s4735ftrqweufm5.avqs.mcafee.com
0.0.0.0.1.0.0.4e.13cfus2drmdq3j8cafidezr8l6.avqs.mcafee.com
0.0.0.0.1.0.0.4e.13kqas3qjj46ttkdhastkrdsv6.avqs.mcafee.com
0.0.0.0.1.0.0.4e.13pq3hfpunqn1d51pmvbdkk5s6.avqs.mcafee.com
0.0.0.0.1.0.0.4e.13qh71bf782qb54uzz9uhdz4mq.avqs.mcafee.com

Odpowiedzią są adresy IP z podsieci 127.0.0.0/16 kodujące odpowiednią informację o reputacji danego pliku.

Blacklisty

Innym przykładem dziwnych domen są te generowane przez zapytania do blacklist DNS, choć w tym przypadku nie polega to wyłącznie na występowaniu dziwnych zbitek znakowych. Można się tu bowiem natknąć na wielopoziomowe nazwy domenowe, które mogą się składać także ze słów języka naturalnego. Przykładem jest usługa Spamhaus DBL. Umożliwia ona pytanie blacklisty o złośliwość danej domeny przez odpowiednie zapytanie DNS, np. wysłanie zapytania o adres IP hosta gmail.com.dbl.spamhaus.org zwróci odpowiedź, że domena nie istnieje – komunikat NXDomain, co oznacza, że domena nie znajduje sie na blackliście.

>host gmail.com.dbl.spamhaus.org
Host gmail.com.dbl.spamhaus.org not found: 3(NXDOMAIN)

Natomiast zapytanie o iqumgmcqwuqgaaus.org.dbl.spamhaus.org zwróci adres IP 127.0.1.2, co oznacza, że dana domena mogła być powiązana z wysyłaniem spamu.

>host iqumgmcqwuqgaaus.org.dbl.spamhaus.org
iqumgmcqwuqgaaus.org.dbl.spamhaus.org has address 127.0.1.2

W podobny sposób działa serwis countries.nerd.dk. Wykonując zapytanie do strefy domenowej tego serwisu możemy otrzymać informację o lokalizacji geograficznej danego adresu IP zakodowaną w zwracanym rekordzie. Na przykład:

>host 8.8.8.8.zz.countries.nerd.dk
8.8.8.8.zz.countries.nerd.dk has address 127.0.3.72

Taka odpowiedź oznacza, że dany adres znajduje się w Stanach Zjednoczonych (3*256+72=840, kod ISO tego kraju to 840).

Domeny IDN

Interesującym przypadkiem występowania zbitek przypadkowych znaków w nazwie domeny są domeny IDN (ang. Internationalized Domain Name), opisane w RFC 3490 (więcej można przeczytać np. tutaj). Przykładem może być domena ąćęłńóśźż.pl, która przez DNS przetwarzana jest jako xn--da9ag6e8jma6nxjsa.pl, lub łódź.pl, czyli xn--d-uga0v4h.pl. Cechą charakterystyczną takich domen jest prefiks „xn--”, który oznacza, że dana nazwa domenowa jest zakodowana przy użyciu Punycode’u. Niestety mechanizm ten wykorzystywany jest także w sposób złośliwy (o czym szerzej napiszemy w kolejnej części).

Chrome/Chromium

Przeglądarki Chrome i Chromium są źródłem bardzo dobrego przykładu użycia DGA do celów niezłośliwych. Przy uruchomieniu przeglądarka wysyła kilka zapytań DNS o trzy domeny składające się z losowych znaków. Ma to na celu sprawdzenie czy w danej sieci dochodzi do przepisywania odpowiedzi NXDomain. Losowe zestawy znaków umieszczane są w zapytaniu zarówno jako TLD (tak jak na rysunku poniżej),

chromium

jak i dodawane do lokalnych domen, w jakich znajduje się komputer, np. .lan lub .lokalna_domena.

chrome_win_local

Zachowanie to zaobserwowaliśmy zarówno dla przeglądarek standardowych (Chrome i Chromium dla Ubuntu, Chrome dla Windows 7), jak i w wersji mobilnej (Android KitKat). Przy testach w Windows 7 Professional dodatkowo wykorzystywane były wyszukiwania przez LLMNR oraz NBNS, choć nie występowały przy tym zapytania w TLD.

chrome_win

Sprawdzanie czy dochodzi do przepisywania odpowiedzi NXDomain jest potrzebne dla ustalenia czy niektóre funkcje omniboksa (czyli połączenia paska adresu i wyszukiwania) będą działały poprawnie. Na przykład przy wpisaniu pojedynczego słowa do omniboksa nie jest wiadome czy chodzi o nazwę lokalnego zasobu czy o frazę wyszukiwania. W Chromium domyślnie przedstawione nam zostaną wyniki wyszukiwania, ale w tym samym czasie zostanie wyszukany lokalny zasób. W razie odnalezienia pojawi się odpowiednia podpowiedź umożliwiająca przekierowanie. Jeśli jednak odpowiedzi NXDomain są przepisywane i gdzieś przekierowują, zamiast informować o nieistnieniu adresu, to mechanizm podpowiedzi będzie działał błędnie.

Eksperymenty sieciowe i inne zapytania o losowe domeny Google

W trakcie korzystania z Chromium można natrafić na kilka innych przykładów użycia algorytmów DGA. Przeglądarka wysyła zapytania DNS o domeny w strefie metric.gstatic.com, a także metric.ipv6test.com, metric.ipv6test.net. O podobnych zapytaniach napisano także we wspomnianym już wyżej artykule „DNS Noise…”. Z budowy tych domen można się domyśleć, że prawdopodobnie służy to testowaniu IPv6.

p5-dokjadpcjyjcq-v7cpryyjjoqzq3ry-930172-i1-v6exp3-v4.metric.gstatic.com
p5-dokjadpcjyjcq-v7cpryyjjoqzq3ry-930172-i2-v6exp3-ds.metric.gstatic.com
p5-dokjadpcjyjcq-v7cpryyjjoqzq3ry-930172-s1-v6exp3-v4.metric.gstatic.com
p5-jpcmcphku4iva-6pg7rmohcbnmcxcz-838302-i1-v6exp3-ds.metric.ipv6test.com
p5-jpcmcphku4iva-6pg7rmohcbnmcxcz-838302-i2-v6exp3-ds.metric.ipv6test.net

Inne zapytania kierowane są do domen w strefie pack.google.com. Wysyłane są przez Chrome, jak i Chromium. Niestety w tym momencie nie jesteśmy jeszcze pewni do czego służą, choć prawdopodobnie są powiązane z procesem aktualizacji aplikacji.

r4---sn-o5n3-f5fe.c.pack.google.com
r3---sn-o5n3-f5fe.c.pack.google.com
r5---sn-uxap5nvoxg5-j2ie.c.pack.google.com

Content Delivery Network

DGA są często używane do tworzenia domen serwerów CDN, choć nie jest to regułą. Sufiks nazw jest stały dla danej sieci CDN, natomiast algorytmicznie generowane są domeny wyższych poziomów. Kilka przykładów:

a1294.w20.akamai.net
dnn506yrbagrg.cloudfront.net
a98dc034c7781a941eba-bac02262202668bbe918ea9fb5289cd2.r58.cf2.rackcdn.com
srv-2015-04-07-17.pixel.parsely.com

Jest to dość częsty przypadek użycia DGA do celów niezłośliwych, ponieważ wykorzystanie sieci CDN wzrasta.

Inne źródła domen, które można niepoprawnie sklasyfikować

Wśród innych źródeł domen o dziwnych nazwach, które można niepoprawnie sklasyfikować jako botnetowe domeny DGA znajdują się m.in.:

  • domeny wpisane z błędem, np. exmaple.com lub examplec.om zamiast example.com
  • adresy w pseudodomenie .onion
  • różnego rodzaje serwisy blogowe, w których adresy stron użytkowników umieszczane są w trzecim poziomie nazwy domenowej.

Ostatni przypadek może posłużyć jako przykład tego jak bardzo wykrywanie botnetowych domen DGA korzystające z cech leksykalnych jest zależne od używanego języka naturalnego. Na przykład domeny: ma9strona i my9site, które dla ludzi są sensowne i oznaczają prawie to samo, mogą wydawać się podejrzane dla klasyfikatorów (ludzkich czy maszynowych), które używają innego języka naturalnego niż w którym domena została stworzona. Oczywiście osobną kwestią jest czy powyższe domeny mogłyby być stworzone przez DGA. Niestety, jak wskazuje choćby przykład botnetu Matsnu, istnieją algorytmy, które mogą tworzyć domeny złudnie podobne do tych tworzonych przez ludzi.

Podsumowanie

Przedstawione powyżej przykłady domen, które można błędnie sklasyfikować jako botnetowe domeny DGA na pewno nie wyczerpują liczby wszystkich możliwych sytuacji ich napotkania, ale pozwalają zauważyć pewne główne kategorie i sposoby użycia. Jak na razie pokazaliśmy ich zastosowania do celów niezłośliwych, w części drugiej zaprezentujemy kiedy DNS oraz losowe nazwy domenowe mogą być zagrożeniem.