Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Ewolucja technologii wykorzystywanych do wykrywania szkodliwego kodu

Tagi:

Alisa Shevchenko
Analityk wirusów, Kaspersky Lab

Artykuł ten zawiera przegląd metod wykorzystywanych do wykrywania szkodliwego kodu; powiązań funkcjonalnych (do pewnego stopnia również chronologicznych) między tymi metodami; oraz ich funkcji technologicznych i stosowanych. Wiele technologii i zasad opisanych w tym artykule nadal jest aktualnych, nie tylko w świecie antywirusowym, ale również w szerszym kontekście systemów bezpieczeństwa komputerowego. W tekście nie uwzględniono niektórych technologii wykorzystywanych w branży antywirusowej, takich jak rozpakowywanie spakowanych programów oraz strumieniowe wykrywanie sygnaturowe.

Pierwsza technologia wykrywania szkodliwego oprogramowania opierała się na sygnaturach: segmentach kodu, które służą jako unikatowe identyfikatory poszczególnych szkodliwych programów. Wraz z ewolucją wirusów technologie służące do ich wykrywania stawały się coraz bardziej złożone. Zaawansowane technologie (heurystyka oraz analizatory zachowań) można wspólnie określić jako metody wykrywania nieopierające się na sygnaturach.

Mimo że tytuł tego artykułu sugeruje, że zostanie tu omówione całe spektrum technologii wykrywania szkodliwego oprogramowania, jego autorzy skoncentrowali się głównie na technologiach, które nie są oparte na sygnaturach, ponieważ sygnatury są prymitywne i powtarzalne i nie stanowią interesującego tematu. Ponadto, powszechnie wiadomo, na czym polega skanowanie sygnaturowe, natomiast większość użytkowników nie posiada gruntownej wiedzy o działaniu technologii, które nie są oparte na sygnaturach. W artykule wyjaśniono takie terminy jak "heurystyka", "wykrywanie proaktywne", "wykrywanie behawioralne" i "HIPS" oraz przedstawiono zalety i wady takich technologii. Celem tego artykułu, podobnie jak opublikowanego niedawno tekstu "Ewolucja technologii autoochrony szkodliwego oprogramowania", jest usystematyzowanie i obiektywne zbadanie pewnych kwestii związanych ze szkodliwym kodem oraz systemami ochrony przed szkodliwymi programami. Artykuły z tej serii są skierowane do czytelników, którzy posiadają podstawową wiedzę na temat technologii antywirusowych, ale nie są ekspertami w tej dziedzinie.


Systemy obrony szkodliwego oprogramowania: model

Posłużmy się poniższym modelem, aby wyjaśnić, w jaki sposób działają technologie wykrywania szkodliwego oprogramowania.

Każda technologia ochrony składa się z dwóch komponentów: technicznego i analitycznego. Mimo że rozdział tych komponentów na poziomie modułu czy algorytmu może być niemożliwy, różnią się one od siebie pod względem funkcji.

Komponent techniczny to zbiór funkcji i algorytmów programu, które dostarczają dane analizowane następnie przez komponent analityczny. Dane te mogą mieć postać sekwencji bajtów w pliku, ciągów tekstowych wewnątrz pliku, pojedynczej akcji programu uruchomionego w systemie operacyjnym lub pełnej sekwencji takich akcji.

Komponent analityczny działa jako system podejmowania decyzji. Składa się z algorytmu, który analizuje dane, a następnie wydaje werdykt dotyczący tych danych. Następnie program antywirusowy (lub inne oprogramowanie bezpieczeństwa) podejmuje działanie na podstawie tego werdyktu oraz polityki bezpieczeństwa programu: powiadamia użytkownika, pyta o dalsze instrukcje, umieszcza plik w kwarantannie, blokuje nieautoryzowane działania programu itd.

Użyjmy tego modelu, aby zbadać klasyczne metody oparte na wykrywaniu sygnaturowym. System, który uzyskuje dane o systemie plików, plikach i zawartości plików działa jako komponent techniczny. Komponent analityczny jest prostą operacją, która porównuje sekwencje bajtów. Ogólnie mówiąc, kod pliku stanowi dane wejściowe dla komponentu analitycznego; dane wyjściowe to werdykt określający, czy dany plik jest szkodliwy czy nie.

