BASS - ein Framework für die automatische Synthese von Antivirensignaturen

Hallo an alle. Bis zum Beginn des Kurses „Reverse Engineering“ verbleiben weniger als zehn Tage. In diesem Zusammenhang möchten wir eine weitere interessante Übersetzung zu diesem Thema veröffentlichen. Lass uns gehen!



Kurzer Rückblick




Das Bild der Bedrohungen ändert sich rasant - es treten ständig neue Cyber-Angriffe auf, und die alten werden immer ausgefeilter. Unter diesen Umständen stehen Sicherheitsexperten vor immer komplexeren Herausforderungen. Jeden Tag müssen sie Millionen von Proben bisher unbekannter und völlig neuer Malware verarbeiten und analysieren, wirksame Antivirensignaturen entwickeln, um ganze Familien von Schadprogrammen zu beschreiben, und die Skalierbarkeit von Tools sicherstellen, wenn die Anzahl der zu analysierenden Proben zunimmt. Gleichzeitig müssen die begrenzten Ressourcen für Automatisierungstools für die Malware-Analyse berücksichtigt werden. Um IT-Experten bei der Bewältigung dieser vielfältigen Herausforderungen zu unterstützen, bietet Talos eine neue Open Source-Plattform namens BASS an.

BASS (als „Bass“ gelesen) ist ein Framework zum automatischen Generieren von Antivirensignaturen basierend auf Beispielen aus zuvor gebildeten Clustern von Schadcode. Ziel ist es, den Ressourcenverbrauch des ClamAV-Kerns zu reduzieren, indem der Anteil vorlagenbasierter Signaturen im Vergleich zu Hash-Signaturen erhöht wird, und die Arbeit von Analysten bei der Entwicklung vorlagenbasierter Signaturen zu vereinfachen. Mit der Unterstützung von Docker-Containern lässt sich das Framework gut skalieren.

Es ist erwähnenswert, dass bisher nur die Alpha-Version von BASS verfügbar ist und noch viel zu finalisieren ist. Dieses Projekt verfügt über Open Source Code und wir arbeiten aktiv daran. Daher freuen wir uns über Feedback von der Community und Empfehlungen zur Verbesserung. Den Quellcode für BASS finden Sie hier .

Das BASS-Projekt wurde 2017 auf der REcon- Konferenz in Montreal, Kanada, angekündigt.

Relevanz


Talos-Spezialisten erhalten täglich mehr als 1,5 Millionen Einzelproben. Sie beziehen sich größtenteils auf bekannte Bedrohungen und werden von einem Malware-Scanner (ClamAV) sofort beseitigt. Nach dem Scannen müssen jedoch noch viele Dateien weiter analysiert werden. Wir führen sie in der Sandbox aus und führen dynamische Analysen durch, die es uns ermöglichen, sie in böswillige und sichere zu unterteilen. Wir verarbeiten die in dieser Phase ausgewählten Malware-Beispiele, um darauf basierende ClamAV-Signaturen zu erstellen, mit deren Hilfe diese Bedrohungen zu einem früheren Zeitpunkt während des Scannens weiter gefiltert werden können.



Für drei Monate, von Februar bis April 2017, wurden der ClamAV-Datenbank 560.000 neue Signaturen hinzugefügt, was einer Zunahme von 9.500 Signaturen pro Tag entspricht. Ein wesentlicher Teil davon haben wir automatisch in Form von Hash-Signaturen erhalten. Solche Signaturen haben einen signifikanten Nachteil im Vergleich zu Vorlagen- oder Bytecode-Signaturen (dies sind zwei andere Typen, die vom ClamAV-Kern unterstützt werden): Eine Hash-Signatur entspricht nur einer Datei. Darüber hinaus führt eine Erhöhung der Anzahl der Hash-Signaturen dazu, dass die ClamAV-Datenbank mehr Speicherplatz beansprucht. Deshalb bevorzugen wir musterbasierte Signaturen. Sie sind viel einfacher und schneller zu verwalten als Bytecode und ermöglichen es Ihnen gleichzeitig, ganze Cluster von Dateien zu beschreiben.

