Jak działają antywirusy?

54

Więc ostatnio myślałem o wirusach i zastanawiałem się, jak dokładnie nadążają antywirusy? Biorąc pod uwagę, że każdy, kto koduje od kilku tygodni, może zhakować coś, co robi paskudne, nieprzyjemne rzeczy na czyimś komputerze, sama ilość sprawiłaby, że prosta lista skrótów jest niemożliwa, więc jak to zrobić w programach antywirusowych? Czy monitorują aktywność procesu i stosują zasadę 3 ostrzeżeń do robienia rzeczy podobnych do wirusów? A jeśli tak, to co powstrzymuje go przed uruchamianiem się na całkowicie nieszkodliwych rzeczach (takich jak przenoszenie plików w systemie \ system32)?

Robiłem trochę google, ale zwykłe miejsca nie pomogły szczególnie i nie mogłem znaleźć tutaj duplikatu, więc pomyślałem, że dobrze byłoby zapytać :)

Phoshi
źródło
4
@joe nie ma potrzeby dodawania znacznika Windows. Antywirus działa prawie tak samo w każdym systemie operacyjnym. Również sposób działania AV nie jest subiektywny.
alex,
O. Przepraszam, myślałem, że może to być na Windows i subiektywne. Rozumiem to
Joe,
6
Są one fabrycznie zainstalowane, gdy kupujesz laptopa i przez 60 dni jęczą, że powinieneś się za nie zarejestrować / zapłacić, aż w końcu wyjmiesz je z systemu. Zazwyczaj ich okna dialogowe są modalne i znajdują się na najwyższym poziomie, dzięki czemu mogą skutecznie blokować wykonywanie innych czynności i nigdy nie oferują łatwego sposobu odinstalowania.
Daniel Daranas,
uderzyć +1 za bardzo miłe pytanie
dag729
Heurystyka AV jest zaawansowana, ale nie wykryje nowych zagrożeń (lub sprytnych wariantów istniejących zagrożeń). Heurystyka często wytwarza fałszywie pozytywne wyniki w przypadku całkowicie łagodnego oprogramowania / kodu. Oprogramowanie AV jest przydatne, ale często stanowi kulę, dając użytkownikom fałszywe poczucie bezpieczeństwa. Testowałem wiele znanych wirusów na ( virustotal.com/en ), a najważniejsze nazwiska, takie jak Symantec, McAfee i AVG, niczego nie wykrywają (chociaż Kaspersky ogólnie dobrze sobie radzi). Lepiej jest znać swój system, obserwować, co robisz ... i mieć kopię zapasową!
AlainD

Odpowiedzi:

17

Ten artykuł z 2002 roku mówi o budowie silnika antywirusowego.

W artykule zostaną opisane podstawowe pomysły, koncepcje, komponenty i podejścia związane z opracowaniem programu antywirusowego od podstaw z punktu widzenia programisty / inżyniera oprogramowania. Koncentruje się na głównych elementach silnika antywirusowego (zwanego dalej silnikiem AV) i wyklucza takie aspekty, jak graficzne interfejsy użytkownika, monitory w czasie rzeczywistym, sterowniki systemu plików i wtyczki do niektórych aplikacji, takich jak Microsoft Exchange lub Microsoft Office. Chociaż silniki AV działające / skanujące pojedyncze platformy (takie jak Palm OS lub EPOC / Symbian OS) mogą być zaprojektowane w ten sam sposób, ten artykuł skupi się na projektowaniu wieloplatformowych silników skanujących, które są znacznie bardziej złożone.

Jest też artykuł na temat heurystycznych technik wykrywania infekcji. To także ciekawa lektura.

