Kapitel 65: Erkundung der Designideen der Top-APT-Backdoor Sunburst (Solarwinds Supply Chain Attack Teil 2)

e37b4ce3c16aa3bb821cd3de87d04df6.png

 Teil 1 Vorwort 

Hallo zusammen, mein Name ist ABC_123 . Letzte Woche habe ich einen Artikel mit dem Titel „Der schwerwiegendste APT-Lieferkettenangriff in der Geschichte, Flussdiagrammanalyse und Analyse des Angriffs auf Europa und die Vereinigten Staaten mit Solarwinds (Teil 1)“ geschrieben und die Resonanz war ziemlich gut. Da dieser APT-Supply-Chain-Angriff äußerst komplex ist, müssen etwa 5 bis 6 Artikel geschrieben werden . In dieser Ausgabe wird weiterhin der zweite Artikel veröffentlicht, in dem die Designideen der darin verwendeten Sunburst-Hintertür beschrieben werden und wie sie die Verkehrserkennung umgeht.

ABC_123 fasst eine große Anzahl von Analyseartikeln im Internet zusammen, schließt binäre Analyseinhalte aus, die die meisten Menschen nicht verstehen können, und ist bestrebt, die verständlichste Sprache zu verwenden, damit jeder die Designideen dieser Top-Hintertür verstehen kann und Inspiration für die Offensive und Verteidigung aller bietet. Ich glaube, dass jeder nach der Lektüre des Artikels intuitiv erleben wird, wie mächtig die von der führenden APT-Organisation entworfene Hintertür ist.

 Teil 2 Sunburst-Backdoor-Rezension 

  • Sunburst-Designideen und Workflow-Diagramm

Wie üblich werden wir zunächst ein von ABC_123 gezeichnetes Bild der Designideen und des Flussdiagramms der Sunburst-Hintertür im Solarwinds-Lieferkettenangriff veröffentlichen, das aus einer großen Anzahl von Sunburst-Hintertür-Beispielanalyseartikeln zusammengefasst ist. Als nächstes werden wir auf der Grundlage dieses Bildes veröffentlichen , wir erklären Ihnen den gesamten Prozess im Detail. Backdoor-Arbeitsprozess.

bc6bac935ece0f0aeeb3569aa9b90c9f.png

Wie die Sunburst-Hintertür in die Orion-Software kompiliert wird, wurde im vorherigen Artikel ausführlich beschrieben, daher werde ich hier nicht darauf eingehen . Sunburst trägt die legale digitale Signatur von Solarwinds, die über einen integrierten Whitelist-Effekt verfügt und verschiedene Schutzmaßnahmen perfekt umgeht. Schließlich wurde die DLL-Datei in den Update-Patch der Orion-Netzwerkverwaltungssoftware gepackt. Sobald das Opfer diesen Patch installiert, wird die Sunburst-Hintertür ausgelöst. Sie wird jedoch nicht sofort ausgeführt. Es wird eine Reihe komplexer Prozesse durchlaufen Initialisierungsbedingungen, um festzustellen, ob es sich in der realen Umgebung befindet. In der Computerumgebung des Opfers ausgeführt, ob Virenschutz vorhanden ist, ob der übergeordnete Prozess angemessen ist usw.

dc5f3ad9b4c76092f19f3ae69277f14d.png

  • Drei Zustände der Sunburst-Hintertür

Die Sunburst-Hintertür liest den Wert von ReportWatcherRetry aus der XML-Konfigurationsdatei in der Orion-Software von Solarwinds, um zu bestimmen, ob sie weiter ausgeführt werden soll. Sie wird nur dann weiter ausgeführt, wenn ihr Wert nicht 3 ist.

Der ReportWatcherRetry-Wert der XML-Konfigurationsdatei gibt drei Werte zurück: 3, 4 und 5, die den drei Persistenzzuständen „Truncate“, „New“ und „Append“ entsprechen . Der Standardwert ist 4 (Neu). 4 (Neu) zeigt an, dass die Hintertür zum ersten Mal ausgeführt wird, 5 (Anhängen) zeigt an, dass die Hintertür bereits zuvor auf dem System ausgeführt wurde, aber aufgrund vorgegebener Bedingungen (z. B. aktive Antivirensoftware) beendet wurde, und 3 ( Truncate) bedeutet, dass die Hintertür sofort ausgeführt werden sollte. Stoppen Sie die Ausführung.

0f6c65648101951c7ba23570cb2db10c.png

a2597ae74dbbe5d4c4f0527d97a216e1.png

 Teil 3: 8 notwendige Bedingungen für die Auslösung einer Hintertür 

