Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Fałszywe faktury od PGE serwujące malware – analiza przypadku

23 czerwca 2016, 22:25 | Teksty | komentarzy 9

Dzisiaj krótka analiza nowej kampanii phishingowej – nadesłana przez naszych kolegów z WCSS.

Niedawno na skrzynki Zespołu Bezpieczeństwa Informacji napłynęły wiadomości zawierające informacje na temat nieopłaconych e-faktur za energię elektryczną. Poniżej można znaleźć przykład jednej z takich wiadomości, wokół której skupię opisaną w tym tekście analizę.

scrypto_01
Po bliższym zapoznaniu się z treścią źródła wiadomości szybko zorientowaliśmy się, że mamy w tym przypadku do czynienia z kampanią phishingową mającą na celu zebranie żniwa wśród nieświadomych niebezpieczeństw użytkowników komputerów. Aby dokładnie dowiedzieć, z czym mamy do czynienia, postanowiliśmy uzupełnić do tej pory zebrane dane o informacje, które można było znaleźć na popularnych portalach poświęconych bezpieczeństwu komputerowemu. Całkiem sprawnie udało się pozyskać wiedzę o tym, czego można się spodziewać po spełnieniu – krok po kroku – wytycznych umieszczonych w wiadomości podszywającej się pod e-fakturę.

Niestety nigdzie nie udało nam się znaleźć informacji, w jaki sposób złośliwe oprogramowanie jest ściągane i uruchamiane po stronie ofiary. Nie pozostało nam nic innego, jak zaspokoić nasz głód wiedzy w tym temacie.

 

Analiza

Analizę ataku rozpoczęliśmy od postawienia wirtualnej maszyny laboratoryjnej, na której wykonanie czynności taktycznego formatu prewencyjnego w przypadku jej kompromitacji nie naraziło by nas na utratę ważnych danych. Następnie postanowiliśmy podążyć, jak Alicja w Krainie Czarów, do króliczej nory, która przeniesie nas do świata internetowej przestępczości stosowanej. Czyli innymi słowy: krok po kroku wykonywaliśmy instrukcje w celu opłacenia nadesłanej e-faktury, analizując efekty naszych poczynań. Gdy już zdecydowaliśmy się, że chcemy pobrać fakturę, naszym oczom ukazał się następujący widok.

scrypto_02

Po udowodnieniu przestępcom, że jesteśmy ludźmi, a nie internetowymi botami, udało nam się pobrać archiwum zip, które zawierało plik Faktura_PGE.js. Mając odrobinę wiedzy dotyczącej składowych, z których zbudowana jest strona internetowa, można się łatwo domyśleć, że pliki o rozszerzeniu ”*.js” są skryptami, których celem jest wykonanie kodu JavaScript, a nie standardem wymiany dokumentów firmowych. Co nie oznacza, że wszystkie pliki o rozszerzeniu *.docx, *.doc, *.pdf itp. są z założenia bezpieczne [sic!]. Dowiedzenie się, jakie akcje wykonuje plik JavaScript podszywający się pod fakturę, powinno odpowiedzieć na postawione przez nas w tym artykule pytanie lub przynajmniej przybliżyć nas w jakiś sposób do odpowiedzi. Poniżej można znaleźć fragment zaciemnionego przez przestępców pliku roboczo nazwanego przez nas skrypto/fakturą.

scrypto_03

Warto pamiętać, że jest to jedynie fragment pliku uznany przez nas za najbardziej istotny. Aby jednak zrozumieć, co się w nim dzieje, powinno się poddać go procesowi odciemniania.

Odciemnianie (ang. deobfuscation) to proces odwrotny do zaciemniania mający na celu zmiany trudnego do odczytania kodu na wersję zrozumiałą składniowo oraz czytelną  dla człowieka.

Drogi Czytelniku jeżeli chcesz dowiedzieć się więcej o zaciemnianiu kodu zapraszam do lektury.

W naszym przypadku ten proces był dwuetapowy i wykonany w całości metodą ręczną. Pierwszy etap polegał na zmianie autorskich nazw funkcji i zmiennych na ich krótsze, bardziej zrozumiałe odpowiedniki oraz na próbie zrozumienia logiki skryptu. Poniżej znaleźć można ten sam fragment po wyżej opisanych zmianach.

scrypto_04
Drugi etap miał za zadanie wykorzystać znajdującą się w skrypcie funkcję dekodującą, znalezioną po wykonaniu pierwszej fazy odciemniania, w celu pozyskania argumentów tekstowych (zmienne oznaczone literą ”g”) wykorzystywanych w pokazywanym przez nas fragmencie kodu. Poniżej efekt drugiej i ostatniej fazy odciemniania kodu:

scrypto_05
Wraz z odciemnieniem skrypto/faktury stało się dla nas jasne, w jaki sposób przestępcy infekują nieświadome ofiary.

Skrypt wykorzystuje obiekt ActiveXObject, obsługiwany domyślnie w przeglądarkach Internet Explorer, pobiera do lokalizacji tymczasowej plik file.exe, którego analizę wykonaną przez stronę VirusTotal możecie znaleźć poniżej.

