Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Saga o Duqu zawiera nowe wątki: Jason Bourne i Dexter z popularnego serialu

Aleksander Gostiew
Kaspersky Lab Expert
Dodany 15 listopada 2011, 15:04 CET
Tagi:

Jak już informowaliśmy wcześniej, ostatnio prowadziliśmy dochodzenie dotyczące kilku incydentów związanych z infekcją trojana Duqu. Poczyniliśmy pewne postępy w „rozgryzaniu” Duqu, a także udało nam się zebrać kilka brakujących komponentów, bez których trudno zrozumieć, co tak naprawdę się dzieje.

Na początek, chcielibyśmy przekazać szczere podziękowania specjalistom z sudańskiego CERT-a. W naszym dochodzeniu służyli nam bezcenną pomocą i wykazali się najwyższym profesjonalizmem – zgodnie z wartościami i celami każdej placówki CERT na świecie. Nasza współpraca z sudańskim CERT-em trwa i obejmie kolejne trzy incydenty wykryte w tym państwie.

Nasze największe osiągnięcie dotyczy dochodzenia w sprawie incydentu określonego jako incydent nr 1 i opisanego w moim drugim poście poświęconym Duqu. Zdołaliśmy nie tylko zlokalizować wszystkie niewykryte wcześniej pliki tej wersji Duqu, ale również znaleźć zarówno źródło infekcji jak i droppera plików, który zawiera exploit na lukę w pliku win32k.sys (CVE-2011-3402).

Porównanie wykrytych przez nas danych z tymi, które uzyskali inni badacze i firmy antywirusowe, pozwoliło ustalić różne cechy wspólne, na podstawie których odtworzyliśmy przybliżoną chronologię zdarzeń oraz określiliśmy ogólne metody wykorzystywane przez autorów Duqu.

Istnieje korelacja między datami incydentu a historią wykrycia wirusa o nazwie Stars w Iranie. W tym czasie irańscy specjaliści nie przekazywali próbek wykrytego wirusa firmom antywirusowym, co stanowiło poważny błąd, który zapoczątkował wszystkie kolejne wydarzenia w sadze o Duqu. Irańczycy najprawdopodobniej znaleźli moduł keyloggera, który został załadowny do systemu i zawierał zdjęcie galaktyki NGC 6745. Wyjaśnia to nadaną mu nazwę Stars.

Możliwe, że irańscy specjaliści znaleźli tylko keyloggera, a główny moduł Duqu oraz dropper (łącznie z dokumentami zawierającymi nieznaną wtedy lukę) pozostawały niewykryte.

Etap 1: Penetracja, e-mail

Atak został przeprowadzony na wybrany wcześniej cel. Z oczywistych powodów nie możemy ujawniać nazwy firmy, która była celem w incydencie nr 1. Podobnie jak w przypadku incydentu badanego przez CrySyS Lab, atak został przeprowadzony za pośrednictwem poczty e-mail.

Obiekt został zaatakowany dwukrotnie - 17 i 21 kwietnia 2011 r.

Pierwsza próba okazała się nieudana (e-mail od osób atakujących trafił do śmieci). Atak został powtórzony cztery dni później, jednak z nieco zmienionym tematem e-maila.

Nadawca e-maila, Jason B., okazał się bardzo wytrwałą osobą. Wiadomość nie została wysłana masowo, ponieważ zarówno w temacie jak i w nazwie pliku wymieniono atakowaną firmę.

W obu przypadkach e-mail został wysłany z tego samego adresu IP, zlokalizowanego w Seulu, w Korea Południowa. Według nas komputer został wcześniej zainfekowany przez szkodliwy program i wykorzystany (bez wiedzy właściciela) jako proxy.

Drugi atak okazał się skuteczny: adresat otworzył załączony plik DOC, który zawierał exploita wykorzystującego luki w zabezpieczeniach oraz instalator trojana. .