Stosując powyższy model, każdy system ochrony można traktować jak złożoną liczbę - coś, co łączy dwa oddzielne składniki, tj. komponent techniczny i analityczny. Ten sposób analizowania technologii ułatwia dostrzeżenie związków między tymi komponentami, jak również ich plusów i minusów. W szczególności, zastosowanie takiego modelu ułatwia zrozumienie działania pewnych technologii. W artykule tym omówimy, w jaki sposób heurystyka jako metoda podejmowania decyzji stanowi jeden z rodzajów komponentu analitycznego, nie zaś całkowicie niezależną technologię. HIPS (Host Intrusion Prevention System) będzie uważany jedynie za rodzaj komponentu technicznego, sposób gromadzenia danych. Terminy te nie wykluczają się nawzajem, nie charakteryzują również w pełni opisywanych przez siebie technologii: możemy omawiać heurystykę bez dokładnego określenia, jakie dane są poddawane analizie heurystycznej, możemy również mówić o systemie HIPS, zupełnie nie znając zasad, jakimi kieruje się system, wydając werdykt.

Technologie te zostaną omówione bardziej szczegółowo w indywidualnych sekcjach. Na początek przyjrzyjmy się zasadom leżącym u podstaw każdej technologii wykorzystywanej w celu szukania szkodliwego kodu: zarówno technicznym (metody gromadzenia danych) jak i analitycznym (metody przetwarzania zebranych danych).


Komponent techniczny

Komponent techniczny systemu wykrywania szkodliwego oprogramowania zbiera dane, które zostaną wykorzystane do analizy sytuacji.

Z jednej strony, szkodliwy program jest plikiem o specyficznej zawartości, z drugiej strony, zbiorem akcji, które mają miejsce w systemie operacyjnym. Jest to również ogólna suma końcowych rezultatów w systemie operacyjnym. Z tego względu identyfikacja programu może mieć miejsce na więcej niż jednym poziomie: poprzez sekwencję bajtów, poprzez akcję, poprzez wpływ programu na system operacyjny itd.

Poniżej przedstawiono wszystkie sposoby, które mogą zostać wykorzystane do zbierania danych w celu zidentyfikowania szkodliwych programów:

  1. traktowanie pliku jako zbioru bajtów
  2. emulowanie1 kodu programu
  3. uruchomienie programu w piaskownicy (sandbox)2 (oraz wykorzystanie innych podobnych technologii wizualizacji)
  4. monitorowanie zdarzeń systemowych
  5. skanowanie w celu wykrycia anomalii systemowych

Kolejność wymienionych metod odzwierciedla coraz większy stopień abstrakcji podczas pracy z kodem. Poziom abstrakcji wskazuje tutaj, w jaki sposób traktowany jest uruchomiony program: jako oryginalny obiekt cyfrowy (zbiór bajtów), jako zachowanie (bardziej abstrakcyjny poziom niż zbiór bajtów) lub jako zbiór rezultatów w systemie operacyjnym (większy stopień abstrakcji niż zachowanie). Ewolucja technologii antywirusowej wyglądała mniej więcej tak: praca z plikami, praca ze zdarzeniami za pośrednictwem pliku, praca z plikiem za pośrednictwem zdarzeń oraz praca z samym środowiskiem. Dlatego też powyższa lista oprócz metod ilustruje również chronologię.

Trzeba podkreślić, że wymienione wyżej metody nie tyle stanowią osobne technologie co teoretyczne stadia w nieustannej ewolucji technologii stosowanych do zbierania danych, które są następnie wykorzystywane do wykrywania szkodliwych programów. Technologie stopniowo ewoluują i przenikają się nawzajem. Na przykład emulacja może znajdować się bliżej punktu 1 na liście, jeżeli jest implementowana w taki sposób, że tylko częściowo traktuje plik jako zbiór bajtów. Lub może być bliżej punktu 3, jeżeli mówimy o pełnej wirtualizacji funkcji systemu.

Metody te zostały szczegółowo omówione poniżej.

Skanowanie plików

Pierwsze programy antywirusowe analizowały kod pliku traktowany jako sekwencje bajtów. W rzeczywistości, słowo "analizować" nie jest tu prawdopodobnie najlepszym określeniem, ponieważ metoda ta polegała po prostu na porównywaniu sekwencji bajtowych ze znanymi sygnaturami. W tym miejscu jednak interesuje nas techniczny aspekt tej technologii, mianowicie uzyskiwanie danych w ramach szukania szkodliwych programów. Dane te są wysyłane do komponentu podejmowania decyzji, wydobywane z plików i stanowią zbiór bajtów ułożonych w określony sposób.

Typową cechą tej metody jest to, że program antywirusowy pracuje tylko ze źródłowym kodem bajtowym programu i nie bierze pod uwagę zachowania programu. Mimo że metoda ta jest stosunkowo stara, wszystkie współczesne programy antywirusowe wykorzystują ją w ten czy inny sposób - nie jako jedyną czy główną metodę, ale uzupełnienie innych technologii.

