(akt.) Flame: jak działa nowo odkryte narzędzie cyberwojny

30-05-2012, 08:38
Aktualizacja: 30-05-2012, 14:20

Obszernie pisaliśmy wczoraj o świeżo odkrytym zagrożeniu Flame, które - według ekspertów - należy do tej samej kategorii cyberbroni, co Stuxnet i Duqu. Wśród czytelników Dziennika Internautów nie brakuje osób zainteresowanych technicznymi aspektami działania tego szkodnika. Z myślą o nich publikujemy kolejny materiał, tym razem przygotowany w formie pytań i odpowiedzi, których udzielił Aleksander Gostiew z firmy Kaspersky Lab. W aktualizacji podajemy, jak samodzielnie sprawdzić, czy nasz system nie został zaatakowany.

Jak zaawansowany jest Flame?

Przede wszystkim Flame jest ogromnym pakietem modułów, obejmującym po pełnej instalacji prawie 20 MB danych. Ze względu na rozmiar szkodnik jest niezmiernie trudny do analizy. Powodem sporego rozmiaru Flame'a jest to, że zawiera on wiele różnych bibliotek, służących np. do kompresji (zlib, libbz2, ppmd) i manipulacji bazą danych (sqlite3), wraz z maszyną wirtualną LUA.

LUA jest językiem skryptowym, który może zostać bardzo łatwo rozszerzony i podłączony do kodu C. Wiele części Flame'a posiada składnię logiczną wysokiego poziomu napisaną w LUA - wraz ze skutecznymi procedurami ataku i bibliotekami opracowanymi na bazie C++.

Fragment kodu źródłowego Flame'a
fot. - Fragment kodu źródłowego Flame'a
Efektywny kod LUA stanowi raczej małą część w porównaniu z całością kodu. W naszej ocenie rozwój kodu LUA (ponad 3000 linii), czyli stworzenie kodu i debugowanie, średnio zaawansowanemu deweloperowi zająłby około miesiąca.

Dodatkowo istnieje kilka wewnętrznie używanych, lokalnych baz danych z zagnieżdżonymi zapytaniami SQL, wiele metod szyfrowania, różne algorytmy kompresji, oskryptowana instrumentacja zarządzania Windows (WMI) itp.

Uruchamianie i debugowanie tego złośliwego oprogramowania również nie jest proste, ponieważ nie jest to konwencjonalna aplikacja wykonywalna, ale kilka plików DLL, które są ładowane przy uruchomieniu systemu.

Ogólnie możemy powiedzieć, że Flame jest jednym z najbardziej złożonych cyberzagrożeń, jakie kiedykolwiek zostały wykryte.

Czym Flame różni się od innych trojanów i dlaczego jest bardziej wyrafinowany niż jakikolwiek inny backdoor? Czy robi jakieś rzeczy, które są zupełnie nowe?

Przede wszystkim nietypowe jest użycie języka LUA w szkodliwym oprogramowaniu. To samo tyczy się dużego rozmiaru tego zestawu do ataku. Ogólnie rzecz ujmując, nowoczesne szkodliwe oprogramowanie ma niewielkie rozmiary i pisane jest w kompaktowych językach programowania, które sprawiają, że taki program można łatwo ukryć. Praktyka ukrycia szkodliwych funkcji przez zastosowanie dużej ilości kodu jest jedną z osobliwości Flame'a.

Dość nietypową funkcją jest zapisywanie danych audio z wewnętrznego mikrofonu komputera. Oczywiście istnieje inne złośliwe oprogramowanie, które jest w stanie nagrywać dźwięk, ale kluczową cechą Flame’a jest jego kompletność - zdolność do kradzieży danych na wiele różnych sposobów.

Kolejną ciekawą cechą Flame'a jest możliwość korzystania z urządzeń Bluetooth. Kiedy protokół Bluetooth jest dostępny i odpowiednia opcja zostanie uaktywniona w bloku konfiguracyjnym, Flame zaczyna gromadzić informacje na temat urządzeń wykrywanych w pobliżu zainfekowanej maszyny. W zależności od konfiguracji może również zamienić zainfekowany komputer w przynętę, czyniąc go dostępnym przez Bluetooth i dostarczyć ogólne informacje na temat stanu szkodliwego oprogramowania, zakodowane w informacji o urządzeniu.

Czy Flame został stworzony przez grupę odpowiedzialną za Duqu / Stuxneta? Czy istnieje podobieństwo kodu źródłowego lub inne cechy wspólne?

Jeżeli chodzi o rozmiar, Flame jest około 20 razy większy niż Stuxnet. Flame nie posiada żadnych większych podobieństw do Stuxneta / Duqu.

Dla przykładu, kiedy Duqu został wykryty, dla każdego kompetentnego badacza było jasne, że stoją za nim ci sami ludzie, którzy stworzyli Stuxneta na platformie określanej mianem „Tilded”.

Flame wydaje się być projektem uruchomionym równolegle ze Stuxnetem / Duqu, ale nie używającym platformy „Tilded”. Istnieje jednak kilka przesłanek, które wskazują, że twórcy Flame'a mieli dostęp do technologii wykorzystanych w projekcie Stuxnet - takich jak użycie metody infekcji „Autorun.inf”, wraz z jednoczesną eksploatacją luki bufora wydruku - co mogłoby wskazywać, że autorzy Flame'a mieli dostęp do tych samych exploitów, co twórcy Stuxneta.

