Czy wirusy mogą mieć dziury?

Większość luk w zabezpieczeniach i exploitów do systemów/aplikacji, o których się dowiadujemy, to dobra wiadomość dla cyberprzestępców i zła wiadomość dla reszty z nas. Należy jednak pamiętać, że złośliwe oprogramowanie (wirus) to też oprogramowanie, które może mieć dziury i podatności. Poznanie kodu złośliwego oprogramowania pozwala zrozumieć zasadę jego działania oraz wdrożyć środki zapobiegawcze. Jednym z takich środków są sygnatury aktualizowane w oprogramowaniu antywirusowym służące do wykrywania symptomów pojawienia się konkretnego wirusa (malware) i jego blokowania.

Jednak cały czas wirusy ewoluują i cyberprzestępcy szukają nowych sposobów, aby pozostać bezkarni. Co w tym wypadku możemy zrobić, aby się zabezpieczyć? Cyberprzestepcy mogą ominąć antywirusa. Co wtedy? Jednym ze sposobów jest „oszukanie” takiego wirusa w systemie, w szczególności stworzenie w nim artefaktów odpowiadających jego normalnej ścieżce infekcji i takie ich skonfigurowanie, aby nie było możliwe jego uruchomienie.

Na widelec wzięliśmy Emotet’a, o którym możecie poczytać na Kapitanie Hacku tutaj.


Emocrash – zabójca Emoteta

EmoCrash tak się nazywa skrypt wykorzystujący luki w zabezpieczeniach Emotet’a do obrony przed nim. Koncepcję przedstawił James Quinn z firmy Binary Defense.

Od czasu pierwszej identyfikacji w 2014 r. Emotet ewoluował od szkodliwego oprogramowania bankowego do swoistego „szwajcarskiego scyzoryka”, który może służyć jako narzędzie do pobierania, kradzieży informacji i spambot, w zależności od sposobu wdrożenia. Na początku lutego 2020 twórcy Emoteta opracowali w nim nową funkcję, która wykorzystuje już zainfekowane urządzenia do identyfikowania i atakowania nowych ofiar podłączonych do pobliskich sieci Wi-Fi. Pisaliśmy o tym tutaj.
Wraz z tą aktualizacją funkcji pojawił się nowy mechanizm pozwalający zaszyć się Emotetowi w systemie operacyjnym. Polegał on na wygenerowaniu nazwy pliku w każdym systemie ofiary, używając losowo wybranej nazwy pliku systemowego „*.exe” lub *.dll z katalogu system32.
Zmiana sama w sobie była prosta. Szyfrowała nazwę pliku za pomocą klucza XOR, który został następnie zapisany w wartości rejestru systemu Windows ustawionej na numer seryjny woluminu ofiary.

Pierwsza wersja EmoCrash (skryptu w PowerShell zabijającego Emotet) opracowana przez Binary Defense, została uruchomiona około 37 godzin po ujawnieniu przez Emotet powyższych zmian. Wykorzystywała skrypt w PowerShell, który generował wartość klucza rejestru dla każdego komputera ofiary i ustawiał dane dla każdej wartości na zero (null).

W ten sposób, gdy złośliwe oprogramowanie sprawdzało rejestr w poszukiwaniu nazwy pliku, ładowało pusty plik „.exe”, zatrzymując w ten sposób szkodliwe działanie w systemie docelowym.

To nie wszystko. W nowej wersji Emocrash, Quinn wykorzystał lukę przepełnienia bufora wykrytą w procedurze instalacji złośliwego oprogramowania, aby można było zawiesić Emoteta podczas procesu instalacji, skutecznie chroniąc w ten sposób użytkowników przed zainfekowaniem.
Efekt działania Emocrash po jego wdrożeniu (i ponownym uruchomieniu komputera) był taki, ze w dzienniku zdarzeń (logach aplikacyjnych) pojawiłyby się dwa zdarzenia awarii o identyfikatorach 1000 i 1001, których można by użyć do zidentyfikowania komputerów z wyłączonymi i martwymi plikami binarnymi Emotet.

Zródło: BinaryDefense

Dlatego zamiast resetować wartość rejestru, skrypt działał identyfikując architekturę systemu, aby wygenerować wartość rejestru instalacji dla numeru seryjnego woluminu użytkownika, używając jej do zapisania bufora o wielkości 832 bajtów.

„Ten malutki bufor danych był wszystkim, co było potrzebne do przeprowadzenie awarii Emoteta i można go było nawet wdrożyć przed infekcją (jak szczepionka) lub w trakcie jej trwania (jak wyłącznik awaryjny)” – opisał na swym blogu Quinn.


Reakcja twórców Emotet na Emocrash

Aby zataić istnienie Emocrash przed twórcami Emotet i cyberprzestępcami żeby nie mogli załatać złośliwego kodu, firma Binary Defense poinformowała, że współpracowała z zespołami Computer Emergency Response Teams (CERT) i Team Cymru w celu dystrybucji skryptu wykorzystującego exploit EmoCrash do podatnych organizacji.

Chociaż Emotet wycofał swoją metodę instalacji opartą na kluczach rejestru w połowie kwietnia 2020 r., dopiero 6 sierpnia aktualizacja programu ładującego złośliwe oprogramowanie całkowicie usunęła kod wartości rejestru będący przedmiotem opisywanej luki.

W dniu 17 lipca 2020 r. Emotet w końcu powrócił do spamowania użytkowników po kilkumiesięcznej przerwie. Aż do 6 sierpnia, EmoCrash był w stanie zapewnić całkowitą przed nim ochronę.

Ciekawi jesteśmy jakie będą dalsze zmiany Emoteta i czy Emocrash będzie skutecznie aktualizowany do zwalczania jego skutków działania.

Podziel się z innymi tym artykułem!