Bass


Das BASS-Framework soll die Erstellung von ClamAV-signaturbasierten Vorlagen erleichtern. Es generiert sie automatisch und verarbeitet Segmente von ausführbarem Binärcode.



BASS basiert auf Clustern von Schadcode, enthält jedoch nicht die Mittel zu deren Erstellung. Aufgrund dessen bleibt die Technologie bequem und flexibel. Wir haben die Eingabeschnittstelle absichtlich universell gestaltet, damit sie leicht an neue Clusterquellen angepasst werden kann. Jetzt verwenden wir mehrere solcher Quellen, einschließlich Cluster, die auf Kompromissindikatoren (IoC) aus unserer Sandbox basieren, strukturelles Hashing (wenn wir eine wissentlich bösartige ausführbare Datei haben und nach zusätzlichen Beispielen suchen, deren Struktur ähnlich ist) und empfangene Malware von Spam-Kampagnen.

In der ersten Phase passieren böswillige Instanzen die ClamAV-Kernel-Entpacker. Es kann Archive verschiedener Formate und komprimierte ausführbare Dateien (z. B. UPX) entpacken und eingebettete Objekte (z. B. EXE-Dateien in Word-Dokumenten) extrahieren. Die empfangenen Artefakte werden sorgfältig analysiert, Informationen werden gesammelt. Für die nächste Stufe, das Filtern, verwenden wir ihre Größen und die magische UNIX-Zeichenfolge.

Dann wird der Cluster von Schadcode gefiltert. Wenn die Dateien nicht den BASS-Anforderungen entsprechen (während die Plattform nur mit ausführbaren PE-Dateien funktioniert, es jedoch nicht schwierig ist, Unterstützung für die ELF- und MACH-O-Binärdateien hinzuzufügen), werden sie aus dem Cluster gelöscht, oder wenn zu wenige Objekte übrig sind, wird der Cluster vollständig abgelehnt.

Der gefilterte Cluster fährt mit der Signaturgenerierungsphase fort. Zunächst werden Binärdateien zerlegt. Zu diesem Zweck verwenden wir IDA Pro, das jedoch problemlos durch einen anderen Disassembler mit ähnlichen Funktionen ersetzt werden kann, z. B. radare2.



Nach dem Zerlegen muss ein gemeinsamer Code in den Beispielen identifiziert werden, um auf dieser Basis Signaturen zu generieren. Dieser Schritt ist aus zwei Gründen wichtig. Erstens erfordert der Signaturgenerierungsalgorithmus erhebliche Rechenressourcen und funktioniert besser mit Kurzcodesegmenten. Zweitens ist es vorzuziehen, Signaturen von Codebeispielen zu erhalten, die nicht nur syntaktisch, sondern auch semantisch ähnlich sind. Zum Vergleichen des Codes verwenden wir das Dienstprogramm BinDiff. Auch hier ist es leicht zu ersetzen, und in Zukunft können wir andere Dienstprogramme zum Vergleich in das Framework integrieren.

Wenn der Cluster klein ist, vergleicht BinDiff jede ausführbare Datei mit allen anderen. Andernfalls wird der Umfang des Vergleichs verringert, andernfalls kann der Prozess zu lang sein. Basierend auf den erhaltenen Ergebnissen wird ein Graph erstellt, in dem die Eckpunkte die Funktionen bezeichnen und die Kanten ihre Ähnlichkeit anzeigen. Um eine gute allgemeine Funktion zu finden, reicht es aus, einen verbundenen Untergraphen mit einem hohen Gesamtähnlichkeitsindex zu finden.



Der Untergraph ƒ1, ƒ2, ƒ4, ƒ6 mit Indikatoren für hohe Scheitelpunktähnlichkeit (siehe Abbildung oben) ist ein hervorragender Kandidat für die Rolle einer gemeinsamen Funktion.

