/
Ransomware Containment

Entmystifizierung von Ransomware-Techniken mit .Net-Assemblies: 5 Haupttechniken

Ransomware-Angriffe beruhen darauf, sich der Erkennung zu entziehen und dann Daten auf einem System zu verschlüsseln. In der Analyse nach einem Ransomware-Angriff lesen wir oft darüber, dass der Angriff eine Kombination aus verschiedenen Dateitypen zusammen mit einer Vielzahl von Techniken verwendete.  

Also, was bedeutet das alles eigentlich? In dieser Serie werden wir alles anhand des .Net-Software-Frameworks aufschlüsseln, um zu zeigen, wie diese Fähigkeiten von Ransomware ermöglicht werden.

In meiner vorherigen dreiteiligen Serie zu Malware Payloads und Beacons lag der Fokus auf dem Metasploit Penetration Testing Framework. Wir haben die vorgefertigte Meterpreter-Malware-Payload verwendet, um verschiedene Angreifertechniken zu zeigen. Der erste Artikel untersuchte den Beginn bösartiger Kommunikation, die Infrastruktur des Angreifers und die forensische Analyse eines Angriffs. Der zweite Artikel befasste sich mit Kategorien und Typen von Nutzlasten zusammen mit einigen In-Memory-Manipulationstechniken. Der letzte Teil dieser Serie konzentrierte sich auf Umgehungs- und Minderungstechniken.

In dieser Serie werden wir unsere eigenen individuellen Payload-Dateien (auch als Assemblies bezeichnet) erstellen, die das .Net-Software-Framework nutzen, aber mit einem Schwerpunkt auf Ransomware. Wir beginnen damit, die Fähigkeiten von Ransomware und Malware in einzelne Beispieltechniken zu zerlegen, um zu verstehen, wie sie für sich genommen funktionieren. Einige dieser einzelnen Techniken sind letztendlich das, was zu einer einzigen bösartigen Ransomware-Nutzlast kombiniert wird, mit oft verheerender Wirkung.

Technik 1: Downloader, Dropper und Loader

Wir beginnen damit, uns anzusehen, wie Ransomware oder Malware eine Verbindung zu einem infizierten Netzwerk herstellen kann. Dabei handelt es sich um die Möglichkeit, eine Verbindung zu einem Remote-System herzustellen, zusätzliche Nutzlasten herunterzuladen, sie auf dem kompromittierten System abzulegen und auszuführen (d. h. in den Speicher zu laden).

Im Folgenden finden Sie ein Beispiel für eine . Net-Befehlszeilenanwendung (Konsole), die:

  • Fungiert als Downloader, indem eine andere ausführbare Remoteanwendung (putty.exe) heruntergeladen wird aus dem Internet
  • Legt die heruntergeladene Anwendung in einem temporären Ordner auf der Festplatte des Computers ab
  • Benennt die Anwendung in putty_new.exeum
  • Führt die heruntergeladene Anwendung automatisch auf dem Computer aus, sodass sie in den Arbeitsspeicher geladen wird

Wenn Payload-Staging verwendet wird, was bedeutet, dass mehrere bösartige Dateien unterschiedliche Aufgaben erfüllen, kann der Stager (anfängliche kleine Nutzlast) sowohl zum Downloader als auch zum Dropper für die Bühne (größere Hauptnutzlast) werden. Es könnte auch der Loader der Bühne sein. Die verwendeten Techniken hängen von der Bewertung des Entdeckungsrisikos durch den Bedrohungsakteur ab, was auch als betriebliche Sicherheitsüberlegungen bezeichnet wird.

Ein Downloader ist für das Abrufen einer Nutzlast von einer Remote-Quelle wie einem Webserver oder FTP-Server verantwortlich. Dies geschieht in der Regel über das Internet. Ein Downloader erfordert daher, dass eine Netzwerkverbindung hergestellt wird, um die Remote-Quelle zu erreichen.

