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

Sagi o robaku Flame ciąg dalszy: Króliczek, Żaba, Mikrob i Sok z Żuka...

Aleksander Gostiew
Kaspersky Lab Expert
Dodany 30 maja 2012, 12:39 CEST

Jak wspomnieliśmy już w poprzednim artykule dotyczącym Flame'a - objętość kodu szkodnika i liczba jego funkcji jest tak obszerna, że ich kompletna analiza zajmie wiele miesięcy. Planujemy na bieżąco publikować najważniejsze i najbardziej interesujące szczegóły dotyczące funkcji Flame'a, w miarę jak będziemy je odkrywać. Na chwilę obecną otrzymujemy wiele zapytań, jak sprawdzić system pod kątem infekcji Flame'm. Oczywiście naturalną odpowiedzią z naszej strony jest: "użyć rozwiązania Kaspersky Anti-Virus lub Internet Security". Nasze produkty w powodzeniem wykrywają i usuwają wszelkie możliwe modyfikacje głównego modułu szkodnika oraz wszystkich dodatkowych składników Flame'a. Mimo powyższego, na końcu tego artykułu podamy zalecenia i porady dla tych, którzy samodzielnie chcą przeprowadzić szczegółową kontrolę swojego komputera. MSSECMGR.OCX Główny moduł Flame'a jest plikiem DLL zwanym mssecmgr.ocx. Wykryliśmy dwie modyfikacje tego modułu. Najbardziej zainfekowane maszyny "gościły" większą rozmiarowo wersję (ok. 6 MB), zdolną do przenoszenia i wdrażania dodatkowych modułów. Mniejsza wersja posiada rozmiar około 900 KB i nie zawiera żadnych dodatkowych modułów. Po zainstalowaniu, główny moduł łączy się z jednym z serwerów kontroli i stamtąd próbuje pobrać, a następnie zainstalować wszystkie pozostałe składniki szkodnika. Plik Mssecmgr może nazywać się różnie na poszczególnych zainfekowanych maszynach, w zależności od metody infekcji i bieżącego wewnętrznego stanu złośliwego oprogramowania (instalacja, replikacja, aktualizacja), np. wavesup3.drv, ~zff042.ocx, msdclr64.ocx itp. Kompletna analiza modułu mssecmgr zostanie opublikowana w kolejnych artykułach. Pierwsze uruchomienie tego pliku jest inicjowane przez jedną z zewnętrznych funkcji - albo narzędzia WMI systemu Windows używającego pliku MOF (jeżeli wykorzystywany jest exploit MS10-061) lub przy użyciu pliku BAT: s1 = new ActiveXObject("Wscript.Shell");
s1.Run("%SYSTEMROOT%\\system32\\rundll32.exe msdclr64.ocx,DDEnumCallback");

(kod źródłowy pliku MOF, svchostevt.mof) Po aktywacji, mssecmgr rejestruje się w rejestrze systemu Windows jako niestandardowy pakiet uwierzytelniania: HKLM_SYSTEM\CurrentControlSet\Control\Lsa
Authentication Packages
= mssecmgr.ocx [ciąg znaków dodawany do istniejących wpisów] Przy następnym uruchomieniu maszyny ten moduł jest ładowany automatycznie przez system operacyjny. Po uaktualnieniu rejestru systemu Windows, mssecmgr wyodrębnia i instaluje wszelkie dodatkowe moduły, które są obecne w zaszyfrowanej i skompresowanej sekcji zasobów (zasób “146”). Zasób jest katalogiem, który zawiera opcje konfiguracyjne dla pliku mssecmgr i innych modułów, moduły (pliki DLL) i parametry (np. klucze szyfrujące), które muszą zostać przekazane do modułów, aby te zostały załadowane poprawnie. Wciąż analizujemy dodatkowe moduły i w najbliższych artykułach dostarczymy więcej informacji na temat ich funkcjonalności. Po zakończeniu instalacji mssecmgr ładuje dostępne moduły i rozpoczyna kilka wątków, które implementują kanał połączenia z serwerami kontroli i hostem interpretera LUA. W zależności od konfiguracji uruchamianie są również inne funkcje. Funkcjonalność modułu jest podzielona na różne “jednostki”, które mają różne przestrzenie nazw w zasobie konfiguracyjnym oraz różne nazwy w wiadomościach dziennika, często wykorzystywane w całym ciele kodu.

Oto krótki przegląd dostępnych jednostek. Nazwy zostały wydobyte z pliku binarnego i zasobu 146.