Hinweis: Während der Beurteilungsphase der Ausführungsbedingungen verwendet die Sunburst-Hintertür häufig die Methode OrionImprovementBusinessLayer.DelayMin(), um nach dem Zufallsprinzip 30–120 Minuten in den Ruhezustand/Verzögerungsmodus zu versetzen, um die Codeausführungsgeschwindigkeit zu verzögern, was die Wahrscheinlichkeit verringern kann, durch automatische Analyse entdeckt zu werden und Schutzsoftware.

 1    Bestimmen Sie die Ausführung der einzigen Instanz

Bestimmen Sie dies mithilfe der isAlive-Methode im C#-Code.

 2 Bestimmen Sie den übergeordneten Prozess

Durch die Berechnung des Hash-Werts des übergeordneten Prozessnamens wird ermittelt, ob der laufende Prozess SolarWinds.BusinessLayerHost.exe oder SolarWinds.BusinessLayerHostx64.exe ist, und der Hash-Algorithmus wird angepasst. Dieser Schritt besteht darin, Sandbox-Erkennungs- oder Debugging-Tools zu vermeiden und eine automatische Sandbox-Erkennung oder -Analyse durch Sicherheitspersonal zu vermeiden.

 3 Warten Sie 10 Tage, bevor Sie es ausführen

Legen Sie die Aktivierungszeit der Hintertür nach dem Zufallsprinzip fest und warten Sie 12 bis 14 Tage, um den Schadcode nach und nach auszulösen. Der Zweck besteht darin, die kontrollierten Server von mehr als 18.000 Orion-Softwarebenutzern auf der ganzen Welt schrittweise online zu bringen, um eine zentralisierte Online-Erkennung und Alarmierung durch Verkehrsüberwachungsgeräte zu vermeiden , die zur Aufdeckung des Plans führen würde. Viele Geräte löschen Protokolle nach 7, sodass eine ausreichende Wartezeit auch die Protokolldatensätze reduzieren kann.

 4Erstellen Sie   benannte Pipes, um die Ausführung mehrerer Instanzen zu verhindern

Die Hintertür erstellt eine benannte Pipe mit dem Namen 583da945-62af-10e8-4902-a8f205c72b2e und platziert mehrere Beispiele zur Ausführung.

 5 Überprüfen Sie die Statusparameter der Konfigurationsdatei

Überprüfen Sie den Wert des XML-Konfigurationselements ReportWatcherRetry, um den aktuellen Status der Sunburst-Hintertür zu ermitteln. Wenn sie sich im Status „Neu“ oder „Anhängen“ befindet, fahren Sie mit der Ausführung fort.

 6 Überprüfung der lokalen Domänennamen-Blacklist

1.  Rufen Sie die AD-Domäne ab und verwenden Sie Hash und reguläre Ausdrücke, um zu bestimmen, ob es sich um einen Wert in der Blacklist handelt, z. B. swdev.local, swdev.dmz, saas.swi usw., wobei swi „SolarWInds Internal“ und swdev entspricht entspricht „SolarWinds Develop“. 2.   Darf das Schlüsselwort solarwinds nicht enthalten. 3. Der Domänenname darf nicht mit dem regulären Ausdruck (?i)([^az]|^)(test)([^az]|$) übereinstimmen. Einfach ausgedrückt: Er darf nicht wie der Domänenname einer Testumgebung aussehen.

795fc294fb31d36f7064ca44df51d6f0.png

 7 Ermitteln Sie, ob Anti-Software-Prozesse, -Dienste und -Treiber vorhanden sind

1. Prozess-Blacklist-Prüfung

Überprüfen Sie mithilfe der SearchAssemblies-Methode, ob eine Prozess-Blacklist vorhanden ist, und prüfen Sie, ob Prozesse wie Windbg, Winhex, Autoruns, Wireshark, dnSpy, apimonitor-x64, fiddler, idaq64, ollydbg, procdump64, x64dbg usw. vorhanden sind.

0377d24b2fead39dbb6baee0b83d259e.png

2. Überprüfung der Dienst-Blacklist

Verwenden Sie die SearchServices-Methode, um zu erkennen, ob Blacklist-Dienstnamen vorhanden sind, z. B. Windows Defender, Carbon Black, Crowdstrike Falcon, FireEye – EDR usw. Wenn ein Dienst auf der schwarzen Liste gefunden wird, deaktiviert Sunburst den Dienst durch Ändern der Registrierung.

3. Überprüfung der Treiber-Blacklist für Sicherheitssoftware

Rufen Sie die WMI-Abfrage über die SearchConfigurations-Methode auf. Wählen Sie * aus Win32_SystemDriver aus, um festzustellen, ob eine Treiber-Blacklist vorhanden ist, z. B. Groundling32.sys usw.

b802d20e3779b89a8a3588fe36ae36e0.png

e6041b3c330de5f84e785228b40c7e36.png

 8 Bestätigen Sie die Netzwerkverbindung