Emulacja

Technologia emulacji stanowi etap pośredni pomiędzy przetwarzaniem programu jako kolekcji bajtów a przetwarzaniu programu jako określonej sekwencji akcji.

Emulator rozbija kod bajtowy programu na polecenia, a następnie uruchamia każde polecenie w wirtualnym środowisku, które stanowi kopię środowiska komputerowego. Umożliwia to rozwiązaniom bezpieczeństwa obserwowanie zachowania programu bez narażania na niebezpieczeństwo systemu operacyjnego czy danych użytkownika (co miałoby miejsce w przypadku uruchomienia programu w prawdziwym, tj. niewirtualnym środowisku).

Emulator jest pośrednim stopniem pod względem poziomów abstrakcji w pracy z programem. Ogólnie rzecz biorąc, można powiedzieć, że emulator, chociaż pracuje z plikiem, analizuje wydarzenia. Emulatory są wykorzystywane w wielu (prawdopodobnie nawet wszystkich) głównych produktach antywirusowych, zazwyczaj albo jako dodatek do podstawowego silnika plikowego niższego poziomu albo jako zabezpieczenie dla silnika wyższego poziomu (jak piaskownica czy monitorowanie systemu).

Wirtualizacja: piaskownica

Wirtualizacja, która wykorzystywana jest w tak zwanych piaskownicach, stanowi logiczne rozszerzenie emulacji. Piaskownica pracuje z programami, które są uruchamiane w prawdziwym środowisku, jednak środowisko to jest ściśle kontrolowane. Samo słowo "piaskownica" całkiem dokładnie obrazuje, w jaki sposób działa ta technologia. Piaskownica to ograniczona przestrzeń, w której dziecko może się bezpiecznie bawić. W kontekście bezpieczeństwa informacji system operacyjny reprezentuje świat, natomiast szkodliwy program hałaśliwe dziecko. Ograniczenia nałożone na dziecko to zestaw reguł dotyczących interakcji z systemem operacyjnym. Reguły te mogą obejmować zakaz modyfikowania foldera systemu operacyjnego lub ograniczenie pracy z systemem plików poprzez częściową emulację. Na przykład, do programu uruchomionego w piaskownicy może zostać wprowadzona wirtualna kopia foldera systemowego, tak aby modyfikacje wprowadzone do tego foldera przez badany program nie wpływały na działanie systemu operacyjnego. W ten sposób można zwirtualizować każdy punkt kontaktu między programem a jego środowiskiem (taki jak system plików i rejestr systemowy).

Granica między emulacją a wirtualizacją jest cienka, ale wyraźna. Pierwsza technologia jest środowiskiem, w którym program jest uruchamiany (i całkowicie kontrolowany podczas jego działania). Druga wykorzystuje system operacyjny jako środowisko i kontroluje tylko interakcję między systemem operacyjnym a programem. W przeciwieństwie do emulacji, w wirtualizacji środowisko znajduje się na osobnym, ale równym poziomie co technologia.

Ochrona wykorzystująca opisany wyżej rodzaj wirtualizacji nie pracuje z plikami, ale z zachowaniem programu - i nie pracuje z samym systemem.

Piaskownica - podobnie jak emulacja - nie jest powszechnie wykorzystywana w produktach antywirusowych głównie dlatego, że wymaga dużej ilości zasobów. Łatwo poznać, kiedy program antywirusowy wykorzystuje piaskownicę, ponieważ zawsze będziemy obserwować opóźnienie w czasie - pomiędzy momentem uruchomienia programu a momentem, gdy faktycznie zacznie działać (lub w przypadku wykrycia szkodliwego oprogramowania zaobserwujemy opóźnienie między uruchomieniem programu a powiadomieniem o wykryciu). Obecnie silniki z piaskownicą wykorzystywane są tylko w garstce produktów antywirusowych. Z drugiej strony, powadzonych jest wiele badań nad sprzętowym wspomaganiem wirtualizacji, co może spowodować, że w niedalekiej przyszłości sytuacja ulegnie zmianie.

Monitorowanie zdarzeń systemowych

Monitorowanie zdarzeń systemowych stanowi bardziej abstrakcyjną metodę zbierania danych, które mogą zostać wykorzystane do wykrywania szkodliwych programów. Emulator lub piaskownica obserwuje każdy program osobno poprzez rejestrowanie wszystkich zdarzeń wygenerowanych w systemie operacyjnym przez uruchomione programy.

