C2-Umgehungstechniken: Verständnis von JA3/S-Randomisierung und Cipher Stunting

Januar 28, 2021
Joshua St. Hilaire
Director of Security Research
C2-Umgehungstechniken: Verständnis von JA3/S-Randomisierung und Cipher Stunting

JA3 erfreut sich in der Sicherheitsgemeinschaft zunehmender Beliebtheit, um bekannte Tools oder Malware mit Hilfe einer Signatur zu kennzeichnen, die sich leicht aus den TLS-Werten (Transport Layer Security) generieren lässt, die bei der Kommunikation mit einer solchen Verschlüsselung verwendet werden. Obwohl JA3-Signaturen einfach zu verwenden sind und den Anschein erwecken, dass Verteidiger bösartige Kommunikationen leicht erkennen können, können sie ebenso leicht manipuliert werden, um die Erkennung zu umgehen und sich in den normalen TLS/SSL-Verkehr einzufügen.

In diesem Beitrag werden wir damit beginnen, einige der Methoden aufzudecken, die in der freien Wildbahn von Command-and-Control (C2)-Servern und -Agenten eingesetzt werden, um die Entdeckung zu umgehen. Wir werden uns auf die Umgehungstechniken bekannter C2-Frameworks konzentrieren, die mehrere Techniken zur Umgehung der Erkennung einsetzen. Was speziell die JA3-Signaturen betrifft, so haben die Entwickler dieser Tools einige Anstrengungen unternommen, um eine Entdeckung zu vermeiden. Darüber hinaus gibt es eindeutige Beweise dafür, dass dieselben Umgehungstechniken aktiv von Malware genutzt werden, um die Erkennung zu umgehen.

Enträtseln von JA3/S: Eine Fibel

Lassen Sie uns zunächst kurz zusammenfassen, was JA3 ist und warum es zur Erkennung von bösartigem Datenverkehr verwendet werden kann. JA3 ist eine Methode zur Erstellung von Fingerabdrücken des TLS-Handshakes, die von John Althouse, Jeff Atkinson und Josh Atkins von Salesforce im Jahr 2017 erstmals veröffentlicht wurde. Internetverkehr, der TLS implementiert, überträgt Werte aneinander, um eine sichere Verbindung herzustellen. Die folgenden Werte werden verwendet, um einen JA3-Hash zu bilden (SSLVersion, Cipher, SSLExtension, EllipticCurve, EllipticCurvePointFormat) und für den JA3S-Hash(SSLVersion,Cipher,SSLExtension). Diese Werte werden vor der Verschlüsselung im Klartext übertragen, so dass Client und Server wissen, welche Art von Verschlüsselungs-Chiffren zur Verfügung stehen. Sie sind die Grundlage für die Bildung eines JA3/S-Hash. Diese Werte können verwendet werden, um bestimmte Arten von bösartigem Datenverkehr zu identifizieren, wenn sie zuverlässig sind. Eine ausführlichere Erklärung finden Sie im Originalbeitrag von SalesForce.

Verständnis von JA3/S Randomisierung und Cipher-Stunting

Wie bereits erwähnt, wird ein Teil der JA3/S-Signatur von der Chiffre abgeleitet. Die Chiffrierliste wird während der Client/Server-Helo-Negotiation übertragen. Ein Beispiel hierfür ist in der nachstehenden Abbildung einer Paketaufnahme zu sehen.

Abbildung 1: Chiffrierliste, die bei der Begrüßung des TLS-Clients übertragen wird

Während dieses Prozesses wählt der Server die höchste verfügbare Chiffre, die von beiden Enden der Verbindung unterstützt wird. Das bedeutet, dass für jede Verbindung zwischen einem endpoint und einem Server die gleiche JA3/S-Signatur zu erwarten wäre und zu einer gleichen JA3/S-Signatur führen würde. Bei Verwendung der JA3/S-Randomisierung wählt der Server jedoch eine zufällige Chiffre aus der Liste der unterstützten Chiffren. Durch die Verwendung einer anderen Chiffre wird der JA3/S-Hash, der von diesen Werten abgeleitet wird, unterschiedlich ausfallen.

