/
Eindämmung von Ransomware

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

Ransomware attacks thrive on evading detection and then encrypting data on a system. In the analysis after a ransomware attack, we often read about how the attack used a combination of different types of files together with a variety of techniques.  

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 my previous three-part series on Malware Payloads and Beacons, the focus was on the Metasploit Penetration Testing Framework. We used its ready-made meterpreter malware payload to show various attacker techniques. The first article examined how malicious communications start, the attacker’s infrastructure, and forensic analysis of an attack. The second article looked at categories and types of payloads together with some in-memory manipulation techniques. The final part of that series focused on evasion and mitigation techniques.

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.

A dropper, on the other hand, is primarily responsible for delivering or dropping a payload onto a victim system. Therefore, a downloader can also be a dropper, but a dropper may not necessarily be a downloader because a dropper may already have the malicious payload embedded in it as portable executable (PE) files or DLLs. These file types will be discussed later. Droppers are commonly used in attacks; popular examples being the Solarwinds and Kaseya supply chain attacks. Both involved the use of compromised supplier agent software used as droppers for malicious payloads. The latter being used by the REvil ransomware group.

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.

Learn more about how Illumio Zero Trust Segmentation can help you contain ransomware breaches.

Verwandte Themen

Keine Artikel gefunden.

Verwandte Artikel

Ransomware stoppen: Sehen Sie Ihre Bedrohungen mit Illumio
Eindämmung von Ransomware

Ransomware stoppen: Sehen Sie Ihre Bedrohungen mit Illumio

Erfahren Sie, warum Anwendungs- und Traffic-Transparenz in Echtzeit für die Eindämmung von Ransomware unerlässlich ist und wie sie durch Zero-Trust-Segmentierung sicher bereitgestellt wird.

4 Grundprinzipien zum Schutz vor Ransomware
Eindämmung von Ransomware

4 Grundprinzipien zum Schutz vor Ransomware

Die Einhaltung und Umsetzung dieser 4 Grundprinzipien wird Ihnen helfen, Ihr Unternehmen zu schützen, wenn es darum geht, sich gegen Ransomware zu verteidigen. Lesen Sie mehr.

So dämmen Sie LockBit-Ransomware-Angriffe mit Illumio ein
Eindämmung von Ransomware

So dämmen Sie LockBit-Ransomware-Angriffe mit Illumio ein

Erfahren Sie, wie LockBit-Ransomware funktioniert und wie Illumio Zero Trust Segmentation im Sommer 2022 einen LockBit-Ransomware-Angriff eindämmte.

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

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-Resilienz

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-Resilienz

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?