Wiosenne usprawnienia w mechanizmach makrowirusów
Gdy świat toczy nierówną walkę z pandemią koronawirusa i wiele miejsc wstrzymuje działalność, cyberprzestępcy nie robią sobie wolnego. Słyszeliśmy ostatnio o kilku kampaniach wykorzystujących pęd do informacji na temat COVID-19, tym razem jednak zajmiemy się kwestiami technicznymi. Choć wirusy, których drogą wejścia jest załącznik z makrem Microsoft Office wydają się być reliktem przeszłości, w dalszym ciągu okazują się one bardzo popularnym źródłem infekcji. Nawet bez kontekstu.
26.03.2020 23:17
Przyjrzyjmy się najnowszemu arkuszowi Excela, zaopatrzonemu w makro. Załączony do pozbawionego treści maila o temacie "Rachunek", arkusz zawiera wstawiony niewyraźny obrazek udający sprawozdanie SWIFT. Makro jest zapięte na zdarzenie Workbook_Open(), a więc ładuje się równolegle z treścią, nie wymagając żadnej czynności (poza włączeniem zawartości aktywnej).
Nowość: pop-up!
Mimo automatycznego uruchomienia w przypadku włączonych makr, złośliwy kod prędko ujawnia się, wyświetlając (łamaną angielszczyzną, a więc celowo) komunikat "Proszę otworzyć na innym komputerze". Niniejsza wiadomość jest pozbawiona sensu, a w dodatku pozwala zauważyć, że w arkuszu poza treścią znajduje się skrypt. Z jakiego powodu umieszczono ją w makrze? Ano po to, by automatyczne skanery oparte o wirtualizację, jak App Any.Run, zatrzymały się podczas uruchomienia kodu, czekając w nieskończoność na OK. To pierwsza nowość w porównaniu ze złośliwym kodem z zeszłego roku i kolejny powód, by zatęsknić za Anno Domini 2019.
Zaciemnienie optyczne kodu jest dość proste. Nie ma tutaj wielokrotnego kodu, pustych linijek, nieużywanych sekcji ani brzydko rozrzuconych białych znaków. Zamiast tego zastosowano po prostu bardzo długie nazwy zmiennych. O wiele ciekawsze jest zaciemnienie algorytmiczne. Zanim parę słów na jego temat, warto przytoczyć algorytm działania całości:
Zdobyć ścieżkę do katalogu "Szablony" dla aktualnie zalogowanego użytkownika Odszyfrować nazwę pliku i adres URL załączonym dekoderem Utworzyć obiekt ADO DB (jedyna ogólnodostępna kontrolka ActiveX klasycznego Windowsa pozwalająca przechowywać duże dane binarne bez zmiany kodowania znaków!) i pobrać do niego plik z odkodowanego URL Zapisać obiekt do pliku Uruchomić go
Pobieranie pliku EXE i uruchamianie go to stary numer, o wiele bardziej oklepany niż wykonywanie eksportów DLL. Nie to jest tutaj interesujące. Najciekawszy jest skomplikowany i dziwny dekoder łańcuchów tekstowych. Trudno go rozłożyć do prostszego kodu, więc najłatwiejszą metodą sprawdzenia jak działa jest... uruchomienie go.
Śmieciowy tekst
I tu pojawia się problem. Próba wklejenia kodu do kompilatora Visual Basic 6.0 kończy się zniekształceniem kodu, ponieważ środowisko IDE VB6, na którym oparty jest Edytor Makr, pochodzi z czasów Windows 95. Nieodporna na nowe czasy obsługa Schowka sprawia, że kopiowanie fragmentów makra może się wiązać z utratą danych.
Pobierany wirus jest wykrywany heurystycznie przez większość silników, więc nawet bez konkretnych definicji uchroni nas systemowy Defender i wiele głównych rozwiązań (np. F-Secure). Skoro łapie go heurystyka, to albo był on mniej złożony od Danabota i Emoteta, albo jest do nich na tyle podobny (Loki?), że skanery sobie z nim radzą. Domena użyta do ataku została zarejestrowana w grudniu i serwuje bardzo dużo złośliwości. To kolejne potwierdzenie, że zbrodnia popłaca również w dobie kryzysu.