Osoby atakujące zastosowały na tym etapie interesujący fortel. Zaraz po otwarciu pliku przez adresata exploit zaczynał swoje działanie: stawał się aktywny, rezydując w pamięci, ale nie robił nic! W międzyczasie mógł zostać zamknięty zarówno oryginalny plik szkodnika jak i sam plik Worda.

Ten okres braku aktywności trwał około dziesięciu minut, po czym exploit czekał na koniec aktywności użytkownika (brak aktywności z wykorzystaniem klawiatury czy myszki). Dopiero wtedy dropper zaczynał działać.

Znaleziony przez nas wariant droppera różni się nieco od droppera znalezionego przez węgierskie laboratorium Crysys i opisanego przez Symanteca. Jednak różnice te dotyczą głównie rozmiarów i dat stworzenia tego komponentu.

Na tym etapie ogólny schemat wyglądał tak:

Exploit -> jądro -> sterownik w jądrze -> loader dll w services.exe -> duży plik konfiguracyjny w services.exe -> duży plik konfiguracyjny instalujący się z lsass lub procesu AV.

Kod powłoki exploita znajdował się w osadzonej czcionce przetwarzanej przez win32k.sys system. Czcionka miała nazwę Dexter Regular, a jej twórcy zostali przedstawieni jako Showtime Inc.

Jest to kolejny żart autorów Duqu, ponieważ Showtime Inc. to stacja telewizyjna, która wyprodukowała serial telewizyjny Dexter, opowiadający o laborancie analizy krwi z posterunku Policji w Miami, który jednocześnie jest seryjnym mordercą wymierzającym własną sprawiedliwość na przestępcach.

Sterownik załadowany przez exploita do jądra systemu posiadał datę kompilacji 31 sierpnia 2007 r. Analogiczny sterownik znaleziony w dropperze od CrySyS był datowany na 21 lutego 2008 r. Jeżeli te informacje są prawdziwe, autorzy Duqu musieli pracować nad tym projektem przez ponad cztery lata!

Sterownik ładował do procesu services.exe bibliotekę, która była również zlokalizowana w ciele exploita – głównym module droppera – i uruchamiał jego kod.

Na tym etapie dropper próbuje sprawdzić w rejestrze następujący klucz:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4\"CF1D"

Należy zauważyć, że w dokumencie opublikowanym przez Symanteca wymieniony jest klucz CFID; jednak może to być literówka.

Dropper wydobywa ze swojego ciała zawartość sekcji “.init”, w której znajduje się nagłówek z magicznym identyfikatorem CIGH, oraz dodatkowe ustawienia, plik konfiguracyjny (.DLL) oraz sterownik, który jest instalowany w systemie. Po rozpakowaniu zawartości tej sekcji, zostaje przeprowadzony test, który sprawdza, czy aktualna data zgadza się z zakresem zdefiniowanym w nagłówku sekcji “.init” droppera. Jeżeli data nie mieści się w tym zakresie, trojan nie zostaje zainstalowany.

W naszym wariancie zakres ten wynosił od 17 sierpnia 2010 r. do 18 lipca 2012 r. W próbce droppera wykrytego przez CrySyS zakres był inny: 17 sierpnia 2005 r. – 2 listopada 2023 r.

Następnie dropper ładuje część PNF (DLL) i przekazuje kontrolę funkcji eksportowanej jako Nr 4. Funkcja ta odpowiada za instalowanie w systemie i uruchomienie sterownika trojana oraz zaszyfrowanej biblioteki (PNF DLL), wraz z plikiem konfiguracyjnym. Plik konfiguracyjny zawiera datę infekcji oraz okres działania trojana w systemie (domyślnie jest to 30 dni, jednak okres ten może się zmienić w zależności od poleceń z centrum kontroli).

Jak zakładaliśmy wcześniej, w incydencie tym wykorzystano unikatowy zestaw plików, który różni się od wcześniej znanych zestawów. Najważniejsza różnica polega na tym, że główny moduł trojana (plik konfiguracyjny DLL) posiadał datę utworzenia 17 kwietnia – ten sam dzień, w którym miał miejsce pierwszy atak na ofiarę. To oznacza, że autorzy tego szkodnika tworzą oddzielny zestaw plików dla każdej ofiary tuż przed atakiem.

