Wirus jak Frankenstein, sam zbuduje się z kawałków cudzego kodu

dodał 23 sierpnia 2012 o 15:37 w kategorii Złośniki  z tagami:
Wirus jak Frankenstein, sam zbuduje się z kawałków cudzego kodu

Istniejące metody zabezpieczania wirusów przed wykryciem są dalekie od skuteczności. Programy antywirusowe coraz lepiej radzą sobie z rozpoznaniem zagrożeń. A co by było, gdyby wirusy potrafiły budować swój kod z fragmentów niewinnych aplikacji?

Odpowiedź na to pytanie przyniosła bardzo ciekawa prezentacja wygłoszona niedawno na konferencji WOOT ’12. Naukowcy z uniwersytetu w Dallas przedstawili w niej rewolucyjną metodę tworzenia oprogramowania na podstawie mikroskopijnych fragmentów istniejących aplikacji.

Jak ukryć wirusa

Istniejące metody ukrywania wirusów przed narzędziami antywirusowymi mają wiele wad. Szyfrowanie i kompresja od razu proszą o zainteresowanie plikiem, wirtualizacja wymaga sporej ilości kodu a polimorfizm co prawda pomaga tworzyć pliki z których każdy ma inną sygnaturę, ale dalej posiadają pewne wspólne cechy. Naukowcy zaproponowali zatem nową metodę budowania kodu wirusów – z tzw. gadżetów.

Inspektor Gadżet

Gadżetem nazwali mikroskopijny fragment całkiem niewinnego programu, wykonujący jedynie podstawową operację semantyczną i kończący się instrukcją powrotu. Przykładem gadżetu może być sekwencja bitów, która wykonuje operację przeniesienia wartości między dwoma rejestrami jak poniżej.

mov eax, ebx
ret

Zaletą gadżetów jest ich całkowita niewinność oraz dostępność. W trakcie swoich analiz naukowcy odkryli, że w plikach znajdujących się w katalogu /windows/system32 są w stanie zlokalizować w krótkim czasie tysiące użytecznych gadżetów. Następnie, w oparciu o opracowany szablon funkcjonalności złośliwego kodu, mogą wybrać potrzebne gadżety i skleić je w nowy działający plik. Co ważne, ze względu na powszechną dostępność gadżetów, można przygotować wiele kopii pliku, z których każda będzie składać się z innych ciągów bitów.


Schemat budowania złośliwego kodu

To działa!

W swoim eksperymencie naukowcy opracowali szablon funkcjonalności obliczania kąta nachylenia odcinka w oparciu o współrzędne jego końców. Opracowany przez nich algorytm wykrywania gadżetów zidentyfikował średnio 46 gadżetów w 1 KB kodu pliku explorer.exe. Okazało się, że w oparciu jedynie o kod binarny zawarty w tym pliku można było stworzyć ogromną ilość mutacji, wykonujących zlecone zadanie.

Działające programy, stworzone dla celów demonstracji technologii, mają dość prostą funkcjonalność, jednak nic nie stoi na przeszkodzie, by wykonywały dużo bardziej skomplikowane funkcje. Nie jest zatem wykluczone, że za jakiś czas zobaczymy następcę Stuxnetu, budującego swoje binaria na żywo.

Wszystkim czytelnikom zainteresowanym szczegółami projektu polecamy lekturę referatu naukowego tych samych autorów.