Verwenden Sie die CheckServerConnection-Methode, um den Domänennamen api.solarwinds.com zu analysieren und einen Netzwerkkonnektivitätstest durchzuführen. Nur wenn der Test bestanden wird, wird er weiter ausgeführt, andernfalls wird er beendet und auf die nächste Ausführung gewartet.

23ee57418ce8f299a547f500d20b0c0f.png


 Teil 4: Backdoor-DGA-Domänennamen-Kommunikationsphase 

  • Erforderliche Kenntnisse der DGA-Domainnamen-Kommunikationsphase

 1 Überblick über die Kommunikationsphase des DGA-Domainnamens

Nachdem die oben genannten Umgebungstests bestanden wurden, tritt die Sunburst-Hintertür unter Verwendung des DGA-Domänennamens in die DNS-Kommunikationsphase ein. Die DGA-Domänennamenkommunikation umfasst zwei Stufen: Die erste Stufe gibt hauptsächlich die Informationen zum Computerdomänennamen an den Angreifer C2 zurück, sodass der Angreifer Ziele basierend auf diesen Informationen filtern kann; die zweite Stufe gibt hauptsächlich die Statusinformationen der Sicherheitsschutzsoftware zurück , damit der Angreifer die Ziel-Antivirensoftware verstehen kann. , edr und andere Bereitstellungssituationen. Diese Informationen werden verschlüsselt und im ersten Segment des DGA-Domänennamens versteckt. Basierend auf den von der Sunburst-Hintertür gesammelten Computerdomänennameninformationen und Informationen zur Sicherheitsschutzsoftware wählten die Sunburst-Hintertürangreifer etwa 100 wertvolle Ziele für die Intranet-Lateralisierung aus.

 2 eindeutige Kennung Benutzer-ID

Die Basisinformationen der Computer einiger Opfer sind zu umfangreich (z. B. ist der Domänenname des Computers zu lang), und es ist erforderlich, mehrere DGA-Domänennamenanforderungen zu senden, um die Informationen zum Computerdomänennamen vollständig zu übertragen. Um DGA-Domänennamenanfragen von verschiedenen Computern unterscheiden zu können, entschlüsselt und kombiniert Sunburst die segmentierten Informationen von DGA-Domänennamen desselben Computers. Sunburst berechnet eine eindeutige Benutzer-ID für jeden Computer.

Für jeden infizierten Computer besteht die Benutzer-ID aus der MAC-Adresse des Opfers, dem Windows-Domänennamen und der eindeutigen Windows-Computer-ID-GUID (d. h. dem Registrierungswert, der während der Windows-Installation zufällig generiert und in HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid gespeichert wird). Die eindeutige Benutzer-ID wird aus den 3 Werten durch einen benutzerdefinierten Verschlüsselungsalgorithmus berechnet.

 3 Backdoor-DGA-Domänennamen-Generierungsformat

Der von Sunburst verwendete DGA-Domainname wurde sehr geschickt gehandhabt. Das allgemeine Format ist wie folgt:

*.appsync-api.eu-west-1.avsvmcloud.com (* steht für den Subdomainnamen von DGA)

*.appsync-api.us-west-2.avsvmcloud.com (* steht für den Subdomainnamen von DGA)

*.appsync-api.us-east-1.avsvmcloud.com (* steht für den Subdomainnamen von DGA)

*.appsync-api.us-east-2.avsvmcloud.com (* steht für den Subdomainnamen von DGA)

Darunter stammen die drei kleinen Segmente auf der rechten Seite jedes DGA-Domänennamens aus der fest codierten Zeichenfolge im Backdoor-Programm, und der Sternchenteil des ersten Segments des DGA-Domänennamens wird basierend auf dem Domänennamen und dynamisch generiert andere Informationen auf dem Opferserver. Das Folgende ist ein Beispiel für einen Algorithmus zur Generierung von Domänennamen in der DGA-Phase.

b138bb986e04c17a1b847f43ff82af3b.png

  • DGA-Domainnamen-Kommunikationsphase der Hintertür

 1 Phase 1 DGA-Domänennamenkommunikation

In dieser Phase besteht die Hauptaufgabe von Sunburst darin, den Computerdomänennamen des Opfers nach mehreren Verschlüsselungsebenen in den DGA-Domänennamen einzufügen und ihn dann an C2 zurückzuleiten. Wenn der Domänenname einiger Computer zu lang ist, teilt die Sunburst-Hintertür die Informationen auf, sendet jeweils 14 Zeichen und sendet mehrere DNS-Anfragen, um die Informationsübertragung abzuschließen. Wenn der Angreifer an diesem Computerdomänennamen interessiert ist, tritt er in die zweite Phase der DGA-Domänennamenkommunikation ein . Anschließend wird die Sunburst-Hintertür aktiviert und wechselt in den Status „Anhängen“.

