Im więcej ludzi przechodzi na 64-bitowe platformy, tym więcej pojawia się 64-bitowego szkodliwego oprogramowania 64-bit. Obserwujemy ten proces już od kilku lat. Czasami są to bardzo specyficzne aplikacje, np. aplikacje bankowe... Jeżeli ktoś chce włamać się do takiej aplikacji i ukraść informacje, najlepszym narzędziem byłby 64-bitowy szkodliwy agent. A jaki jest najbardziej osławiony szkodnik bankowy? Naturalnie ZeuS, który ustanawia trendy dla większości współczesnego szkodliwego oprogramowania bankowego. Jego wstrzyknięcia sieciowe stały się podstawową funkcją niemal każdej rodziny szkodliwego oprogramowania bankowego. Pojawienie się 64-bitowej wersji ZeuSa było jedynie kwestią czasu – nie spodziewaliśmy się jednak, że nastąpi to tak szybko.
Nie spodziewaliśmy się dlatego, że cyberprzestępcy tak naprawdę nie potrzebują 64-bitowej wersji. Głównym celem ZeuSa jest przechwytywanie danych przechodzących przez przeglądarki i modyfikowanie ich w taki sposób, aby operator mógł ukraść informacje związane z bankowością online, przesyłać transakcje lub zacierać swoje ślady. Dzisiaj ludzie nadal wykorzystują 32-bitowe przeglądarki – nawet na 64-bitowych systemach operacyjnych. A zatem 32-bitowe wersje ZeuSa wystarczyły, aby złodzieje byli zadowoleni ze swoich zysków.
Wtedy, zupełnie niespodziewanie, odkryliśmy nową 32-bitową próbkę ZeuSa, która wewnątrz posiada wersję 64-bitową. Co więcej, wersja ta działa za pośrednictwem anonimowej sieci Tor. Pierwotna próbka wstrzykuje szkodliwy kod do odpowiednich procesów. Jeżeli taki proces należy do 64-bitowej aplikacji, ZeuS wstrzykuje do niego swoją 64-bitową wersję; w przeciwnym wypadku – wersję 32-bitową. Test, który przeprowadziliśmy, aby przekonać się, jak 64-bitowa wersja ZeuSa działa wewnątrz 64-bitowej wersji przeglądarki Internet Explorer, potwierdził zwykłą funkcjonalność ZeuSa: w każdym razie wstrzykiwanie szkodliwego kodu działało jak zwykle.
Istnieje jeden bank, którego adres strony bankowości online znalazł się w regułach wstrzykiwania sieciowego dla tej wersji ZeuSa. Jedna z reguł wstrzykiwania sieciowego wygląda następująco:
data_before
<input id="e_finance_login" class="button" type="submit"
data_end
data_inject
onclick="return gotoo();"
data_end
co oznacza, że gdy ofiara odwiedzi stronę bankowości online tego banku i jej kod HTML zawiera ciąg po znaczniku “data_before”, ZeuS wstrzykuje dodatkowy tekst po znaczniku “data_inject” zaraz po początkowym ciągu celu. Odwiedzając tę stronę podczas aktywnej infekcji ZeuSa w 64-bitowej przeglądarce Internet Explorer zaobserwowaliśmy następującą szkodliwą wstawkę w kodzie HTML w przeglądarce:
Kod wstrzyknięty w stronę bankowości online w 64-bitowej przeglądarce IE
Szkodliwa funkcja gotoo() została określona w innej regule wstrzykiwania sieciowego dla tej strony i jest dodawana do kodu HTML strony bankowej wraz z innym szkodliwym kodem. Funkcja ta jest wykorzystywana do gromadzenia cennych informacji z tej strony (login, hasło, ciasteczka i inne specjalne wartości wyszczególnione na stronie) i wysyłania ich do domeny kontrolowanej przez operatora ZeuSa.
A zatem, 64-bitowa wersja ZeuSa działa. Czy jednak z przeglądarek 64-bit zaczęło korzystać tak wielu użytkowników, aby uzasadnić wysiłek włożony w stworzenie 64-bitowej wersji ZeuSa? Nie. Odsetek użytkowników korzystających z 64-bitowych przeglądarek nadal jest nieznaczny. Według naszych danych statystycznych, udział użytkowników surfujących po internecie przy użyciu 64-bitowej wersji przeglądarki IE stanowi mniej niż 0,01%. A więc dlaczego niektórzy twórcy wirusów skompilowali działającą 64-bitową wersję ZeuSa? Z naszej strony nie wygląda to na coś bardzo skomplikowanego – dostępny jest kod źródłowy, trzeba tylko wprowadzić kilka poprawek, aby mógł działać w 64-bitowych procesach i skompilować go jako aplikację 64-bitową. A może jest inaczej i potrzeba znacznie więcej pracy, aby stworzyć działającą wersję 64-bitowego ZeuSa. Zauważyliśmy błąd w aktualnej wersji: gdy ZeuS wstrzykuje 64-bitowy odpowiednik do 64-bitowego procesu aplikacji EMET Notifier, powoduje nagłe przerwanie tego procesu. Wynika to z błędu w obliczeniach niektórych adresów funkcji API – próbka ZeuSa wewnątrz procesu EMET Notifier próbuje wywołać funkcję WSAStartup, ale zmienna, która powinna zawierać adres tej funkcji, nie wskazuje na nią. Zamiast tego wskazuje na nieprzydzieloną pamięć, która powoduje, że cały proces EMET Notifier generuje wyjątek “Access violation” i kończy proces.
EMET Notifier niespodziewanie przerywa działanie z powodu błędnego kodu w ZeuSie x64
Skoro stworzenie dość stabilnej 64-bitowej wersji ZeuSa nie jest w rzeczywistości takie proste, a ogromna większość użytkowników nadal wykorzystuje 32-bitowe przeglądarki, nasuwa się następujące pytanie: po co zadawać sobie trud? Być może jest to tylko trik marketingowy – nowa funkcja, nawet jeśli jest w większości bezużyteczna, która ma trochę wywołać efekt “wow”! Obsługa 64-bitowych przeglądarek – doskonały sposób na zareklamowanie produktu i przyciągnięcie klientów.
Co ciekawe, plik konfiguracyjny dla tej wersji ZeuSa zawiera długą listę programów, na których może działać to szkodliwe oprogramowanie, jeżeli zostaną znalezione w zainfekowanym systemie. Są to aplikacje różnego rodzaju, jednak wszystkie z nich zawierają cenne prywatne informacje, które cyberprzestępcy chcieliby ukraść – dane uwierzytelniające logowanie, certyfikaty itd. Nie wolno zapominać, że ZeuS potrafi przechwytywać uderzenia klawiszy i dane przed szyfrowaniem/po zaszyfrowaniu, które są wysyłane/otrzymywane w sieci przy użyciu niektórych typowych systemowych funkcji API. A więc, działając wewnątrz tych programów ZeuS potrafi przechwytywać i przesyłać wiele cennych informacji do operatora botnetu. Poniżej znajduje się cała lista wyszczególnionych programów:
bitcoin-qt.exe tiny.exe ibank2.exe putty.exe winscp.exe filezilla.exe openvpn-gui.exe openvpn.exe mstsc.exe java.exe javaw.exe Zvit1DF.exe iFOBSClient.exe KLBS.exe vegaClient.exe Pionner.exe cb193w.exe BK_KW32.exe KlientBnk.exe ibconsole.exe CliBank.exe CliBankOnlineUa.exe CliBankOnlineRu.exe CliBankOnlineEn.exe SftMailW.exe SRCLBClient.exe EximClient.exe |
client.exe CbShell.exe CB.exe ARMSH95.exe arm.exe arm_mt.exe asbank_lite.exe bank.exe bank32.exe bbclient.exe bbms.exe bk.exe bnk.exe budget.exe cbank.exe cbmain.exe clb.exe client6.exe clientbk.exe clntstr.exe clntw32.exe cncclient.exe contactng.exe core.exe cshell.exe cyberterm.exe dealer.exe |
dsstart.exe dtpaydesk.exe edealer.exe eelclnt.exe elbank.exe etprops.exe etsrv.exe fcclient.exe ip-client.exe iwallet.exe jscashmain.exe kb_cli.exe lfcpaymentais.exe loadmain.exe lpbos.exe mmbank.exe mstsc.exe mwclient32.exe payments.exe paymmaster.exe pinpayr.exe pkimonitor.exe pmodule.exe pn.exe postmove.exe prclient.exe productprototype.exe |
qiwicashier.exe qiwiguard.exe quickpay.exe rclaunch.exe rclient.exe retail.exe retail32.exe rtadmin.exe rtcert.exe saadm.exe saclient.exe sxdoc.exe termw.exe translink.exe twawebclient.exe uarm.exe ubs_net.exe unistream.exe upofcards.exe uralprom.exe w32mkde.exe wclnt.exe webmoney.exe wfinist.exe winpost.exe wupostagent.exe xplat_client.exe |
Instalacja
Oprócz włączenia 64-bitowej wersji i komunikacji CnC za pośrednictwem anonimowej sieci Tor opisywany wariant ZeuSa zachowuje się jak każdy inny szkodnik oparty na ZeuSie. Wrzuca swoje pliki do folderów o losowo wygenerowanych nazwach w folderze %APPDATA% z losowymi nazwami plików:
Foldery instalacji
Zainstalowany trojan
Lokalna strefa zrzutu ZeuSa
Szkodnik utrzymuje się w systemie poprzez stworzenie wartości w kluczu Run autostartu systemowego w rejestrze:
ZeuS został zarejestrowany, tak aby uruchamiał się podczas startu systemu
Wewnętrzna wersja szkodnika określonego w ciele bota ma numer 3.0.0.0, co w rzeczywistości nie oznacza nic. Z pewnością nie jest to trzecia generacja ZeuSa, ponieważ autor tego szkodnika poinformowałby o tym. Proces pobierania pliku konfiguracyjnego sugeruje, że wersja ta jest bardziej zbliżona do pierwotnego kodu źródłowego ZeuSa 2.0.8.9, który wyciekł, niż do odgałęzienia Citadel. W wersji Citadel usunięto prosty dostęp do pliku konfiguracyjnego, a jego centrum kontroli pozwala na pobranie go przy użyciu dokładnego zapytania HTTP POST, podczas gdy opisywana wersja ZeuSa nie uniemożliwia pobranie pliku konfiguracyjnego poprzez proste żądanie URL do ścieżki pliku. Dlatego, każdy, kto zna poprawny adres URL, może pobrać go przy użyciu przeglądarek, narzędzi wget, curl itd.
Anonimowa sieć Tor
Oprócz 64-bitowego komponentu opisywana wersja ZeuSa zawiera w swoim ciele narzędzie tor.exe znane z wersji 0.2.3.25. Tor.exe jest uruchamiany pośrednio – ZeuS uruchamia aplikację systemową svchost.exe w stanie wstrzymania, następnie wstrzykuje kod tor.exe do tego procesu svchost.exe, dostosowuje go, aby działał poprawnie, i wznawia wykonywanie procesu svchost. W efekcie, zamiast svchost.exe proces w rzeczywistości zaczyna wykonywać tor.exe.
Narzędzie Tor zamaskowane jako proces svchost.exe tworzy serwer proxy HTTP nasłuchujący na porcie TCP 9050.
Proxy Tor uruchomiony jako proces svchost.exe
A zatem, jeśli dostosujesz przeglądarkę na zainfekowanym hoście, tak aby działała za pośrednictwem proxy127.0.0.1:9050, cały ruch przeglądarki będzie przechodził przez sieć Tor. Serwer kontroli tej wersji ZeuSa jest zlokalizowany w domenie online: egzh3ktnywjwabxb.onion. Dlatego gdy szkodnik komunikuje się z serwerem kontroli, kieruje żądania poprzez wspomniane proxy, uzyskując dostęp do sieci Tor, a następnie jego serwera kontroli.
Co więcej, ZeuS tworzy ukrytą usługę Tor na zainfekowanej maszynie, przekazując następujące parametry, gdy uruchamia tor.exe:
--HiddenServiceDir "%APPDATA%\tor\hidden_service" --HiddenServicePort "1080 127.0.0.1:<losowy port 1>" --HiddenServicePort "5900 127.0.0.1: <losowy port 2> "
Zasadniczo, parametry te mają określać, w jaki sposób uruchomić ukrytą usługę (cebulowy serwer sieciowy) na określonych maszynach. HiddenServiceDir określa, gdzie zlokalizowana jest lokalnie konfiguracja ukrytej usługi, a HiddenServicePort - jak przekierowywać użytkowników łączących się z domeną cebulową do działającego lokalnie serwera sieciowego. Użytkownicy zwykle łączą się z domenami sieciowymi na porcie 80, który jest przydzielony do protokołu HTTP, ale serwer sieciowy mógłby akceptować połączenia przychodzące z innego portu, np. 1080. W takim przypadku, tor.exe musi zostać uruchomiony z następującym parametrem:
--HiddenServicePort "80 127.0.0.1:1080"
co oznacza, że gdy użytkownicy łączą się w standardowy sposób za pośrednictwem przeglądarki do
<nazwa_domeny>.onion, uzyskują dostęp do twojej maszyny, gdzie tor.exe akceptuje połączenie na porcie 80 i przekierowuje je do portu 1080 na lokalnej maszynie, która jest podsłuchiwana przez serwer sieciowy. W efekcie, użytkownicy łączą się z twoim serwerem sieciowym.
Jednak w przypadku ZeuSa, najprawdopodobniej nie istnieje żaden serwer sieciowy działający na zainfekowanym hoście. Skoro tak, to dlaczego oprócz mapowania portu do losowych portów szkodliwe oprogramowanie chciałoby wprowadzić ukrytą usługę? Odpowiedź można znaleźć w samym ZeuSie. Szkodnik ten tworzy folder konfiguracji tor dla każdego zainfekowanego hosta, generując unikatowy prywatny klucz dla ukrytej usługi, a – w efekcie – unikatową nazwę domeny. Z kolei tor.exe aktywuje ukrytą usługę z unikatową nazwą domeny cebulowej.
Stworzony przez ZeuSa folder konfiguracji Tor
Stworzony przez ZeuSa folder konfiguracji Tor
Przykład wygenerowanej domeny związanej z zainfekowanym hostem
Działając w zainfekowanym systemie, ZeuS podsłuchuje porty, które zostały losowo wygenerowane i zapamiętane podczas pierwszego uruchomienia szkodliwego oprogramowania. Operator botnetu będzie wiedział o wygenerowanej domenie cebulowej związanej z każdą zainfekowaną maszyną, ponieważ szkodnik informuje serwer kontroli o swojej nazwie domeny cebulowej. Gdy zainfekowana maszyna jest online, operator botnetu może uzyskać do niej dostęp, łącząc się z jej unikatową domeną cebulową za pośrednictwem sieci Tor. Jednym z celów takiego podejścia jest zdalna kontrola zainfekowanego hosta. Na przykład, jeden z tych portów prowadzi podsłuchiwanie w funkcji VNC ZeuSa, co oznacza, że ZeuS zapewnia operatorowi zdalną kontrolę desktopu za pośrednictwem tego portu.
Jednak ZeuS działający za pośrednictwem sieci Tor nie jest niczym nowym. Wykryliśmy próbki ZeuSa ze śladami komunikacji za pośrednictwem sieci Tor, które pochodzą z 2012 r., gdy podczas infekcji ZeuSa na zainfekowanych maszynach został stworzony serwer proxy oraz ukryta usługa sieci Tor. W internecie istnieją nawet instrukcje krok po kroku, mówiące, jak wykorzystać tor.exe, aby przekazywał ruch ZeuSa lub Spyeye przez sieć Tor, oraz, jak stworzyć hosting domen cebulowych dla serwera kontroli dla tych trojanów bankowych. Jednak wcześniejsze próbki w większości posiadały domeny CnC określone w ich ciele jako host lokalny lub 127.0.0.1, co oznacza, że same próbki ZeuSa czy Spyeye nie były zbyt ściśle powiązane z komunikacją przez sieć Tor, podczas gdy opisywana tu wersja ZeuSa posiada domenę cebulową CnC egzh3ktnywjwabxb.onion określoną w jej wewnętrznym bloku ustawień. tor.exe jest włączony bezpośrednio do jej ciała i jest uruchamiany przez samego ZeuSa. A zatem, komunikacja za pośrednictwem sieci Tor oraz 64-bitowa wersja stanowią nierozerwalne elementy tej próbki ZeuSa, a funkcjonalność ta została dodana na etapie rozwoju.
Wniosek
Niezależnie od intencji osoby, która stworzyła tę próbkę ZeuSa – czy był to trik marketingowy czy podbudowa dla przyszłych potrzeb – w końcu istnieje „czysty” 64-bitowy ZeuS i można powiedzieć, że został wykonany nowy krok milowy w ewolucji ZeuSa. Co więcej, próbka ta pokazuje, że funkcjonalność ZeuSa została wzbogacona o kolejną funkcję – ZeuS potrafi działać samodzielnie za pośrednictwem sieci Tor z cebulowymi domenami CnC, co oznacza, że dołączył właśnie do ekskluzywnego klubu rodzin szkodliwego oprogramowania posiadających tę możliwość.Analizy
Blog