Algorytm DGA wykorzystywany w trojanie Emotet



Podobne dokumenty
Trojan bankowy Emotet w wersji DGA

Necurs analiza malware (1)

Analiza możliwości złośliwego oprogramowania vjw0rm w kampanii phishingowej PayU

Raport z analizy porównawczej rodzin ransomware JAFF i Cry

Złośliwe oprogramowanie Sandrorat (podszywające się pod oprogramowanie Kaspersky) na platformę Android WYNIKI ANALIZY

H-Worm RAT. Analiza aktywności złośliwego oprogramowania. CERT Orange Polska S.A. Warszawa, dnia

Analiza Malware Win32.KeyloggerSpy

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Analiza Trojana NotCompatible.C

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

Specyfikacja API Runtime BAS 3.0

Zapisywanie algorytmów w języku programowania

Botnet Hamweq - analiza

Analiza malware Remote Administration Tool (RAT) DarkComet

Analiza malware'u SandroRAT_sec Kaspersky_Mobile_Security.apk

Mechanizmy pracy równoległej. Jarosław Kuchta

Implementacja mechanizmu SkyCashClick Wersja 0.1

Połączenie VPN Host-LAN SSL z wykorzystaniem motp. 1. Aplikacje motp 1.1. DroidOTP 1.2. Mobile-OTP. 2. Konfiguracja serwera VPN

Analiza malware Keylogger ispy

Analiza złośliwego oprogramowania. Cleopatra

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Analiza aktywności złośliwego oprogramowania Njw0rm

Dokumentacja techniczna - PBL

Połączenie VPN Host-LAN PPTP z wykorzystaniem motp. 1. Aplikacje motp 1.1. DroidOTP 1.2. Mobile-OTP. 2. Konfiguracja serwera VPN

Orange Polska S.A. Bezpieczeństwo Systemów Teleinformatycznych / Wydział Operacji Bezpieczeństwa

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Dokumentacja Techniczna 1.2. Webtoken MT. Uruchomienie subskrybcji MT poprzez serwis WWW

Analiza kampanii złośliwego Oprogramowania efaktura Orange. Win32/Injector.Autoit.BKD / Trojan.VBInject

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Połączenie VPN Host-LAN SSL z wykorzystaniem DrayTek Smart VPN Client. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2.

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

- pierwszy w Polsce Hosting zorientowany na lokalizację Klienta

P R O C E D U R A P O D Ł Ą C Z E N I A S Y S T E M U D Z I E D Z I N O W E G O D O C S I Z S

Internationalized Domain Names. Autorzy: Krzysztof Olesik & Paweł Krześniak

WYMAGANIA EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH KLASA 4:

4. Funkcje. Przykłady

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Wymagania edukacyjne z zajęć komputerowych klasa 4:

Aplikacje WWW - laboratorium

Ataki na serwery Domain Name System (DNS Cache Poisoning)

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Płatności CashBill - SOAP

Połączenie VPN Host-LAN PPTP z wykorzystaniem Windows XP. 1. Konfiguracja serwera VPN. 2. Konfiguracja klienta VPN

Obowiązuje od r.

Programowanie w języku C++ Grażyna Koba

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Konfiguracja parametrów pozycjonowania GPS /5

Wymagania edukacyjne z zajęć komputerowych klasa 4:

Informacje i zalecenia dla zdających egzamin maturalny z informatyki

Wybrane działy Informatyki Stosowanej

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Skrócona instrukcja obsługi rejestratorów marki IPOX

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Aplikacja Sieciowa wątki po stronie klienta

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

Instrukcja uruchomienia egzaminu z użyciem Wirtualnego Serwera Egzaminacyjnego

EGZAMIN Z INFORMATYKI

- 1 Laboratorium fotografii cyfrowej Foto Video Hennig

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

1 Moduł Diagnostyki Sieci

DESlock+ szybki start

Opis zmian w wersji aplikacji Cyfrowe Repozytorium Dokumentów

Instrukcja użytkownika

Programowanie współbieżne i rozproszone

MEDIS_EWUS_AUTOMAT SYSTEM KS MEDIS: AUTOMAT EWUŚ Wydanie: 1.0 Data wydania: Marzec 2013 Strona/stron: 1/5

Analiza aktywności złośliwego oprogramowania Orcus RAT

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Połączenie VPN Host-LAN SSL z wykorzystaniem przeglądarki. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2. Konto SSL 1.3. Grupa użytkowników

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Instrukcja pobrania i instalacji. certyfikatu niekwalifikowanego na komputerze lub karcie kryptograficznej. wersja 1.4 UNIZETO TECHNOLOGIES SA

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Instrukcja pobrania i instalacji certyfikatu niekwalifikowanego na komputerze lub karcie. Instrukcja dla użytkowników. wersja 1.4

