19 lipca 2010

Jeszcze raz o tym, jak w banalny sposób można oszukać antywirusa

Wbrew temu, do czego chcą nas codziennie przekonać producenci rozwiązań antywirusowych, tego typu programy nie są w stu procentach skuteczne i nie oferują nam pełnej i bezproblemowej ochrony przed wszystkimi zagrożeniami. Pomijając już tak oczywiste fakty jak to, że antywirusy wymagają ciągłych aktualizacji, zużywają cenne zasoby systemowe, a czasem nawet powodują unieruchomienie całego systemu operacyjnego w wyniku fałszywych wykryć, dużym zaskoczeniem może być dla wielu osób to, w jak banalny sposób możliwe jest oszukanie nawet najbardziej renomowanych antywirusów. Spójrzmy na kolejny dowód.

Swego czasu pokazywałem już na łamach HCSL, że popularne antywirusy może zmylić nawet tak prosta czynność, jak podmiana ikony programu. Wtedy pojawiły się jednak m.in. głosy, że eksperyment przeprowadziłem na potencjalnie niebezpiecznym programie narzędziowym (fgdump), a nie na typowym złośliwym oprogramowaniu, co wg niektórych czytelników podważało wiarygodność całego testu.

Tym razem spójrzmy więc na typowy malware. Do testu wybrałem rodzimego trojana o wdzięcznej nazwie Świnia 1.0. Okazuje się, że wyrośnięty Prosiak jest już całkiem dobrze znany antywirusom. Dzięki świetnej usłudze Virustotal mamy dostęp do automatycznego skanera wyposażonego w 41 najpopularniejszych silników antywirusowych, sprawdźmy więc Świnię w pierwotnej postaci (tutaj dostępne są wynik skanowania):
Jak mogliśmy się przekonać, całkiem sporo (28/42) antywirusów rozpoznaje naszego trojana, do tego poprawnie rozpoznając typ zagrożenia.

Sprawdźmy teraz, czy współczesne antywirusy dadzą się nabrać na stosunkowo prostą sztuczkę. Binarny kod programu poddamy obfuskacji, za pomocą narzędzia PEScrambler. Zaciemnianie kodu wykonywalnego ma zazwyczaj na celu utrudnienie lub wręcz uniemożliwienie skutecznego przeprowadzenia inżynierii wstecznej. PEScrambler jest właśnie bardzo skutecznym i nowatorskim obfuskatorem tego typu (więcej na jego temat można się dowiedzieć z prezentacji dostępnej tutaj), jak się jednak okazuje, tego typu narzędzia nadają się również świetnie jako anty-antywirusy...

Przepuśćmy więc nasz testowy malware przez PEScramblera:
Spróbujmy teraz przeskanować tak powstały plik wykonywalny za pomocą usługi Virustotal (tutaj dostępne są wynik skanowania):
Okazuje się więc, że po zastosowaniu zaledwie jednego narzędzia (choć oczywiście proces wykonany przez PEScrambler w żadnym razie nie jest banalny) przekształcającego postać kodu binarnego, już tylko 8 antywirusów było w stanie wykryć zagrożenie! Produkty wielu renomowanych producentów nie zdołały rozpoznać przebranej Świni...

Ten prosty eksperyment po raz kolejny obnaża niedoskonałości współczesnej generacji antywirusów. Mimo, że funkcjonalność kodu wykonywalny zawartego w pliku nie uległa żadnej zmianie, to wiele programów zabezpieczających nie zdołało wykryć zagrożenia. Z pewnością wynika to ze słabości rozmaitych sygnaturowych oraz opartych o proste sumy kontrolne metod detekcyjnych. Co prawda czołowi producenci chwalą się, że ich programy posiadają również inne zaawansowane metody rozpoznawania zagrożeń, widzimy jednak wyraźnie, że ich skuteczność pozostawia wiele do życzenia.

Podsumowując, nie możemy do końca ufać współczesnej generacji programów antywirusowych, gdyż wciąż ich skuteczność w wielu przypadkach rozczarowuje. Niestety nic jednak nie zapowiada w najbliższym czasie znaczącej poprawy w tym zakresie. Osobiście nie uważam, by kiedykolwiek programy ochronne były w stanie zapewnić nam stuprocentowe bezpieczeństwo. Coraz bardziej skłaniam się ku tezie, że przyszłością bezpieczeństwa będą nowe (projektowane od podstaw z myślą o bezpieczeństwie) architektury systemów operacyjnych, a nie programowe pakiety ochronne.