Beetlejuice Bluetooth: wylicza urządzenia wokół zainfekowanego komputera.
Może przemienić się w “przynętę”: anonsować komputer jako wykrywalne urządzenie i zakodować stan złośliwego oprogramowania w informacji o urządzeniu za pomocą base64.
Microbe Nagrywa strumienie audio z istniejących źródeł sprzętowych. Buduje listę wszystkich urządzeń multimedialnych, gromadzi informacje o konfiguracjach urządzeń, stara się wybrać odpowiednie urządzenie rejestrujące.
Infectmedia Wybiera jedną z metod infekowania nośników wymiennych, np. nośników USB. Dostępne metody: Autorun_infector, Euphoria.
Autorun_infector Tworzy plik “autorun.inf”, który zawiera szkodliwe oprogramowanie uruchamiane niestandardowym poleceniem “otwarcia”. Ta sama metoda była używana w Stuxnecie zanim zastosowano w nim exploit LNK.
Euphoria Tworzy “skrzyżowany” katalog z plikami “desktop.ini” i “target.lnk” z wpisów LINK1 i LINK2 zasobu 146 (katalog nie jest obecny w pliku zasobów). Katalog pełni rolę skrótu uruchamiającego Flame'a.
Limbo Tworzy konta z loginem “HelpAssistant” na maszynach w obrębie domeny sieciowej, jeżeli dostępne są odpowiednie uprawnienia.
Frog Infekuje maszyny używając wcześniej utworzonych kont użytkownika. Jedynym kontem użytkownika określonym w zasobie konfiguracyjnym jest “HelpAssistant” - konto, które jest tworzone podczas ataku “Limbo”.
Munch Serwer HTTP, który odpowiada na zgłoszenia “/view.php” i “/wpad.dat”.
Snack Nasłuchuje na interfejsach sieciowych, odbiera i zapisuje w pliku dziennika pakiety NBNS. Posiada opcję uruchomienia kiedy uruchomiona zostanie jednostka “Munch”. Zebrane dane są następnie używane do replikacji przez sieć.
Boot_dll_loader Sekcja konfiguracyjna zawierająca listę wszystkich dodatkowych modułów, które powinny zostać załadowane i uruchomione.
Weasel Tworzy listę katalogów na zainfekowanym komputerze.
Boost Tworzy listę “interesujących” plików przy użyciu kilku masek nazw plików.
Telemetry Funkcje rejestrujące
Gator Kiedy połączenie z internetem stanie się dostępne, łączy się z serwerami kontroli, pobiera nowe moduły i przesyła zebrane dane.
Security Identyfikuje programy, które mogą stanowić zagrożenie dla Flame'a, np. aplikacje antywirusowe i zapory sieciowe.
Bunny
Dbquery
Driller
Headache
Gadget
Przeznaczenie tych modułów nie jest jeszcze znane.
Dodatkowe moduły są instalowane w katalogu %windir%\system32\: mssecmgr.ocx
advnetcfg.ocx
msglu32.ocx
nteps32.ocx
soapr32.ocx
ccalc32.sys
boot32drv.sys
Dodatkowe moduły, pobierane z serwerów kontroli, są instalowane w tym samym katalogu. Moduły szkodnika Flame produkują całą masę plików danych, które zawierają obszerne dzienniki i raporty oraz zgromadzone informacje - zrzuty ekranu, listy procesów, listy konfiguracji sprzętowych itp. Pliki są zapisywane w katalogu %windir%\temp z użyciem poniższych nazw: ~DEB93D.tmp
~8C5FF6C.tmp
~DF05AC8.tmp
~DFD85D3.tmp
~DFL*.tmp
~dra*.tmp
~fghz.tmp
~HLV*.tmp
~KWI988.tmp
~KWI989.tmp
~rei524.tmp
~rei525.tmp
~rf288.tmp
~rft374.tmp
~TFL848.tmp
~TFL849.tmp
~mso2a0.tmp
~mso2a1.tmp
~mso2a2.tmp
sstab*.dat
Istnieją również opcjonalne pliki, które można znaleźć w katalogu %windir%\system32: Advpck.dat
ntaps.dat
Rpcnc.dat
A także w katalogu %windir%\: Ef_trace.log Flame przechowuje trwałe dane w plikach używając różnych formatów. Wszystkie dane są szyfrowane za pomocą kilku algorytmów i kluczy. Niektóre pliki to bazy danych utworzone za pomocą wbudowanej biblioteki SQLite3. Bazy te zawierają zarówno informacje zgromadzone podczas kradzieży danych, jak i dostarczone przez procedury replikacyjne. Będziemy dostarczać więcej informacji o tych plikach w późniejszych publikacjach. Nazwy katalogu używanego przez różne dodatkowe komponenty Flame'a mogą różnić się nieznacznie, w zależności od typu instalacji i opcji konfiguracyjnych z zasobu 146: C:\Program Files\Common Files\Microsoft Shared\MSSecurityMgr
C:\Program Files\Common Files\Microsoft Shared\MSAudio
C:\Program Files\Common Files\Microsoft Shared\MSAuthCtrl
C:\Program Files\Common Files\Microsoft Shared\MSAPackages
C:\Program Files\Common Files\Microsoft Shared\MSSndMix
Katalogi te mogą zawierać następujące pliki: dstrlog.dat
lmcache.dat
mscrypt.dat (lub wpgfilter.dat)
ntcache.dat
rccache.dat (lub audfilter.dat)
ssitable (lub audache)
secindex.dat
wavesup3.drv (kopia głównego modułu, mssecmgr.ocx, w katalogu MSAudio)
Flame może także tworzyć lub pobierać pliki z następującymi nazwami: svchost1ex.mof
Svchostevt.mof
frog.bat
netcfgi.ocx
authpack.ocx
~a29.tmp
rdcvlt32.exe
to961.tmp
authcfg.dat
Wpab32.bat
ctrllist.dat
winrt32.ocx
winrt32.dll
scsec32.exe
grb9m2.bat
winconf32.ocx
watchxb.sys
sdclt32.exe
scaud32.exe
pcldrvx.ocx
mssvc32.ocx
mssui.drv
modevga.com
indsvc32.ocx
comspol32.ocx
comspol32.dll
browse32.ocx
Na koniec przedstawiamy metodę “ręcznego” sprawdzenia systemu operacyjnego pod kątem infekcji Flamem:
  1. Przeprowadź wyszukiwanie pliku ~DEB93D.tmp. Jego obecność w systemie oznacza, że system jest lub był zainfekowany przez Flame'a.
  2. Sprawdź klucz rejestru HKLM_SYSTEM\CurrentControlSet\Control\Lsa\Authentication Packages.
    Jeżeli znajdziesz tam obiekt mssecmgr.ocx lub authpack.ocx - system jest zainfekowany przez Flame'a.
  3. Sprawdź obecność poniższych katalogów. Jeżeli je znajdziesz - system jest zainfekowany przez Flame'a.

    • C:\Program Files\Common Files\Microsoft Shared\MSSecurityMgr
    • C:\Program Files\Common Files\Microsoft Shared\MSAudio
    • C:\Program Files\Common Files\Microsoft Shared\MSAuthCtrl
    • C:\Program Files\Common Files\Microsoft Shared\MSAPackages
    • C:\Program Files\Common Files\Microsoft Shared\MSSndMix
  4. Przeprowadź poszukiwania pozostałych nazw podanych powyżej. Wszystkie z nich są dość unikatowe i ich obecność jest równoznaczna z dużym prawdopodobieństwem infekcji Flamem.

PS Sprawdziliśmy informacje, które pojawiły się w jednym z komentarzy do naszego poprzedniego artykułu, sugerujące możliwy związek analizowanego szkodliwego programu Flame z brazylijskim oprogramowaniem FLAME (Flexible Lightweight Active Measurement Environment).

Interesujący jest fakt, że oprócz identycznej nazwy, FLAME posiada również kod LUA. Oprogramowanie FLAME służy do pomiaru charakterystyk sieciowych poprzez wdrażanie agentów pomiarów i zbieranie informacji w centralnej bazie danych. Mimo pewnych podobieństw, uważamy, że oprogramowanie to nie ma związku z badanym szkodnikiem i służy do zupełnie innych celów. Oprócz silnika LUA, rdzeniem komunikacji we FLAME jest protokół XMPP, który nie jest wykorzystywany w szkodliwym oprogramowaniu Flame.

Być może twórcy szkodnika byli zainspirowani projektem FLAME i wykorzystali podobną architekturę do zupełnie innego celu lub to wszystko jest tylko zbiegiem okoliczności. Nie mamy żadnych podstaw aby sądzić, że oprogramowanie FLAME jest w jakikolwiek sposób związane ze szkodnikiem Flame.