Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

W jaki sposób działają programy antywirusowe?

10 czerwca 2013, 08:24 | Teksty | komentarzy 20

Antywirusy są obecnie najpopularniejszym rodzajem oprogramowania ochronnego. Programy tego typu najczęściej kojarzą nam się z rezydentnym monitorem śledzącym w czasie rzeczywistym wszystkie zdarzenia mające miejsce w naszym systemie. Jak to się jednak dzieje, że antywirusy są w stanie w miarę skutecznie rozpoznać tysiące najróżniejszych złośliwych programów, a jednocześnie stosunkowo łatwo można je oszukać?

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 może nam pozwolić na lepsze zrozumienie słabych punktów dzisiejszego oprogramowania antywirusowego, a nawet realnych zagrożeń związanych z ich codziennym użytkowaniem!

Skaner antywirusowy w akcji

Skaner antywirusowy w akcji

Najważniejszą częścią każdego współczesnego 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,
  • 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. 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ą wykryć fałszywych (ang. false positive). 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. 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.

Testowy wirus

Wszyscy producenci antywirusów umówili się, że poniższy (zupełnie niegroźny) ciąg znaków będzie wykrywany w celach testowych przez wszystkie programy antywirusowe jako zagrożenie:

  • X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

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, m.in. za pośrednictwem takich platform, jak VirusTotal).

W praktyce heurystyczne metody wykrywania wirusów mogą się sprowadzać przykładowo do śledzenia wywołań API, zastosowania sandboxingu 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.

Sygnatura heurystyczna może na przykład 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żenia związanego z generowaniem fałszywych alarmów.

Wiedząc już co nieco o metodach stosowanych przez współczesne antywirusy w celu wykrycia złośliwego oprogramowania, możemy już mieć pewność, że zapewnienia producentów tego typu oprogramowania o niemal całkowitej skuteczności i nieomylności ich produktów należy traktować z dużą rezerwą. Również celowe oszukanie programu antywirusowego jest stosunkowo proste, czym jednak zajmiemy się w jednym z kolejnych opracowań.

Reasumując, 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.

Analiza złośliwego oprogramowania

Programy antywirusowe mogą nas jedynie ostrzec przed prawdopodobnym zagrożeniem, chcąc jednak dokładnie zweryfikować intencje potencjalnego złośliwego kodu, musimy dokonać dalszej analizy z wykorzystaniem dodatkowych narzędzi.

