Da sich Cyber-Bedrohungen ständig weiterentwickeln und immer raffinierter werden, ist es für Sicherheitsforscher und -experten von entscheidender Bedeutung, der Entwicklung immer einen Schritt voraus zu sein. In diesem Artikel befassen wir uns mit der Frage, wie ChatGPT bei der Analyse von Malware, insbesondere des Remote Access Trojaners (RAT) AsyncRAT, helfen kann. Außerdem gehen wir näher auf die Fähigkeiten von ChatGPT ein, um zu erörtern, wie es bei der Identifizierung von Bedrohungsindikatoren helfen kann, indem es den Netzwerkverkehr analysiert und die Command-and-Control-Infrastruktur (C2) aufdeckt. Doch bevor wir fortfahren, eine kurze Einführung in ChatGPT.
ChatGPT ist Eigentum und wird betrieben vonKünstliche Intelligenz (KI)(AI), ein von OpenAI im November 2022 vorgestellter Prototyp, ist für die Beantwortung langer und komplexer Fragen konzipiert.ChatGPT ist insofern revolutionär, als es darauf trainiert ist, die Bedeutung hinter den Fragen zu lernen. Daher sind die Antworten den menschlichen Antworten sehr ähnlich. Es ist ungewiss, ob ChatGPT den Kampf gegen die Cyberkriminalität unterstützen oder herausfordern wird, aber konzentrieren wir uns vorerst auf ChatGPT und seineMalware-AnalyseFähigkeit.
Ob Sie nun ein erfahrener Sicherheitsexperte sind oder gerade erst anfangen, dieser Artikel wird Ihnen wertvolle Einblicke in die Verwendung von Hochsprachenmodellen bei der Malware-Analyse geben.
Fangen wir an!
Um die Fähigkeiten und Funktionen von ChatGPT zu verstehen, haben wir uns an die Analyse von AsyncRAT gemacht und waren neugierig, wie diese hochmoderne KI-Technologie dazu beitragen könnte, das Innenleben dieser Malware zu enthüllen und möglicherweise bei der Identifizierung von Bedrohungsindikatoren zu helfen, indem der Netzwerkverkehr analysiert und die Befehls- und Kontrollinfrastruktur (C2) aufgedeckt wird.
Bei unseren Nachforschungen fanden wir den folgenden Codeschnipsel als Stage 1 Loader für AsyncRAT, der eine große Menge an Verschleierung und einen Base64-kodierten String enthält. Der Code ist in Python geschrieben und nutzt die Common Language Runtime (CLR)-Bibliothek, um mit dem .NET Framework zu interagieren und eine Base64-kodierte Assembly zu laden und auszuführen.
In weiteren Untersuchungen haben wir festgestellt, dass ChatGPT bei der Analyse von Malware wie AsyncRAT sehr nützlich ist, aber auch, dass es in einigen Bereichen noch Grenzen hat. Dennoch glauben wir, dass die Verwendung von Hochsprachenmodellen wie ChatGPT bei der Bekämpfung von Cyberbedrohungen eine vielversprechende Entwicklung ist.
Hier haben wir beschlossen, diesen Code als Eingabe für ChatGPT zu verwenden und uns den Code genauer anzuschauen.
Der bereitgestellte Code verwendet base64-kodierte Zeichenketten, die ChatGPT aufgrund von Beschränkungen der Zeichenkettenlänge und der erlaubten Operationen nicht entschlüsseln kann. Dennoch ist ChatGPT in der Lage, eine leicht verständliche Erklärung der Funktionalität des Codes und der möglichen böswilligen Absicht zu liefern. Es sei darauf hingewiesen, dass ChatGPT ein leistungsfähiges Sprachmodell ist, das jedoch in Verbindung mit anderen Methoden und Techniken verwendet werden sollte und kein Allheilmittel für alle Aufgaben im Zusammenhang mit der Malware-Analyse darstellt.
Deshalb haben wir Cyberchef verwendet, um die base64-Zeichenfolge zu dekodieren, die sich als Python-Skript für die zweite Stufe des Laders herausstellte.
Verwenden wir diesen Code wieder als Eingabe für ChatGPT und sehen wir, was es mir über die
In ähnlicher Weise haben wir eine lange base64-kodierte Zeichenkette, die wir mit Cyberchef dekodieren müssen.
Diese Zeichenfolge entpuppt sich als PE-Datei. Wir waren nicht in der Lage, die PE-Datei an ChatGPT weiterzugeben, so dass sie uns bei der Analyse der PE-Datei nicht weiterhalf. Dennoch haben wir beschlossen, uns den Inhalt der PE-Datei anzusehen.
Wir werden diese Binärdatei mit Dnspy dekompilieren.
Wie Sie sehen können, wird die Ausgabe der base64-Dekodierungsfunktion als Eingabe an die Dekomprimierungsfunktion übergeben.
Der obige Code ist eine C#-Funktion, die anscheinend ein Byte-Array namens "gzip" dekomprimiert. Die Funktion erstellt einen neuen Stream mit der Klasse GZipStream und übergibt ihm ein MemoryStream-Objekt, das mit dem Byte-Array "gzip" erstellt wurde. Dann liest sie mit GZipStream die komprimierten Daten in einem 4096-Byte-Block und schreibt sie in das neue MemoryStream-Objekt. Die Funktion verwendet dann die ToArray-Methode des MemoryStream-Objekts, um die dekomprimierten Daten als Byte-Array zurückzugeben.
Kurz gesagt, diese Funktion nimmt ein komprimiertes Byte-Array, dekomprimiert es mit dem Gzip-Algorithmus und gibt die dekomprimierten Daten als Byte-Array zurück. Diese Funktion kann verwendet werden, um Daten zu dekomprimieren, die zuvor mit dem Gzip-Algorithmus komprimiert wurden.
Auch hier haben wir uns für die Entschlüsselung mit Cyberchef entschieden.
Dies ist eine weitere PE-Datei, bei der es sich zum Zeitpunkt der Analyse um eine .NET-Assembly handelt. Wir verwenden Dnspy, um sie zu analysieren.
Diese Binärdatei enthält base64-kodierte Zeichenfolgen, aber wenn Sie sich das letzte Wort genau ansehen, werden Sie feststellen, dass die base64-Zeichenfolge bei der Dekodierung zu einem Powershell-Skript wird.
Wie Sie sehen können, ist die Powershell sehr unscharf, also haben wir beschlossen, zu prüfen, ob ChatGPT sie für uns entschlüsseln kann. Hier ist die Ausgabe.
Auf die Frage nach der Funktion solcher Skripte erhält man die folgende Ausgabe.
NET-Assembly mit einer zusätzlichen base64-kodierten Zeichenfolge. Sie wird zunächst an eine Funktion namens cipher übergeben, deren Argument der Schlüssel für die Verschlüsselung ist.
Also haben wir beschlossen, uns die Logik der Cipher-Funktion anzusehen.
Wir beschließen nun, diesen Code als Eingabe für ChatGPT zu verwenden und ihn zu bitten, das Passwort zu erkennen.
Dieses Ergebnis hat uns überrascht.
Wir haben die gleiche Logik in Python implementiert, um zur nächsten Stufe überzugehen.
Hier ist die Ausgabe. Die endgültige PE-Datei:
Dies ist eine weitere .NET-Datei. Bei der Überprüfung in Dnspy erhalten wir folgendes Ergebnis.
Wenn wir uns die Funktionen ansehen, haben wir eine klare Vorstellung davon, was diese Datei tut, d. h. ihre Anti-Analyse-Techniken, Registrierungsfunktionen und so weiter. Es wird interessant sein, zu sehen, ob ChatGPT den Zweck dieses Codes versteht und erkennt, um welche Art von Malware es sich handelt.
Die Schlüsselfunktion im Code ist die "Install"-Methode, die für die Installation und Ausführung der angegebenen Datei beim Start verantwortlich zu sein scheint.
Das "FileInfo"-Objekt wird verwendet, um die Datei anzugeben, die der Code zu installieren und auszuführen versucht.
"Process.GetCurrentProcess().MainModule.FileName" und "fileInfo.FullName" werden verwendet, um zu prüfen, ob der aktuell laufende Prozess mit der angegebenen Datei übereinstimmt. mit der angegebenen Datei identisch ist.
Die Methode "Process.GetProcesses()" wird verwendet, um eine Liste aller laufenden Prozesse zu erhalten, und der Code durchläuft sie, um jeden Prozess anzuhalten, der denselben Dateipfad wie die angegebene Datei hat.
Die Methode "Methods.IsAdmin()" wird verwendet, um zu prüfen, ob der Benutzer über Administratorrechte verfügt.
Der Befehl "schtasks" wird verwendet, um geplante Aufgaben zu erstellen, die die angegebene Datei bei der Anmeldung ausführen (wenn der Benutzer über Administratorrechte verfügt).
Die Methode "Registry.CurrentUser.OpenSubKey" wird verwendet, um den Schlüssel HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun zu öffnen. Die Methode "registryKey.SetValue" wird verwendet, um den Schlüsselwert auf die angegebene Dateipfaddatei zu setzen (wenn der Benutzer keine Administratorrechte hat).
Die Methode "File.Exists" wird verwendet, um zu prüfen, ob die angegebene Datei bereits existiert, und die Methode "File.Delete" wird verwendet, um sie zu löschen, wenn sie existiert.
Das "FileStream"-Objekt wird verwendet, um eine neue Datei im angegebenen Dateipfad zu erstellen und den Inhalt der Datei des aktuell laufenden Prozesses in diese zu schreiben.
Führen Sie die Methode "Methods.ClientOnExit()" aus.
Die Methode "Path.GetTempFileName()" wird verwendet, um eine temporäre .bat-Datei zu erstellen, und das Objekt "StreamWriter" wird verwendet, um eine Reihe von Befehlen in diese Datei zu schreiben.
Mit der Methode "Process.Start" wird die .bat-Datei gestartet und mit der Methode "Environment.Exit(0)" wird der aktuelle Prozess beendet.
Wie diesem Code zu entnehmen ist, versucht der Code, eine bestimmte Datei beim Start zu installieren und auszuführen, und er scheint darauf ausgelegt zu sein, sicherzustellen, dass die angegebene Datei beim Start und mit administrativen Rechten ausgeführt wird. Der Code versucht auch, die Originaldatei zu löschen und eine neue Datei mit demselben Namen und Inhalt zu erstellen, was darauf hindeuten könnte, dass er versucht, die Originaldatei durch eine bösartige Version zu ersetzen. Die Überprüfung, ob der Benutzer über Administratorrechte verfügt, die Erstellung geplanter Aufgaben und die Änderung von Registrierungseinträgen deuten darauf hin, dass versucht wird, die Datei auf jeden Fall beim Starten auszuführen. Es gibt auch Möglichkeiten, die Ausführung der Datei zu verbergen, z. B. das Erstellen einer Bat-Datei, die versteckt ausgeführt wird, und das anschließende Löschen der Bat-Datei nach der Ausführung.
Es erkennt, dass der Code bösartig ist und identifiziert ihn korrekt als Remote Access Tool (RAT).
Dank dieser Schulung konnten wir ChatGPT besser entschlüsseln und verstehen, wie es bei der Malware-Analyse helfen kann. Obwohl ChatGPT seine grundlegenden Fähigkeiten unter Beweis gestellt hat, ist es derzeit nicht mit der von menschlicher Intelligenz gesteuerten Malware-Analyse vergleichbar, die umfassender ist. Wir werden ChatGPT weiter beobachten und in Zukunft weitere Updates zur Verfügung stellen, um seine Fähigkeiten und Leistung zu verbessern.
Originalartikel von Chief Security Officer, bei Vervielfältigung bitte angeben: https://cncso.com/de/asynkratische-analyse-mit-chatgpt-html