INFORMACJE I ZALECENIA DLA ZDAJĄCYCH EGZAMIN MATURALNY Z INFORMATYKI

Połączenie VPN Host-LAN PPTP z wykorzystaniem DrayTek Smart VPN Client. 1. Konfiguracja serwera VPN. 2. Konfiguracja klienta VPN

INSTRUKCJA OBSŁUGI PROGRAMU

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

PODRĘCZNIK UŻYTKOWNIKA PROGRAMU LBD <-> TBD

PHICS - Polish Harbours Information & Control System Dokumentacja użytkownika System weryfikacji autentyczności polskich dokumentów marynarzy

Połączenie VPN Host-LAN PPTP z wykorzystaniem Windows Vista/7. 1. Konfiguracja serwera VPN. 2. Konfiguracja klienta VPN

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Instalacja wypychana ESET Endpoint Encryption

Klient-Serwer Komunikacja przy pomocy gniazd

System operacyjny MACH

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Aby pobrać program FotoSender naleŝy na stronę lub i kliknąć na link Program do wysyłki zdjęć Internetem.

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

ZiMSK NAT, PAT, ACL 1

Prezentacja systemu RTLinux

Instrukcja wiązania bankowości internetowej z aplikacją mobilną mtoken Asseco MAA (w przypadku autoryzacji za pomocą tokena lub sms-a)

VPN Host-LAN IPSec X.509 z wykorzystaniem DrayTek Smart VPN Client

Programowanie i techniki algorytmiczne

Instrukcja obsługi SafeIT - modułu zdalnego sterowania do sterowników kotłów CO firmy Foster v1.0

Instalacja Active Directory w Windows Server 2003

Transkrypt:

Algorytm DGA wykorzystywany w trojanie Emotet CERT Orange Polska Warszawa 29/12/2014 CERT OPL 29.12.2014 Strona 1 z 6

Wstęp. Trojan Emotet wielokrotnie był już przedmiotem zainteresowania specjalistów. Od czasu jego wykrycia przez firmy zajmujące się bezpieczeństwem teleinformatycznym w połowie 2014 roku, zaobserwowano dużą liczbę jego wariantów. Wersja wykorzystująca algorytm DGA była również opisywana przez CERT Orange Polska, ponieważ kampania masowego rozsyłania spamu związanego z propagacją tej złośliwej aplikacji docierała również do pracowników oraz klientów naszej firmy. Niniejsza analiza będzie więc skupiać się wyłącznie na algorytmie DGA zastosowanym w trojanie. Jak wiadomo, stosowanie tego typu algorytmów w złośliwych aplikacjach ma na celu utrudnienie neutralizacji botnetów przez organy ścigania oraz osoby zajmujące się bezpieczeństwem teleinformatycznym. Szczegóły implementacji. Emotet wykorzystuje między innymi wartości uzyskane z serwera zdalnego do inicjalizowania zmiennych początkowych, które są następnie wykorzystywane do generowania nazw domenowych. Nazwy mają stałą długość dziewiętnastu znaków łącznie z domeną najwyższego poziomu (.eu) i składają się wyłącznie ze znaków alfabetu z przedziału od 'a' do 'z'. Jak można przeczytać w ogólnej analizie przypadku, zamieszczonej na blogu Orange Polska, trojan przed przystąpieniem do realizacji swoich funkcji sprawdza dostępność połączenia z Internetem poprzez próbę wysłania żądania HTTP do serwera www.microsoft.com. Oprócz sprawdzenia dostępności połączenia, funkcja ta ma również za zadanie zainicjalizować zmienną wykorzystywanej w algorytmie DGA. Poniżej znajduje się implementacja w języku ANSI C. CERT OPL 29.12.2014 Strona 2 z 6

Jak widać w powyższym listingu, funkcja zwraca wartość typu BOOL (prawda lub fałsz) informującą o tym czy przesłanie żądania HTTP się powiodło, oraz inicjalizuje globalną zmienną "ultimestampone" poprzez konwersje danych zwróconych z wywołania HttpQueryInfo() do struktur SYSTEMTIME i FILETIME przez wywołanie SystemTimeToFileTime() oraz LARGE_INTEGER. Na końcu zapisuje wynik przez wywołanie funkcji RtlTimeToSecondsSince1970(). Warto nadmienić, że wywołanie HttpQueryInfo() z wartością 0x40000009 tak, jak ma to miejsce w tym przypadku zwraca czas pobrany z jednego z nagłówków odpowiedzi HTTP (w tym przypadku odpowiedzi z serwera www.microsoft.com ). Jeżeli wywołanie powyższej procedury powiedzie się, Emotet wywołuje kolejną funkcje inicjalizującą drugą zmienną globalną wykorzystywaną przez DGA. CERT OPL 29.12.2014 Strona 3 z 6