Dane są zbierane poprzez przechwytywanie funkcji systemu operacyjnego. Poprzez przechwycenie odwołania do określonej funkcji systemu można uzyskać dokładne informacje o tym, co określony program robi w systemie. Stopniowo monitor zbiera dane statystyczne dotyczące takich czynności i przekazuje je komponentowi analitycznemu w celu analizy.

Technologia ta należy obecnie do najszybciej ewoluujących. Wykorzystywana jest jako komponent w wielu popularnych produktach antywirusowych oraz jako główny komponent w urządzeniach monitorowania systemu (zwanych urządzeniami HIPS lub po prostu HIPS, które obejmują Prevx, CyberHawk oraz wiele innych). Jednak biorąc pod uwagę to, że można obejść każdą formę ochrony, taka metoda wykrywania szkodliwego oprogramowania nie jest najbardziej obiecująca: po tym jak program zostanie uruchomiony w prawdziwym środowisku, zagrożenia znacząco zmniejszają skuteczność ochrony.

Skanowanie w celu wykrycia anomalii systemowych

Jest to najbardziej abstrakcyjna metoda wykorzystywana do zbierania danych o potencjalnie zainfekowanym systemie. Została tutaj omówiona, ponieważ stanowi logiczne rozszerzenie innych metod i wykazuje najwyższy poziom abstrakcji spośród analizowanych w tym artykule technologii.

Metoda ta wykorzystuje następujące właściwości:

  • system operacyjny, razem z programami uruchomionymi w tym systemie, stanowi zintegrowany system;
  • system operacyjny posiada wewnętrzny "status systemu";
  • jeżeli szkodliwy kod zostanie uruchomiony w środowisku, system będzie miał status "niezdrowy"; taki system różni się od systemu ze statusem "zdrowy", który nie zawiera szkodliwego kodu.

Właściwości te pomagają określić status systemu (oraz czy w systemie jest obecny szkodliwy program) poprzez porównanie statusu ze standardem oraz przeanalizowanie wszystkich oddzielnych parametrów systemu jako osobnej całości.

Aby skutecznie wykryć szkodliwy kod przy użyciu tej metody, potrzebny jest stosunkowo złożony system analityczny. Powstaje wiele pytań: jak należy zdefiniować status "zdrowy"? W jaki sposób różni się on od statusu "niezdrowy"? Jakie oddzielne parametry można śledzić? Jak należy analizować te parametry? Ze względu na swą złożoność technologia ta nadal jest dość słabo rozwinięta. Przejawy jej początkowych stadiów widoczne są w niektórych narzędziach do zwalczania rootkitów, gdzie dokonuje porównań z pewnymi próbkami systemu pobranymi ze standardu (przestarzałe narzędzia, takie jak PatchFinder oraz Kaspersky Inspector) lub pewnymi parametrami (GMER, Rootkit Unhooker).

Interesująca metafora

Analogię dziecka, wykorzystaną w sekcji o piaskownicy, można rozszerzyć. I tak emulator jest jak niania, która nieustannie obserwuje dziecko, aby nie mogło zrobić niczego niewłaściwego. Monitorowanie zdarzeń systemowych można porównać do przedszkolanki, która pilnuje całą grupę dzieci, a wykrywanie anomalii systemowych to jakby danie dzieciom wolnej ręki i prowadzenie rejestru ich ocen. Używając tej metafory, analiza bajtów pliku jest jak planowanie rodziny. I podobnie jak dzieci, technologie te nieustannie się rozwijają.

Komponent analityczny

Stopień złożoności algorytmów podejmowania decyzji jest zróżnicowany. Ogólnie, algorytmy podejmowania decyzji można podzielić na trzy kategorie:

Porównanie proste

W kategorii tej werdykt wydawany jest na podstawie porównania pojedynczego obiektu z dostępną próbką. Wynik porównania jest binarny (tj. "tak" lub "nie"). Przykładem jest identyfikowanie szkodliwego kodu przy użyciu ścisłej sekwencji bajtów. Kolejnym przykładem wyższego poziomu jest identyfikowanie podejrzanego zachowania programu na podstawie pojedynczej akcji podjętej przez taki program (jak stworzenie wpisu w krytycznej sekcji rejestru systemowego lub folderu autorun).

Porównanie złożone

W tym przypadku werdykt wydawany jest na podstawie porównania jednego lub kilku obiektów z odpowiednimi próbkami. Szablony dla tych porównań mogą być elastyczne, a wyniki będą opierać się na prawdopodobieństwie. Przykładem jest identyfikowanie szkodliwego kodu poprzez wykorzystanie kilku sygnatur bajtowych, z których każda jest niesztywna (tj. poszczególne bajty nie są określone). Innym przykładem wyższego poziomu jest identyfikowanie szkodliwego kodu na podstawie funkcji API, które wywoływane są niesekwencyjnie przez szkodliwy kod z określonymi parametrami.

