Malware-Analyse mit Capa: Schadcode-Fähigkeiten schnell und einfach einschätzen

Sie haben Malware entdeckt und wollen wissen, was diese im Schilde führt? Das kostenlose Tool Capa übernimmt die Analyse für Sie.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Creative,Code,Skull,Hologram,On,Modern,Computer,Background,,Cybercrime,And

(Bild: Pixels Hunter/Shutterstock.com)

Lesezeit: 8 Min.
Inhaltsverzeichnis

Das automatisierte Erkennen von Schadcode mit Signaturen ist seit Jahrzehnten ein selbstverständlicher Bestandteil des IT-Alltags vieler Menschen – sei es nun passiv mit eingeschaltetem Virenschutz oder aktiv beim gezielten Scan. Im Vergleich zum bloßen Aufspüren erscheint die Fähigkeiten-Analyse einer spezifischen Malware als deutlich größere Herausforderung. Greift der Schadcode auf gespeicherte Passwörter zu? Kann er Änderungen an der Windows-Registry vornehmen? Oder versucht er gar, eine Backdoor auf dem System zu öffnen?

Das kostenlose und quelloffene Tool Capa (abgeleitet vom englischen "capabilities", also Fähigkeiten) beweist, dass auch diese anspruchsvolle Aufgabe mit einem signaturbasierten Ansatz gelingen kann. Anhand sogenannter Capa-Regeln überprüft es Malware im Handumdrehen auf spezifische Fähigkeiten und liefert die Resultate in klar strukturierter und leicht lesbarer Form zurück. Damit nimmt Capa sowohl Laien als auch Sicherheitsexperten zeitintensive Analyse-Arbeit ab.

Im Artikel stellen wir das Werkzeug aus dem Hause Mandiant vor. Wir gehen auf unterschiedliche Verwendungsmöglichkeiten ein, werfen einen Blick auf Capas frei erweiterbare Signatur- beziehungsweise Regelsammlung und geben abschließend Tipps zum Weiterlesen.

Grundsätzlich analysiert Capa ausführbare Dateien statisch – also ohne sie dabei auszuführen. Anders als viele Analysetools beschränkt es sich nicht auf das Analysieren ausführbarer Windows-Dateien. Vielmehr kann man das Tool auch mit dem Linux-Standardformat ELF sowie mit .NET-Modulen und Shellcode füttern. Zusätzlich versteht Capa seit der aktuellen Hauptversion 7 auch Malware-Reports, die mit der sogenannten CAPE Sandbox, einer mit Cuckoo Sandbox verwandten dynamischen Analyseumgebung, erstellt wurden.

Die Überlegung hinter der CAPE-Kompabilität: Ohne sie auszuführen, kann das Tool mit gepackten oder teilweise verschlüsselten Schädlingen relativ wenig anfangen. Denn erst zur Laufzeit, etwa in CAPE, offenbaren solche Exemplare all ihre Geheimnisse, die Capa somit aus Analyse-Reports ergründen kann.

Capa gibt einen Warnhinweis aus, wenn es bei gepackten Binaries nicht (viel) weiterkommt.

(Bild: mandiant.com)

Aufgrund der statischen Arbeitsweise ist jedes der verfügbaren Dateiformate gleichermaßen unter Windows, Linux und macOS analysierbar. Für alle drei Betriebssysteme gibt es fertig kompilierte Fassungen der aktuellen Capa-Version 7.0.1 bei GitHub. Grundsätzlich gilt natürlich: Sobald man mit Schadcode hantiert, der auf dem eigenen System ausführbar ist, sollte man auf eine eigens eingerichtete Analyse-VM zum Schutz des Hostsystems nicht verzichten.

