Malware w praktyce niewykrywalne: wiele można ukryć w podpisanych plikach Windowsa
Dzięki odkryciu Toma Nipravsky’ego, badacza firmy DeepInstinct, znacznie trudniej będzie ochronić Windowsa przed malware.Opracowana przez niego technika pozwala przemycić złośliwy kod wcyfrowo podpisanej aplikacji, nie wywołując przy tym reakcjioprogramowania antywirusowego. Winny jest błąd, jaki popełniłMicrosoft, projektując proces uruchamiania podpisanych windowsowychaplikacji. Innymi słowy – można wstrzyknąć malware w binarnyplik nie naruszając przy tym ważności jego podpisu. Co więcej,taki uzłośliwiony plik można bez wywoływania alarmów uruchomić.
Zaprezentowaną podczas tegorocznej konferencji Black Hat technikębadacza Deep Instinct można uznać za kolejny krok w rozwojupackerów, wykorzystywanych do przekształcania złośliwegooprogramowania do postaci niewykrywalnej dla bazujących nasygnaturach skanerów. Kluczem do jej opracowania było odtworzeniecałego procesu uruchamiania podpisanego pliku wykonywalnego wWindowsie.
Na początku więc system odczytuje nagłówki formatu PortableExecutable (PE) pliku, potem uwierzytelnia certyfikat, a następniepoprzez technologię Microsoft Authenticode sprawdza kryptograficznyskrót pliku. Okazuje się jednak, że w tym ostatnim kroku nie sąuwzględniane trzy spośród nagłówków PE. Można je zmodyfikować,a poprawność pliku pozostanie zachowana. Tymi polami są sumakontrolna pliku, pole IMAGE_DIRECTORY_ENTRY_SECURITY oraz tabelaatrybutów certyfikatu. Do tej właśnie tabeli udało sięwprowadzić złośliwy kod, nie naruszając certyfikatu ikryptograficznego skrótu pliku.
Oczywiście tak wprowadzonego kodu z tabeli atrybutów normalnienie można uruchomić, nie ładuje się on do pamięci, ponieważjest jedynie częścią nagłówku. Można więc by było powiedzieć,że to tylko ciekawostka – „fajnie” jest mieć niewykrywalnezłośliwe oprogramowanie na dysku, ale skoro nic ono nie robi, tonie jest też takie złośliwe. Rozwiązaniem tego problemu jestReflective PE Loader, narzędzie, które potrafi uruchamiać pliki PEbezpośrednio z pamięci.
Powstało ono w drodze odwrotnej inżynierii całego procesuładowania plików PE przez Windowsa – operacji kompletnienieudokumentowanej, będącej tajemnicą Microsoftu. Cztery miesiącepracy po osiem godzin dziennie pozwoliło jednak na stworzeniewłasnego loadera, który odtwarza cały proces ładowaniaMicrosoftu, z tym jednak wyjątkiem, że potrafi umieścić w pamięcido uruchomienia kod z nagłówka.
Wyniki testów dla antywirusów okazały się bezlitosne – żadenz nich nie potrafił wykryć ukrytego w podpisanym pliku szkodnikaransomware (mimo że normalnie szkodnik taki był wykrywany), żadenteż nie zablokował uruchomienia go w Windowsie. Podczasdemonstracji na Black Hacie zgromadzeni mogli zobaczyć, żeantywirus reaguje dopiero po pojawieniu się na pulpicie pliku zżądaniem okupu. Sporo za późno, prawda?
Jedyne co w tej historii może uspokajać, to fakt, że Nipravskyzdecydował się nie ujawniać kodu swojego loadera. Wywołał onjednak wielkie zainteresowanie w środowisku blackhatów i jużwidać, że dyskutowane są na darknetowych forach metody odtworzeniapracy badacza Deep Instinct. O konsekwencjach, jakie będzie miałostworzenie takiego loadera dla całego ekosystemu Windowsa, lepiejnie myśleć. Być może skończy się to tym, że antywirusy będąmusiały przestać ufać cyfrowo podpisanym plikom systemowym – tojednak oznacza poważne kłopoty, w razie fałszywego alarmuuszkadzanie przez antywirusa systemu operacyjnego.
Więcej o odkryciu znajdziecie w artykuleCertificate bypass: Hiding and Executing Malware from a DigitallySigned Executable, opublikowanym w ramach materiałówpokonferencyjnych Black Hat USA 2016.