W tym przypadku początkowa inicjalizacja struktury SYSTEMTIME bazuje na wartościach na stałe zapisanych w kodzie programu. Wykorzystywane są pola wyear (rok), wmonth (miesiąc), wday (dzień), pola te są inicjalizowane kolejnymi wartościami 0x7de (2014), 0x0a (10), 0x1c (28) które składają się na datę 28.10.2014 (wartości te mogą być różne w różnych próbkach malware). Następnie tak zainicjalizowana struktura przekazywana jest do funkcji SystemTimeToFileTime, konwertowana do struktury FILETIME i kolejno do LARGE_INTEGER. Wartości tej ostatniej zmiennej przekazywane są do wywołania RtlTimeToSecondsSince1970 którego wynik zapisywany jest w drugiej zmiennej globalnej ultimestamptwo. Po inicjalizacji wykorzystywanych wartości trojan uruchamia 16 wątków tworzących nazwy domenowe. Każda z procedur uruchomionych w osobnym wątku działa w pętli wykorzystującej dwa warunki przerwania. W niej wywoływana jest podprocedura, która korzystając z serii instrukcji matematycznych tworzy nazwę domenową na podstawie jednej z uzyskanych wcześniej wartości. Jak widać w powyższym listingu, w pętli porównywane są wartości ultimestamptwo i ultimestampone. Jeżeli ultimestamptwo jest mniejsza bądź równa ultimestampone,zostaje CERT OPL 29.12.2014 Strona 4 z 6

ona zwiększona o wartość 900 i ustawiany jest znacznik kontynuacji. Następnie wywoływana jest procedura dgagen(domain) która tworzy nazwę DNS. Po powrocie z tej procedury weryfikowana jest poprawność utworzonej w ten sposób nazwy za pomocą wywołania funkcji DnsQuery(). Poniżej przedstawiona została implementacja procedury dgagen(): Na listingu widać, że wykorzystuje ona wartość zmiennej ultimestamptwo oraz stałą wartość 0x51eb851f, następnie wykonuje na tych wartościach szereg operacji arytmetyczno-logicznych uzyskując w ten sposób znak alfabetu z przedziału a-z, który zapisywany jest w kolejnych komórkach tablicy wyjściowej. Po ukończeniu pętli do tablicy kopiowane jest rozszerzenie TLD (".eu"). Po zweryfikowaniu "aktywności" uzyskanej w ten sposób nazwy domenowej (wywołanie DnsQuery()) nazwa ta kopiowana jest do tablicy alokowanej w pamięci dynamicznej. W ten sposób uzyskiwana jest cała pula poprawnych i aktywnych domen, które wykorzystywane są kolejno w przypadku, gdy np. odpowiedź na żądanie wysłane do jednej z nich ma niewłaściwy podpis cyfrowy, ponieważ została ona zawieszona lub jest sinkholowana. Cały proces badania dostępności łącza i generowania nazw powtarzany jest co 15 minut. Pod poniższym adresem znajduje się archiwum.zip zabezpieczone hasłem Orange2015, które zawiera kod źródłowy oraz skompilowaną aplikacje konsolową implementującą omawiany algorytm DGA. EmoDgaTool.zip Suma MD5 archiwum: ff1b5d0e3db1da9086d00a6930298e69 CERT OPL 29.12.2014 Strona 5 z 6

Implementacja ta powstała na podstawie inżynierii odwrotnej posiadanej przez nas próbki i nie jest stuprocentowym odwzorowaniem kodu trojana, a jedynie wykorzystywanego przez niego algorytmu DGA. Podsumowanie. Opisywany trojan z pewnością nie należy do skomplikowanych, a kampania jego propagacji jest dość niestandardowa. Wydaje się że dotyka ona wielu krajów, natomiast we wszystkich znanych nam przypadkach celem malware u są instytucje znajdujące się w Niemczech. Fakt, że analizowany przez CERT Orange Polska wariant korzysta z DGA, a sam Emotet to właściwie droper może niepokoić. Jednak jak w przypadku wielu innych mechanizmów z obszaru bezpieczeństwa teleinformatycznego (zarówno ofensywnego, jak i defensywnego) algorytmy DGA to broń obosieczna. Potrafi być naprawdę uciążliwa z perspektywy lokalizowania i neutralizacji serwerów C&C, ale jest przy tym stosunkowo głośna i potrafi generować naprawdę dużo ruchu sieciowego, którego charakterystyka nie pozostawia wątpliwości co do jego złośliwego przeznaczenia. CERT OPL 29.12.2014 Strona 6 z 6