Ein Dropper hingegen ist in erster Linie dafür verantwortlich, eine Nutzlast auf ein Opfersystem zu liefern oder abzulegen. Daher kann es sich bei einem Downloader auch um einen Dropper handeln, aber ein Dropper muss nicht unbedingt ein Downloader sein, da die bösartige Nutzlast möglicherweise bereits in Form von PE-Dateien (Portable Executable) oder DLLs eingebettet ist. Auf diese Dateitypen wird später noch eingegangen. Dropper werden häufig bei Angriffen eingesetzt; Beliebte Beispiele sind die Angriffe auf die Lieferkette von Solarwinds und Kaseya. In beiden Fällen ging es um die Verwendung von kompromittierter Agent-Software von Zulieferern, die als Dropper für bösartige Nutzlasten verwendet wurden. Letzteres wird von der REvil-Ransomware-Gruppe verwendet.

Ein Loader ist dafür verantwortlich, das Opfersystem so einzurichten, dass eine andere bösartige Payload ausgeführt wird, insbesondere bei reinen Speicher-Payloads. Hier bedeutet das Einrichten, die notwendige Speicherplatzzuweisung sicherzustellen, oft durch das Einschleusen einer DLL in den Speicherplatz eines anderen Prozesses und das anschließende Einrichten der richtigen Speicherberechtigungen. Der Loader startet dann die Payload oder führt die erforderlichen Threads aus.

Technik 2: EXE-Laden einer DLL-Datei

Ransomware-Payloads können in Form einer EXE-Datei oder einer DLL-Datei vorliegen. Als Nächstes sehen wir uns an, wie eine ausführbare Windows-Datei, die auch als EXE-Datei bezeichnet wird, eine so genannte DLL-Datei (Dynamic Link Library) laden kann, um den darin enthaltenen Code zu nutzen.

EXE und eine DLL sind zwei Arten von .NET-Assemblies , die Programmierbefehle und zugehörige Informationen (Metadaten) enthalten. Diese Anweisungen und Metadaten werden in einer einzigen resultierenden Datei zusammengefügt – EXE- oder DLL-.NET-Assembly . Diese beiden Dateitypen ermöglichen es, Programmiercode (EXE) auf einem Windows-System auszuführen (EXE) oder als Bibliotheksdatei (DLL) zu speichern, der dann von anderen Dateien "ausgeliehen" und gelesen werden kann. Im Fall einer DLL ähnelt dieser Prozess der Art und Weise, wie mehrere Personen dasselbe Buch zu unterschiedlichen Zeiten in einer Bibliothek ausleihen können, um dessen Inhalt zu lesen. Im zweiten Teil dieser Serie werden wir diese beiden Assemblies in Bezug auf das .Net genauer untersuchen. Software-Framework.

Im Folgenden finden Sie ein sehr einfaches Beispiel, um die Verwendung dieser beiden Arten von .NET-Assemblys zu veranschaulichen – eine ausführbare Datei (EXE), die ihren eigenen Code ausführt und dann externen Code aus einer DLL-Datei lädt und liest. Die ausführbare Datei übergibt dann einige Eingaben an den geladenen DLL-Code. Schließlich verwendet die DLL die von der EXE-Datei empfangene Eingabe, um dem Benutzer, der die Anwendung ausführt, eine Nachricht anzuzeigen. Im Folgenden sehen Sie den Code in Aktion:

Diese einfache Anwendung veranschaulicht auch die Beziehung zwischen EXE- und einer DLL- .NET-Assembly . Diese Art von Beziehung wird von vielen Anwendungen und Betriebssystemen (gemeinsam genutzten Bibliotheken), einschließlich des Windows-Betriebssystems selbst, legitim verwendet. Windows packt einen Großteil seines eigenen Codes in DLLs, damit er von verschiedenen Anwendungen gemeinsam genutzt werden kann.

Die folgende Abbildung zeigt den Programmiercode für die EXE-Datei und die DLL im vorherigen Beispiel. Der Code wird in der Programmiersprache C# geschrieben, die eine der von .Net unterstützten Sprachen ist. In der Abbildung sind die DLL-Codeverweise zur Hervorhebung hervorgehoben:

