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

Od Linuksa do Windowsa – wykryto nową rodzinę wieloplatformowych backdoorów dla desktopów

Stefan Ortloff
Kaspersky Lab Expert
Dodany 3 lutego 2016, 11:21 CET

Wprowadzenie

Niedawno trafiliśmy na nową rodzinę backdoorów wieloplatformowych dla środowisk desktopów. Najpierw zdobyliśmy wariant dla Linuksa. Przy użyciu informacji wydobytych z jego pliku binarnego zdołaliśmy również znaleźć wariant dla desktopów z Windowsem. Obie wersje były dodatkowo wyposażone w ważną sygnaturę podpisywania kodu. Przyjrzyjmy się im.

DropboxCache znany również jako Backdoor.Linux.Mokes.a

Ten backdoor dla systemów operacyjnych opartych na Linuksie został spakowany za pośrednictwem UPX i zawiera funkcje służące do monitorowania działań ofiary, łącznie z kodem zapewniającym przechwytywanie dźwięku i wykonywanie zrzutów ekranu. 

1.png

Po pierwszym wykonaniu plik binarny sprawdza własną ścieżkę pliku i, w razie konieczności, kopiuje się do jednej z poniższych lokalizacji: 

  • $HOME/$QT-GenericDataLocation/.mozilla/firefox/profiled
  • $HOME/$QT-GenericDataLocation/.dropbox/DropboxCache

Przykładem jest lokalizacja: $HOME/.local/share/.dropbox/DropboxCache. W celu osiągnięcia przetrwania wykorzystuje mało ukradkową metodę: tworzy po prostu .desktop-file w $HOME/.config/autostart/$filename.desktop. Poniżej zamieszczamy szablon:

2_auto.png

Następnie, łączy się z zakodowanym na sztywno serwerem kontroli (C&C). Od tego momentu co minutę wykonuje żądanie http:

3.png

To regularnie wysyłane żądanie odpowiada obrazem o rozmiarze jednego bajta. W celu wrzucenia i otrzymania danych oraz poleceń łączy się z portem TCP 433 za pośrednictwem niestandardowego protokołu oraz szyfrowania AES. Plik binarny zawiera następujące zakodowane na sztywno klucze publiczne:   

4.png

Następnie szkodnik gromadzi zebrane informacje z keyloggera, jak również przechwycony dźwięk i zrzuty ekranu w /tmp/. Później wrzuci zgromadzone dane na serwer C&C.  

  • /tmp/ss0-DDMMyy-HHmmss-nnn.sst (zrzuty ekranu, JPEG, co 30 sekund)
  • /tmp/aa0-DDMMyy-HHmmss-nnn.aat (przechwycony dźwięk, WAV)
  • /tmp/kk0-DDMMyy-HHmmss-nnn.kkt (Keylogs)
  • /tmp/dd0-DDMMyy-HHmmss-nnn.ddt (losowe dane)

DDMMyy = data: 280116 = 2016-01-28
HHmmss = czas: 154411 = 15:44:11
nnn = milisekundy.

5_auto.png

Ta część kodu potrafi przechwytywać dźwięk.

Jednak przechwytywanie dźwięku nie jest aktywowane w czasomierzu zdarzeniowym tego pliku binarnego, tak jak funkcja przechwytywania uderzeń na klawiaturze. Ponieważ autorzy połączyli statycznie libqt, xkbcommon (biblioteka obsługująca opisy klawiatury) oraz OpenSSL (1.0.2c) z plikim binarnym, rozmiar tego pliku wynosi ponad 13MB. Przestępcy nie zadali sobie również trudu, aby w jakikolwiek sposób zaciemnić plik binarny. W rzeczywistości plik binarny zawiera niemal wszystkie symbole, co jest bardzo przydatne podczas analizy.   

6.png

Istnieją również odniesienia do plików źródłowych autora:

7.png

Najwyraźniej, został on napisany w języku C++ oraz Qt, w wieloplatformowej strukturze aplikacji. Z metadanych pliku binarnego wynika, że został on skompilowany przy użyciu “GCC 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)” na Ubuntu 14.04 LTS “Trusty Tahr”. Według znacznika czasowego qt_instdate, źródła Qt zostały ostatnim razem skonfigurowane 26 września 2015 r. (qt/qtbase.git: deprecated), co sugeruje, że kompilacja szkodliwego oprogramowania nastąpiła nie wcześniej niż pod koniec września 2015 r.

Ten rodzaj szkodliwego oprogramowania wykrywamy jako Backdoor.Linux.Mokes.a.  

OLMyJuxM.exe znany również jako Backdoor.Win32.Mokes.imv

Zaledwie kilka dni temu natknęliśmy się na dość znajomo wyglądającą próbkę, mimo że została ona skompilowana dla maszyn działających pod kontrolą Microsoft Windows. Wkrótce okazało się, że jest to 32-bitowy wariant Backdoor.Linux.Mokes.a dla Windowsa.

Po wykonaniu szkodnik wybiera losowo jedną z dziewięciu różnych lokalizacji w %AppData%, aby na stałe zainstalować się na maszynie. Plik binarny tworzy również plik o nazwie „wersja” w tym samym folderze. Zgodnie z nazwą, przechowuje on jedynie informacje dotyczące wersji wraz z pełną ścieżką instalacyjną samego szkodliwego oprogramowania:

8.png