alex
źródło
+1 za ten artykuł o heurystyce - bardzo interesujące :)
Phoshi,
Ten jest naprawdę wart przeczytania. Część heurystyczna jest niezbędna :)
Alex
Po przeczytaniu tego mam nowy szacunek dla programów antywirusowych, całkiem sprytne rzeczy!
Phoshi,
Są to niezwykle złożone aplikacje. Niestety, zamieniono je w coś, czego wielu ludzi, w tym ja, nie cierpię. Niestandardowe, niechlujne, nieintuicyjne interfejsy, funkcje dodane po to, aby dodać kolejny punktor do listy funkcji, wzdęcia. To rzeczy, które zmieniły ich w koszmary. Rzeczy się jednak odwracają; najlepszym przykładem dobrego rozwiązania AV jest MSE.
alex,
Przechodziły na to heurystyki, przepraszam Joe: P Dobra odpowiedź, niezależnie od tego :) @alex; Niestety, muszę się zgodzić, ale zrozumienie poniższych zawiłości sprawia, że ​​bardziej współczuję. To skomplikowane rzeczy i nie miałoby sensu zaintrygować potencjalnego klienta, a także „GUI z możliwością dostosowania kolorów!” może :(
Phoshi,
13

Około rok temu uczestniczyłem w wykładzie Mikko Hyyppönena, jednego z głównych badaczy F-Secure. Pokazał ich zautomatyzowaną sieć testową, w której tworzą maszyny wirtualne dla każdej wysłanej do nich próbki, analizują jej strukturę, pozwalają na uruchomienie, rejestrują wszystko, co robią, porównują ją z poprzednimi próbkami i generują podsumowanie, które człowiek może sprawdzić później. Jeśli człowiek stwierdzi, że jest to wirus, system automatycznie generuje sygnaturę wykrycia i wysyła aktualizację do klientów. Wyobrażam sobie, że inni dostawcy również mają podobne systemy, aby aktualizować swoje bazy sygnatur.

Hirvox
źródło
4

Od Jak działa oprogramowanie antywirusowe? (AntivirusWorld):

Program antywirusowy to program komputerowy, którego można używać do skanowania plików w celu identyfikacji i eliminacji wirusów komputerowych i innego złośliwego oprogramowania (złośliwego oprogramowania).

Oprogramowanie antywirusowe zwykle wykorzystuje dwie różne techniki, aby to osiągnąć:

  • Badanie plików w poszukiwaniu znanych wirusów za pomocą słownika wirusów Identyfikacja podejrzanego zachowania w dowolnym programie komputerowym, który może wskazywać na infekcję
  • Większość komercyjnych programów antywirusowych wykorzystuje oba te podejścia, ze szczególnym uwzględnieniem słownika wirusów.

Podejście do słownika wirusów W podejściu do słownika wirusów, gdy oprogramowanie antywirusowe sprawdza plik, odnosi się do słownika znanych wirusów, które zostały zidentyfikowane przez autora oprogramowania antywirusowego. Jeśli fragment kodu w pliku pasuje do dowolnego wirusa zidentyfikowanego w słowniku, wówczas oprogramowanie antywirusowe może albo usunąć plik, poddać go kwarantannie, aby plik był niedostępny dla innych programów i wirus nie mógł się rozprzestrzeniać, lub podjąć próbę naprawić plik, usuwając samego wirusa z pliku.

Aby odnieść sukces w perspektywie średnio- i długoterminowej, podejście do słownika wirusów wymaga okresowego pobierania online zaktualizowanych wpisów słownika wirusów. Ponieważ nowe wirusy są identyfikowane „na wolności”, nastawieni na społeczeństwo i technicznie skłonni użytkownicy mogą wysyłać swoje zainfekowane pliki do autorów oprogramowania antywirusowego, którzy następnie umieszczają informacje o nowych wirusach w swoich słownikach.

Słownikowe oprogramowanie antywirusowe zwykle sprawdza pliki, gdy system operacyjny komputera je tworzy, otwiera i zamyka; i kiedy pliki są wysyłane pocztą elektroniczną. W ten sposób znany wirus może zostać wykryty natychmiast po otrzymaniu. Oprogramowanie można zazwyczaj zaplanować tak, aby regularnie sprawdzało wszystkie pliki na dysku twardym użytkownika.

Chociaż podejście słownikowe jest uważane za skuteczne, autorzy wirusów starali się wyprzedzać takie oprogramowanie, pisząc „wirusy polimorficzne”, które szyfrują swoje części lub w inny sposób modyfikują się jako metoda maskowania, aby nie pasować do sygnatury wirusa w słowniku.

Podejście podejrzanego zachowania Podejście podejrzanego zachowania nie próbuje natomiast zidentyfikować znanych wirusów, ale monitoruje zachowanie wszystkich programów. Jeśli na przykład jeden program próbuje zapisać dane w programie wykonywalnym, jest to oznaczane jako podejrzane zachowanie, a użytkownik jest o tym powiadamiany i pytany, co zrobić.

W przeciwieństwie do metody słownikowej, podejrzane zachowanie zapewnia ochronę przed nowymi wirusami, które jeszcze nie istnieją w żadnych słownikach wirusów. Jednak wydaje się to również dużą liczbą fałszywych alarmów, a użytkownicy prawdopodobnie odczulają wszystkie ostrzeżenia. Jeśli użytkownik kliknie „Akceptuj” przy każdym takim ostrzeżeniu, oprogramowanie antywirusowe jest oczywiście bezużyteczne dla tego użytkownika. Problem ten pogorszył się szczególnie w ciągu ostatnich 7 lat, ponieważ wiele innych nie złośliwych programów zdecydowało się zmodyfikować inne pliki .ex bez względu na ten fałszywie pozytywny problem. Dlatego większość współczesnych programów antywirusowych wykorzystuje tę technikę coraz mniej.

Inne sposoby wykrywania wirusów Niektóre programy antywirusowe będą próbowały emulować początek kodu każdego nowego pliku wykonywalnego wykonywanego przed przekazaniem kontroli do pliku wykonywalnego. Jeśli wydaje się, że program używa kodu samomodyfikującego się lub w inny sposób pojawia się jako wirus (natychmiast próbuje znaleźć inne pliki wykonywalne), można założyć, że plik wykonywalny został zainfekowany wirusem. Jednak ta metoda powoduje wiele fałszywych trafień.

Jeszcze inną metodą wykrywania jest użycie piaskownicy. Piaskownica emuluje system operacyjny i uruchamia plik wykonywalny w tej symulacji. Po zakończeniu programu piaskownica analizuje zmiany, które mogą wskazywać na wirusa. Ze względu na problemy z wydajnością ten typ wykrywania jest zwykle wykonywany tylko podczas skanowania na żądanie.

Kwestie budzące obawy

Makrowirusom, prawdopodobnie najbardziej niszczycielskim i szeroko rozpowszechnionym wirusom komputerowym, można by zapobiec znacznie taniej i skuteczniej, bez konieczności kupowania oprogramowania antywirusowego przez wszystkich użytkowników, gdyby Microsoft naprawił luki w zabezpieczeniach w Microsoft Outlook i Microsoft Office związane z wykonanie pobranego kodu oraz zdolność makr dokumentów do rozprzestrzeniania się i siać spustoszenie.

Edukacja użytkowników jest równie ważna jak oprogramowanie antywirusowe; zwykłe przeszkolenie użytkowników w zakresie bezpiecznych praktyk komputerowych, takich jak niepobieranie i uruchamianie nieznanych programów z Internetu, spowolniłoby rozprzestrzenianie się wirusów bez konieczności korzystania z oprogramowania antywirusowego.

Użytkownicy komputerów nie zawsze powinni uruchamiać z dostępem administratora do własnego komputera. Gdyby po prostu działały w trybie użytkownika, niektóre typy wirusów nie byłyby w stanie się rozprzestrzeniać.

Słownikowe podejście do wykrywania wirusów jest często niewystarczające z powodu ciągłego tworzenia nowych wirusów, jednak podejrzane zachowanie jest nieskuteczne z powodu fałszywie pozytywnego problemu; dlatego obecne rozumienie oprogramowania antywirusowego nigdy nie podbije wirusów komputerowych.

Istnieją różne metody szyfrowania i pakowania złośliwego oprogramowania, które uniemożliwiają wykrycie nawet dobrze znanych wirusów w oprogramowaniu antywirusowym. Wykrywanie tych „zakamuflowanych” wirusów wymaga potężnego mechanizmu rozpakowywania, który może odszyfrować pliki przed ich zbadaniem. Niestety, wiele popularnych programów antywirusowych tego nie ma i dlatego często nie są w stanie wykryć zaszyfrowanych wirusów.

Wydaje się, że firmy sprzedające oprogramowanie antywirusowe mają motywację finansową do pisania i rozprzestrzeniania wirusów oraz do paniki nad zagrożeniem.

(Podoba mi się ten artykuł, a ja po prostu kopiuję i wklejam z AntivirusWorld.)

Joe
źródło
Dzięki :) W przypadku podejścia słownikowego oznacza to, że jeśli skopiuję kod znanego wirusa i wstawię go do mojej aplikacji, zostanie wykryty, ale jeśli napisałbym coś podobnego, musiałby czekać na podejrzane zachowanie? (Oczywiście hipotetycznie)
Phoshi,
Tak, będę .
Joe,
Ma to sens, jeśli nie możesz zatrzymać tworzenia wirusów, to zatrzymanie istniejącego kodu jest całkiem dobre (i biorąc pod uwagę nieskończoną ilość czasu, zatrzymałoby każdy możliwy wirus - nieźle: P)
Phoshi,
Taki jest podpis. Część złośliwego kodu maszynowego, która jest wspólna dla więcej niż jednego wirusa.
alex,
Jeśli AV porównuje plik ze słownikiem, powiedzmy 10 000 znanych wirusów, to dlaczego jest tak SZYBKI? Dlaczego skanowanie każdego pliku zajmuje milisekundy.
LantisGaius,
3