DLLs sind ein effektives Mittel, um einen Code einmal so zu schreiben, dass er dann viele Male von verschiedenen ausführbaren Dateien als gemeinsam genutzte oder dynamische Bibliothek verwendet werden kann. Infolgedessen wird es auch von vielen Malware- und Ransomware-Familien stark genutzt. Techniken wie DLL Side Loading und DLL Hijacking sind gängige bösartige Techniken, die die Beziehung zwischen diesen .NET-Assemblies ausnutzen.

Technik 3: Aufklärung und Start des Lebens vom Land Binärdateien

Wir fahren fort mit einer Kombination wichtiger Techniken: die Fähigkeit, nützliche Informationen über ein Zielsystem zu sammeln (Discovery) und gleichzeitig andere Binärdateien oder ausführbare Dateien auf diesem System zu starten (Spawning). In der Abbildung hier startet unsere erste benutzerdefinierte ausführbare Datei eine native ausführbare Datei oder Binärdatei auf dem Windows-Zielsystem, die einen LotL-Angriff (Living off the Land) zeigt.

Das Beispiel zeigt, wie unsere erste C#-Anwendung ausgeführt wird und dann fortfährt, um einige nützliche Informationen über das Zielsystem zu sammeln, die durch den grünen Text in der Ausgabe angezeigt werden. Beachten Sie die Laufwerksinformationen, die gesammelt werden. Diese Informationen können von Ransomware genutzt werden, um Dateien auf diesen Laufwerken ins Visier zu nehmen und dann vor der Verschlüsselung für eine normalerweise hohe Lösegeldforderung exfiltriert zu werden.

Die Anwendung fährt fort, indem sie eine ausführbare Datei des externen Systems startet – die Windows-Eingabeaufforderung (cmd.exe) ausführbar. Die benutzerdefinierte Anwendung übergibt dann einige Windows-Befehle an den Windows-cmd.exe-Prozess , um (in rotem Text dargestellt) anzuzeigen, in diesem Fall Versionsinformationen des Windows-Systems. Für den Zweck dieses Artikels zeigt die benutzerdefinierte C#-Anwendung die Ausgabe der von ihr ausgeführten Aktionen sowie Informationen zum gestarteten Prozess an. Diese Möglichkeit, andere externe Anwendungen zu starten, ist auch nützlich, um Opferprozesse zu starten, in die schließlich bösartiger Code eingeschleust werden kann.

Technik 4: Datenkodierung

Eine weitere nützliche Technik ist die Datenkodierung. Dabei handelt es sich um den Prozess, bei dem ein Algorithmus verwendet wird, um Daten in einer anderen Form darzustellen. Beispielsweise wird eine Art der Codierung, base64, legitimerweise in einigen Webanforderungen verwendet, um Daten hin und her zu übergeben, z. B. HTTP-Autorisierung und Basisauthentifizierung in API-Aufrufen. Das gleiche Beispiel für die Base64-Codierung kann jedoch auch dazu beitragen, bestimmte Texte und Befehle auszublenden, die von einem bösartigen Programm oder einer Nutzlast verwendet werden. Es kann verwendet werden, um Teile des Codes zu verschleiern, z. B. Callback-URLs oder eine Datei. Eine solche Technik wird unten in unserem eigenständigen C#-Programm gezeigt.

In diesem speziellen App-Beispiel nimmt der Code einen Text an, der in diesem Fall die URL "https://listener.malware.bad" ist. Konvertiert sie in ein Array von Computerbytes und führt dann den Base64-Codierungsalgorithmus für die Bytes aus, um sie in den alphanumerischen ASCII-Text von "aHR0cHM6Ly9saXN0ZW5lci5tYWx3YXJlLmJhZA==" zu konvertieren, der im Encoder-Bereich der obigen Anwendungsanzeige angezeigt wird. Dieser Vorgang kann programmgesteuert rückgängig gemacht werden, um den ursprünglichen Text wiederherzustellen, wie in der Decoder-Sektion gezeigt. Auf diese Weise ist die URL im Verborgenen und kann nicht sofort als das identifiziert werden, was sie ist – eine bösartige URL.

Technik 5: Verschlüsselung