Um die Erkennung zu umgehen, müssen die Malware-Autoren die verwendeten TLS-Werte, die die Grundlage der JA3-Signatur bilden, verfälschen. Auf diese Weise können sie die Erkennung erfolgreich umgehen. Ein einfacher Weg, dies zu tun, ist die zufällige Auswahl einer Cipher-Suite. Diese Technik ist als JA3/S-Randomisierung bekannt.

Ein wachsender Trend: JA3/S in C2-Rahmenwerken

Das Akamai-Forschungsteam hat Erkenntnisse zu diesem Thema geteilt. Zusammengefasst zeigen die Forschungsergebnisse, dass die Zahl der TLS-Fingerabdrücke von 18.652 verschiedenen Fingerabdrücken weltweit im August 2018 auf mehr als 1,3 Milliarden Ende Februar 2019 angestiegen ist. Dies deutet darauf hin, dass Malware-Autoren und Bot-Controller nach der Erforschung und dem Interesse der Sicherheits-Community am JA3/S-Fingerprinting Techniken zur Umgehung von TLS-Signaturen implementiert haben.

JA3/S Randomization/Cipher-Stunting hat sich laut dem Github-Changelog auch in C2-Frameworks wie Empire ab der Version 3.0 Master Release eingeschlichen. Das Bild unten zeigt den Quellcode von Empire GitHub, der ein Beispiel zeigt, wie JA3 Randomisierung erreicht werden kann.

Abbildung 2: Randomisierung der JA3-Signatur durch zufällige Auswahl aus einer Liste von Chiffren

Der Entdeckung entgehen: Mehr als eine Herangehensweise

Wie bei allen neuen Techniken, die in der Sicherheitsgemeinschaft zur Identifizierung von Bedrohungen eingesetzt werden, haben Angreifer immer schnell ihre Taktik geändert, um die Erkennungsstrategien zu umgehen. Wir haben gesehen, wie Red-Team-Tools die JA3-Randomisierung nutzen, um die Erkennung zu umgehen, aber es gibt auch andere Methoden. Wie das Sprichwort sagt: "Es gibt mehr als einen Weg, eine Katze zu häuten". So kann die JA3-Impersonation beispielsweise durch Nachahmung der TLS-Werte gängiger Browser oder sogar durch Verwendung des zugrunde liegenden HTTPS-Clients des Betriebssystems erfolgen, um die Erkennung zu umgehen.

Schlussfolgerung: Die Herausforderung des Aufspürens

Es wird deutlich, dass sich Angreifer bei allen Techniken, die von Sicherheitsexperten zur Erkennung von "Bösartigkeit" eingesetzt werden können, schnell anpassen werden, um weiterhin unentdeckt zu operieren. Die Identifizierung von C2-Rahmenwerken mit JA3-Signaturen wird schwierig, wenn das Rahmenwerk JA3/S-Randomisierung oder eine andere Technik einsetzt. Die von den Verteidigern eingesetzten Sicherheitstools und -techniken müssen sehr flexibel sein und sich schnell an Veränderungen anpassen können. Ist dies nicht der Fall, wird sich C2 weiterhin der Entdeckung entziehen und unter dem Radar der Cybersicherheitsexperten operieren. JA3-Signaturen sind selbst ohne Manipulation ein unzuverlässiger Indikator für bösartige Aktivitäten, und die in diesem Beitrag beschriebenen Techniken machen sie noch unzuverlässiger, da sie leicht manipuliert werden können.

Vor diesem Hintergrund können JA3-Signaturen als zusätzlicher Indikator für eine Kompromittierung verwendet werden, doch sollte man sich nicht zu sehr auf sie verlassen, da sie wenig zuverlässig sind und leicht manipuliert werden können. Auf Signaturen basierende Erkennungen sind nur so gut, wie den ihnen zugrunde liegenden Daten vertraut werden kann und wie gut sie gepflegt werden. Idealerweise muss für die Erkennung von C2 eine vielschichtige Netzwerkerkennungsstrategie verwendet werden, die flexibel und verallgemeinerbar ist. Natürlich erfordert dieser Ansatz eine viel größere Investition, die sich aber langfristig auszahlen wird.

Besuchen Sie meinen zweiten Blog wo ich eine Methode untersuche, die als formbares C2-Profil bekannt ist.