Z drugiej strony, nie możemy wykluczyć, że obecne warianty Flame'a zostały rozwinięte po wykryciu Stuxneta. Możliwe jest, że twórcy Flame'a użyli publicznych informacji na temat metod dystrybucji Stuxneta i zaimplementowali je w robaku Flame.

Podsumowując, najprawdopodobniej szkodliwe oprogramowanie Flame i Stuxnet / Duqu zostało stworzone przez dwie odrębne grupy. Optujemy za tym, że Flame był projektem rozwijanym równolegle ze Stuxnetem i Duqu.

W jaki sposób Flame infekuje komputery i nośniki USB? Czy eksploatuje inne luki niż luka bufora wydruku, aby zapobiec wykryciu? Czy były jakiekolwiek ataki 0-day?

Sposoby infekcji wykorzystywane przez Flame'a
fot. - Sposoby infekcji wykorzystywane przez Flame'a
Flame posiada dwa moduły przeznaczone do infekowania modułów USB nazwane „Autorun Infector” i „Euphoria”. Nie prześledziliśmy jeszcze ich działania, być może dlatego, że są wyłączone w danych konfiguracyjnych. Niemniej jednak w kodzie Flame'a istnieje możliwość infekowania nośników USB. Infekcja realizowana jest z użyciem dwóch metod:

  1. Infekcja autostartu: metoda „Autorun.inf” z wczesnych wersji Stuxneta, wykorzystująca podmianę „shell32.dll”. Kluczowym motywem tutaj jest to, że metoda ta była wcześniej wykorzystana w Stuxnecie i nie stwierdzono jej obecności w żadnym innym złośliwym oprogramowaniu.
  2. Euphoria: rozprzestrzenia się na nośnikach, używając katalogu „skrzyżowanego”, który zawiera moduły szkodnika i plik LNK, który uruchamia infekcję, kiedy tylko katalog zostanie otwarty. Nasze próbki zawierały nazwy plików, ale nie zawierały samego pliku LNK.

W dodatku do powyższych funkcji Flame posiada zdolność replikacji poprzez sieć lokalną. W tym celu wykorzystuje:

  1. Lukę bufora wydruku MS10-061 eksploatowaną przez Stuxneta - przy użyciu specjalnego pliku MOF, wykonywanego na atakowanym systemie przy pomocy WMI.
  2. Zdalne zadania.
  3. Kiedy zostanie uruchomiony przez użytkownika posiadającego prawa administracyjne kontrolera domeny, Flame jest w stanie atakować inne maszyny w sieci: szkodnik tworzy konta użytkownika ze wstępnie zdefiniowanym hasłem, których następnie używa do pozyskania możliwości skopiowania swoich modułów na atakowane komputery.

Na dzień dzisiejszy nie zaobserwowaliśmy żadnych oznak 0-day. Jednak robak jest znany z zainfekowania przez sieć w pełni zaktualizowanych systemów operacyjnych Windows 7, co może wskazywać na obecność 0-day.

Czy szkodnik jest zdolny do samopowielania, jak Stuxnet? Czy może rozprzestrzenia się w bardziej kontrolowany sposób, jak Duqu?

Część replikacyjna jest kontrolowana przez operatora, tak jak to miało miejsce w przypadku Duqu. Replikacja jest również nadzorowana z poziomu pliku konfiguracyjnego bota. Większość procedur infekcji posiada liczniki wykonanych ataków, które ograniczają liczbę ataków możliwych do wykonania.

Czy Flame posiada wbudowany licznik samounicestwienia („Time-of-Death”), taki jaki posiadał Duqu czy Stuxnet?

Flame posiada wiele wbudowanych liczników. Monitorują one pomyślne połączenia z centrami kontroli, częstotliwość poszczególnych operacji kradzieży danych, liczbę udanych ataków itd. Chociaż w oprogramowaniu nie ma licznika samounicestwienia, operatorzy mają możliwość przesłania specjalnego modułu usuwającego Flame'a (zwanego „browse32”), który kompletnie odinstaluje szkodnika z systemu, usuwając nawet najdrobniejsze ślady jego obecności.

Czytaj także: Flame: narzędzie cyberwojny infiltrujące Bliski Wschód

Aktualizacja

W Encyklopedii Wirusów VirusList.pl prowadzonej przez Kaspersky Lab pojawiła się druga część analizy zagrożenia - ma ona charakter techniczny, dlatego wszystkich zainteresowanych odsyłamy bezpośrednio do artykułu ekspertów pt. „Sagi o robaku Flame ciąg dalszy: Króliczek, Żaba, Mikrob i Sok z Żuka...”. Tutaj natomiast zamieszczamy instrukcję, jak samodzielnie zbadać system pod kątem infekcji:

  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:
    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 FilesCommon FilesMicrosoft SharedMSAPackages
    C:\Program Files\Common Files\Microsoft SharedMSSndMix

    Jeżeli je znajdziesz - system jest zainfekowany przez Flame'a.

  4. Przeprowadź wyszukiwanie pozostałych nazw podanych w artykule, do którego linkujemy powyżej. Wszystkie są dość unikatowe i ich obecność jest równoznaczna z dużym prawdopodobieństwem infekcji.

Źródło: Kaspersky Lab
  
znajdź w serwisie

RSS - Wywiad
Wywiad  
RSS - Interwencje
RSS - Porady
Porady  
RSS - Listy
Listy