Schließlich befassen wir uns mit der Verschlüsselung. Die Verschlüsselung von Dateien auf einem kompromittierten System ist zum Synonym für Ransomware geworden. Dies ist wiederum eine legitime Fähigkeit zur Sicherung von Daten im Ruhezustand, die wie die meisten anderen Techniken bei Ransomware für böswillige Zwecke verwendet wird.

Im folgenden Beispiel haben wir eine C#-Verschlüsselungsanwendung. Es erstellt zuerst eine Kopie der Datei, die für die Verschlüsselung vorgesehen ist, und verschlüsselt dann die Kopie, wobei das Original intakt bleibt.

Hier wird der ursprüngliche Inhalt der Originaldatei Data1.txt in eine andere Datei kopiert, Data1-Encrypted.txt, Und dann wird diese neue Datei verschlüsselt.

Verschlüsselung ist eine der wichtigsten Techniken, die von Ransomware verwendet werden, und bildet die Grundlage, um kompromittierte Systeme gegen Lösegeld zu halten. Es kann auch nützlich sein, um Malware-Payloads oder -Loader während der Übertragung oder im Ruhezustand zu verstecken, um der Erkennung zu entgehen.

Lesen Sie Teil 2 der Serie am 22. Mai

Im nächsten Artikel werden das .Net-Software-Framework von Microsoft und die zugehörige Programmiersprache C# als Referenz für einige der hier gezeigten Taktiken und Techniken und deren letztendliche Erleichterung untersucht.

Erfahren Sie mehr darüber, wie Illumio Zero Trust Segmentation Ihnen helfen kann, Ransomware-Verstöße einzudämmen.

Verwandte Themen

No items found.

Verwandte Artikel

Entmystifizierung von Ransomware-Techniken mit .NET-Assemblies: Ein mehrstufiger Angriff
Ransomware Containment

Entmystifizierung von Ransomware-Techniken mit .NET-Assemblies: Ein mehrstufiger Angriff

Lernen Sie die Grundlagen eines mehrstufigen Payload-Angriffs mit einer Reihe von gestaffelten Payloads kennen.

Hive Ransomware: Wie man seinen Stachel mit Illumio Zero Trust Segmentierung begrenzt
Ransomware Containment

Hive Ransomware: Wie man seinen Stachel mit Illumio Zero Trust Segmentierung begrenzt

Erfahren Sie mehr über Hive Ransomware und wie Illumio dazu beitragen kann, das Risiko für Ihr Unternehmen zu mindern.

Ransomware Reduction 101: Laterale Bewegung zwischen Endpunkten
Ransomware Containment

Ransomware Reduction 101: Laterale Bewegung zwischen Endpunkten

Erfahren Sie mehr darüber, wie sich Ransomware über laterale Bewegungen zwischen Endpunkten ausbreitet und wie Zero-Trust-Mikrosegmentierung den Explosionsradius eindämmen kann.

Malware-Payloads & Beacons: Arten von bösartigen Payloads
Cyber Resilience

Malware-Payloads & Beacons: Arten von bösartigen Payloads

Verstehen Sie die verschiedenen Arten von Nutzlasten und überprüfen Sie ein Beispiel für bösartigen Code, den sie möglicherweise verwenden.

Malware-Payloads und Beacons: So beginnt bösartige Kommunikation
Cyber Resilience

Malware-Payloads und Beacons: So beginnt bösartige Kommunikation

Malware-Beacons sind die Art und Weise, wie ein Angreifer Malware über ein Skript ausführen kann. Das Erkennen dieser Technologien hilft bei der Entwicklung von Erkennungs- und Eindämmungsstrategien.

Malware-Payloads und Beacons: Techniken zur Abschwächung der Auswirkungen
Cyber Resilience

Malware-Payloads und Beacons: Techniken zur Abschwächung der Auswirkungen

Im letzten Teil dieser Serie konzentrieren wir uns auf einige der Verschleierungstechniken, die zur Verschleierung von Malware-Payloads verwendet werden, und untersuchen Abwehrtechniken, die Unternehmen einsetzen können.

Gehen Sie von einer Sicherheitsverletzung aus.
Minimieren Sie die Auswirkungen.
Erhöhen Sie die Resilienz.

Sind Sie bereit, mehr über Zero Trust-Segmentierung zu erfahren?