31 stycznia 2011
W jaki sposób antywirusy rozpoznają złośliwe programy?
poniedziałek, stycznia 31, 2011 | Autor:
\m/ojtek

Większość użytkowników programów antywirusowych praktycznie w ogóle nie zdaje sobie sprawy z tego, w jaki sposób ich oprogramowanie ochronne radzi sobie z lokalizowaniem potencjalnych zagrożeń. Choćby podstawowa wiedza z tego zakresu jest jednak bardzo przydatna, bowiem pozwoli nam na lepsze zrozumienie słabych punktów dzisiejszego oprogramowania antywirusowego, a nawet realnych zagrożeń związanych z ich codziennym użytkowaniem! Wszystko to powinno nam więc pozwolić na bardziej świadome stosowanie dzisiejszych technologii ochronnych.
Najważniejszą częścią każdego dzisiejszego programu antywirusowego (oprócz tzw. silnika) jest baza sygnatur wirusów. Sygnatury wirusów to pewne (zazwyczaj bardzo zwięzłe) informacje, które pozwalają na w miarę jednoznaczne zidentyfikowanie danego typu lub nawet całej rodziny wirusów. Najpopularniejsze obecnie trzy typy sygnatur, to sygnatury powstałe z wykorzystaniem funkcji skrótu, sygnatury (wzorce) bajtowe oraz sygnatury heurystyczne. Spójrzmy pokrótce na wady oraz zalety wspomnianych metod identyfikowania potencjalnych zagrożeń.
Najprostszą oraz najłatwiejszą do praktycznego zastosowania metodą tworzenia sygnatur złośliwego oprogramowania jest oczywiście wykorzystanie do tego celu popularnych funkcji skrótu (np. MD5). Tzw. skrót (hash) powstaje w wyniku zastosowania matematycznej funkcji, która to w praktyce pozwala na przyporządkowanie dowolnie dużej liczbie (czyli np. dowolnemu programowi lub danym o dowolnej wielkości) pewnej stosunkowo niewielkiej wartości o ustalonym rozmiarze. Tak utworzony skrót dla znanego już złośliwego programu pozwala w przyszłości na w miarę jednoznaczne zidentyfikowanie danego wirusa.
Niestety zastosowanie tego typu sygnatur jest obarczone sporymi wadami. Nawet najdrobniejsza zmiana w kodzie złośliwego oprogramowania (nowy wariant wirusa, malware polimorficzny, itp.) oznacza, że stara sygnatura nie wykryje już nowych wersji wirusa. Poza tym, kolizje funkcji skrótu (czyli przypadki, gdy dla różnych wiadomości lub programów otrzymamy te same skróty) potencjalnie mogą być przyczyną bardzo niebezpiecznych dla naszego systemu wykryć fałszywych. Wszystko to powoduje, że rozwiązania antywirusowe w żadnym razie nie mogą polegać jedynie na tego typu sygnaturach.
Pewnym rozwiązaniem w przypadku malware'u polimorficznego lub złośliwych plików zawierających zmienne dane może być natomiast tzw. fuzzy hashing. Metody te generalnie pozwalają na utworzenie wspólnej sygnatury dla różnych danych wejściowych, które to jednak zawierają pewne cechy wspólne (np. programy zawierające wspólne fragmenty kodu). Tego typu metody są jednak dość wymagające pod względem obliczeniowym oraz nie gwarantują wcale bardzo dużej skuteczności. Wszystkich zainteresowanych tą tematyką zachęcam do zapoznania się z projektem ssdeep, w ramach którego powstał program implementujący metodę generowania skrótów CTPH (ang. Context Triggered Piecewise Hashes).
Kolejnym popularnym sposobem generowania sygnatur złośliwego oprogramowania jest wykorzystywanie do tego celu pewnych wybranych sekwencji bajtów obecnych w złośliwym kodzie lub w wykorzystywanych przez niego danych. Identyczne wzorce bajtowe możemy zazwyczaj odnaleźć we wszystkich wariantach danego złośliwego programu, dlatego też metoda ta jest w praktyce dość skuteczna w walce z całymi rodzinami wirusów. Natomiast prostota tej metody sprawia, że jest ona wykorzystywana praktycznie od zarania antywirusowych dziejów, aż po dziś dzień. Oczywiście metoda ta również może generować wykrycia fałszywe. Jeśli założymy, że sygnatura (wzorzec bajtowy) pewnego wirusa to "FF 5c 0c 4d c2 21 1d 18", to oczywiście dowolny plik (nawet najzwyklejszy plik tekstowy) zawierający taki ciąg bajtów będzie generował alert antywirusowy.
Kolejnym popularnym sposobem generowania sygnatur złośliwego oprogramowania jest wykorzystywanie do tego celu pewnych wybranych sekwencji bajtów obecnych w złośliwym kodzie lub w wykorzystywanych przez niego danych. Identyczne wzorce bajtowe możemy zazwyczaj odnaleźć we wszystkich wariantach danego złośliwego programu, dlatego też metoda ta jest w praktyce dość skuteczna w walce z całymi rodzinami wirusów. Natomiast prostota tej metody sprawia, że jest ona wykorzystywana praktycznie od zarania antywirusowych dziejów, aż po dziś dzień. Oczywiście metoda ta również może generować wykrycia fałszywe. Jeśli założymy, że sygnatura (wzorzec bajtowy) pewnego wirusa to "FF 5c 0c 4d c2 21 1d 18", to oczywiście dowolny plik (nawet najzwyklejszy plik tekstowy) zawierający taki ciąg bajtów będzie generował alert antywirusowy.
Współczesne programy antywirusowe wykorzystują również sygnatury heurystyczne. Generalnie mianem metod heurystycznych określa się w przypadku antywirusów wszystkie inne metody wykrywania zagrożeń, oprócz powyższych tradycyjnych metod sygnaturowych. Metody heurystyczne stanowią najbardziej skomplikowaną część arsenału każdego antywirusa. Ponadto praktycznie każdy producent antywirusów rozwija własne zastrzeżone algorytmy heurystyczne i właśnie na tym polu w największym stopniu może się wykazać swą innowacyjnością i potencjałem (tradycyjne sygnatury są zazwyczaj niemal identyczne w przypadku wielu różnych producentów -- znane jest nawet zjawisko wymieniania się tradycyjnymi sygnaturami z innymi producentami).
W praktyce heurystyczne metody wykrywania wirusów mogą się sprowadzać przykładowo do śledzenia wywołań API, zastosowania sand-boxingu połączonego ze śledzeniem zachowań poszczególnych programów, śledzenia anomalii występujących w systemie operacyjnym oraz systemie plików i wielu innych podobnych technik. W praktyce więc, sygnatura heurystyczna może przykładowo przyjąć formę kilku warunków śledzących wystąpienie sekwencji określonych wywołań API, które są charakterystyczne dla jakiejś rodziny wirusów lub nawet całej klasy złośliwego oprogramowania. Przykładowo dla złośliwego programu znanego jako Poison Ivy, heurystyczna sygnatura może mieć następującą postać:
Rule A
An API call to RtlMoveMemory with a string of "SOFTWARE\Classes\http\shell\open\commandV"
Rule B
An API call to CreateMutexA with a string of ")!VoqA.I4"
Rule C
An API call to GetSystemDirectory
if ( Rule A then Rule B then Rule C )
then
Process = PoisonIvy
Mimo, że metody heurystyczne dają nam pewną nadzieję na wykrycie nieznanych do tej pory zagrożeń, to oczywiście nie dają nam absolutnie żadnej gwarancji na stuprocentową skuteczność wykrywania oraz nie są wolne od zagrożenie generowania fałszywych alarmów.
Wiedząc już co nieco o metodach stosowanych przez współczesne antywirusy w celu wykrycia obecności złośliwego oprogramowania, możemy już teraz być pewni, że zapewnienia producentów tego typu oprogramowania o niemal całkowitej nieomylności ich produktów są wyssane z palca. Absolutnie żadne rozwiązanie antywirusowe nie daje nam obecnie gwarancji na obronę przed każdą infekcją. Jak również mogliśmy się przekonać, metody stosowane w celu wykrycia złośliwego oprogramowania są niejednokrotnie dość wymagające obliczeniowo, co z kolei tłumaczy znane chyba każdemu użytkownikowi antywirusów spowolnienie działania całego objętego ochroną systemu...
Wniosek? Współczesne programy antywirusowe są całkiem skuteczne i zazwyczaj w przypadku swobodnego surfowania oraz pobierania rozmaitości z Internetu, warto jednak z nich korzystać. Zawsze należy jednak również pamiętać o ich ograniczeniach, a nawet realnych zagrożeniach związanych z ich codziennym wykorzystaniem.
Wyślij nowy komentarz
Comments by IntenseDebate
Odpowiedz jako Gość, lub zaloguj się:
WróćPołączony jako (Wyloguj się)
Nie wyświetla się publicznie.
Publikowanie anonimowe.
W jaki sposób antywirusy rozpoznają złośliwe programy?
2011-01-31T00:01:00+01:00
\m/ojtek
Bezpieczeństwo danych|Bezpieczeństwo systemów operacyjnych|Obrona - Atak|
Subskrybuj:
Komentarze do posta (Atom)
Wyszukaj w HCSL:
Subskrybuj:
Najpopularniejsze artykuły wszech czasów:
- Urządzenia do kopiowania kart płatniczych
- Co tak naprawdę ujawniasz w Internecie?
- Dlaczego należy zasłaniać klawiaturę bankomatu?
- Publiczna wiadomość z ukrytym przekazem
- Przyszłość antywirusów jest jasna
- Sposób na obejście internetowych blokad
- Superbezpieczne hasła na... żółtej karteczce
- Funkcje sprzętowego kasowania danych w HDD!
- 12-latek odkrył krytyczną lukę w Firefoksie
- Przestępstwo nie popłaca
- Czy jesteśmy inwigilowani przez chiński sprzęt?
- Gotowy zestaw do podsłuchiwania GSM
- Jak działa internetowa mafia?
- Uwaga na nowy rodzaj ataków phishingowych!
- Microsoftowy poradnik dla organów ścigania!
- Polski super-bezpieczny system Qubes OS
- Dane wieczyście dostępne
- Pierwszy atak samochodowych crackerów
- Pliki PDF zdolne do wykonania dowolnego kodu
- Polskie służby współpracują z firmą Google?
- Więzienie za odmowę ujawnienia hasła
- Podrzucanie dziecięcej pornografii
- Zapomniany film o hakerach
- Łamanie haseł w Windows Vista i 7