sobota, 7 maja 2016

Webinject w "trojanach bankowych"

Pod koniec kwietnia dużą sensację wzbudziła informacja [1] dotycząca ataków na klientów prawie wszystkich banków w Polsce w tym banków spółdzielczych. W jednym z wariantów ataków, które są regularnie przeprowadzane od drugiej połowy ubiegłego roku zostało wykorzystane złośliwe oprogramowanie bazujące na dwóch innych typach złośliwego oprogramowania. Pierwszym z nich jest GOZI-ISFB wykorzystywany do „kradzieży poufnych danych”. Drugim Nymaim, który jest wykorzystywany jako dropper. Sam Nymaim jest bardzo ciekawy ze względu na wykorzystywanie wielu technik utrudniających analizę. Wg tego źródła [2] jak na razie nie ma możliwości jego poprawnej analizy w środowiskach sandbox. 

Z kolei wzmożone ataki (w tym w Polsce opisywane tutaj [3]) za pomocą GOZI-ISFB spowodowane są wyciekiem w ubiegłym roku kodu źródłowego.

GOZI-ISFB podobnie jak złośliwe oprogramowanie z innej rodziny „trojanów bankowych” wykorzystuje technikę webinject. Możliwości malware (związane z funkcją webinject dla Internet Explorer, Firefox oraz Chrome) są następujące:
  1. Podmiana fragmentu strony. Tutaj można dodać nowe pola lub wstrzyknąć kod javascript (może być odwołanie do zewnętrznej strony).
  2. Grab –wyszukuje i kopiuje fragment strony.
  3. Full replace – podmiana URL, również w treści zwracanej strony.
  4. Post params – przechwytywanie wybranych parametrów przesyłanych w żądaniach POST.
  5. Hidden – blokowanie dostępu do stron.
  6. GetURL – przekierowanie całego żądania z parametrami na inną stronę.
Inne funkcje malware niezwiązane bezpośrednio z webinject (ale przydatne przy kradzieży środków z konta bankowego) to:
  •  Tworzenie zrzutów z ekranu
  •  Nagrywania wideo
  •  Aktywacja serwera SOCKS
  •  Aktywacja serwera VNC
  •  Wyszukiwanie plików
Pliki konfiguracyjne są kompresowane za pomocą ApLib a następnie szyfrowane i podpisywany z pomocą algorytmu RSA. W ten sam sposób przesyłane są komendy do klienta. Klient ma zaszyty klucz publiczny.

Komunikacja sieciowa jest dodatkowo szyfrowana za pomocą algorytmu Serpent w trybie CBC.  Poniżej przykład takiego zapytania GET. Klucz można odczytać z pamięci procesu explorer.exe (lub innego zdefiniowanego przy kompilacji) lub procesów zainfekowanej przeglądarki internetowej.


Webinject (w przypadku przeglądarki Internet Explorer) nie będzie działał bez przechwycenia funkcji API biblioteki wininet.dll. GOZI-ISFB modyfikuje tablice import lub export (IAT/EAT) procesów przeglądarek do przejęcia kontroli nad wybranymi funkcjami API. Najważniejsze funkcje służące do manipulacji wysyłanymi żądaniami i odbieranymi odpowiedziami to: HttpSendRequest oraz InternetReadFile. 

Funkcja HttpSendRequest wywoływania jest w momencie wysyłania żądania do serwera przez przeglądarkę. Poniższy fragment kodu podmienionej funkcji może zablokować dostęp do wywoływanego URL (zakładka Hidden). Parametry lpOptional oraz dwOptionalLength oznaczają, że jest to żądanie POST lub PUT i jest to sygnał, że można przechwycić parametry zdefiniowane w zakładce konfiguratora malware Post params. 


Funkcja InternetReadFile odczytuje dane otrzymane z serwera. Poniższy fragment kodu wywołuje funkcję malware GetPageContext(), która z kolei wywoła IeReplaceStream() gdy będzie w konfiguracji zdefiniowana zakładka Replace.


Inna przechwytywana funkcja to HttpQueryInfo – ona z kolei użyta jest to przekierowania na inną stronę (aktywna zakładka Full replace).

Analogiczny mechanizm wstrzykiwania jest wykorzystywany w innych „trojanach bankowych”. Dla przykładu Carberp i Kins za pomocą podmienionej funkcji onInternetReadFile() wywoływały funkcję HttpGrabber::_executeInjects().


W efekcie po identyfikacji odpowiedniego miejsca (w poniższym przypadku </body>) doklejany był złośliwy kod (w poniższym przypadku skrypt js). Rejestr EAX zawiera doklejanie dane. EDX zawiera oryginalną (jeszcze nie zmodyfikowaną) zawartość strony.


Źródła:



Brak komentarzy:

Prześlij komentarz