Następnie tworzone są odpowiednie klucze rejestru w HKCU\Software\Microsoft\Windows\CurrentVersion\Run w celu zapewnienia przetrwania w systemie. Po tym, jak szkodliwe oprogramowanie wykona własną kopię w nowej lokalizacji, SetWindowsHook API zostanie wykorzystywany w celu utworzenia funkcjonalności keyloggera oraz monitorowania danych wejściowych z myszy jak również wewnętrznych wiadomości umieszczonych w kolejce wiadomości.

Kolejnym etapem jego działania jest kontaktowanie się z zakodowanym na sztywno serwerem kontroli. Oprócz różnych adresów IP i klucza szyfrowania zachowanie jest niemal identyczne.

9.png

Jednak ten konkretny wariant wykorzystuje nieco inną implementację i próbuje uzyskać domyślny ciąg agenta użytkownika Windowsa.

10.png

Jeśli to nie powiedzie się, próbka wykorzystuje swoją wersję zakodowaną na sztywno:

11_auto.png

Łączy się ze swoim serwerem kontroli (C&C) w ten sam sposób co wariant dla Linuksa: raz na minutę wysyła regularny sygnał za pośrednictwem HTTP (GET /v1). W celu pobrania poleceń albo wrzucenia lub pobrania dodatkowych zasobów wykorzystuje port TCP 433.

Szkodnik wykorzystuje niemal te same szablony nazw plików w celu zapisania uzyskanych zrzutów ekranu, przechwyconego dźwięku, uderzeń klawiszy oraz innych losowych danych. W przeciwieństwie do warianta dla Linuksa, keylogger jest aktywny w tej próbce. Poniżej prezentujemy zawartość pliku dziennika uderzeń klawiszy, zlokalizowanego w %TEMP% i utworzonego przez tę próbkę:

12.png

Po raz kolejny zauważyliśmy nieoczekiwany kod. Poniższy zrzut ekranu ukazuje odniesienia do kodu, który potrafi przechwytywać obrazy z podłączonej kamery, takiej jak wbudowana kamera internetowa.

13_auto.png

Podobnie jak w wersji dla Linuksa, autor pozostawił w pliku binarnym dość sporo podejrzanych ciągów. Poniższy ciąg jest rozbrajająco szczery.   

14.png

Z punktu widzenia przestępcy ważne jest, aby oprogramowanie wyglądało na legalne i żeby Windows nie prosił użytkownika o potwierdzenie przed wykonaniem nieznanego oprogramowania. Na maszynach z systemem Windows można to uzyskać, wykorzystując zaufane certyfikaty podpisywania kodu. W tym konkretnym przypadku, przestępca zdołał podpisać plik binarny przy użyciu zaufanego certyfikatu organu certyfikacji COMODO RSA

15.png

Ten rodzaj szkodliwego oprogramowania wykrywamy jako Backdoor.Win32.Mokes.imv.

Co dalej

Ponieważ oprogramowanie to zostało tak zaprojektowane, aby było niezależne od platformy, w przyszłości mogą pojawić się również odpowiednie próbki dla systemu Mac OS X.

Aktualizacja

 (2016-02-01 10:45 UTC): Właśnie otrzymaliśmy szkodnika Backdoor.Win32.Mokes.imw. Po raz pierwszy widzimy wariant Mokes, który zawiera aktywowany moduł przechwytywania dźwięku. Szkodnik ten tworzy nowy plik audio co pięć minut.  

16.png

IOC

Backdoor.Linux.Mokes.a

c9e0e5e2aeaecb232120e8573e97a6b8

$HOME/$QT-GenericDataLocation/.mozilla/firefox/profiled
$HOME/$QT-GenericDataLocation/.dropbox/DropboxCache
$HOME/.config/autostart/profiled.desktop
$HOME/.config/autostart/DropboxCache.desktop

/tmp/ss0-$date-$time-$ms.sst

Backdoor.Win32.Mokes.imv i .imw

f2407fd12ec0d4f3e82484c027c7d149 (imw)
91099aa413722d22aa50f85794ee386e (imv)

%AppData%\Skype\SkypeHelper.exe
%AppData%\Skype\version
%AppData%\Dropbox\bin\DropboxHelper.exe
%AppData%\Dropbox\bin\version
%AppData%\Google\Chrome\nacl32.exe
%AppData%\Google\Chrome\version
%AppData%\Google\Chrome\nacl64.exe
%AppData%\Google\Chrome\version
%AppData%\Mozilla\Firefox\mozillacache.exe
%AppData%\Mozilla\Firefox\version
%AppData%\Hewlett-Packard\hpqcore.exe
%AppData%\Hewlett-Packard\version
%AppData%\Hewlett-Packard\hpprint.exe
%AppData%\Hewlett-Packard\version
%AppData%\Hewlett-Packard\hpscan.exe
%AppData%\Hewlett-Packard\version
%AppData%\Adobe\Acrobat\AcroBroker.exe
%AppData%\Adobe\Acrobat\version

%TEMP%\aa$n-$date-$time-$ms.aat (imw)
gdzie $n to dziesiętna wartość skrótu obliczana na podstawie nazwy karty dźwiękowej  

%TEMP%\ss0-$date-$time-$ms.sst
%TEMP%\dd0-$date-$time-$ms.ddt
%TEMP%\kk$date.kkt

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run “%PERSISTENT-FILENAME%”, “%PERSISTENT-FILEPATH%”

gdzie %PERSISTENT-FILENAME% jest jedną z powyższych nazw plików
a %PERSISTENT-FILEPATH% jest odpowiadającą jej ścieżką