Jak wszyscy wiemy programów antywirusowych jest wiele. Jedne działają bardziej skutecznie, inne mniej. Każdorazowo gdy dochodzimy do porównań jakości antywirusa, poza obciążeniem samego systemu czy łatwością obsługi, przede wszystkim bierzemy pod uwagę skuteczność wykrywania wrogich aplikacji. Teoretycznie im większa skuteczność tym lepszy antywirus. Aby móc zabezpieczyć się jak najlepiej, staramy się dobrać jak najlepsze oprogramowanie antywirusowe. A gdyby tak spróbować z całkiem innej strony. Załóżmy, że instalujemy w swoim systemie operacyjnym – 10 programów antywirusowych. Oczywiście zapominając, o obciążeniu systemu i problemach z wykrywaniem wirusów w bazach antywirusowych innych produktów. Moglibyśmy skutecznie zwiększyć wykrywalność złośliwego oprogramowania! 3 osobowa ekipa z Uniwersytetu w Michigan postanowiła wykonać projekt o zbliżonej funkcjonalności lecz pozbawiony opisywanych wad, a wręcz zaopatrzony w dodatkowe zalety. Jak opisują na stronie projektu udało się im tego dokonać.
Zasada działania systemu CloudAV jest dość prosta ;). Skanowane pliki są przesyłane za pomocą sieci z komputera stacjonarnego (który nie posiada zainstalowanych programów antywirusowych) do specjalnego komputera matki. Skan odbywa się na maszynie, gdzie uruchomiona jest odpowiednia liczba silników antywirusowych (w miarę możliwości silniki te uruchamiane są w środowisku wirtualnej maszyny, per antywirus – co znacząco wpływa na bezpieczeństwo całego systemu). Informacja o wyniku skanowania jest zwracana do komputera stacjonarnego, który w zależności od ustalonej polityki bezpieczeństwa, podejmuje określoną akcję (na przykład blokuje dostęp do pliku, tudzież umieszcza go w strefie objętej kwarantanna jak ma to miejsce w wielu produktach antywirusowych).
Jakie są zalety i wady takiego rozwiązania?
Po pierwsze – jak wykazali w swoim dokumencie Jon Oberheide, Evan Cooke i Farnam Jahanian – skuteczność silników antywirusowych różni się znacząco od siebie. Ilość dni, w których posiadając najnowsze bazy antywirusowe danego produktu – nadal nie jesteśmy bezpieczni – nazwany został „oknem podatności”. Im krótszy czas podatności tym skuteczniejszy jest dany produkt. Im więcej silników skanujących wykorzystujemy na raz – tym większa wykrywalność, a co za tym idzie – tym mniejsze okno podatności.
Po drugie – każda aplikacja antywirusowa posiada szereg błędów bezpośrednio umożliwiających uruchomienie zdalnego kodu lub choćby przerwanie działania aplikacji. Przeglądając bazę podatności NVD od roku 2005 do roku 2007 w każdym z 10 ciu najpopularniejszych programów antywirusowych, zostały wykryte poważne błędy. Dzięki przesunięciu miejsca skanowania do innej maszyny, a dodatkowo przenosząc je do środowiska wirtualnego – drastycznie zwiększamy bezpieczeństwo komputera stacjonarnego.
Po trzecie – dzięki zastosowaniu centralnego ośrodka danych, uzyskujemy możliwość przeglądania danych z uwzględnieniem ich miejsca i czasu pochodzenia itd. Im więcej komputerów znajduje się pod naszą opieką, tym większe posiadamy możliwości dotyczące szczegółowej analizy złośliwego oprogramowania. Skąd przybyło, kiedy, gdzie nadal istnieje, gdzie być może znajdzie się za chwilę.
Po trzecie i pół dzięki zastosowaniu centralnego ośrodka danych, aktualizacje baz antywirusowych przeprowadzamy jedynie w miejscu centralnym, a nie na poszczególnych hostów. Ułatwia to zarządzanie i dopilnowanie aby bazy sygnatur zawsze były świeże. Ponadto oszczędzamy w ten sposób zasoby sieciowe.
Po czwarte – dzięki małemu rozmiarowi aplikacji (a także małej ilości wykorzystywanych zasobów) komunikującej się z serwerem centralnym, możliwe jest uruchamianie aplikacji klienckiej na maszynach o skromnych możliwościach takich jak choćby urządzenia przenośne, telefony czy komputery starszej generacji.
Po piąte – to administrator sieci/hostów ustala parametry rządzące całą architekturą. Czy aplikację uznać za groźną w momencie gdy zostanie wykryta jedynie przez jedną aplikację antywirusową czy w momencie wykrycia przez 3 aplikacje? Czy po odkryciu nieproszonego programu, blokować czy pozwolić na decyzję i reakcję użytkownika?
Po szóste – przed wykonaniem skanu, wykonywana jest suma kontrolna badanego pliku. Suma ta jest sprawdzana w lokalnym rejestrze cachującym. Jeśli komputer stacjonarny posiada informacje o legalności/nielegalności danego pliku, to nie wysyła go przez sieć do sprawdzenia. Ponadto podobny rejestr znajduje się na maszynie centralnej. W sytuacji gdy komputer stacjonarny chce wysłać do centralnego swój plik, w pierwszej kolejności odpytuje o sumę kontrolną system centralny. Być może odpowiednio wcześniej, inny system stacjonarny wysłał żądanie sprawdzenia tego samego pliku i warto skorzystać z tej informacji. Dzięki temu dodatkowo zyskujemy cachujący silnik antywirusowy i jak wykazały badania, możemy znacznie obniżyć koszty zasobów skanujących.
Do najważniejszych wad należy zaliczyć fakt, że niektóre metody dodatkowe (jak wykrywanie na podstawie określonych zdarzeń, behawioralne itp.) wykrywania złośliwego oprogramowania, mogą zachować się nieco inaczej w środowisku różniącym się od środowiska oryginalnego (np. na maszynie centralnej, nie ma w danym momencie, uruchomionych dokładnie tych samych procesów [aplikacji] co na maszynie stacjonarnej). Brak podłączenia do sieci może powodować dodatkowe problemy takie jak brak dostępu do skanera i czasową niemożność korzystania z aplikacji (w zależności od ustalonej polityki bezpieczeństwa).
Oczywiście każdy silnik antywirusowy może się pomylić (false positives). W zależności od ilości akceptowalnych silników antywirusowych możemy odpowiednio ustawić poziomy, dla których system podniesie alarm. Dlatego przykładowo wykorzystując 10 silników antywirusowych, warto za szkodliwą, uznać treść – wyłącznie wtedy gdy zostanie oznaczona jako szkodliwa dla minimum 2 – 4 silników antywirusowych.
Całość systemu została utworzona w taki sposób aby oprogramowanie klienckie działało na systemach z rodziny Windows, Linux, FreeBSD. W sieci kampusu uniwersyteckiego, oprogramowanie CloudAV było wnikliwie testowane przez 6 miesięcy. Jak wykazały przykłady z życia wzięte oraz bardzo szczegółowe analizy opierające się na zaawansowanych badaniach i obliczeniach – skuteczność takiego wielowątkowego systemu skanującego – wzrosła o 35% dla najnowszego oprogramowania złośliwego i o 15% (z 83% do 98%) dla oprogramowania z całego roku. Interesujące wyniki zostały uzyskane także w sytuacji gdy do każdego z silników antywirusowych, został dodany jedynie w pełni darmowy silnik ClamAV. Taki tandem potrafił podnieść skuteczność całości nawet o 24% dla jednotygodniowych aplikacji malware!
Pomijając problemy licencyjne, problemy związane z instalacją oprogramowania na centralnym serwerze, sam pomysł przypadł mi szalenie do gustu. Niejednokrotnie podkreślałem, że antywirus antywirusowi nierówny, a walka pomiędzy przestępcami, a firmami antywirusowymi to nieustający pościg. Co ciekawe grupa ta planuje zająć się podobną metodologią przy systemach IDS/IPS czy walce z phishingiem. Zobaczymy co z tego wyjdzie, a wyjdzie na pewno ciekawie…
A na zakończenie, krótki cytat z piosenki zespołu Włochaty:
Możesz Działać Sam Ale W Grupie Zrobisz Więcej,
Wiele Kamieni Wywołuje Lawinę,
Wiele Kropel Wody Tworzy Falę
Pojedynczo Żadna…
Źródło: http://www.eecs.umich.edu/fjgroup/cloudav/
http://www.eecs.umich.edu/fjgroup/pubs/cloudav-usenix08.pdf
2 komentarze do
18 sierpnia, 2008 o godzinie 02:57
Zdecydowanie zwieksza sie mozliwosc false positives. Moze lepiej generowac na podstawie pliku jakis hash/sygnature i sprawdzac czy znajduje sie w bazie niz wysylac calosc? antywiry i tak kuleja przy analizowaniu exepackerow czy polimorficznych wirusow (w wielu przypadkach konieczne jest aktualizowanie calego av engine przy dobrze naklikanym wirze – dodanie funkcji C ktora go dokladnie przeanalizuje). Generalnie dzisiejsza koncepcja antywirusow sie nie sprawdza, sposobow ominiecia jest mnostwo. 6+ za newsa i cytat wlochatego :)
19 sierpnia, 2008 o godzinie 03:27
Jak wykazują badania tej grupy na przykładach tysięcy próbek z życia wziętych, przy odpowiednio dobranych parametrach (ilości silników i limitu, od którego polegamy na rozpoznaniu) możemy zmniejszyć false positives i zwiększyć efektywność wykrywania.
W pierwszej kolejności sygnatura jest sprawdzana w lokalnym repozytorium, następnie sygnatura jest przesyłana przez sieć do systemu centralnego i dopiero jeśli system centralny odpowie, że nie posiada informacji na temat tego programu – aplikacja jest przesyłana do skanowania.
Co do ominięcia – masz rację :] patrz post o zawodach Race to Zero…