it-swarm.com.de

Wie scannen Antivirenprogramme in kurzer Zeit nach Tausenden von Malware-Signaturen?

Die meisten Virenschutzprogramme haben Hunderttausende oder sogar Millionen von Malware-Signaturen und scannen dennoch viele Dateien in angemessen kurzer Zeit mit hohen Erkennungsraten. Selbst Echtzeitscanner verlangsamen den Computer nicht merklich, bieten jedoch einen starken Schutz vor Bedrohungen. Wie können Scanner diese Leistung erzielen?

Ich weiß, dass es eine breite Frage sein könnte, aber ich wollte eine allgemeine Vorstellung davon bekommen.

47
Koorosh Pasokhi

Antivirus-Erkennung ist ein Merkmalsextraktion und ein Klassifizierungsproblem .

Eine großartige Analogie ist das 20 Fragen Spiel, bei dem das Ziel darin besteht, ein beliebiges Objekt zu identifizieren, indem 20 scheinbar nicht verwandte Ja/Nein-Fragen gestellt werden. Die Idee hinter dem Spiel ist, dass jede Antwort die Hälfte der Objekte eliminieren würde, so dass es theoretisch möglich ist, 2 ^ 20 (1.048.576) Objekte mit nur 20 binären Merkmalen zu beschreiben.

Eine andere Analogie ist, wie der visueller Kortex visuelle Informationen verarbeitet. Das Gehirn verfügt über eine sehr einfache und schnelle Hardware zum Erkennen und Klassifizieren einer unendlichen Anzahl von Bildern. Nur sechs Schichten von Neuronen (die Anzahl der Neuronen wird auf 140 Millionen geschätzt) werden verwendet, um zunehmend komplexere Merkmale zu extrahieren und an die nächste Schicht weiterzuleiten. Die Ebenen interagieren vor und zurück, um abstrakte Begriffe zu erzeugen, die gegen das Gedächtnis verifiziert werden können.

Antiviren-Engines speichern viele Funktionen bekannter Malware in der Definitionsdatei. Wenn sie eine neue Datei scannen, optimieren sie die Extraktion und Klassifizierung (Matching) dieser Funktionen. Durch das Speichern von Funktionen wird die Erkennung außerdem robuster, sodass kleine Änderungen an einer Malware die Erkennung nicht behindern. Parallel dazu erfolgt die Merkmalsextraktion, damit die Ressourcen voll genutzt werden.

Die meisten Funktionen wurden von Menschen entworfen, aber es gibt einige, die für sich genommen keinen Sinn ergeben, z. B. ein Null-Byte am Ende der Datei oder ein Verhältnis zwischen Dateigröße und druckbarer Textgröße. Diese unsinnigen oder nicht intuitiven Funktionen werden zufällig generiert und durch Data Mining großer Datenmengen getestet. Am Ende wird die Datei durch die Kombination von Features beschrieben und klassifiziert. Nebenbei bemerkt, der beste Prädiktor für Fragen, die an Stack Exchange geschlossen werden, ist, ob der erste Buchstabe der Frage in Kleinbuchstaben geschrieben ist.

Wenn eine neue Datei gescannt wird, wird sie schnell in immer feinere Kategorien eingeteilt und dann mit einem kleinen Satz von Signaturen abgeglichen. Jeder Schritt würde eine große Anzahl sauberer Dateien ausschließen und bestimmen, welche anderen Funktionen als nächstes extrahiert werden sollen. Die ersten Schritte sind in Bezug auf die Rechenressourcen sehr klein, bestimmen jedoch, welche teureren Schritte später unternommen werden sollen.

Mit nur wenigen Festplattenlesevorgängen und CPU-Zyklen kann die Engine den Dateityp bestimmen. Angenommen, es handelt sich um eine JAR-Datei. Anhand dieser Informationen werden Funktionen der JAR-Datei erfasst. Wenn es signiert ist, wird der Scan abgebrochen. Wenn keine Funktionen importiert werden, wird der Scan abgebrochen (ich vereinfache dies hier zu stark). Verwendet es eine knifflige Funktionalität? dann sollten mehr Features extrahiert werden. Verwendet es bekannte anfällige Funktionen? Dann sollte es gründlich auf bekannte Java Exploit-Signaturen) überprüft werden.

Das Scannen beim Zugriff hat das gleiche Prinzip, funktioniert aber auch wie ein Gatekeeper. Daher wird jede Aktion (normalerweise API-Aufruf), die von einem Prozess ausgeführt wird, überprüft und zugelassen oder abgelehnt. Ebenso löst jede verdächtige Aktion mehr Filter und mehr Überprüfungen aus. Während der Überprüfungen wartet der Prozess oder Thread auf den Abschluss des Vorgangs, aber manchmal wird der gesamte Prozess aktiv angehalten. Dies mag nach erheblichem Overhead aussehen, aber sobald eine bestimmte Aktion überprüft wurde, wird sie später zwischengespeichert und sehr schnell oder gar nicht ausgeführt. Das Ergebnis ist eine Leistungsverschlechterung, ähnlich wie wenn eine Maschine einige Prozentpunkte langsamer ist. Überprüfen Sie die PCMark-Werte für 20 AV-Produkte hier .

Die Geschwindigkeitsoptimierung ergibt sich daher aus sehr wenig Arbeit an sauber aussehenden Dateien, die die überwiegende Mehrheit der gescannten Dateien ausmachen. Die schwere Arbeit wird nur an verdächtigen Malware-aussehenden Dateien ausgeführt, für die AV möglicherweise sogar Sekunden benötigt, um den Prozess zu emulieren oder ihn zur Analyse an die Cloud zu senden.

