Wenn es mir die Zeit erlaubt, spiele ich gerne ein wenig mit Virenscannern rum. Insbesondere die erschreckend schlechte Erkennungsquote bei trivialen Dateiveränderungen fasziniert mich immer wieder. Im Rahmen der Vorbereitung eines Vortrags habe ich ein paar Tests durchgeführt um zu sehen, wie es mit Virenscannern eigentlich so aussieht. Dafür habe ich ein bekanntes Schadprogramm verwendet, hier die Remote-Komponente von NetBus 1.70 und gekuckt, wie gut die Virenscanner diese Datei erkennen.
NetBus 1.70 ist zwar steinalt, im Kaspersky-Weblog (Viren-Almanach Nr. 8, September 2008) stand jedoch, dass im September eine Variante von NetBus als bestgetarnter Schädling aufgetaucht ist, daher dachte ich, jeder Virenscannerhersteller müsste ein gesteigertes Interesse daran haben, dieses Programm zu erkennen.
Dazu habe ich die Patch.exe einmal direkt an Virustotal geschickt, einmal als UPX (UPX 3.03w, Optionen -f –ultra-brute) gepacktes Executable, einmal als Winzip-Archiv (Winzip Pro 10.0, bzip2-Archiv, maximale Kompression), und einmal als Winzip-gepacktes UPX.
Hier sind die Ergebnisse …
Das Programm Patch.exe wurde von den meisten Virenscannern (35/37, entspricht 94,6%) erkannt. (Die beiden Fehl-Erkennungen lasse ich mal außen vor, möglicherweise sind die Virenscanner bei Virustotal da nicht richtig konfiguriert, die lieferten bei keinem Schadprogramm ein Ergebnis.
Als UPX-Binary sinkt die Erkennungsquote bereits deutlich. Nur noch 21/37 (56,76%) der Virenscanner sind korrekt dabei. Einige Virenscanner haben sich bereits auf „suspicious file“ zurückgezogen, vermutlich weil die Heuristik zwar die UPX-Kompression erkennt aber nicht mehr auspacken kann. Dabei ist UPX so weit verbreitet, dass eigentlich jeder Virenscanner damit zurechtkommen müsste.
Dramatisch wird es mit der BZIP2-Kompression. Mit einem Nicht-Standard-ZIP scheinen erstaunlich viele Virenscanner ein größeres Problem zu haben. Die Erkennungsquote ist bei schlappen 17/37 (45,95%). Einzig Sunbelt gibt mit der Fehlermeldung „<Corrupted Archive>“ zu, das Archivformat nicht lesen zu können. Die anderen Virenscanner täuschen Funktionalität vor die nicht vorhanden ist und melden keine Erkennung obwohl das File gar nicht korrekt gescannt werden konnte.
Und klar, die Kombination UPX+BZIP2 bricht dann alle Dämme. Die Erkennungsquote ist runter auf 14/36 (38,89%). Prevxl wurde in der Zwischenzeit vermutlich abgeschaltet, der war aber wohl falsch konfiguriert, der hat in meinen Tests nämlich nie irgendwas erkannt.
Das spannende oder erschreckende dabei ist für mich, dass einfachste Methoden wie ein weit verbreiteter Binary-Packer oder ein etwas anderer Kompressionsalgorithmus im vermutlich am weitesten verbreiten Packprogramm bereits genügt, um eine Vielzahl von Virenscannern aussteigen zu lassen. Klar, sobald die Datei aus dem BZIP2-Archiv extrahiert wird, wird sie von einem Virenscanner erkannt. Aber eben nur, wenn auf dem Zielsystem dann auch ein Virenscanner installiert ist. Und das wiederum ist auf Terminalservern oder in Produktionsanlagen nicht automatisch gegeben. Da muss man sich oft auf die Perimetersicherheit verlassen. Und dann ist man verlassen.
Ach ja, die verwendeten vier Varianten von Netbus könnt Ihr Euch gerne hier als ZIP-Archiv herunterladen. Nur bitte Vorsicht damit! 🙂
Für die eventuell mitlesenden Teilnehmer der Secuta 2008: Das ist das, was aufgrund des schlechten Internetzugangs in dem billigen 4-*-Hotel nicht funktioniert hatte 🙁
Kommentare gesperrt wegen Spam
Comment by Christian — 7. Juni 2012 @ 17:15