wykrywanie sygnaturowe i heurystyczne
| Po angielsku | signature-based detection vs heuristic detection |
|---|---|
| Którą formą pisać | po polsku Polska nazwa przyjęła się w tekstach i w wyszukiwarce — używaj jej samodzielnie. |
| Inne formy | wykrywanie sygnatur · sygnatury wirusów · analiza heurystyczna · skanowanie heurystyczne · heurystyka |
| Kategoria | Złośliwe oprogramowanie |
Wykrywanie sygnaturowe i heurystyczne to dwa podstawowe podejścia programów antywirusowych i skanerów do rozpoznawania złośliwego oprogramowania (malware). Wykrywanie sygnaturowe porównuje pliki z bazą cech znanych próbek; NIST definiuje sygnaturę jako zestaw cech znanych instancji złośliwego oprogramowania, pozwalający rozpoznać je i niektóre nowe warianty [1]. Sekurak nazywa bazę sygnatur najważniejszą, obok silnika, częścią programu antywirusowego [2]. Metodami heurystycznymi określa się wszystkie inne sposoby wykrywania, oparte na podejrzanych cechach i zachowaniu kodu [2].
Jak działa wykrywanie sygnaturowe
Sekurak wyróżnia kilka rodzajów sygnatur [2]. Najprostsza to skrót pliku, liczony funkcją skrótu (hash). Jest jednoznaczny, ale nawet najdrobniejsza zmiana w kodzie powoduje, że stara sygnatura nie wykryje nowej wersji [2]. Dlatego częściej stosuje się sygnatury oparte na wybranych sekwencjach bajtów, wspólnych dla wielu wariantów; takie podejście jest w praktyce dość skuteczne wobec całych rodzin złośliwego oprogramowania [2].
Skaner działa jak prosta pętla porównań, pokazana na schemacie poniżej.
NIST zaleca skanowanie każdego pliku w chwili pobrania, otwarcia lub uruchomienia (on-access) oraz skanowanie ręczne na żądanie (on-demand) [1]. Skuteczność zależy od aktualności bazy: program antywirusowy działa najlepiej, gdy jego sygnatury są w pełni aktualne [1]. Zakażone pliki trafiają do dezynfekcji albo na kwarantannę [1].
Jak działa wykrywanie heurystyczne
Heurystyka ocenia cechy i zachowanie kodu, a nie jego tożsamość. Bitdefender opisuje dwa warianty [3]. Analiza statyczna polega na dekompilacji podejrzanego programu i porównaniu jego kodu z bazą heurystyczną [3]. Analiza dynamiczna uruchamia kod w wyspecjalizowanej maszynie wirtualnej, czyli piaskownicy (sandbox), i obserwuje jego działanie bez ryzyka dla systemu [3]. Sekurak zalicza do heurystyki również monitorowanie wywołań funkcji systemu i analizę zachowania [2]. NIST wśród zalecanych funkcji programu antywirusowego wymienia obserwację bieżącej aktywności hosta pod kątem podejrzanych działań oraz monitorowanie zachowania aplikacji najczęściej używanych do infekcji, takich jak klienty poczty i przeglądarki [1]. To także podejście behawioralne, bo ocenia czynności programu, a nie jego zawartość.
Ceną za wykrywanie nowych zagrożeń są fałszywe wyniki. Jeśli parametry heurystyki są zbyt szerokie, program błędnie oznacza niewinne pliki jako zagrożenia [3]. Ten błąd to fałszywy alarm (false positive); NIST definiuje go jako sytuację, w której narzędzie niepoprawnie klasyfikuje nieszkodliwą treść jako złośliwą [1]. Odwrotny błąd, przeoczenie zagrożenia, to fałszywie ujemny wynik (false negative) [1].
Porównanie
| Cecha | Sygnaturowe | Heurystyczne |
|---|---|---|
| Co porównuje | skrót lub fragmenty bajtów znanych próbek [2] | cechy i zachowanie kodu [3] |
| Nowe warianty | wykrywa tylko niektóre [1] | wykrywa także nieznane [3] |
| Fałszywe alarmy | możliwe, gdy czysty plik zawiera szukane bajty [2] | częstsze przy szerokich regułach [3] |
| Zależność | aktualna baza sygnatur [1] | jakość reguł i środowiska analizy [3] |
Obie metody mają granicę wyznaczoną przez teorię. Fred Cohen wykazał w 1984 roku, że rozstrzygnięcie, czy dany program jest wirusem, jest problemem nierozstrzygalnym [4]. Wniosek: program, który precyzyjnie odróżnia każdego wirusa od innego programu na podstawie jego wyglądu, jest niewykonalny [4]. NIST zwraca uwagę na praktyczny skutek: gdy atakujący przygotowuje osobny wariant dla każdej ofiary, zabezpieczenia oparte głównie na sygnaturach nie nadążają [1]. Zaleca obronę warstwową, w której kilka technik wykrywania zwiększa szansę, że któraś rozpozna złośliwe zachowanie [1]. Utrudnieniem są też malware polimorficzny (polymorphic malware) i zaciemnianie kodu, które zmieniają wygląd kodu przy zachowaniu działania.
W WordPressie
Skanery dla WordPressa łączą sygnatury z trzecią metodą: porównaniem plików z wzorcowymi kopiami. Wordfence sprawdza pliki rdzenia, motywów i wtyczek pod kątem złośliwego kodu, złych adresów URL, tylnych furtek, SEO spamu, złośliwych przekierowań i wstrzyknięć kodu [5]. Porównuje też pliki rdzenia, motywów i wtyczek z repozytorium WordPress.org i zgłasza każdą zmianę [5]. Opis wtyczki podaje, że w wersji bezpłatnej nowe sygnatury złośliwego oprogramowania trafiają z 30-dniowym opóźnieniem [5], co dobrze pokazuje zależność metody sygnaturowej od aktualności bazy. Ta sama wtyczka sprawdza adresy URL w plikach, wpisach i komentarzach z listą Safe Browsing Google [5]. Jest to porównanie z bazą znanych złych wzorców, tyle że dla adresów, a nie dla kodu.
Porównanie z wzorcem można wykonać także bez wtyczki. Polecenie WP-CLI pobiera z WordPress.org sumy kontrolne MD5 dla zainstalowanej wersji i porównuje je z plikami na serwerze [6]. Ze względów bezpieczeństwa nie ładuje przy tym WordPressa, a z opcją --include-root ostrzega o obcych plikach w katalogu głównym [6].
# porównanie plików rdzenia z sumami kontrolnymi z WordPress.org
wp core verify-checksums --include-root
Taka kontrola nie wykryje złośliwego kodu w katalogu wp-content ani w bazie danych, dlatego uzupełnia, a nie zastępuje skaner złośliwego oprogramowania (malware scanner). Dokumentacja WordPressa zaleca łączenie skanerów działających w aplikacji z zewnętrznymi: żadne z tych rozwiązań nie jest najlepsze samo, ale razem wyraźnie zwiększają szansę wykrycia [7].
Dobre praktyki
- Aktualizować sygnatury i silnik skanera, bo baza jest tak dobra, jak jej ostatnia wersja [1].
- Łączyć metody: sygnatury, heurystykę i monitorowanie integralności plików, zgodnie z zasadą obrony warstwowej [1].
- Traktować wynik heurystyki jako sygnał do weryfikacji, a nie wyrok; każdy wskaźnik kompromitacji (IoC) warto potwierdzić ręcznie.
- Pamiętać o zagrożeniach, których nie widać w plikach, takich jak złośliwe oprogramowanie bezplikowe (fileless malware), których skaner plików z definicji nie widzi; tu potrzebne są narzędzia obserwujące zachowanie systemu, takie jak EDR (Endpoint Detection and Response).
Przypisy
7- [1] SP 800-83 Rev. 1: Guide to Malware Incident Prevention and Handling for Desktops and Laptops · NIST
- [2] W jaki sposób działają programy antywirusowe? · Sekurak
- [3] Skanowanie heurystyczne — co to takiego i jak działa · Bitdefender Polska
- [4] Computer Viruses — Theory and Experiments (Fred Cohen, 1984) · Fred Cohen & Associates (all.net)
- [5] Wordfence Security — Firewall, Malware Scan, and Login Security · WordPress.org
- [6] wp core verify-checksums · WordPress.org
- [7] FAQ My site was hacked · WordPress.org
Hasła w tym artykule
14- złośliwe oprogramowanie
- funkcja skrótu (hashowanie)
- kwarantanna
- piaskownica
- fałszywy alarm
- wirus komputerowy
- malware polimorficzny
- zaciemnianie kodu
- Safe Browsing
- skaner złośliwego oprogramowania (malware scanner)
- monitorowanie integralności plików
- wskaźnik kompromitacji (IoC)
- złośliwe oprogramowanie bezplikowe
- EDR (Endpoint Detection and Response)