Phoshi, twoje pytanie jest bardzo interesujące, ale sugeruję, abyś rozpoczął swoją misję od innego. Radzę to, ponieważ odpowiedzi na zadane pytanie mogą Cię wprowadzić w błąd.

Proponuję zacząć od zastanowienia się nad tym, co uważasz za wirusa, jaka jest jego definicja.

Elitarni twórcy wirusów to badacze bezpieczeństwa, a nie dzieciaki skryptów. Ich definicja wirusa to: „wirus jest fragmentem kodu, który może się namnażać”. Otóż ​​to. Jak widać, nie ma tu żadnych cech destrukcyjnych. Wszystkie wirusy obowiązkowo są złe - to FUD, który otrzymujesz od twórców oprogramowania antywirusowego, aby mogli sprzedawać swoje oprogramowanie.

IMHO mądrze jest traktować wirusy jako część całego ekosystemu oprogramowania, a nie jako zewnętrznych złych „obcych”.

maniak
źródło
Cóż, zapytałem, jak działają AV, więc myślę, że odpowiedzi ... odpowiedzą całkiem nieźle, ale masz bardzo dobry punkt, jest coś do przemyślenia :)
Phoshi,
Zabawne jest także oglądanie dwóch programów antywirusowych na tym samym komputerze, które próbują się zabić. Zastanów się, dlaczego to robią :-)
maniak
1

Jednym z bardzo ważnych sposobów patrzenia na wirusy jest odwrotność. W jaki sposób wirusy wpływają na systemy. Jest to zwykle spowodowane lukami w oprogramowaniu. Oprogramowanie antywirusowe jest świadome tych luk w zabezpieczeniach i szuka oprogramowania wpływającego na te luki. Tak czy inaczej, wirusy zawsze coś robią. Potrzebują więc działającego procesu, aby zrobić to, co robią najlepiej. Czasami jest to już istniejące, czasem same się tworzą.

Jednak większość wirusów działa w podobny sposób, dzięki czemu skaner wirusów łatwo je rozróżnia. Istnieje wiele różnych wirusów wykorzystujących tę samą lukę!

http://en.wikipedia.org/wiki/List_of_computer_viruses

Dół
źródło