Wie in der folgenden Abbildung dargestellt, sind dies die Verkehrsbeispiele des DGA-Domänennamens der DGA-Domänennamenkommunikation von Sunburst in der ersten Phase, die aus dem Datenverkehr erfasst wurden. Die zweite Spalte enthält den von Sunburst gesammelten entschlüsselten Domänennamen des Opfers. Der Angreifer verwendet die Informationen zum entschlüsselten Domänennamen, um festzustellen, ob die Zieleinheit des Opfers wertvoll ist . Durch die Entschlüsselung und Analyse dieser Domänennamen haben wir herausgefunden, dass viele Technologieunternehmen, darunter Cisco und Intel, sowie viele Universitäten und Regierungsbehörden in den Vereinigten Staaten im Verdacht stehen, Opfer dieses Angriffs zu sein.

1210b11d077db467e3f9af0fa2f2919e.png

 2 Phase 2 DGA-Domänennamenkommunikation

Zu diesem Zeitpunkt schließt die Sunburst-Hintertür hauptsächlich die Übertragung der Informationen zum Virenschutzstatus des Computers des Opfers an den C2-Server ab. Wenn der Sunburst-Backdoor-Status „Anhängen“ (aktiviert) ist, beginnt die zweite Phase des DGA-Domänennamens. Der generierte DGA-Domänenname enthält die eindeutige Kennung des Computers und die Statusinformationen zum Sicherheitsprodukttest der integrierten Dienst-Blacklist (einschließlich der Frage, ob dies der Fall ist ) . vorhanden ist und ob es noch läuft). , ob es geschlossen wurde usw.) und ob die Kommunikation mit der letzten DNS C2-Phase erfolgreich war.

9971e86a24b05346cf314f68f7cf03df.png

 3 IP-Adresse, die als Befehlsauslöser zur Umgehung der Verkehrsüberwachung verwendet wird

Wenn wir normalerweise DNS abfragen, beispielsweise beim Zugriff auf google.com, wird der Domainname in 142.250.*.* konvertiert und die IP-Adresse im A-Eintrag gespeichert. Die Sunburst-Hintertür analysiert auch den C2-Domänennamen, um IP-Adressen zu erhalten. Der Zweck von Sunburst besteht jedoch nicht darin, diese IP-Adressen für die Kommunikation zu verwenden, sondern verschiedene bösartige Operationen basierend auf den IP-Adressen in verschiedenen IP-Segmenten auszulösen, die von der C2-Domäne aufgelöst werden Name. Dies ist eine sehr clevere und sehr verborgene Befehls- und Kontrollform, die von Verkehrsüberwachungsgeräten schwer zu erkennen ist.

Der Angreifer kontrolliert den IP-Adressbereich der Auflösung des C2-Domänennamens so, dass er zu IP-Adressen in den Google-, Amazon- und Microsoft-Segmenten gehört, anstatt IP-Adressen zufällig auszuwählen, um unterschiedliche Verhaltensweisen auszulösen. Dies soll die Wahrscheinlichkeit einer Erkennung verringern. Auch hier kommuniziert Malware nicht mit diesen IP-Adressen.

a5c78858acb2f9f7ab19a2b585227814.png

Wie in der Abbildung oben gezeigt, definieren Sunburst-Entwickler die IP-Adresse in einer AddressFamilyEx-Struktur. Sunburst löst unterschiedliche böswillige Verhaltensweisen basierend auf unterschiedlichen IP-Adressen aus, die von der DNS-Auflösung zurückgegeben werden . Beim Lesen des C#-Codes der Sunburst-Hintertür haben wir herausgefunden, dass die Sunburst-Hintertür basierend auf der C2-Auflösung von Domänennamen in verschiedene Kategorien von IP-Adressen etwa fünf Haupttypen von Operationen ausführt:

1. Senden Sie weiterhin die nicht übertragenen Domänennamenfragmentinformationen. 2. Senden Sie die Statusinformationen des Sicherheitsschutzprodukts des Zielcomputers. 3. Führen Sie den C2-Kanal in der zweiten Stufe aus. 4. Bereinigen und beenden. 5. Zurücksetzen auf der Anfangszustand und dann wie die erste Ausführung.

Zum Schluss noch ein allgemeines Bild:

ce274233bb63db29c8b32ddef3d2fce5.png

 4 C2 steuert die IP der Domänennamenauflösung und steuert indirekt das Sunburst-Flussdiagramm

Als nächstes erstellte ABC_123 ein Flussdiagramm, das den gesamten Prozess demonstrierte, wie die C2-Seite das Sunburst-Backdoor-Verhalten kontrollierte, indem sie die Auflösung des DGA-Domänennamens in verschiedene IPs während des eigentlichen Kampfprozesses kontrollierte. Da der Kommunikationsprozess sehr kompliziert ist, wird ABC_123 einen speziellen Artikel schreiben, um den gesamten Prozess im Detail zu erläutern .

