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
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ę.
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.
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ą.
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.
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.
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:
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.
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.
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
Ciekawy wpis, ale brakuje mi analizy co konkretnie robi odpalony juz exec.
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.
Nie próbowałeś identyfikacji i odszyfrowania przez https://id-ransomware.malwarehunterteam.com/ ?
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.
TL;DR:
* download js w zip: URL (brak)
* download exe: URL (brak)
* analiza exe (funkcjonalnosci): brak
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…
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 ?
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ę :)
Szkoda, że takich analiz, chociażby w uproszczonej formie, nie przedstawia się w głównych mediach.