Algorytm generowania nazw domen (, DGA) – algorytm stosowany w złośliwym oprogramowaniu do okresowego generowania dużej liczby nazw domen internetowych, z których tylko niewielka część służy do łączenia się z serwerami zarządzającymi (C&C) botnetu. Dzięki temu infrastruktura botnetu jest odporniejsza na blokowanie domen z czarnych list i na próby jej przejęciaUSENIX 2016, s. 263., np. przez sinkholingUSENIX 2016, s. 264.. Domeny wygenerowane w ten sposób określa się skrótem AGD ()USENIX 2016, s. 265..
Działanie Domeny są obliczane na podstawie tzw. ziarna (), które pełni rolę wspólnego sekretu operatora botnetu i zainfekowanych komputerów. Ziarnem mogą być m.in. stałe liczbowe, bieżąca data lub czas, a nawet popularne tematy w serwisie X. Zainfekowane komputery próbują łączyć się z wygenerowanymi domenami, a operatorowi botnetu do przejęcia nad nimi kontroli wystarczy zarejestrować jedną z nich.
Ponieważ domeny stale się zmieniają, statyczne czarne listy przestają być skuteczne, a w pliku złośliwego oprogramowania nie trzeba umieszczać na stałe nazw domen. Powstaje przy tym asymetria między atakującym a obrońcami. Operatorowi botnetu wystarczy jedna domena, a obrońcy, aby skutecznie unieszkodliwić botnet, muszą kontrolować wszystkie domeny, które może wygenerować algorytm.
Aby uniemożliwić przejęcie botnetu przez kogoś, kto zarejestruje jedną z generowanych domen, część złośliwego oprogramowania wymaga od serwera uwierzytelnienia. Przykładowo analizowana przez CERT Polska odmiana Viruta generowała codziennie na podstawie daty 100 sześcioznakowych domen w domenie .com i uznawała serwer za prawidłowy dopiero po otrzymaniu podpisanego kluczem RSA skrótu SHA-256 nazwy domeny.
Rodzaje W badaniu opublikowanym w 2016 roku na konferencji USENIX Security zaproponowano klasyfikację DGA według źródła ziarna i metody generowania domen. Ze względu na ziarno algorytmy dzielą się na zależne od czasu, w których generowane domeny są ważne tylko przez określony czas, i niezależne od czasu, a także na deterministyczne i niedeterministyczne. W algorytmach niedeterministycznych ziarno zależy od danych publicznych, ale niemożliwych do przewidzenia z wyprzedzeniem, np. od kursów walut publikowanych przez Europejski Bank Centralny (Bedep) albo od popularnych tematów w serwisie społecznościowym X (jedna z odmian Torpiga).
Ze względu na metodę generowania wyróżnia się algorytmy: arytmetyczne – obliczają ciąg wartości odpowiadających kodom znaków ASCII albo pozycjom znaków w zapisanym w programie alfabecie. To zdecydowanie najczęstszy rodzaj, stosowany przez 37 z 43 zbadanych rodzin złośliwego oprogramowaniaUSENIX 2016, s. 268–269., oparte na funkcji skrótu – tworzą domenę z szesnastkowego zapisu skrótu obliczonego np. funkcją MD5 lub SHA-256, oparte na liście słów – łączą słowa z jednej lub kilku list, dzięki czemu domeny wyglądają mniej przypadkowo. Przykładowo Gozi tworzył domeny ze słów Deklaracji niepodległości Stanów Zjednoczonych, oparte na permutacji – tworzą domeny przez permutację początkowej nazwy domeny.
Historia i skala Według badania z konferencji USENIX Security z 2016 roku DGA zastosowano po raz pierwszy w 2007 roku, a ponad połowa z 43 zbadanych algorytmów pojawiła się w 2013 roku lub późniejUSENIX 2016, s. 271.. Początkowo DGA służyły jako zapasowy sposób komunikacji, ale w 23 z 43 zbadanych rodzin złośliwego oprogramowania były jedynym mechanizmem łączenia się z serwerem zarządzającymUSENIX 2016, s. 269.. Algorytm robaka Conficker w wersji C generował dziennie 50 tys. nazw domen w 113 domenach najwyższego poziomu, a opanowanie zagrożenia wymagało współpracy 30 organizacji, w tym ICANN.
Przeciwdziałanie Po odtworzeniu algorytmu metodami inżynierii wstecznej można obliczyć przyszłe domeny i zarejestrować je lub zablokować, zanim zrobi to operator botnetu, a następnie skierować na sinkholeUSENIX 2016, s. 275–276.. Spośród ponad 18 mln domen wygenerowanych przez zbadane algorytmy zarejestrowano 0,62%, z czego około 72% należało do operatorów sinkhole’iUSENIX 2016, s. 272.. W większości zbadanych algorytmów zależnych od czasu rejestrowali oni domeny wcześniej niż przestępcy, którzy zwykle rejestrowali je tuż przed okresem ważnościUSENIX 2016, s. 273.. Autorzy badania zaproponowali blokowanie domen generowanych przez DGA na poziomie rejestrów domen i udostępnili bazę DGArchive, pozwalającą sprawdzić, czy dana domena pochodzi z DGA, oraz generować listy domen do blokowania.
DGA można też wykrywać w ruchu sieciowym bez znajomości algorytmu. Stosuje się m.in. statystyczną analizę nazw domen, np. rozkładu znaków, n-gramów, entropii i długościUSENIX 2016, s. 266.. W 14 z 43 zbadanych algorytmów wszystkie generowane domeny mają tę samą długość. Większość generowanych domen nie jest zarejestrowana, dlatego serwer DNS zwraca dla nich odpowiedź NXDOMAIN, a nietypowo dużo takich odpowiedzi może świadczyć o infekcjiUSENIX 2016, s. 276.. Na tym założeniu oparto m.in. system Pleiades, który w ruchu dużego dostawcy internetu wykrył sześć nieznanych wcześniej algorytmów DGA.
Zobacz też botnet DNS sinkhole
Przypisy
Bibliografia
Kategoria:Złośliwe oprogramowanie Kategoria:Domain Name System