Die Magie ist in der progressiven Klassifikation.

47
Cristian Dobre

Malware-Signaturen sind eindeutige Werte, die auf das Vorhandensein von Schadcode hinweisen. Einfach ausgedrückt: Wenn ein Antivirenprogramm Ihren Computer scannt, berechnet es die Signatur für eine Datei (z. B. wie ein Hash) und vergleicht diese Signatur/diesen Hash mit einer Liste bekannter fehlerhafter Signaturen.

Das Berechnen eines einzelnen Hashs einer Datei und das anschließende Vergleichen mit einer Liste von Millionen von Hashes ist weitaus einfacher als das Suchen nach jeder Malware-Signatur in einer bestimmten Datei.

Die Signatur kann eine Reihe von Bytes in der Datei darstellen. Es kann sich auch um einen kryptografischen Hash der Datei oder ihrer Abschnitte handeln. Jeder AV-Anbieter macht es ein bisschen anders.

In der Regel gibt es Einstellungen für die Leistung im Vergleich zur Tiefe von Antivirensoftware-Scans. Bei diesen Scans wird im Wesentlichen untersucht, wie viel Code verarbeitet wird, bevor festgestellt wird, dass eine Datei sicher ist oder nicht.

Es sollte beachtet werden, dass die Antivirentechniken verbessert wurden und neuere Technologien, die nicht nur auf Signaturen basieren. Die Kombination dieser Techniken sowie Optimierungen zur Reduzierung der Leistungseinbußen machen AVs erheblich schneller als früher.

Wenn Sie AV bei der detailliertesten Überprüfung auf Ihrem primären Betriebssystemlaufwerk ausführen, werden Sie garantiert einen Leistungseinbruch feststellen, wenn die Dateien verarbeitet werden. Dies ist normalerweise kein Verlust der CPU-Leistung, sondern ein Verlust der Festplattenleistung (offensichtlich haben SSDs hier einen Vorteil).

Einige zeitsparende Techniken, die von AVs verwendet werden

  • Nicht ausführbare Dateien ignorieren
  • Ignorieren großer Dateien (dh> 500 MB)
  • Ignorieren von Dateien mit einer Prüfsumme, die mit einer bekannten "legitimen" Datei übereinstimmt
  • Lesen Sie bestimmte Teile von Dateien und ignorieren Sie den Rest
  • Die Ressourcennutzung wird gnädig eingeräumt, wenn ein am Computer vorhandener Benutzer erkannt wird
  • Suchen Sie nach bestimmten Systemaufrufen, die riskantes Verhalten darstellen
  • Zuerst eine Baseline generieren und dann nur neue/geänderte Dateien scannen
  • usw..

Weitere Techniken zur statischen Erkennung durch gängige AV-Lösungen:

  • String-Scan-Methode: Sucht nach einer Folge von Bytes (Strings), die für einen bestimmten Virus typisch sind, aber in anderen Programmen wahrscheinlich nicht gefunden werden.
  • Platzhaltermethode: Ermöglicht das Überspringen von Bytes oder Bytebereichen. Beispielsweise "?" Zeichen werden übersprungen und der Platzhalter% bedeutet, dass der Scanner versucht, mit dem nächsten Byte übereinzustimmen.
  • Mismatches-Methode: Ermöglicht, dass eine bestimmte Anzahl von Bytes in einer Zeichenfolge unabhängig von ihrer Position einen beliebigen Wert hat.
  • Generische Erkennungsmethode: Diese Technik verwendet eine gemeinsame Zeichenfolge, um mehrere oder alle bekannten Varianten einer Virenfamilie zu erkennen.
  • Lesezeichenmethode: Berechnet den Abstand zwischen dem Beginn des Viruskörpers und der Erkennungszeichenfolge.
  • Intelligentes Scannen: Beim intelligenten Scannen können Junk-Anweisungen wie NOPs in der Host-Datei übersprungen und nicht in der Virensignatur gespeichert werden. Um die Wahrscheinlichkeit des Nachweises verwandter Varianten von Viren zu erhöhen, wurde ein Bereich des Viruskörpers ausgewählt, der keine Verweise auf Daten oder andere Unterprogramme enthielt.
  • Skeletterkennung: Der Scanner analysiert die Anweisungen des Virus zeilenweise und löscht alle nicht wesentlichen Anweisungen. Was bleibt, ist das Skelett des Körpers, das nur den im Makrovirus üblichen essentiellen Makrocode enthält.
  • Heuristikanalyse: Die Heuristikanalyse ist eine Expertenanalyse, die die Anfälligkeit eines Systems für bestimmte Bedrohungen/Risiken mithilfe verschiedener Entscheidungsregeln oder Wägemethoden ermittelt. Die MultiCriteria-Analyse (MCA) ist eines der Mittel zum Wiegen.
  • Virenspezifische Erkennung: Es gibt Fälle, in denen der Standardalgorithmus des Virenscanners nicht mit einem Virus umgehen kann. In solchen Fällen muss ein neuer Erkennungscode eingeführt werden, um einen virenspezifischen Erkennungsalgorithmus zu implementieren. Diese Methode umfasst Filterung, Entschlüsselungserkennung und Röntgenabtastung. Quelle: Computervirus-Strategien und Erkennungsmethoden

Ich hoffe, das hilft!

Weiterführende Literatur: Wikipedia

18
NULLZ