Wykryte przez nas pliki tworzą następującą kolekcję:

Sterownik Rozmiar Data Główna biblioteka DLL Rozmiar Data Plik konfiguracyjny
adp55xx.sys 24 960 03.11.2010 apd95xx.pnf 24 8320 17.04.2011 adp96xx.pnf
apd95xx.pnf 192 512 17.04.2011

Różnice w rozmiarze głównej biblioteki DLL (znaleziono na różnych komputerach w jednym incydencie) można wyjaśnić tym, że w pierwszym wariancie DLL komponent, który współdziała z centrum kontroli, jest przechowywany w bibliotece DLL PNF jako zasób 302; natomiast w drugim wariancie komponent ten znajduje się w skompresowanej sekcji “.zdata” biblioteki loadera, która jest przechowywana jako zasób 302. Zakładamy, że kompresja miała miejsce po utworzeniu zestawu, przy pomocy którego został zaatakowany inny komputer w sieci.

Wykorzystywany w tym zestawie serwer kontroli (C2) również różnił się od tych, które zostały wykryte wcześniej w Indiach i Belgii. W omawianym incydencie centrum kontroli było zlokalizowane w innym państwie; jednak ze względu na trwające dochodzenie nie możemy ujawniać publicznie tej daty. Poza tym wiadomo nam o jeszcze innym centrum kontroli wykorzystanym w innym incydencie; ono również jest analizowane. Informacje te zostaną opublikowane w najbliższym czasie. To również sugeruje, że osoby atakujące wykorzystywały inne centrum C&C dla każdego ataku.

Etap II: Zbieranie informacji

Podczas naszego dochodzenia dotyczącego tego incydentu okazało się, że w jednej organizacji zhakowane zostały dwa komputery. Pierwszy z nich stanowił źródło infekcji z 21 kwietnia; drugi został zhakowany później, pod koniec maja. Infekcja drugiego komputera została przeprowadzona za pośrednictwem sieci lokalnej.

Po zainfekowaniu systemu oraz ustanowieniu połączenia z serwerem kontroli nie ma wątpliwości, że został załadowany i zainstalowany dodatkowy moduł znany jako keylogger, który potrafił zbierać informacje o systemie, wykonywać zrzuty ekranu, wyszukiwać pliki, przechwytywać hasła itd. Do dnia dzisiejszego potwierdzono istnienie przynajmniej dwóch wariantów danego modułu – jeden został znaleziony przez Crysys Lab (data kompilacji: 1 czerwca 2011 r.), drugi przez Symanteca (data kompilacji: 10 sierpnia 2011 r.). W omawianym incydencie nie zdołaliśmy znaleźć podobnego modułu; jednak możemy stwierdzić, że istniał jeszcze w maju 2011 r.

Na obu komputerach znaleziono ślady działania modułu szpiegującego, tj. plików o nazwie ~DFxxxxx.tmp (np. ~DF1EF83.tmp) oraz ~DQx.tmp (np. ~DQ2C6.tmp).

Nazwa pliku ~DF[pięciocyfrowa liczba] różni się formatem od nazw plików tymczasowych stworzonych przez MS Word, które stosują format <font-color=green>~DF[czterocyfrowa liczba]</font>.

Pliki ~DF zawierają skompresowany identyfikator zainfekowanego systemu i rozpoczynają się od wiersza ABh91AY&SY. Pliki ~DQ zawierają zebrane informacje (listy procesów, zrzuty ekranu, informacje o aplikacjach). Pliki te są również skompresowane i zawierają podobny znacznik, różniący się tylko jednym symbolem: AEh91AY&SY.

Na razie nie wiemy, jaki moduł tworzy pliki ~DF (pliki ~DQ są tworzone przez znany moduł szpiegujący) ani co dokładnie jest celem tych plików. Na pierwszym komputerze pliki te były datowane na 27 kwietnia – trzy dni od daty infekcji.