Noch ein kleiner Hinweis an dieser Stelle: Ein VirusTotal-Scan der Capa-Windows-Binaries lieferte uns beim Ausprobieren eine Handvoll Treffer zurück. Auf Anfrage bestätigte uns das für Capa verantwortliche Flare-Team von Mandiant jedoch schriftlich, dass es sich um (generische) Falscherkennungen handelt. Die kommen bei "Hacker-Tools" aufgrund verdächtiger Eigenschaften gar nicht so selten vor und sind im konkreten Fall möglicherweise PyInstaller sowie diversen Strings in den enthaltenen Capa-Regeln geschuldet.

Capa läuft auf der Kommandozeile; eine Installation ist nicht notwendig und die jeweils aktuelle Fassung der Signatursammlung bereits enthalten. Die Basis-Syntax zum Anwerfen einer Analyse lautet:

capa (Dateiname.Endung)

Mit speziellen Flags sind die Scans anpassbar, auf ein paar interessante Anwendungsbeispiele gehen wir später noch ein. Wer sich einen kompletten Überblick verschaffen möchte, befragt unter Eingabe von capa -h die integrierte Hilfefunktion.

Ausschnitt aus Capas umfangreicher Hilfe: Zusätzliche Flags tunen bei Bedarf den Scan-Output.

(Bild: Screenshot)

Beim normalen Scan ohne zusätzliche Parameter gliedert Capa die Ergebnisse in mehrere Kästen mit je zwei Spalten. Der oberste Kasten benennt sogenannte "ATT&CK Tactics" mit ihnen zugeordneten "ATT&CK Techniques"; darunter folgt die Kombination "MBC Objective"/"MBC Behavior".

(Bild: Screenshot)

Das ATT&CK-Framework der MITRE Corporation ist ein in Security-Kreisen bekanntes und bewährtes Werkzeug zum einheitlichen Klassifizieren von Angriffsstrategien. So ordnet MITRE beispielweise der ATT&CK Tactic "Persistence" verschiedenste Techniken zu, die Angreifer beziehungsweise von ihnen genutzter Schadcode verwenden, um sich dauerhaft und möglichst unbemerkt auf einem System einzunisten. Diese Techniken sind durchnummeriert; so bezeichnet etwa T1547 den Missbrauch von Autostart-Funktionen, um Schadcode beim nächsten Reboot oder Login mitzustarten.

Die ATT&CK-Datenbank liefert als Online-Nachschlagewerk Hintergrundinformationen zu den von Capa benannten Techniken beziehungsweise Fähigkeiten. Und da Capa penibel der dabei verwendeten Nummerierung folgt, sind Verwechslungen ausgeschlossen.

MBC, der "Malware Behavior Catalog", ist ebenfalls ein Mitre-Projekt: Es soll die vorhandenen ATT&CK-Taktiken für den spezifischen Anwendungsfall der Malware-Analyse erweitern und verfeinern. Der bei GitHub abrufbare MBC mit eigenen, ebenfalls in Capa abgebildeten Nummerierungen verlinkt in seinen Einträgen entsprechend auch wieder auf verwandte ATT&CK-Informationen. Beim Querlesen entsteht somit ein sehr detailliertes Gesamtbild der von Capa entdeckten und aufgelisteten Fähigkeiten.

Capabilities und zugehörige Namespaces stehen am Ende der Ausgabe.

(Bild: Screenshot)

Im letzten Kasten einer Capa-Ausgabe findet man unter der Überschrift "Capabilities" kurze, textuelle Beschreibungen der entdeckten Malware-Fähigkeiten nebst ihrer Häufigkeit im Schadcode (z.B. "set file attributes (8 matches)"). Diese Beschreibung entspricht in der Capa-Regelsyntax dem eindeutigen Bezeichner ("name") der Regel, die den jeweiligen Suchtreffer im Code ausgelöst hat. Gleiches gilt für die zugeordneten "Namespaces" in der zweiten Kastenspalte: Die Entwickler nutzen diese zur hierarchischen Gruppierung der Regeln anhand der aufgespürten Fähigkeiten.