d26fa29a7202a301966b3fd53e3512d5.png

 Teil 5 HTTP-C2-Kommunikationsphase (Angriffsanweisungen erhalten und ausführen)

Durch die DGA-Domänennamenkommunikation in den beiden vorherigen Phasen wählte der Angreifer wertvolle Ziele aus, und die Sunburst-Hintertür trat in die nächste Phase ein: die HTTP-C2-Kommunikationsphase. Zu diesem Zeitpunkt gibt es einen CNAME-Eintrag in den DNS-Rückgabedaten, und die Sunburt-Hintertür verwendet diesen Domänennamen für die HTTP-C2-Kommunikation .

Zu diesem Zeitpunkt startet Sunburst einen neuen Thread zur Ausführung der HttpHelper.Initialize-Methode, um die HTTP-C2-Kommunikationsphasenanforderung zu verarbeiten, die vom Angreifer gesendeten Anweisungen zu empfangen und auszuführen und anschließend die Ergebnisse der Befehlsausführung zu verschlüsseln und mit den normalen zu vermischen Datenverkehr. Das Paket wird an den C2-Server des Angreifers zurückgesendet. Der Angreifer, der die Sunburst-Hintertür entwickelt hat, hat zu diesem Zeitpunkt eine äußerst clevere Methode zur Verkehrsverschlüsselung entwickelt, um den Verkehr zu überwachen. Als nächstes wird ABC_123 es im Detail erklären, um Ihnen die Augen zu öffnen.

Zunächst werden drei verschiedene URL-Zugriffsformen der Sunburst-Hintertür in der HTTP-C2-Kommunikationsphase veröffentlicht, die drei Situationen entsprechen:

1. Sunburst greift kontinuierlich auf die XML-URL zu und erhält aktiv Anweisungen von der C2-Seite. Das URL-Format lautet wie folgt:

hxxps://3mu76044hgf7shjf.appsync-api.eu-west-1.avsvmcloud.com/swip/upd/Orion.Wireless.xml

2. Sunburst gibt das Ergebnis der Befehlsausführung an das C2-Ende zurück. Wenn die Daten größer als 10.000 sind, lautet das URL-Format wie folgt:

hxxps://3mu76044hgf7shjf.appsync-ap.us-east-2.avsvmcloud.com/pki/crl/492-ca.crl

3. Sunburst gibt das Ergebnis der Befehlsausführung an das C2-Ende zurück. Wenn die Daten kleiner oder gleich 10.000 sind, lautet das URL-Format wie folgt:

hxxps://3mu76044hgf7shjf.appsync-api.us-east-1.avsvmcloud.com/fonts/woff/6047-freefont-ExtraBold.woff2

660567441a0ce5c1e11a374ac29f0c92.png

Als Nächstes erklären wir die drei Prozesse, bei denen die Sunburst-Hintertür C2-Anweisungen erhält, diese ausführt und die Ausführungsergebnisse dann an die C2-Seite zurücksendet.

 1  Sunburst greift auf die .xml-URL zu, um Anweisungen zu erhalten

Um die vom Angreifer gesendeten Anweisungen zu erhalten, initiiert die Sunburst-Hintertür kontinuierlich http-GET-Anfragen, um auf der C2-Seite auf die URL mit der Endung .xml zuzugreifen, und wird nach jeder Anfrage für die von setTime festgelegte Zeit in den Ruhezustand versetzt. Diese XML-Dateien werden als normale XML-Dateien getarnt, die sich auf eine .NET-Assembly beziehen, und die vom Angreifer ausgegebenen Anweisungen werden durch verschiedene Steganographietechniken darin verborgen . Sunburst liest den Inhalt der vom C2 zurückgegebenen XML-Datei und verwendet einen einzigartigen Entschlüsselungsalgorithmus, um die vom Angreifer gesendeten Anweisungen aus der XML-Datei zu extrahieren und auszuführen.

Der von Sunburst zum Initiieren einer GET-Anfrage verwendete URL-Pfad ist zufällig und wird nach einem bestimmten Algorithmus zufällig erstellt. Dies geschieht auch, um der Erkennung durch IOCs zu widerstehen . Für die folgende URL:

hxxps://3mu76044hgf7shjf.appsync-api.eu-west-1.avsvmcloud.com/ swip/upd/Orion.Wireless.xml

Die Sunburst-Hintertür ändert die URL-Anfrage hauptsächlich im gelben Teil: /swip/upd/<random Components>.xml. Der Wertauswahlalgorithmus von <Zufallskomponenten> ist relativ komplex, und jedes kleine Segment wird zufällig mit unterschiedlichen Anteilen ausgewählt. Es ist zu beachten, dass die letzte Ziffer des Fehlercodes kein zufälliges Zeichen ist, sondern den Wert 0 oder 1 annimmt, was angibt, ob die vorherige Befehlsanforderung erfolgreich war. Normalerweise zeigt 0 einen Erfolg an, 1 oder ein anderer Wert zeigt einen Fehler an und das Suffix .xml wird am Ende hinzugefügt.