scrypto_06
Strona VirusTotal w prosty sposób pozwala użytkownikowi przetestować podejrzane pliki pod względem wykrywalności sygnatur świadczących o obecności złośliwego oprogramowania w testowanym pliku z wykorzystaniem różnych silników antywirusowych. Po skończonej analizie użytkownik może sprawdzić akcje, które były wykonywane przez plik podczas testów w środowisku izolowanym (zakładka ”Behavioural information”), oraz zależności, które wykorzystuje testowany plik (zakładka ”File detail”).

Zainteresowanych odsyłam do wyników analizy złośliwej aplikacji ściąganej przez skrypto/fakture.

Drogi Czytelniku pamiętaj jednak, by mieć w głowie, że w procesie analizy pliku należy wysłać go na serwer, co jest jednoznaczne z podzieleniem się nim z twórcami portalu. Proponowałbym nie wysyłać plików niejawnych lub których prywatność jest dla nas istotna.

Wróćmy jednak do analizy akcji wykonywanych przez omawianą w tym artykule skrypto/fakture. Za pomocą tego samego obiektu (ActiveXObject), ale inicjowanego innym argumentem (Wscript.Shell) skrypt uruchamia pobrany przez siebie złośliwy plik na komputerze ofiary.

ActiveXObject[''run''](''cmd.exe /c '' +<lokalizacja_pliku>, 0);

Jak można zauważyć, atak do skomplikowanych i wyrafinowanych nie należy, a potencjalnymi jego ofiarami mogą stać się osoby, które na co dzień wykorzystują system operacyjny Windows i uruchamiają pliki ściągnięte z nieznanych źródeł bez zastanowienia. Skrypto/faktura w systemie Windows domyślnie odpalana jest przez aplikacje Microsoft Windows Based Script Host, która po uruchomieniu wykona złośliwy kod na maszynie ofiary. W niektórych przypadkach użytkownik może zostać zapytany przez system, czy na pewno chce otworzyć plik pochodzący z internetu, ale jest to opcjonalne i zależy od ustawień preferencji użytkownika w systemie.

Mateusz Stahl
Zespół Bezpieczeństwa Informacji
Wrocławskie Centrum Sieciowo-Superkomputerowe

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. czesio

    Ciekawy wpis, ale brakuje mi analizy co konkretnie robi odpalony juz exec.

    Odpowiedz
    • ktv

      To może ja w skrócie odpowiem co on robi albowiem trafił do mnie komputer „po fakcie”
      Pod koniec dnia pracy „Pani Basia” sprawdziła „nieopłaconą fakturę”, bazy AV były od kilku miesięcy nieaktualne (zapomniało się kupić przedłużenie licencji).
      Następnego dnia po odpaleniu komputera pierwsze co to pojawił sie komunikat „Zaszyfrowaliśmy pliki wirusem Crypt0L0cker. Twoje ważne pliki (w tym na dyskach sieciowych, USB etc.): zdjęcia, filmy, dokumenty itp. zostały zaszyfrowane za pomocą naszego wirusa Crypt0L0cker. Jedynym sposobem, aby uzyskać pliki z powrotem jest zapłacenie nam.(…)
      I faktycznie 90% tych plików, łącznie z tymi umieszczonymi na zamapowanych dyskach serwera została zaszyfrowana.
      Pozostało jedynie odzyskiwanie tych danych z backup-ów. Ponadto (już po postawieniu czystego systemu od zera) na jej skrzynkę w outlooku przychodzi teraz tona spamu dziennie z całego świata.

      Odpowiedz
  2. Tomek

    Zetknąłem się wielokrotnie z tego typu atakiem. Nie wgłębiałem się w szczegóły, ale tak samo był plik .js który pobierał .exe i wykonywał go. Nie polegałbym na Virustotal, ani tym bardziej na jakimkolwiek antywirusie, ponieważ wysłałem próbki plików .js i .exe do virustotal i oba miały zaledwie po 3/55 wykrycia. Na wszelki wypadek usunąłem w systemie skojarzenie plików .js.

    Odpowiedz
  3. Tomek

    TL;DR:
    * download js w zip: URL (brak)
    * download exe: URL (brak)
    * analiza exe (funkcjonalnosci): brak

    Odpowiedz
  4. vanitas

    O rany…
    1) gratuluje deobfuskacji. Mi się nie chciało – i po prostu podglądałem komunikacje sieciową.
    2) NA etapie wejścia na stronę do pobrania – w URLU zaszyty jest adres mailowy na który phishing poszedł. Ergo – jak nie zmieniliście, to na ten będziecie mieli więcej spamu…

    Odpowiedz
  5. Phx

    Ja mam pytanie w jaki sposób został dokonany sposób odciemniania kodu ?

    TO zdanie jest dla mnie zagadką:
    „Pierwszy etap polegał na zmianie autorskich nazw funkcji i zmiennych na ich krótsze”

    Ale w jaki sposób je zmieniono na krótsze ?

    Odpowiedz
    • Zamiana była wykonana ręcznie linijka po linijce. Czasem wspomagając się możliwościami vim’a ” :%s/nazwa_org_zmiennej/moja_nazwa/gc ” – czyli podmiana jednego stringa na inny w całym dokumencie wraz z potwierdzeniem podmiany. Mam nadzieje, że rozwiązałem zagadkę :)

      Odpowiedz
  6. BGP

    Szkoda, że takich analiz, chociażby w uproszczonej formie, nie przedstawia się w głównych mediach.

    Odpowiedz

Odpowiedz