– Wojciech Smol, (wojciech.smol<at>sekurak.pl)

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Dzięki za powyższy art! Zawsze to człowiek się czegoś nowego dowie.

    Pytanie, jaki polecasz antywirusów lub pakiet z zaporą? Warto inwestować w Norton Internet Security co roku czy do domowego PC’ta styknie taki COMODO IS?

    Odpowiedz
    • DMati,
      Nie chciałbym polecać żadnego konkretnego rozwiązania, tym bardziej, że już chyba niemal każdy popularniejszy antywirus miał jakąś większą wpadkę (np. przypadki blokowania systemów po fałszywych wykryciach na plikach systemowych, itp.), a obiektywne porównanie skuteczności różnych programów nie jest łatwe.

      Odpowiedz
  2. Jako antywirus typu SOHO to polecam ESET Smart Security. NIS ma wysoką wykrywalność, ale co roku jak testuję gdzieś na stacjach klienckich to jest bez zmian – za wysokie obciążenie.

    Odpowiedz
    • Jimmy Janiak

      Ej Adam, Adam schab jest z krowy?

      Odpowiedz
  3. Dzięki. Przetestują sobie ESETa. Cenowo widzę, że taniej wyjdzie.

    Odpowiedz
  4. dsgvdsfrg

    a ja polecam Comodo Internet Security (ale tylko dla osób posiadających co najmniej malutką wiedzę, potrafiących czytać komunikaty i ewentualnie zmienić ustawienia). Darmowy jest i ma dobrego firewalla (w nowym comodo pozornie nie widać ustawień, ale są, trzeba poszukać i wyskoczy okno z bardzo wieloma ustawieniami, Comodo ma też monitor sieci, widać, które procesy z netu korzystają, choć niektórym wystarczy windowsowy Monitor Zasobów)

    Odpowiedz
  5. Szary

    Również polecam ESETa, nie ma chyba na obecną chwilę nic lepszego i do tego wychodzi naprawdę tanio, bo bez większych problemów można kupić roczną licencję za ~35zł.
    Co do Comodo Internet Security to nie jest to takie cudo jak zachwalają. Cały pakiet działa i spełnia swoją funkcję bardzo dobrze, ale moim zdaniem jest on zdecydowanie bardziej dla ludzi, którzy lubią spędzać czas na konfigurowaniu i doglądaniu swojego AV raz po raz ; )

    Odpowiedz
  6. Pat

    A co koledzy powiecie w temacie KIS, albo Kpure ?

    Używam Kis od paru lat i mi się dobrze spisuje, ale potrafi zamulić kompa przy pobieraniu aktualizacji sygnatur.

    Odpowiedz
  7. Zig

    A ja NIE POLECAM Comodo:
    – nie potrafi obsslugiwac woluminow szyfrowanych (po kazdym podlaczeniu woluminu trzeba od nowa uczyc go konfiguracji),
    -laczy sie z serwerami comodo, mimo teoretycznego zablokowania wszystkich polaczen,
    – stosunkowo trudny w konfiguracji, a dla swiadomego uzytkownika, ktory chce dokladnie wiedziec co sie dzieje i tak jest bezniadziejny, inofrmuje po lebkach i nie ma odpowiednich opcji konfiguracji.

    Odpowiedz
  8. Anka

    Ja korzystam z Microsoft Security Essentials.
    Jest darmowy nawet dla małych firm.
    Codziennie aktualizowany.
    I co najważniejsze w ogóle nie spowalnia systemu
    a instalacja trwa jedną minutę.

    Odpowiedz
  9. dsgs

    @Zig
    Po się łączy z comodo? Chmura, reklam nie wyłączyłeś, aktualizacje, czy coś innego?

    I jak ty skonfigurowanego masz comodo, że ci po podłączeniu wolumenu szyfrowanego uznaje, że nie pamięta konfiguracji? U mnie działa dobrze, jeśli mam kontener TC, w którym mam np. przeglądarkę, czy klienta IRC i raz zezwolę im na dostęp do netu z opcją zapamiętania, odłączę kontener, resetnę kompa, podłączę kontener w tej samej literze partycji, to konfiguracja jest taka jaka była, działa dobrze, nie pyta o nic. Może źle coś konfigurujesz, albo za każdym razem podłączasz kontener pod inną literę np. raz pod E, później, F, później G, H i, J, K, L itd… to wtedy nie dziwię się, że wyskakuje ci alert, skoro zapamiętał ustawienia dla ścieżki np. G:\program\program.exe, a ty masz teraz pod Z:\ kontener

    Odpowiedz
  10. Dla zainteresowanych
    Odpowiedz
    • A nie masz jakiegoś linku bardziej zjadliwego, tj z treścią już samego tekstu?

      Odpowiedz
  11. Odpowiedz
    • Adrian,
      Zgadza się, pierwotnie ten tekst popełniłem już jakiś czas temu, ale raczej nic nie stracił na aktualności.

      Odpowiedz
  12. Nicki

    @Anka: Czy na pewno instalujesz Microsoft Security Essentials? To coś spowalnia system straszliwie, przeprowadziłem jego test, i zauważyłem, że to coś w ogóle nie potrafi współgrać z systemem operacyjnym tego samego producenta. Wielka porażka.

    Odpowiedz
  13. bardzo rzetelne podejście do tematu. kiedyś szukałem informacji na temat działania antywirus ale udało mi się znaleźć jedynie szczatkowe informacje. A co sądzie o antywirusach firmy east ?

    Odpowiedz
  14. Zig

    @dsgs: wszystkie kroki wykonuje poprawnie. Problem wlasciwie nie polega na tym, ze comodo usuwa reguly – on te reguly ma, tylko po restarcie traktuje wolumin TC jako NOWY dysk i nie aplikuje ich.
    Problem jest znany, niestety raczej za malo przypadkow zeby ktos z comodo sie nim zajal.

    Co do laczenia sie, chodzi o to, ze comodo inicjuje polaczenia do swoich serwerow, mimo teoretycznie calkowitego zablokowania internetu. Niby dla sprawdzania certyfikatow, ale taki firewall po prostu ma cos w sobie zaszytego i nikt nie wie co.

    Odpowiedz
  15. f

    „Wszyscy producenci antywirusów umówili się, że poniższy (zupełnie niegroźny) ciąg znaków(…)”.

    To moze zeby troszke sprecyzowac i podniesc wartosc merytoryczna artykulu dodam, ze…

    Organizacje EICAR (http://en.wikipedia.org/wiki/EICAR) i CARO (http://en.wikipedia.org/wiki/CARO) stworzyly plik testowy eicar’a. Sa to organizacje zrzeszajace m.in. zalozycieli firm AV ale sa to przede wszystkim organizacje badawczo-rozwojowe, non-profit zajmujace sie bezpieczenstwem IT i malwarem ogolnie. O ile wiekszosc produktow szanujacych sie firm AV faktycznie wykrywa ten plik jako zagrozenie, to jednak nie wszystkie.

    Wspomniany ciag znakow (nie mozna sie nie zgodzic z tym stwierdzeniem) to w rzeczywistosci nieco bardziej skomplikowany twor, a poczytac o nim wiecej mozna tutaj: http://thestarman.pcministry.com/asm/eicar/eicarcom.html

    Tak trzymac sekuraku! Fajnie sie was czyta. Merytorycznie tylko BAD[SECTOR], ZTS i CERT wam dorownuje.

    Odpowiedz

Odpowiedz