8fb52f06e1431654d3096ec189169968.png

Schließlich erstellt Sunburst zufällig die folgende URL basierend auf dem Algorithmus, um auf das C2-Ende zuzugreifen und die ausgegebenen Anweisungen zu erhalten:

https[:]//infinitysoftwares.com/swip/upd/SolarWinds.CortexPlugin.Nodes-5.2.1.xml

https[:]//infinitysoftwares.com/swip/upd/Orion.Wireless.UI-3.1.0.xml

https[:]//infinitysoftwares.com/swip/upd/Nodes-1.2.0.xml

Für die ersten 16 Anfragen wird jedes Mal ein anderer zufällig generierter URL-Pfad verwendet, danach kann es jedoch sein, dass der zuvor verwendete zufällig generierte URL-Pfad wiederholt wird. Zu diesem Zeitpunkt gibt es einen festen benutzerdefinierten If-None-Match- Anfrageheader, der die verschlüsselte vorherige Benutzer-ID enthält.

Wie in der folgenden Abbildung dargestellt, ist dies der Inhalt im XML-Format, der vom C2-Server des Angreifers zurückgegeben wird, nachdem Sunbrust auf die GET-Anfrage für die URL mit der Endung .xml zugegriffen hat, wodurch die vom Angreifer ausgegebenen Anweisungen verschlüsselt und gespeichert werden:

7e83962460a6a15ca7f2680ce5436cdb.png

 2   Sunburst analysiert die Anweisungen und führt sie aus

Die Sunburst-Hintertür entschlüsselt und extrahiert die vom Angreifer ausgegebenen Anweisungen aus dem XML-Rückgabetext und führt die entsprechenden Anweisungen über die ExecuteEngine-Methode aus. Sie verwendet den Wert in JobEngine als Bedingung für die Ausführung des aus Befehlszeilenparametern bestehenden Befehls . Aus diesen Anweisungen geht hervor, dass die von der Sunburst-Hintertür ausgeführten Vorgänge sehr begrenzt sind. Wenn der Angreifer die Ergebnisse weiter ausbauen möchte, muss er daher andere Tools verwenden, um komplexere Vorgänge auszuführen. Dies ist die dritte Stufe des Vorgangs CobaltStrike-Hintertür.

fceb7c4eed316fdf62d6c8b96a146c34.png

1.   Wenn die Anweisung als JobEngine.SetTime geparst wird, legen Sie die Verzögerungszeit für jede Anfrage fest.

2.  Bei Job.CollectSystemDescription werden Informationen gesammelt, einschließlich Computerdomänenname, Administrator-SID, lokaler Hostname, Benutzername, Informationen zur Betriebssystemversion, Systempfad, Netzwerkadapterstatus, Firmenname des registrierten Benutzers, registrierter Benutzername und Systemversion Nummer, Systemverzeichnis usw.

3.   Wenn JobEngine.UploadSystemDescription verwendet wird, erstellen Sie eine HTTP-Anfrage und senden Sie das Anfrageergebnis an den C2-Server.

4.   Wenn JobEngine.RunTask ausgeführt wird, wird ein neuer Prozess basierend auf dem angegebenen Dateipfad und den angegebenen Parametern gestartet.

5.   Wenn JobEngine.GetProcessByDescription verwendet wird, wird die Prozessliste abgerufen und die Prozessinformationen werden gemäß den Prozessparametern abgerufen, einschließlich Prozess-ID, Prozessname, übergeordneter Prozess-ID und dem dem Prozess entsprechenden Benutzernamen.

6.   Listen Sie bei JobEngine.GetFileSystemEntries die Datei- und Verzeichnisinformationen gemäß dem regulären Ausdruck im Parameter auf.

7.   Bei JobEngine.KillTask ​​beendet Sunburst den Prozess mit der angegebenen PID.

8.   Stellen Sie bei JobEngine.SetTime die Verzögerungssekunden ein. Wenn es zum zweiten Mal ausgelöst wird und die erste eingestellte Zeit weniger als 300 Sekunden beträgt, wird eine doppelte Verzögerung durchgeführt.

9.   Wenn JobEngine.FileExists verwendet wird, ermitteln Sie, ob der angegebene Pfad vorhanden ist.

10.   Löschen Sie bei JobEngine.DeleteFile den angegebenen Pfad.

11.   Lesen Sie den Wert des Registrierungsschlüssels beim Aufruf von JobEngine.ReadRegistryValue.

12.   Legen Sie beim Aufruf von JobEngine.SetRegistryValue den Namen, den Typ und den Pfad des Registrierungsschlüssels fest