25 maja 2011 r. moduł szpiegujący stworzył plik ~DQ181.tmp

Zawierał on informacje o otoczeniu sieciowym początkowo zainfekowanego komputera. Drugiego dnia, 26 maja 2011 r., została zarejestrowana infekcja drugiego komputera w sieci. Stworzono w nim identyfikator pliku ~DF.

Interesujące jest to, że na drugim komputerze został później stworzony kolejny plik ~DF. Miało to miejsce 2 czerwca 2011 r. Data ta pokrywa się z datą kompilacji znanego modułu szpiegującego (1 czerwca 2011). Możliwe, że w okresie 1-2 czerwca autorzy Duqu zainstalowali tę nową wersję modułu na wszystkich zainfekowanych komputerach za pośrednictwem serwera C&C.

Ślady działania tego modułu są widoczne w istnieniu pliku ~DQ4.tmp, który został stworzony 29 czerwca.

Znaleźliśmy trzy pliki typu ~DQ, które zostały utworzone 25 maja, 29 czerwca i 24 sierpnia. Zauważyliśmy, że wszystkie te dni wypadają w środę. Być może jest to zbieg okoliczności, a może nie. Niezależnie od tego, jak jest prawda, możemy określić grupę stojącą za Duqu jako Gang Środowy :)

Trojan ten brał udział w infekcji systemów od 21 kwietnia do końca października 2011 r. Jego pliki konfiguracyjne zostały zainstalowane w ciągu co najmniej 121 dni; reinstalacja głównego modułu miała miejsce jeszcze pod koniec czerwca 2011 r.

Przez cały ten czas osoby atakujące okresowo instalowały nowe moduły, infekowały inne komputery w sieci i zbierały informacje.

Wnioski

W ramach dochodzenia w sprawie opisywanego incydentu określiliśmy punkty wejścia wykorzystane podczas penetracji systemów, daty zdarzeń oraz kilka faktów dotyczących postępowania osób atakujących. Informacje te pozwalają określić datę jednej z fal ataku na połowę-koniec kwietnia 2011 r. Poniżej zamieszczam kluczowe fakty ustalone podczas dochodzenia:

- dla każdej ofiary został stworzony oddzielny zestaw plików wykorzystywanych do przeprowadzenia ataku

- każdy unikatowy zestaw plików wykorzystywał oddzielny serwer kontroli; - ataki zostały przeprowadzone za pośrednictwem wiadomości e-mail z załączonym plikiem .DOC. - wysyłki zostały przeprowadzone z anonimowych skrzynek pocztowych, prawdopodobnie za pośrednictwem zhakowanych komputerów; - znany jest przynajmniej jeden adres e-mail, z którego przeprowadzono wysyłki - bjason1xxxx@xxxx.com; - dla każdej ofiary stworzono oddzielny plik DOC; - exploit luk był zawarty w czcionce “Dexter Regular”; - osoby atakujące zmieniały kod powłoki i zakresy dat potencjalnych infekcji; - po przeniknięciu do systemu osoby atakujące instalowały dodatkowe moduły i infekowały sąsiednie komputery; - obecność w systemie plików ~DF.tmp[pięciocyfrowa liczba] i ~DQ.tmp[czrerocyfrowa liczba] jednoznacznie wskazuje na infekcję przez Duqu.

Ze względu na ochronę tożsamości ofiary nie możemy ujawnić innym stronom źródła pliku .DOC.

Ponadto, na razie nie ujawniamy adresu serwera kontroli dla tej wersji Duqu; sądzimy jednak, że już nie działa i wszystkie znajdujące się na nim krytyczne informacje zostały usunięte przez osoby atakujące. To samo dotyczy innego wykrytego przez nas serwera kontroli. Informacje o serwerach kontroli zostaną opublikowane w późniejszym czasie.

Na chwilę obecną wiemy o istnieniu co najmniej 12 unikatowych plików Duqu. Omawiany w tym poście wariant ma nazwę variant F. Szczegółowe informacje dotyczące innych wariantów zostaną opublikowane w późniejszym terminie.