Im Avast Research Lab sind einige unserer hellsten Köpfe damit beschäftigt, neue Wege der Erkennung von Malware zu erforschen. Es geht dabei einerseits Funktionen unserer Anwendungen (z. B. FileRep und Autosandboxing, einschließlich aller neuesten Entwicklungen) sowie um Prozesse, die auf unseren Backend-Servern laufen - also Dingen, die der Nutzer zwar nicht unbedingt sieht, die aber genauso wichtig sind für die hohe Qualität unserer Produkte.
Tatsächlich beansprucht die Arbeit am Backend immer mehr Zeit, weil immer mehr Logik und AVAST Technologie in die Cloud wandert und/oder in Echtzeit über avast! Streaming Update zu unseren Kunden geliefert wird.
Die Avast Backend Virus Engine arbeitet mit einer ganzen Reihe verschiedener Techniken. Die meisten Ressourcen werden momentan auf Malware Similarity Search und Evo-Gen verwendet.
Malware Similarity Search ist ein wichtiges Werkzeug mit dem wir im Handumdrehen große Mengen eingehender Proben analysieren können. Das heißt, dass wir für jede einzelne Datei in der Lage sind zu sagen, ob die Datei einer bekannten Malware-Datei (oder einer Familie von Malware-Dateien) ähnlich ist bzw. ob sie umgekehrt, bekannten sauberen Dateien (oder Cluster von diesen) ähnlich ist. Das klingt recht einfach, ist in der Praxis aber eigentlich ziemlich schwierig. Die Zauberformel ist hier die Definition der Metrik (ab wann spricht man über Ähnlichkeiten) und die Frage, was wird bei der Repräsentation einer Datei berücksichtigt. Bei Avast berücksichtigen wir sowohl statische Eigenschaften der Datei, wie auch das Ergebnis einer dynamischen Analyse (das sind im Grunde die Protokolle, die während der Ausführung einer Datei mitgeloggt werden).
Diese Technologie ist für uns sehr wertvoll, weil wir damit schnell ein Urteil über bisher unbekannte Dateien fällen können. Wenn zum Beispiel eine Datei einem Cluster bekannter Malware-Samples ähnlich ist, und gleichzeitig keine Ähnlichkeiten mit bekannten, sauberen Dateien hat, kategorisieren wir sie sofort als Malware. Ob Sie es glauben oder nicht, wir sehen täglich Tausende solcher Dateien.
Die zweite Technologie, die ich erwähnt habe, Evo-Gen, ist ähnlich, aber ein bisschen subtilerer Natur. Es geht darum, möglichst kurze und einfache Beschreibungen großer Mengen von Malware-Samples zu definieren. Nehmen wir zum Beispiel einen Satz von 1.000.000 Malware-Samples (und 1.000.000 sauberen Dateien) und geben dem Algorithmus die folgende Aufgabe: Finde so wenig und kurze Beschreibungen von so vielen Malwareproben wie möglich, ohne dabei eine beliebige Datei aus dem sauberen Sample zu beschreiben. Evo-Gen ist ein generischer Algorithmus den wir genau zu diesem Zweck entwickelt haben. Oft finden wir dabei richtige Schätze - zB eine Beschreibung die zehntausende von Malware-Dateien erfasst, die weit verstreut aus verschiedenen Malwarekategorien stammen. Wie groß ist die Beschreibung? 8 Byte.
Wenn man einen Moment über diese beiden Algorithmen nachdenkt erkennt man schnell ihre Gemeinsamkeiten: Beide benötigen super schnellen Zugriff auf große Mengen sauberer- und infizierter Dateien. Die Arbeit mit Speichermedien, die mit sequentiellem Zugriff arbeiten (also die Verarbeitung von Dateien nacheinander), kann man vergessen. Alleine das Lesen der Proben von einer Festplatte dauert Stunden.
Zu diesem Zweck hat das Team einen weiteren großen Wurf gelandet, den wir MDE nennen. MDE ist im Grunde eine In-Memory-Datenbank, die auf Basis indizierter Daten funktioniert und schnellen, parallelen Zugriff ermöglicht.
Traditionell betreiben wir diese Dinge auf klassischer Server-Hardware. Im überwiegenden Teil nutzen wir Standard-Dell-Server mit Intel Xeon CPUs. Leider war die Leistung nie wirklich toll und wir dachten oft über bessere Lösungen nach.
Einer der Intel CPU basierten Racks die im Avast Virus Labor verwendet werden
Ein wirklicher Durchbruch gelang uns, als wir mit GPUs zu experimentieren begannen. Die Möglichkeiten moderner GPUs (beide, von NVidia und AMD) sind nicht auf High-End-Grafik oder Gaming begrenzt. Das Tolle für uns ist dabei, dass sie im großen Stil parallelisiert werden können. Während heutige High-End-Intel CPUs 6, 8 oder vielleicht 10 Kerne enthalten, sind in High-End-Gaming-GPUs Tausende von Kernen enthalten. Zwar ist jeder Einzelne von ihnen nicht so mächtig, wenn man ihr Potenzial aber mit einigen guten parallelisierungs Algorithmen entfesselt, ist das Resultat wirklich beeindruckend.
Unter Einsatz von MDE sind wir nun dabei eine GPU-basierte "Supercomputing" Farm zu errichten. Die Umgebung, mit der wir momentan arbeiten, sieht so aus:
Man sieht gleich, dass es kein Rackmount-Server ist – sondern eine Workstation. Ein richtiges Biest! Die Intel i7 E3820 4C 3.6GHz CPU mit 32 GB DDR3 RAM, ist kein schlechter Anfang, aber das wirklich coole sind die 4 NVidia GPU-basierten Grafikkarten mit je 3 GB RAM, miteinander verbunden durch einen Schlauch für die externe Wasserkühlung. Das Ganze wird von einem 1.500-W-Netzteil mit Strom versorgt. Falls das nicht reicht, haben wir schon ein weiteres auf Lager.
Wir verwenden das System noch nicht im produktiv Betrieb, werden es aber wahrscheinlich bald tun. Ich freu mich wirklich schon drauf – schließlich können wir Ihnen, unseren Kunden, damit noch bessere Produkte und Updates liefern. Man kann nie wissen - wenn sich das System so nützlich erweist wie wir erwarten, bauen wir vielleicht mal so was wie den Titan…
(ab jetzt gehört es wohl zu meinen Aufgaben die Gamer vom Server-Raum fern zu halten )