13.   Löschen Sie den Registrierungsschlüssel, wenn JobEngine.DeleteRegistryValue verwendet wird

14.   Rufen Sie beim Aufruf von JobEngine.GetRegistrySubKeyAndValueNames alle angegebenen Elementnamen und Daten ab

15.   Entschlüsseln Sie bei JobEngine.WriteFile die eingehende Base64-Zeichenfolge und schreiben Sie sie in die Datei. Nach dem Schreiben wird die Verzögerungsfunktionsgarantie ausgelöst. Es ist ersichtlich, dass der Angreifer beim Dateiverarbeitungsprozess sehr vorsichtig ist.

16.   Starten Sie bei JobEngine.Reboot den Zielcomputer neu.

17.   Wenn JobEngine.Exit, beenden Sie den aktuellen Thread und warten Sie, bis er das nächste Mal geladen und ausgeführt wird.

18.   Das Backdoor-Programm der dritten Stufe, TEARDROP und RAINDROP, wird ebenfalls gemäß den Anweisungen geliefert, die zum Laden der CobaltStrike-Backdoor verwendet werden.

 3  Sunburst sendet das Ergebnis der Befehlsausführung zurück an C2

Sobald die Sunburst-Backdoor die vom Angreifer ausgegebenen Anweisungen aus der XML-Datei entschlüsselt, führt die Sunburst-Backdoor die Anweisungen aus und sendet die Ergebnisse an den C2-Server zurück. Während der Datenrückgabephase sendet die Sunburst-Hintertür keine GET-Anfrage. Stattdessen sendet sie das Ergebnis der Befehlsausführung über eine POST-Anfrage oder eine PUT-Anfrage basierend auf der Größe des zurückgegebenen Datenergebnisses an den C2-Server zurück . Sunburst tarnt die Anfrage als legitimen Solarwinds-Anfragelink oder statische Ressource, um das Sicherheitspersonal zu verwirren, und wertet die von Sunburst gesendete http-Anfrage zunächst fälschlicherweise als legitimen Datenverkehr aus.

1. Wenn die zurückgegebenen Daten größer als 10.000 Bytes sind . Sunburst wird per POST-Anfrage gesendet. Die POST-Anfrage legt das Content-Type-Feld application/octet-stream fest. In diesem Fall lautet das URL-Format wie folgt:

hxxps://3mu76044hgf7shjf.appsync-api.us-east-2.avsvmcloud.com/pki/crl/492-ca.crl

Das Format des Anforderungs-URI-Pfads ist /pki/crl/{0}{1} {2}.crl, wobei {0} eine Zufallszahl von 100 bis 10.000 ist; {1} eine integrierte Zeichenfolgenliste, aus der hervorgeht wird zufällig ausgewählt. Splicing; {2} stellt den Fehlercode der letzten Anfrage dar. In einigen Fällen ist dieser Wert leer; schließlich wird das Suffix .crl am Ende der URL gespleißt.

dfa1f3a88738f06087d6c733c5453d9a.png

2. Wenn die zurückgegebenen Daten kleiner oder gleich 10.000 Bytes sind . Sunburst sendet die Ergebnisse der Befehlsausführung über eine PUT-Anfrage an den C2-Server zurück. Die von der PUT-Anfrage zurückgegebenen Daten werden in ein JSON-Dokument umgewandelt, das der von Solarwinds rechtmäßig verwendeten Orion Improvement Plan (OIP)-Nachricht ähnelt. Die Nachricht in den JSON-Daten sind die zu sendenden Daten. Beim Senden der http-Anfrage wird die Anfrage Header-Inhalt wird festgelegt . -type: application/json .

13ca154142bddcb2327849d13fcfff52.png

Zu diesem Zeitpunkt ist das Format der aufgerufenen URL wie folgt:

hxxps://3mu76044hgf7shjf.appsync-api.us-east-1.avsvmcloud.com/fonts/woff/6047-freefont-ExtraBold.woff2

Unter diesen ist das URL-Format in zwei Situationen unterteilt:

1. /fonts/woff/{0}-{1}-{2}-webfont{3}.woff2

{0} ist eine Zufallszahl zwischen 100 und 10.000; {1} wählt zufällig eine aus der integrierten Liste mit Zeichenfolgen aus; {2} wählt zufällig eine aus der integrierten Liste mit Zeichenfolgen aus; {3} stellt den Fehlercode von dar der letzte angeforderte Vorgang.

16100ee930f0e9c90f826cc410e69686.png

2. /fonts/woff/{0}-{1}-{2}{3}.woff2

Dabei ist {0} eine Zufallszahl zwischen 100 und 10.000; {1} wählt zufällig eine aus der integrierten Liste mit Zeichenfolgen aus; {2} wählt zufällig eine aus der integrierten Liste mit Zeichenfolgen aus; {3} stellt den Fehlercode dar der letzten Anfrage.