Systemy ekspertowe

W kategorii tej werdykt wydawany jest po złożonej analizie danych. System ekspertowy może zawierać elementy sztucznej inteligencji. Przykładem jest identyfikowanie szkodliwego kodu nie na podstawie ścisłego zestawu parametrów, ale wyników wieloaspektowej oceny wszystkich parametrów jednocześnie.


Prawdziwe technologie w działaniu

Przyjrzyjmy się teraz, w jaki sposób algorytmy wykorzystywane są w poszczególnych technologiach wykrywania szkodliwego oprogramowania.

Zwykle producenci nadają rozwijanym przez siebie nowym technologiom (np. Ochrona Proaktywna w Kaspersky Anti-Virus) nowe nazwy. Jest to dobra praktyka, ponieważ poszczególne technologie nie zostaną automatycznie zaszufladkowane do wąskich kategorii technicznych. Mimo to stosowanie ogólniejszych terminów takich jak "heurystyczny", "emulacja", "piaskownica" oraz "bloker zachowań" jest nieuniknione, jeżeli chcemy opisać technologie w dostępny, stosunkowo nietechniczny sposób.

Tutaj zaczyna się gąszcz terminologiczny. Terminy te nie posiadają wyraźnych znaczeń. Ten sam termin może być różnie interpretowany przez różne osoby. Co więcej, definicje stosowane przez autorów tak zwanych "przystępnych opisów" często nie pokrywają się z tymi podawanymi przez ekspertów. To wyjaśnia, dlaczego opisy technologii na internetowych stronach ich twórców są niekiedy naszpikowane terminologią techniczną, nie wyjaśniają jednak, w jaki sposób działa ta technologia, ani nie podają żadnych istotnych informacji o niej.

Na przykład niektórzy producenci oprogramowania antywirusowego twierdzą, że ich produkty są wyposażone w HIPS, technologię proaktywną lub technologię niesygnaturową. Użytkownik mógłby rozumieć termin "HIPS" jako monitor analizujący zdarzenia systemowe w celu znalezienia szkodliwego kodu, co może nie być prawdą. Opis ten mógłby znaczyć prawie wszystko, np. to że silnik emulatora jest wyposażony w system analizy heurystycznej (zobacz poniżej). Taka sytuacja powstaje nawet częściej, gdy rozwiązanie określane jest jako heurystyczne bez podawania dalszych szczegółów.

Nie znaczy to, że twórcy próbują oszukać klientów. Prawdopodobnie osoby, które przygotowują opis technologii, mylą terminy. To oznacza, że opisy technologii przeznaczone dla użytkowników końcowych mogą nie wyjaśniać dokładnie, w jaki sposób działa technologia, i że klienci powinni być ostrożni, jeżeli podczas wyboru rozwiązania bezpieczeństwa opierają się na opisach.

Przyjrzyjmy się teraz najpowszechniejszym terminom w technologiach antywirusowych (zobacz rysunek 1).

Istnieje niewiele odmian znaczenia terminu wykrywanie oparte na sygnaturach: z technicznego punktu widzenia, oznacza on pracę z kodem bajtowym plików, z analitycznego punktu widzenia, jest to prymitywny sposób przetwarzania danych, zazwyczaj z wykorzystaniem prostego porównania. Jest to najstarsza, ale najbardziej niezawodna technologia. Dlatego mimo znaczących kosztów ponoszonych w związku z aktualizacją baz danych, technologia ta nadal jest wykorzystywana we wszystkich programach antywirusowych.

Nie istnieje również wiele możliwych interpretacji terminów emulator oraz piaskownica. W technologii tego typu komponentem analitycznym może być algorytm dowolnej złożoności, od prostego porównania do systemów ekspertowych.

Termin heurystyczny jest mniej oczywisty. Według Ozhegova-Shvedovaya, rosyjskiego słownika, "heurystyka" to połączenie metod badawczych potrafiących wykrywać coś, co było wcześniej nieznane". Heurystyka to przede wszystkim rodzaj komponentu analitycznego w oprogramowaniu zabezpieczającym, a nie wyraźnie zdefiniowana technologia. Poza specyficznym kontekstem, pod względem rozwiązywania problemów przypomina ona "niejednoznaczną" metodę wykorzystywaną do rozwiązywania niejednoznacznego zadania.

