Hintertür XZ
Ohne Zweifel Der Fall der im XZ-Dienstprogramm entdeckten Hintertür ist einer der Fälle, die in die Geschichte von Linux eingehen werden Und das nicht umsonst, sondern wegen der ganzen Arbeit, die Jia Tan geleistet hat Es ist eines der besten Beispiele für angewandtes Social Engineering. denn die geleistete Arbeit ist zweifellos für die investierte Zeit zu bewundern, da wir nicht von Wochen oder Monaten sprechen, sondern von mindestens zwei Jahren.
Dieser Fall hat die Aufmerksamkeit vieler und erregt Die Reverse-Engineering-Analyse hat begonnen, was nach ihren vorläufigen Ergebnissen offenbaren das Vorhandensein einer in liblzma eingebetteten Hintertür im Rahmen einer Kampagne zur Infiltration des XZ-Pakets. Diese Hintertür ist speziell für x86_64-Systeme mit dem Linux-Kernel und der Glibc-C-Bibliothek konzipiert, wo ein zusätzlicher Patch auf sshd angewendet wird, um es mit libsystemd zu verknüpfen.
Die Forscher erwähnen das Zunächst ging man davon aus, dass die Hintertür die SSL-Authentifizierung umgehen könnte und über SSH Zugriff auf das System erhalten, aber weitere Analysen ergaben, dass die Hintertür ermöglicht die Ausführung beliebigen Codes auf dem System, ohne Spuren in den SSD-Protokollen zu hinterlassen.
Die Funktion RSA_public_decrypt wird von der Hintertür abgefangen, um die Signatur des Hosts mithilfe des festen Schlüssels Ed448 zu überprüfen. Wenn die Überprüfung erfolgreich ist, wird der vom externen Host übermittelte Code mit der Funktion system() ausgeführt, bevor sshd die Berechtigungen zurücksetzt. Die auszuführenden Codedaten werden aus dem an die Funktion RSA_public_decrypt übergebenen Parameter „N“ extrahiert und mithilfe des vordefinierten Schlüssels ChaCha20 überprüft und entschlüsselt.
Um die Hintertür zu aktivieren in SSHD, verwendet den standardmäßigen Host-Schlüsselaustauschmechanismus und reagiert nur auf den vom Angreifer vorbereiteten Schlüssel und entspricht dem vordefinierten Festschlüssel Ed448. Wenn die Überprüfung der Signatur des öffentlichen Schlüssels fehlschlägt oder die Integrität der Ausführungsdaten nicht bestätigt wird, gibt die Hintertür die Kontrolle an die Standard-SSH-Funktionen zurück.
Der private Schlüssel des Angreifers bleibt unbekannt, sodass es unmöglich ist, einen Verifizierungscode zur Aktivierung der Hintertür aus externen Quellen zu implementieren oder einen Scanner zu entwickeln, der kompromittierte Hosts im Netzwerk erkennt. Allerdings haben die Forscher ein Skript entwickelt, das zeigt, wie ein öffentlicher Schlüssel in einem von einem SSH-Client übermittelten OpenSSH-Zertifikat ersetzt werden kann, das von der von der Hintertür abgefangenen Funktion RSA_public_decrypt verarbeitet wird
Darüber hinaus Forscher entdeckten die Existenz eines Mechanismus zur Neutralisierung der Hintertür (killswitch) auf dem lokalen System, indem Sie vor dem Starten von sshd eine Umgebungsvariable festlegen. Es gab auch eine detaillierte Analyse von Shell-Builds, die verwendet wurden, um den Prozess des Extrahierens einer Objektdatei mit einer Hintertür und dem Ersetzen in der Bibliothek zu verwechseln liblzma.
Während der Kompilierung des XZ-Pakets wurde Code ausgeführt aus dem Drehbuch «build-to-host.m4» das eine Testdatei manipuliert hat und bestimmte Änderungen an den Charakteren vorgenommen und wandelte es in eine intakte Datei um, aus der das Shell-Skript extrahiert wurde. Das resultierende Shell-Skript war in der Lage, nach und nach ein anderes Shell-Skript aus dem Inhalt zu extrahieren, indem es bestimmte Sequenzen bei den Befehlen übersprang und Zeichen ersetzte.
Als Ergebnis dieses Prozesses wurde ein ziemlich komplexes und umfangreiches Shell-Skript erstellt, das die Datei mit der Hintertür direkt aus der Datei good-large_compressed.lzma extrahierte, entschlüsselte und in liblzma einfügte. Dieses Skript enthielt auch eine Implementierung des Plugin-Mechanismus, der die spätere Bereitstellung zusätzlicher ausführbarer Komponenten durch das Platzieren neuer Testdateien ohne Änderung von good-large_compressed.lzma und bad-3-corrupt_lzma2.xz mithilfe einer Signatursuche ermöglichte. Der Code enthielt auch einen Entschlüsseler, der auf dem RC4-Algorithmus basiert und in der AWK-Sprache implementiert ist.
Andererseits ist es erwähnenswert, dass aufgrund des Vorfalls Es wurde eine Reihe von Tools namens xzbot entwickelt. was beinhaltet:
- Ein Honeypot zur Erstellung fiktiver Server, die vorgeben, angreifbar zu sein, um Verbindungsversuche von Angreifern zu erkennen.
- Ein Patch, um den öffentlichen Schlüssel auf der Hintertür in liblzma.so durch Ihren eigenen zu ersetzen (um mit dem entsprechenden privaten Schlüssel eine Verbindung zur Hintertür herzustellen).
- Eine Demo zum Initiieren der Codeausführung auf einer modifizierten Hintertür mithilfe des entsprechenden privaten Schlüssels.
Wenn Sie daran interessiert sind, es zu wissen mehr darüberkönnen Sie die Details einchecken den folgenden Link.