Malware-Macher nutzen “exotische” Programmiersprachen

  • Sprechen Sie Rust? Polyglotte Malware-Autoren verwenden zunehmend obskure Programmiersprachen, um der Entdeckung zu entgehen.

    Malware-Autoren verwenden zunehmend selten gesehene Programmiersprachen wie Go, Rust, Nim und DLang, um neue Tools zu erstellen und die Analyse zu erschweren, haben Forscher herausgefunden.

    Die Verwendung dieser vier Sprachen nimmt in der Anzahl der identifizierten Malware-Familien zu, so ein am Montag veröffentlichter Bericht des BlackBerry Research and Intelligence Teams. Das Team wählte diese vier Sprachen zur Untersuchung aus, zum Teil, weil sie zu seinen Erkennungsmethoden passen, aber auch, weil die Sprachen einen starken Rückhalt in der Community haben und als weiter entwickelt angesehen werden können.

    “Diese ungewöhnlichen Programmiersprachen werden nicht mehr so selten verwendet, wie einst angenommen”, heißt es in dem Bericht. “Bedrohungsakteure haben begonnen, sie zu übernehmen, um bekannte Malware-Familien umzuschreiben oder Tools für neue Malware-Sets zu erstellen.”

    Die Forscher beobachten insbesondere, dass mehr Loader und Dropper in selteneren Sprachen geschrieben werden. “Diese neuen Malware-Teile der ersten Stufe wurden entwickelt, um Standard-Malware wie die Remcos- und NanoCore-Remote-Access-Trojaner (RATs) sowie Cobalt Strike zu dekodieren, zu laden und zu verteilen”, heißt es in dem Bericht. “Sie werden häufig eingesetzt, um Bedrohungsakteuren zu helfen, die Erkennung auf dem Endpunkt zu umgehen.”

    In der Tat ist die Verwendung des legitimen Sicherheitstools Cobalt Strike explodiert: Seine Verwendung in Cyberangriffen ist im Vergleich zum Vorjahr um 161 Prozent gestiegen und hat sich in der Welt der Crimeware voll etabliert.

    Die dunkle Seite der Innovation

    Die Hersteller von Malware haben vielleicht den Ruf, sich nur langsam von dem zu trennen, was funktioniert, aber sie sind aus den gleichen Gründen wie ihre gesetzestreuen Kollegen gerne bereit, sich neue Programmiersprachen anzueignen: Zum einen hilft es, Schmerzpunkte im Entwicklungszyklus zu beseitigen. Aus der Sicht der Malware-Autoren sind neue Sprachen ihren Kreationen einen Schritt voraus – oder zwei oder drei – gegenüber den Schutz-Tools. “Malware-Autoren sind dafür bekannt, dass sie ihre Fähigkeiten und Verhaltensweisen anpassen und modifizieren, um von neueren Technologien zu profitieren”, schreibt Eric Milam, Vice President of Threat Research. “Dies hat mehrere Vorteile im Hinblick auf den Entwicklungszyklus und den inhärenten Mangel an Abdeckung durch Schutzlösungen.”

    Außerdem müssen sich Malware-Autoren, genau wie Nicht-Malware-Programmierer, vor einer Ausnutzung schützen. Blackberry wies auf “EmoCrash” als Beispiel dafür hin, wie sie ihre Verteidigungsmaßnahmen abhärten, um dies zu verhindern: Vor etwa einem Jahr enthüllte der Sicherheitsforscher James Quinn, dass er einen Killswitch – genannt “EmoCrash” – entwickelt hatte, der einen Pufferüberlauf in der Installationsroutine der Haupt-Binärdatei des berüchtigten Infostealers “Emotet” ausnutzte, was diesen zum Absturz brachte und ihn sechs Monate lang daran hinderte, Systeme zu infizieren. Im Grunde genommen hatte er einen Impfstoff gegen Emotet gebastelt.

    Präzise Fälle: APT28’s & APT29’s wachsende ‘Go’ Geläufigkeit

    Wenn es um diese eher obskuren Sprachen geht, haben Malware-Entwickler in der Vergangenheit meist in Go geschrieben: eine Allzwecksprache, die ähnlich wie C++ statisch typisiert und kompiliert ist. Tatsächlich war der Compiler ursprünglich in C geschrieben, obwohl er jetzt auch in Go geschrieben ist.

    C-sprachige Malware ist immer noch am weitesten verbreitet, so die Forscher. Aber zwei in Russland ansässige Bedrohungsakteure, APT28 und APT29, haben begonnen, die exotischeren Sprachen in Malware-Sets häufiger zu verwenden als andere Gruppen. APT28 wird auch als Fancy Bear oder Strontium bezeichnet, während APT29 unter anderem als Nobelium, Cozy Bear oder the Dukes bekannt ist.

    Go ist jetzt “eine der ‘Go-to’-Sprachen für Bedrohungsakteure”, die Varianten aushecken, so die Blackberry-Forscher, sowohl auf der Ebene der Advanced Persistent Threats (APTs) als auch auf der Commodity-Ebene. “Neue Go-basierte Samples tauchen nun in halbwegs regelmäßigen Abständen auf, darunter Malware aller Art, die in verschiedenen Kampagnen auf alle wichtigen Betriebssysteme abzielt”, schreiben sie.

    APT28 und APT29 sind gute Beispiele dafür. APT28, berüchtigt für seine angebliche Einmischung in die Präsidentschaftswahlen 2016 durch die Infiltration des Democratic National Committee, ist mit einer Vielzahl von Angriffen und Malware-Familien verbunden, aber insbesondere die Zebrocy-Malware-Familie “verwendet mehrere ungewöhnliche Programmiersprachen innerhalb ihrer Kill Chain”, so der Bericht.

    Zebrocy, auch bekannt als Sednit, APT28, Fancy Bear und Strontium und verwendet von der Bedrohungsgruppe Sofacy, arbeitet als Downloader und sammelt Daten über infizierte Hosts.

    Wie die Forscher erklärten, hatten die Zebrocy-Samples, als sie 2015 erstmals gesichtet wurden, drei Teile: einen Delphi-Downloader, einen AutoIT-Downloader und eine Delphi-Backdoor. Unabhängig davon, in welcher Sprache Zebrocy geschrieben ist, verbreitet er sich über Phishing-Kampagnen, die einen anfänglichen Trojaner enthalten, der versucht, mit einem Command-and-Control-Server (C2) zu kommunizieren, und der einen Downloader ausführt, um eine schädliche Nutzlast über eine etablierte Backdoor abzulegen. Er wurde mehrfach umgeschrieben, aber “die Methode der Zustellung per E-Mail-Anhang und die allgemeine Funktionalität bleiben weitgehend gleich”, so der Bericht.

    Eine Auswahl der von APT28 verwendeten Go-Rewrites:

    • 2018: Ein Go-basierter Trojaner, der mit APT28 verbunden ist, wurde als Zebrocy-Variante mit einer umgeschriebenen Version des ursprünglichen Delphi-Downloaders identifiziert.
    • 2019: Forscher entdeckten einen Nim-Downloader neben der Go-Backdoor in derselben Zebrocy-Kampagne, die auf Botschaften und Außenministerien in Osteuropa und Zentralasien abzielte.
    • 2020 & vorangegangene Jahre: APT28 wuchs zunehmend mit Go und verwendete andere umgeschriebene Kernkomponenten von Zebrocy: die Backdoor-Nutzlast und den Downloader. Zuletzt nutzte APT28 die COVID-19-Pandemie als Köder, um im Dezember die Go-Downloader-Variante auszuliefern.

    APT29/Cozy Bear seinerseits, am besten bekannt für seine Rolle bei den SolarWinds-Supply-Chain-Angriffen Anfang 2020, nahm 2018 Windows- und Linux-Rechner mit WellMess ins Visier, einem in Go und .NET geschriebenen Remote-Access-Trojaner (RAT).

    Die Forscher stellten fest, dass die am weitesten verbreitete Variante von WellMess die Go-Version ist, die sowohl in 32-Bit- als auch in 64-Bit-Varianten als PE- und ELF-Dateien vorliegt, “was APT29 die Möglichkeit gibt, ihn auf mehr als einer Art von Architektur und Betriebssystem einzusetzen.”

    APT29 dringt typischerweise in das Netzwerk eines Opfers ein, indem er zunächst die externen IP-Adressen einer Organisation auf Schwachstellen scannt und dann öffentliche Exploits gegen anfällige Systeme einsetzt

    Die wachsende Verwendung von Go-Varianten durch die Gruppe schließt die Verwendung von ausgefeilteren WellMess-Varianten bei den Versuchen im Jahr 2020 ein, COVID-19-Impfstoffforschung von akademischen und pharmazeutischen Forschungseinrichtungen in verschiedenen Ländern auf der ganzen Welt zu stehlen, einschließlich der USA, Großbritannien und Kanada. Die Forscher stellten fest, dass die neuere Variante zwar in Go geschrieben ist, aber komplizierter gemacht wurde: APT29 hat zum Beispiel mehr Netzwerk-Kommunikationsprotokolle und die Fähigkeit, PowerShell-Skripte nach der Infektion auszuführen, hinzugefügt.

    “Beide Bedrohungsakteure sind immer noch aktiv und haben einige der bisher wirkungsvollsten russischen Cyberangriffe durchgeführt”, so die Blackberry-Forscher. “Jüngste Aktivitäten deuten darauf hin, dass diese Gruppen die in diesem Papier erwähnten ungewöhnlichen Programmiersprachen verwenden, um ihre Malware komplexer zu gestalten, auf mehrere Plattformen abzuzielen und die Erkennung zu umgehen.”

    Neben Go und seiner wachsenden Anziehungskraft für APT28 und APT29 wurden in den letzten zehn Jahren auch andere seltene Sprachen in immer mehr Malware-Familien von weiteren Bedrohungsakteuren verwendet. Im Folgenden finden Sie eine Zeitleiste, die zeigt, wie die vier Sprachen zunehmend aufgetaucht sind, insbesondere die Sprachen Rust, Nim und D. Die Blackberry-Analysten weisen darauf hin, dass es sich hierbei nicht um eine vollständige Liste der Malware-Familien handelt, die in diesen Sprachen entwickelt wurden.

    Zeitleiste

    DLang-Malware scheint die unbeliebteste Sprache in der sich entwickelnden Bedrohungslandschaft zu sein, aber sie hat im letzten Jahr ein bescheidenes Wachstum erfahren. Laut dem Bericht könnte dies ein Zeichen dafür sein, dass sich DLang bei Malware-Entwicklern immer mehr durchsetzt.

    Es gibt nichts Bescheidenes an dem großen Anstieg der Verwendung von Initial Stagers für Cobalt Strike, die mit Go und neuerdings auch mit Nim kompiliert werden, so der Bericht. Initial Stagers sind die Binärdateien, die verwendet werden, um die erste Stufe des Zugriffs zu erleichtern, indem sie den Cobalt Strike Beacon von einem TeamServer herunterladen. “Dieser Server ist für die Bereitstellung der Beacons selbst verantwortlich”, heißt es in dem Bericht. “Es ist wichtig, dass Verteidiger bei der Erkennung von Cobalt Strike-bezogenen Dateien, die in diesen Sprachen geschrieben sind, einen Schritt voraus sind, um die Verteidigungsfähigkeit gegen eine solch gewaltige Bedrohung zu verbessern.”

    Lärm vom Turm zu Babel hilft Angreifern

    Das Blackberry-Team beschrieb eine Reihe von Gründen, warum die Verwendung von weniger verbreiteten Sprachen Angreifern hilft, ihre schmutzigen Taten auszuführen:

    • Defizite in bestehenden Sprachen ausgleichen. Böswillige Programmierer könnten hinter einer Reihe von Dingen her sein, die ihnen in anderen Sprachen fehlen, sei es eine einfachere Syntax, Leistungssteigerungen oder eine effizientere Speicherverwaltung. Andererseits könnte eine neue Sprache das perfekte Werkzeug für eine bestimmte, gezielte Umgebung sein: Der Bericht weist darauf hin, dass Internet-of-Things (IoT)-Geräte beispielsweise Low-Level-Sprachen wie C oder Assembler verwenden. Ein weiteres Plus ist die Benutzerfreundlichkeit einiger Sprachen, die die Entwicklung und die Lebensqualität der Entwickler erleichtern kann: Beispiele sind der Paketmanager pip für Python oder npm für Node.JS.
    • Erschweren das Reverse Engineering. Nicht alle Malware-Analyse-Tools unterstützen exotische Programmiersprachen, was die Analyse zu einer Plackerei macht. “Binärdateien, die in Go, Rust, Nim und DLang geschrieben sind, können komplexer, komplizierter und langwieriger erscheinen, wenn sie disassembliert werden, verglichen mit ihren traditionellen C/C++/C#-basierten Gegenstücken”, erklären die Blackberry-Forscher.
    • Verschraubung mit signaturbasierter Erkennung. Um eine Signatur zu erkennen, muss die Signatur gleich bleiben. Ein Beispiel für ein statisches Merkmal sind Hashes, bei denen jedes Byte identisch sein muss, egal ob es sich um einen Hash der gesamten Datei oder um einen Hash eines Zertifikats usw. handelt. Neue Sprachvarianten, die diese vormals statischen Merkmale verändern, werden wahrscheinlich nicht erkannt werden. Ein Beispiel ist BazarLoader, das in Nim umgeschrieben wurde.
      “Signaturen für bestehende Malware-Familien, die auf statischen Eigenschaften basieren, haben wenig Erfolg bei der Erkennung derselben Malware, die in diesen obskuren Sprachen neu geschrieben wurde. In Situationen wie Buer und RustyBuer (sowie BazarLoader und NimzaLoader) müssen normalerweise neue Regeln erstellt werden, um diese tangential verwandten Varianten zu kennzeichnen”, schreiben die Forscher.
    • Verschleierungstaktik. Wenn es um exotische Sprachen geht, kann die Sprache selbst fast wie eine Verschleierung wirken, angesichts der Tatsache, dass sie relativ “Die Sprachen selbst können einen ähnlichen Effekt wie eine traditionelle Verschleierung haben und können verwendet werden, um zu versuchen, konventionelle Sicherheitsmaßnahmen zu umgehen und Analysebemühungen zu behindern”, so die Forscher.
    • Cross-Kompilierung zielt effizienter auf Windows & Macs. Ein Malware-Entwickler kann eine Malware-Variante schreiben und sie crosskompilieren, um die verschiedenen Architekturen und Betriebssysteme anzugreifen, die in den meisten Unternehmen verwendet werden. Malware-Autoren benötigen weniger Tools, um Netzwerke anzugreifen, und können so mit weniger Aufwand ein größeres Netz auswerfen.
    • Einem alten Hund neue Tricks beibringen. Malware-Entwickler peppen alte Malware, die in traditionellen Sprachen wie C++ und C# geschrieben wurde, mit Droppern und Loadern auf, die in exotischen Sprachen geschrieben wurden, heißt es in dem Bericht. Auch dies spart eine Menge Arbeit, da die Autoren den mühsamen Prozess der Neukodierung von Malware überspringen und sie stattdessen einfach in die neu geschriebene Liefermethode eines neuen Droppers oder Loaders verpacken können.

    Alternativ dazu schreiben Bedrohungsakteure, die über umfangreiche Ressourcen verfügen, vorhandene Malware komplett neu in neuen Sprachen, anstatt nur Wrapper und Loader zu schreiben. Beispiele: BazaLoader wechselte zu NimzaLoader, während Buer zu RustyBuer wechselte.

    Zurückkämpfen

    Blackberry schlug vor, dass Software-Ingenieure und Bedrohungsforscher bessere Chancen haben, diese mehrsprachigen Malware-Familien abzufangen, wenn sie dynamische oder verhaltensbasierte Signaturen verwenden, also Signaturen, die das Verhalten über die Sandbox-Ausgabe kennzeichnen. [endpoint detection and response, or EDR] oder Log-Daten erkennen. “Diese Techniken können in diesen Fällen viel zuverlässiger sein”, heißt es in dem Bericht.

    Der Einsatz von implementierungsagnostischen Erkennungsregeln, um dynamische Verhaltensweisen zu markieren, kann helfen, wenn statische Signaturen versagen, so die Forscher, da sich Malware oft auf die gleiche Weise verhält, insbesondere wenn die Malware neu codiert wird. “In anderen Fällen, wie z. B. bei Shellcode-Loadern, die sich oft über eine begrenzte Untermenge von Windows-API-Aufrufen in Prozesse einschleusen, können sie anhand dieser begrenzten Untermenge identifiziert werden”, heißt es in dem Bericht.

    Auch die Verwendung von Bibliotheken innerhalb einer Binärdatei kann oft “signaturisiert” werden, so die Forscher. “Die in diesem Bericht untersuchten Sprachen verfügen über Bindungen, die es ihnen ermöglichen, sich mit der Win32-API zu verbinden und diese API-Aufrufe zu nutzen. Im Wesentlichen können sie eine fast identische Methodik wie traditionellere Sprachen wie C++ verwenden. Dies ist nicht immer der Fall, da bestimmte Sprachen ihre eigenen APIs anstelle der Win32-APIs verwenden können. Zum Beispiel könnten sie kryptografische Bibliotheken verwenden, die die Sichtbarkeit bestimmter Ereignisse einschränken würden. Die Verwendung dieser Bibliotheken innerhalb einer Binärdatei kann jedoch oft auch ‘signiert’ werden.”

    Es wird eine Weile dauern, bis die Tools zur Analyse von Malware-Beispielen mit diesen neuen Sprachen mithalten können, aber es ist “zwingend erforderlich”, dass die Sicherheits-Community “proaktiv bleibt, um sich gegen die böswillige Nutzung neuer Technologien und Techniken zu verteidigen”, warnte Blackberry.

    “Es ist von entscheidender Bedeutung, dass Industrie und Kunden diese Trends verstehen und im Auge behalten, da sie nur noch zunehmen werden”, riet Blackberrys Milam.

    Informieren Sie sich über unsere kommenden kostenlosen Live- und On-Demand-Webinar-Veranstaltungen – einzigartige, dynamische Diskussionen mit Cybersecurity-Experten und der Threatpost-Community.

    Einige Teile dieses Artikels stammen aus:
    threatpost.com