algorytm generowania domen
| Po angielsku | domain generation algorithm (DGA) |
|---|---|
| Którą formą pisać | obie formy Obie formy są w obiegu. Przy pierwszym wystąpieniu pisz „polski termin (english term)”, dalej sam polski. |
| Inne formy | algorytm generujący domeny · domeny DGA (o wyniku jego działania) |
| Kategoria | Złośliwe oprogramowanie |
Algorytm generowania domen (domain generation algorithm, DGA) to mechanizm wbudowany w złośliwe oprogramowanie, który wylicza wiele zmiennych nazw domen; wśród nich program szuka aktywnego serwera C2 (command and control). CERT Polska opisuje algorytmy generowania domen jako używane w botnetach do tworzenia specjalnie skonstruowanych nazw domenowych, które odsyłają do serwerów C&C [2]. MITRE ATT&CK ujmuje to tak, że przeciwnik dynamicznie ustala domenę docelową ruchu sterującego, zamiast polegać na stałej liście adresów IP albo domen [1]. Dzięki temu zablokowanie lub przejęcie jednej domeny nie odcina botnetu.
Jak działa
Ten sam algorytm działa w złośliwym programie i u jego operatora. Obie strony liczą z tych samych danych wejściowych tę samą listę domen. Operator rejestruje tylko jedną lub kilka z nich, a zainfekowane maszyny odpytują po kolei całą listę, aż któraś odpowie.
Według MITRE wiele algorytmów generowania domen zależy od czasu i tworzy inną domenę dla każdego okresu, na przykład godziny, dnia lub miesiąca [1]. Inne dodatkowo używają ziarna, czyli tajnej wartości początkowej, żeby obrońcom trudniej było przewidzieć przyszłe domeny [1]. MITRE podaje też, że złośliwe oprogramowanie może sięgać po DGA wtedy, gdy straci kontakt z głównym serwerem sterującym, żeby odtworzyć kanał łączności [1].
Dla obrońcy oznacza to, że lista blokowanych domen musi obejmować wszystkie nazwy, jakie algorytm może wygenerować. MITRE wskazuje, że może chodzić o tysiące domen, pod którymi złośliwy program szuka poleceń, co znacznie utrudnia blokowanie, śledzenie i przejęcie kanału sterowania [1]. CERT Polska dodaje, że celem jest uniemożliwienie przejęcia domeny i zablokowania połączeń przez czarne listy [2][3].
Rodzaje
Algorytmy różnią się tym, jak wyglądają tworzone przez nie nazwy i z czego są liczone.
| Rodzaj | Jak wyglądają domeny | Przykład ze źródeł |
|---|---|---|
| losowe znaki | przypadkowe ciągi, trudne do przeczytania [1] | istgmxdejdnxuyla.ru [1] |
| sklejane słowa | połączone całe wyrazy [1] | cityjulydish.net [1] |
| zależne od daty | inna domena w każdym okresie [1] | Conficker, ziarno z daty UTC [1] |
| z tajnym ziarnem | trudne do przewidzenia bez znajomości ziarna [1] | — |
Algorytmy słownikowe są groźniejsze dla detekcji, bo tworzą nazwy podobne do tych, które wymyślają ludzie. CERT Polska podawał jako przykład botnet Matsnu [2]. Badanie przedstawione na konferencji USENIX Security 2016 objęło 43 rodziny i warianty złośliwego oprogramowania korzystające z DGA oraz ponad 18 milionów wygenerowanych domen, a jego autorzy zaproponowali taksonomię tych algorytmów [4].
W WordPressie
Algorytm generowania domen działa w złośliwym programie po stronie klienta albo serwera zarażonej maszyny, więc typowa strona WordPress nie jest jego nosicielem w klasycznym sensie. Pokrewna technika pojawia się jednak w kampaniach wstrzykujących skrypty na przejęte witryny.
Agencja Cyberbezpieczeństwa Singapuru ostrzegała 27 marca 2024 roku przed trwającą kampanią Sign1 wymierzoną w strony WordPress [5]. Napastnicy wchodzili na strony przez ataki siłowe i luki we wtyczkach, a następnie osadzali złośliwe skrypty we własnych widżetach HTML i w legalnych wtyczkach [5]. Według BleepingComputer, który opisywał ustalenia firmy Sucuri, kampania objęła ponad 39 tysięcy witryn w ciągu sześciu miesięcy [6]. Skrypt używał losowania zależnego od czasu, żeby generować dynamiczne adresy URL zmieniające się co 10 minut i omijać blokady, a domeny rejestrowano tuż przed użyciem, więc nie trafiały na listy blokad [6]. Goście stron byli kierowani przez złośliwe przekierowania na strony oszustów z fałszywą CAPTCHA, która miała skłonić do włączenia powiadomień przeglądarki z reklamami [6].
Wnioski dla administratora:
- blokowanie znanych złych domen w treści strony nie wystarczy, bo domena zmienia się szybciej, niż trafia na listę;
- trzeba szukać samego wstrzykniętego kodu w widżetach, wtyczkach i bazie danych;
- agencja zalecała silne hasła i uwierzytelnianie wieloskładnikowe, limit prób logowania, usunięcie tylnych furtek z katalogu głównego i katalogu uploads, usunięcie nieautoryzowanych kont administratora oraz natychmiastową aktualizację WordPressa, wtyczek i motywów [5].
Wykrywanie i obrona
Nieistniejące domeny. Zainfekowana maszyna odpytuje DNS o wszystkie wygenerowane domeny, a tylko część z nich jest zarejestrowana, więc wiele zapytań kończy się odpowiedzią o nieistniejącej domenie [3]. CERT Polska opisywał, że maszyna pytająca o wiele nieistniejących domen zachowuje się podejrzanie [3]. Zastrzegał jednak, że odpowiedzi NXDOMAIN powinny być jednym z kilku sygnałów, a nie samodzielnym dowodem [3].
Entropia nazw. MITRE zaleca obserwację zapytań DNS o domeny o dużej entropii lub bezsensownym wyglądzie, w połączeniu z krótkimi połączeniami nietypowych procesów [1].
Blokowanie i sinkholing. Jako środki zaradcze MITRE wymienia systemy zapobiegania włamaniom z sygnaturami, czyli IPS, oraz lokalny sinkhole DNS, który pomaga powstrzymać sterowanie oparte na DGA niższym kosztem [1].
Przewidywanie domen. Autorzy badania z USENIX Security 2016 pokazali, że przez wcześniejsze wyliczenie przyszłych domen można wiarygodnie identyfikować rodziny złośliwego oprogramowania i kampanie [4]. Takie listy trafiają do threat intelligence i służą jako wskaźniki kompromitacji.
Fałszywe alarmy
Losowo wyglądająca nazwa domeny nie musi oznaczać infekcji. CERT Polska opisał szereg legalnych źródeł takich zapytań, które powodują fałszywe alarmy detekcji [2]:
- zapytania reputacyjne programów antywirusowych, które kodują skróty plików w nazwach domen [2];
- zapytania do czarnych list, takich jak Spamhaus DBL [2];
- domeny międzynarodowe zapisane w Punycode z przedrostkiem
xn--[2]; - przeglądarki Chrome i Chromium, które wysyłają zapytania o losowe ciągi znaków, żeby wykryć przechwytywanie DNS [2];
- sieci CDN, w których części nazw są generowane algorytmicznie [2].
Chrome pojawia się jako przykład fałszywego alarmu także w drugim tekście CERT Polska, obok botnetu Conficker.A [3]. Dlatego detekcja algorytmów generowania domen zwykle łączy kilka cech: nazwę, odpowiedzi DNS, proces, który pyta, i to, co dzieje się po udanym połączeniu.
Przypisy
6- [1] Dynamic Resolution: Domain Generation Algorithms (T1568.002) · MITRE ATT&CK
- [2] Wykrywanie botnetowych domen DGA: o fałszywych alarmach w detekcji · CERT Polska
- [3] Jak nieistniejące nazwy domenowe mogą pomóc w wykryciu botnetów DGA? · CERT Polska
- [4] A Comprehensive Measurement Study of Domain Generating Malware · USENIX Security 2016
- [5] Ongoing Malware Campaign Targeting WordPress Websites (AL-2024-031) · Cyber Security Agency of Singapore
- [6] Evasive Sign1 malware campaign infects 39,000 WordPress sites · BleepingComputer