Was in der Theorie kompliziert klingt, erweist sich in der Praxis deutlich zugänglicher: Im separaten Capa Rules-Repository wird die Regelsyntax anhand zahlreicher Beispiele sehr ausführlich erklärt. Und da der Aufbau des Repositories der hierarchischen Namespace-Struktur entspricht, fällt es recht leicht, sich auf Anhieb zurechtzufinden.

Klar strukturiert und gut dokumentiert: Beispielregeln zeigen, wie's geht.

(Bild: github.com/mandiant/capa-rules)

An der Erweiterung der bereits mehrere hundert Regeln umfassenden Sammlung beteiligt sich eine recht aktive Community von Sicherheitsforschern. Das Mandiant-Team ermutigt ausdrücklich dazu, eigene interessante Erkenntnisse aus Malware-Analysen in Regeln umzusetzen und bestenfalls auch zum Repository beizutragen. Von dort aus fließen sie in künftige Capa-Versionen ein.

Sie beeinflussen aber auch, wie ein VirusTotal-Blogpost betont, die Informationen zu Malware-Verhalten und -Fähigkeiten in den Reports des Analyseservices. Denn seit Anfang 2023 sind Capas Scan-Ergebnisse Bestandteil der VT-Ergebnisse im "Behavior"-Reiter.

Wer eigene Regeln für den Hausgebrauch schreiben, aber nicht beitragen möchte, kann diese mit capa -r (Pfadangabe) auch einfach lokal speichern und nutzen.

Verrät ein schneller Capa-Scan Einsteigern möglicherweise schon alles, was sie wissen wollen, so können Malware-Analysten unter Verwendung bestimmter Flags spannende Zusatzinformationen aus dem Tool kitzeln. Mit -v für "verbose" (deutsch: "ausführlich") beziehungsweise -vv für "very verbose" spuckt Capa zusätzlich virtuelle Speicheradressen aus, an denen es Schadfunktionen in der untersuchten Datei entdeckt zu haben glaubt. Mit dieser Information können Experten, etwa mit Debuggern und Disassemblern, sehr gezielt manuell im Code weitergraben.

Auszug aus einem Scan mit "-v": Speicheradressen bilden gute Ausgangspunkte für weitere Analysen.

(Bild: Screenshot)

Während -v relativ übersichtlich Malware-Fähigkeiten mit Speicheradressen kombiniert, gibt -vv zusätzlich Details zur getriggerten Regel zurück. Letzteres kann Aufschluss etwa zu konkreten API-Funktionen geben, die im Code verwendet und von Capa erkannt wurden. Es empfiehlt sich, hier je nach individuellen Anforderungen selbst zu experimentieren.

Erwähnenswert ist in diesem Zusammenhang auch, dass die beiden Flags auch auf gepackten beziehungsweise obfuskierten Code anwendbar sind. Wo Capa im Standardmodus nur einen Warnhinweis ausgibt und die Analyse beendet, versucht sich das Tool unter Verwendung von -v oder -vv zusätzlich an der Erkennung des verwendeten Packprogramms. Auch erkennt es verdächtige Schleifen und Assemblerbefehle, die auf Entpack- und Entschlüsselungsvorgänge im Code hinweisen. Das sind wertvolle Hinweise für die weitere Analysearbeit.

Experten sei abschließend noch ein Blick auf die kostenlosen Capa-Plugins für IDA Pro und für Ghidra empfohlen. Sie integrieren die Scan-Ergebnisse des Tools in die grafischen Oberflächen der beiden Reverse Engineering-Werkzeuge, was etwa die direkte Navigation zu relevanten Speicheradressen erleichtert. Das IDA Pro-Plugin umfasst überdies einen integrierten Generator für Capa-Regeln.

Ob nun als einsteigerfreundliches Tool zur Fähigkeitenanalyse oder als Starthilfe und Arbeitserleichterung für versierte Malware-Analysten: Capa auszuprobieren, lohnt sich in jedem Fall. Ebenfalls ein spannendes Projekt des Flare-Teams: Der Werkzeugkasten Flare VM für Analyse-VMs auf Windows-Basis.

(ju)