Kiedy zaczęły wyłaniać się technologie antywirusowe - w tym czasie po raz pierwszy użyto słowa "heurystyczny" - termin ten oznaczał osobną technologię: taką, która identyfikowała wirusa przy użyciu kilku elastycznie przypisanych szablonów bajtowych, tj. systemu z komponentem technicznym (np. praca z plikami) oraz komponentem analitycznym (przy użyciu złożonego porównania). Obecnie termin heurystyczny stosowany jest zwykle w szerszym znaczeniu na oznaczenie technologii wykorzystywanej w celu znalezienia nieznanych szkodliwych programów. Innymi słowy, mówiąc o wykrywaniu heurystycznym, twórcy mają na myśli system ochrony z komponentem analitycznym, który wykorzystuje wyszukiwanie rozmyte w celu znalezienia rozwiązania (to mogłoby odpowiadać komponentowi analitycznemu, który wykorzystuje złożoną analizę lub system ekspertowy (zobacz rysunek 1). Podstawa technologiczna oprogramowania służącego do ochrony, tj. metoda, jaką wykorzystuje do gromadzenia danych w celu dalszej analizy, może być różna, od pracy z plikami po pracę ze zdarzeniami lub statusem systemu operacyjnego.

Wykrywanie behawioralne oraz wykrywanie proaktywne to terminy o jeszcze mniej jednoznacznych znaczeniach. Mogą odnosić się do szeregu różnych technologii, od heurystyki po monitorowanie zdarzeń systemowych.

Termin HIPS często wykorzystywany jest w opisach technologii antywirusowych, nie zawsze jednak poprawnie. Mimo że skrót ten oznacza Host Intrusion Prevention System, nie odzwierciedla to podstawowej natury tej technologii pod względem ochrony antywirusowej. W tym kontekście technologia ta jest bardzo wyraźnie określona: HIPS to rodzaj ochrony, która z technicznego punktu widzenia opiera się na monitorowaniu zdarzeń systemowych. Komponent analityczny oprogramowania służącego do ochrony może być dowolnego typu, od występujących równocześnie osobnych podejrzanych zdarzeń, po złożoną analizę sekwencji akcji programu. W odniesieniu do produktu antywirusowego HIPS może oznaczać wiele różnych rzeczy: prymitywną ochronę niewielkiej liczby kluczy rejestru, system, który dostarcza powiadomienia o próbach uzyskania dostępu do pewnych folderów, bardziej złożony system analizujący zachowanie programu lub nawet inny rodzaj technologii wykorzystującej monitorowanie zdarzeń systemowych jako podstawę.


Różne metody wykrywania szkodliwego oprogramowania: plusy i minusy

Jeżeli przeanalizujemy technologie służące do ochrony przed szkodliwym oprogramowaniem nie pojedynczo ale grupowo z wykorzystaniem modelu przedstawionego na początku artykułu, wyłoni się następujący obraz.

Komponent techniczny technologii jest odpowiedzialny za to, jak wiele zasobów wymaga program (a tym samym, jak szybko działa), za bezpieczeństwo oraz ochronę.

Wymagania programu dotyczące zasobów to udział czasu procesora i pamięci RAM wymaganych ciągle lub okresowo w celu zapewnienia ochrony. Jeżeli oprogramowanie wymaga wielu zasobów, może spowolnić działanie systemu. Emulatory działają wolno: niezależnie od implementacji, każda emulowana instrukcja tworzy kilka instrukcji w sztucznym środowisku. To samo dotyczy wirtualizacji. Monitory zdarzeń systemowych również spowalniają systemy, jednak to w jakim stopniu to robią, zależy od implementacji. Jeżeli chodzi o wykrywanie plików oraz wykrywanie anomalii systemowych, obciążenie systemu również całkowicie zależy od implementacji.

Bezpieczeństwo to poziom ryzyka, na jakie narażony będzie system operacyjny oraz dane użytkownika podczas procesu identyfikacji szkodliwego kodu. Ryzyko występuje zawsze, gdy szkodliwy kod jest uruchamiany w systemie operacyjnym. Architektura monitorów zdarzeń systemowych oznacza, że szkodliwy kod musi zostać uruchomiony, zanim będzie mógł zostać wykryty, podczas gdy emulatory i skanery plikowe mogą wykrywać szkodliwy kod, zanim zostanie on wykonany.

Ochrona odzwierciedla stopień, w jakim technologia może być podatna na zagrożenia, lub jak łatwo szkodliwy program może utrudnić wykrywanie. Zwalczanie wykrywania plików jest bardzo łatwe: wystarczy spakować plik, uczynić go polimorficznym lub użyć technologii rootkit w celu zamaskowania pliku. Trochę trudniej jest obejść emulację, nadal jest to jednak możliwe; twórca wirusów musi wbudować do kodu szkodliwego oprogramowania jeden z szeregu różnych trików. Z drugiej strony, szkodliwemu oprogramowaniu trudno jest ukryć się przed monitorem zdarzeń systemowych, ponieważ zamaskowanie zachowania jest prawie niemożliwe.

Można powiedzieć, że im mniej abstrakcyjna jest forma ochrony, tym bezpieczniejsza. I odwrotnie, im mniej abstrakcyjna forma ochrony, tym łatwiej szkodliwe oprogramowanie będzie mogło ją obejść.

Aspekt analityczny technologii jest odpowiedzialny za proaktywność (oraz jej wpływ na konieczność częstych aktualizacji antywirusowych baz danych), współczynnik fałszywych trafień oraz poziom zaangażowania użytkownika.

Proaktywność określa zdolność technologii do wykrywania nowych, niezidentyfikowanych jeszcze szkodliwych programów. Na przykład, najprostszy rodzaj analizy (proste porównanie) oznacza najmniej proaktywne technologie, takie jak wykrywanie sygnaturowe: takie technologie potrafią wykrywać tylko znane szkodliwe programy. Im bardziej złożony jest system analityczny, tym bardziej jest on proaktywny. Proaktywność ma bezpośredni związek z tym, jak często należy przeprowadzać aktualizację. Na przykład, bazy sygnatur muszą być często uaktualniane; bardziej złożone systemy heurystyczne pozostają skuteczne dłużej, a ekspertowe systemy analityczne mogą miesiącami skutecznie działać bez aktualizacji.

Ze złożonością komponentu analitycznego technologii wiąże się bezpośrednio również współczynnik fałszywych trafień. Jeżeli szkodliwy kod jest wykrywany przy użyciu dokładnie zdefiniowanej sygnatury lub sekwencji akcji, to o ile sygnatura będzie wystarczająco długa, identyfikacja będzie bezwzględna/zupełna. Sygnatura będzie tylko wykrywała określony szkodliwy program, nie będzie wykrywała innych. Im więcej programów próbuje zidentyfikować algorytm wykrywania, tym większe prawdopodobieństwo wykrycia programów, które nie są szkodliwe.

Poziom zaangażowania użytkownika to stopień, w jakim niezbędny jest udział użytkownika w definiowaniu polityki bezpieczeństwa: tworzeniu reguł, wyjątków oraz czarnych i białych list. Odzwierciedla on również stopień, w jakim użytkownik uczestniczy w procesie wydawania werdyktów poprzez potwierdzanie lub odrzucenie podejrzeń systemu analitycznego. Poziom zaangażowania użytkownika zależy od implementacji, zazwyczaj jednak im bardziej analiza odbiega od prostego porównania, tym więcej będzie fałszywych trafień wymagających skorygowania. Z kolei korygowanie fałszywych trafień wymaga danych wprowadzonych przez użytkownika.

Podsumowując, im bardziej złożony jest system analityczny, tym silniejsza ochrona antywirusowa. Jednak większa złożoność oznacza większą liczbę fałszywych trafień, co można zrekompensować większą ilością danych wprowadzanych przez użytkownika.

Opisany wyżej model teoretycznie ułatwia ocenę wad i zalet każdej technologii. Weźmy przykład emulatora ze złożonym komponentem analitycznym. Ta forma ochrony jest bardzo bezpieczna (ponieważ nie wymaga uruchomienia skanowanego pliku), jednak pewien odsetek szkodliwych programów zostanie niewykryty, albo na skutek sztuczek wykorzystywanych przez szkodliwy kod w celu "przechytrzenia" emulatora, albo z powodu nieuniknionych błędów w samym emulatorze. Jednak, ten rodzaj ochrony posiada duży potencjał i jeżeli zostanie ostrożnie zaimplementowany, będzie wykrywał - co prawda wolno - spory odsetek nieznanych szkodliwych programów.


Jak wybrać ochronę nieopartą na sygnaturach

Obecnie większość rozwiązań bezpieczeństwa łączy w sobie kilka różnych technologii. Klasyczne programy antywirusowe często wykorzystują wykrywanie oparte na sygnaturach w połączeniu z pewną formą monitorowania zdarzeń systemowych, emulatora oraz piaskownicy. Tak więc, na co należy zwracać uwagę, wybierając ochronę, która najlepiej odpowiada określonym potrzebom?

Po pierwsze, należy pamiętać, że nie istnieje żadne uniwersalne czy 'najlepsze' rozwiązanie. Każda technologia posiada zarówno zalety jak i wady. Na przykład, monitorowanie zdarzeń systemowych ciągle zabiera dużo czasu procesora, jest to jednak najtrudniejsza metoda do przechytrzenia. Szkodliwe programy mogą obejść proces emulacji poprzez użycie pewnych poleceń w swoim kodzie, jeżeli jednak polecenia te zostaną wykorzystane, szkodliwy kod zostanie wykryty w sposób nienaruszający system. Ponadto proste reguły podejmowania decyzji wymagają zbyt dużo danych wprowadzanych przez użytkownika, który musi odpowiedzieć na wiele pytań, podczas gdy bardziej złożone reguły podejmowania decyzji, które nie wymagają tak wiele danych wprowadzanych przez użytkownika, prowadzą do wielu fałszywych trafień.

Wybierając technologię tak naprawdę wybieramy złoty środek, tzn. decydujemy się na rozwiązanie biorąc pod uwagę określone wymagania oraz warunki. Na przykład osoby, które pracują w warunkach sprzyjających zagrożeniom (niezałatany system, brak restrykcji dotyczących używania dodatków do przeglądarki, skryptów itd.) będą bardzo zainteresowane kwestią bezpieczeństwa i będą posiadały wystarczające zasoby do zaimplementowania odpowiednich środków bezpieczeństwa. Najodpowiedniejszy dla tego rodzaju użytkownika będzie system typu piaskownica z wysokiej jakości komponentem analitycznym. Ten rodzaj systemu oferuje maksymalne bezpieczeństwo, jednak biorąc pod uwagę obecne warunki, zajmie zbyt dużo pamięci RAM oraz czasu procesora, co mogłoby spowolnić działanie systemu operacyjnego poniżej akceptowalnych poziomów. Z drugiej strony, ekspertowi, który chce kontrolować wszystkie krytyczne zdarzenia systemu i zabezpieczyć się przed nieznanymi szkodliwymi programami, wystarczy monitor systemu w czasie rzeczywistym. Ten rodzaj systemu działa stabilnie, nie przeciążając jednak systemu operacyjnego, i wymaga danych wprowadzanych przez użytkownika w celu utworzenia reguł i wyjątków. Ponadto, dla użytkownika, który posiada ograniczone zasoby lub nie chce obciążać systemu ciągłym monitorowaniem, ale chce posiadać opcję tworzenia reguł, najlepsza będzie prosta heurystyka. W końcu wysokiej jakości wykrywanie szkodliwych programów zapewnia nie pojedynczy komponent, ale rozwiązanie bezpieczeństwa jako całość. Złożona metoda podejmowania decyzji może zrekompensować prostsze technologie.

Systemy nie oparte na sygnaturach, wykorzystywane do wykrywania nieznanego wcześniej szkodliwego oprogramowania, można podzielić na dwie kategorie. Pierwsza z nich obejmuje samodzielne systemy HIPS, takie jak Prevx czy Cyberhawk. Do drugiej grupy należą czołowe produkty antywirusowe, które, ewoluując w kierunku większej skuteczności, zaczęły wykorzystywać technologie nieopierające się na sygnaturach. Zalety zarówno jednych jak i drugich są oczywiste: pierwsza kategoria oferuje wysoce wyspecjalizowane rozwiązanie posiadające nieograniczony potencjał jeżeli chodzi o poprawę jakości. Druga wykorzystuje bogate doświadczenie nabyte podczas toczonej na wielu frontach walki ze szkodliwymi programami.

Wybierając nowy produkt, powinniśmy zaufać własnym doświadczeniom oraz wynikom niezależnych testów.


Odsyłacze

Niezależne testy antywirusowe:

Niezależne testy HIPS:

</sup> Emulacja stanowi imitację sposobu działania systemu przy użyciu zasobów innego systemu bez utraty możliwości funkcjonalnych oraz zniekształcania rezultatów. Emulacja jest przeprowadzana przez program i/lub zasoby urządzenia.

2</sup> Piaskownica to środowisko, w którym można bezpiecznie uruchomić program, który został zbudowany na częściowych lub całkowitych ograniczeniach lub emulacji zasobów systemu operacyjnego. Zobacz również http://en.wikipedia.org/wiki/Sandbox.

3 Techniki stosowane do zwalczania emulacji wykorzystują fakt, że emulatory mogą inaczej reagować na pewne polecenia niż procesor. To pozwala szkodliwemu programowi na wykrywanie emulacji i wykonywanie pewnych akcji - na przykład, może on działać w oparciu o alternatywny algorytm.



Źródło:
Kaspersky Lab