Sobald mehrere solcher Kandidaten eingestellt sind, vergleichen wir sie mit der weißen Liste, um zu vermeiden, dass Signaturen erstellt werden, die auf den normalen Funktionen der Bibliotheken basieren, die statisch mit der Stichprobe verknüpft sind. Dazu werden die Funktionen an die Kam1n0- Instanz gesendet , deren Datenbank wir zuvor mit Funktionen aus offensichtlich reinen Samples gefüllt haben. Wenn ein Klon einer Funktion erkannt wird, wird das Subgraph-Auswahlverfahren wiederholt, um den am besten geeigneten der verbleibenden auszuwählen. Wenn die Überprüfung nichts ergibt, wird der Funktionssatz an die nächste Stufe übergeben.

Dann beginnt die Erzeugung der Signatur direkt. Vorlagenbasierte ClamAV-Signaturen dienen zum Erkennen von Teilsequenzen in Binärdaten. Daher wenden wir auf alle extrahierten Funktionen den Suchalgorithmus für die größte gemeinsame Teilsequenz (LCS, Longest Common Subsequence) an.

Aus rechnerischer Sicht ist dieser Algorithmus selbst für zwei Stichproben ziemlich teuer und für mehrere deutlich schwieriger. Daher verwenden wir seine von Christian Blichmann beschriebene heuristische Variante. Das Ergebnis könnte ungefähr so ​​aussehen:



Schließlich müssen Sie es testen, bevor Sie die Signatur veröffentlichen. Wir überprüfen die Signatur mithilfe unserer Testsuite automatisch auf falsch positive Ergebnisse. Für eine höhere Zuverlässigkeit verwenden wir Sigalyzer, eine neue Funktion unseres CASC IDA Pro ClamAV- Plug-Ins zum Generieren und Analysieren von Signaturen (wird später aktualisiert). Sigalyzer markiert Abschnitte der Binärdatei, die mit der ClamAV-Signatur übereinstimmen, die für sie funktioniert hat. Somit wird eine visuelle visuelle Darstellung der Signatur gebildet.

Architektur


BASS ist als Cluster von Docker-Containern implementiert. Das Framework ist in Python geschrieben und interagiert über Webdienste mit allen erforderlichen Tools. Die Architektur wurde in Analogie zum VxClass- Projekt erstellt, das auch ClamAV-Signaturen mit IDA Pro und BinDiff generierte, später jedoch geschlossen und im Gegensatz zu BASS nicht für die breite Öffentlichkeit zugänglich war.



Einschränkungen


BASS arbeitet ausschließlich mit ausführbaren Binärdateien, da die Signatur aus dem Beispielcode generiert wird. Außerdem werden nur ausführbare x86- und x86_64-Dateien analysiert. Unterstützung für andere Architekturen wird möglicherweise in Zukunft angezeigt.

Bisher kommt BASS nicht gut mit Dateiviren zurecht, die kleine und sehr unterschiedliche Codefragmente in infizierte Objekte einbetten, und mit Hintertüren, die hauptsächlich aus harmlosem Binärcode bestehen (oft gestohlen), der durch böswillige Funktionen ergänzt wird. Wir kämpfen mit diesen Mängeln, indem wir daran arbeiten, die Clustering-Phase zu optimieren.

Und noch einmal möchten wir Sie daran erinnern, dass sich BASS in der Alpha-Testphase befindet und bisher nicht alles reibungslos funktioniert. Wir hoffen jedoch, dass wir der Community durch die Entwicklung dieses Frameworks als Open-Source-Projekt zugute kommen, und freuen uns über Ideen und Kritik.

App


Der Unterschied zwischen der größten gemeinsamen Teilzeichenfolge und der größten gemeinsamen Teilfolge

Die folgende Abbildung zeigt den Unterschied zwischen dem größten gemeinsamen Teilstring und der größten gemeinsamen Teilsequenz. Die größte häufige Folge wird in unserer Veröffentlichung durch das englische Akronym LCS angegeben.



Das ist alles. Und bereits am 20. Juni wird es möglich sein, das Kursprogramm beim Tag der offenen Tür , das im Webinar-Modus stattfindet, detailliert kennenzulernen.

Source: https://habr.com/ru/post/de456426/


All Articles