63555b048f3e0972286c5022df6e4e44.png

Sunburst verbirgt die Ergebnisse der Befehlsausführung im folgenden POST-Anforderungspaket im JSON-Format und sendet es dann zurück an den C2-Server.

19f188d8f4bc78f2ec1b8b8589413665.png

 4   Sunburst lässt Waffen der Phase 3 fallen

Schließlich wird Sunburst in die dritte Phase eintreten. Laden Sie zunächst ein VBS-Skript und ein Loader-Programm herunter und legen Sie diese im Verzeichnis C:\Windows\ ab, um sie als legitime Dateien zu tarnen. Anschließend nutzte Sunburst die Image-Hijacking-Technologie, um dllhost.exe durch Modifizieren der Registrierung an den Befehl wscript.exe C:\Windows\[Ordner]\[trigger].vbs zu binden. dllhost.exe ist ein Programm, das zufällig unter Windows gestartet wird. Weiter , wartet der Angreifer ruhig auf die Ausführung von dllhost.exe, um das VBS-Skript weiter auszuführen. Zu diesem Zeitpunkt hat die Sunburst-Hintertür ihre Mission abgeschlossen und nachfolgende Operationen werden nichts mehr mit Sunburst zu tun haben .

Als nächstes führt das VBS-Skript die folgenden Vorgänge aus: Führen Sie rundll32.exe aus, laden Sie die schädliche DLL-Datei aus dem vorherigen Schritt, bereinigen Sie die Image-Hijacking-Registrierung von dllhost.exe, bereinigen Sie Spuren und führen Sie schließlich das Loader-Programm aus, laden Sie CobaltStrike Hintertür öffnen und seitliche Operationen im Intranet starten. Bezüglich der detaillierten Funktionsweise der dritten Stufe wird ABC_123 einen weiteren Artikel schreiben, um es Ihnen zu erklären, also bleiben Sie dran .

2e5df9d4cfa5fea7ab2b2fb1f1f3c7f2.png

 Teil 6 Zusammenfassung 

1.   Die Sunburst-Hintertür muss die Anforderungen des Angreifers erfüllen und die Sicherheitsschutzsoftware wird weiterhin unter den vom Angreifer erwarteten Umständen ausgeführt. Andernfalls wird der vorherige Vorgang zum Ändern des Status der Schutzsoftware abgebrochen oder erneut versucht. In diesem Aspekt gilt: APT-Angreifer und einer der Hauptunterschiede zwischen gewöhnlichen Kriminellen.

2.   Um der Erkennung von IOCs zu widerstehen, hat der Autor der Sunburst-Hintertür einen cleveren Algorithmus zur Generierung von DGA-Domänennamen und einen Algorithmus zur Generierung von zufälligen URL-Pfaden entwickelt. Darüber hinaus kann das Intervall zwischen zwei DGA-Domänennamenanfragen bis zu einem ganzen Tag betragen. und der Angriffsprozess ist sehr verdeckt.

3.   Während der HTTP-C2-Kommunikationsphase, wenn Sunburst vertrauliche Informationen vom Computer des Opfers zurückgibt, verschlüsselt und speichert es die Informationen in einem XML-Assembly-Dokument oder einem JSON-Dokument. Manchmal imitiert es auch absichtlich den Kommunikationsverkehr des Solarwinds-Sonderprotokolls. Dies Die Methode wird bei schwer zu erkennenden Verkehrsprüfungen verwendet.

4.   Die APT-Organisation kontrolliert indirekt den Betrieb der Sunburst-Hintertür, indem sie den C2-Domänennamen in verschiedene IP-Adresssegmente auflöst. Dieses Angriffsverhalten ist bei der Verkehrsüberwachung schwer zu erkennen.

5.   Der Angreifer schreibt unterschiedliche Zahlen 3, 4 und 5 in die XML-Konfigurationsdatei der Orion-Software und gibt die unterschiedlichen Zustände der Sunburst-Hintertür an. Die Sunburst-Hintertür liest diese Werte und führt verschiedene Vorgänge aus. Dieser Vorgang ist auch sehr verdeckt.

28b524ad28915e1e54d313b026054ea3.png

Der öffentliche Account konzentriert sich auf die gemeinsame Nutzung von Netzwerksicherheitstechnologie, einschließlich APT-Ereignisanalyse, Red-Team-Angriff und -Verteidigung, Blue-Team-Analyse, Penetrationstests, Code-Audit usw. Ein Artikel pro Woche, 99 % Original, also bleiben Sie dran.

Kontaktieren Sie mich: 0day123abc#gmail.com (# durch @ ersetzen)

Supongo que te gusta

Origin blog.csdn.net/m0_71692682/article/details/131346196
Recomendado
Clasificación