Ewolucja technologii wykorzystywanych do wykrywania szkodliwego kodu

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:



1 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 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