Eingehende Analyse des Stuxnet-Virus: Der erste Virus, der reale Infrastrukturen angreift

Zusammenfassung: Das Stuxnet-Virus zerstört hauptsächlich die Zentrifuge, indem es die Geschwindigkeit der Zentrifuge ändert, und beeinträchtigt die Qualität des produzierten angereicherten Urans.

Dieser Artikel wurde von der Huawei Cloud Community „ [Security Technology] In-deep Analysis of Stuxnet Virus: The First Virus Attacking Real-World Infrastructure (1) [Original Analysis] “ geteilt, Autor: Cloud-Storage-Entwickler-Supportteam.

Kapitel 1 Stuxnet-Hintergrund [Aus dem Internet] 

Im Jahr 2006 nahm der Iran sein Nuklearprogramm wieder auf, baute ein Kernkraftwerk in Natanz und installierte eine große Anzahl von Zentrifugen zur Herstellung von angereichertem Uran. Im Januar 2010 stellte die Internationale Atomenergiebehörde (IAEA), die für die Inspektion der iranischen Nuklearanlagen zuständigen Vereinten Nationen, fest, dass es im Kernkraftwerk Natanz ein Problem gab: die IR-1-Zentrifuge, von der ursprünglich erwartet wurde, dass sie eine Lebensdauer hat von 10 Jahren im großen Stil gescheitert, aber niemand konnte sagen, woran es letztendlich lag.

Kernkraftwerk Natanz, Iran

Im Juni 2010 stellte Sergey Ulasen, technischer Direktor von VirusBlockAda, einem kleinen Antiviren-Unternehmen in Weißrussland, fest, dass die schädliche Datei bei der Analyse der schädlichen Datei des iranischen Programms äußerst komplex war.Es gibt eine "Hintertür" im Kernel, die es zu vermeiden gilt B. das Scannen der Antiviren-Engine, und mehrere „Zero-Day-Schwachstellen“ (Zero-Day) werden genutzt, um das Windows-System zu durchbrechen, der Schadcode jedoch aus Ohnmacht nicht vollständig entschlüsselt werden konnte. Am 12. Juli 2010 veröffentlichte Ulson die Entdeckung in einem englischsprachigen Sicherheitsforum.

Sergej Ulasen

Die globale Sicherheitsindustrie begann, diesen Virus zu analysieren und zu entschlüsseln. Gleichzeitig nannte Microsoft den Virus: Stuxnet. Durch Analysen wurde festgestellt, dass die Verschleierung, Raffinesse und Komplexität des Virus die Vorstellungskraft der Menschen bei weitem überstieg.

Einigen ausländischen Berichten zufolge wurde der Virus von Programmierern aus den Vereinigten Staaten und Israel mitgeschrieben, und die technischen Spezifikationen des angegriffenen industriellen Steuerungssystems von Siemens wurden von Deutschland bereitgestellt.Das industrielle Steuerungssystem von Siemens wird in iranischen Nuklearanlagen weit verbreitet. In Dimono, Israel, wurde ein Testsystem aus einem Siemens-Controller und einer IR-1-Zentrifuge gebaut, um das Virus zu testen. Auch die britische Regierung beteiligte sich an dem Test. Nach Abschluss des Tests fungierte niederländisches Geheimdienstpersonal als technischer Berater für den Zentrifugeningenieur , Virus in nukleare Anlage implantieren.

Das Stuxnet-Virus zerstört hauptsächlich die Zentrifuge, indem es die Geschwindigkeit der Zentrifuge ändert, und beeinträchtigt die Qualität des produzierten angereicherten Urans.

Die Zentrifuge ist defekt

Der Stuxnet-Virus wurde ursprünglich als gezielter Angriff entwickelt und als Netzwerkwaffe eingesetzt, die der Urheber von APT-Angriffen ist. Es wurde entdeckt, weil der Programmierer, der den Stuxnet-Virus entwickelt hatte, fälschlicherweise und und oder beim Programmieren verwendete, wodurch der Virus jede Version des Windows-Systems infizierte, und wurde schließlich im Juni 2010 gefangen.

Kapitel 2 Stuxnet Virus Reverse In-Depth Analysis [Persönliche Originalanalyse, bitte nicht ohne Genehmigung nachdrucken] 

Struktur und Ablauf des Stuxnet-Virus

Der Stuxnet-Virus besteht hauptsächlich aus 6 Dateien, 4 Verknüpfungssymboldateien, die die LNK-Schwachstelle verwenden, um den Computer automatisch von der U-Disk zu infizieren, und zwei tmp-Dateien, die zum Initialisieren und Installieren des Stuxnet-Virus verwendet werden.

Stuxnet hat insgesamt 7 Schwachstellen ausgenutzt, darunter 4 Zero-Day-Schwachstellen:

CVE-2008-4250(MS-08-067)-Windows Server-Dienst NetPathCanonicalize()

CVE-2010-2772 WinCC-Standardpasswort

CVE-2012-3015 Step 7 Unsicheres Laden von Bibliotheken

CVE-2010-2568(MS-10-046) – LNK-Schwachstelle in der Windows-Shell (O-Day)

CVE-2010-2743(MS-10-073)-Win32K.sys Local Privilege Escalation (O-Day)

CVE-2010-3888 (MS-10-092) Schwachstelle im Taskplaner (O-Day)

CVE-2010-2729(MS-10-061)-Windows Print Spooler Service Remote Code Execution (O-Day)

Der Stuxnet-Virus ist in der U-Disk versteckt. Wenn die U-Disk in den Computer eingelegt wird, infiziert sie automatisch das Windows-System, indem sie die LNK-Schwachstelle ausnutzt. Nachdem die Infektion ausgeführt wurde, wird die Datei ~WTR4141.tmp in den Speicher geladen über Ring3 Hook Ntdll, Ring3 Hook Kernel32 implementiert Ntdll das Verbergen von *.tmp- und *.lnk-Dateien. Laden Sie dann die Datei ~WTR4132.tmp über die Speicher-LoadLibrary, extrahieren Sie den Kern Main.dll, verschlüsseln, entpacken, laden Sie Main.dll in den Speicher, initialisieren und installieren Sie den Stuxnet-Virus, injizieren Sie Prozesse, registrieren Sie Dienste, geben Sie Ressourcendateien frei und schocken Sie schließlich Net Der Virus wird als Dienst ausgeführt. Wenn der Dienst ausgeführt wird, greift er die industrielle Steuerungssystemsoftware WinCC von Siemens an und greift schließlich die SPS über diese Software an, wodurch die Zentrifuge anormal arbeitet und schnell ausfällt.

Call#15 Initialisieren Sie die Installation von Stuxnet

Wenn die Main.dll geladen wird, wird zuerst die Exporttabelle #15 aufgerufen. #15 ist hauptsächlich dafür verantwortlich, zu überprüfen, ob Stuxnet auf einem geeigneten System läuft, festzustellen, ob das aktuelle System infiziert wurde, die aktuelle Prozessautorität auf Systemautorität zu erhöhen, die Version der im System installierten Antivirensoftware zu erkennen und auszuwählen, welcher Prozess ausgeführt werden soll inject the DLL into; Füge die DLL in den ausgewählten Prozess ein und rufe dann #16 auf.

Die erste Aufgabe von #15 besteht darin, die Aktualität der Konfigurationsdaten zu überprüfen. Konfigurationsdaten können an zwei Orten gespeichert werden. Stuxnet sucht nach den neuesten Konfigurationsdaten und führt es aus. Dann prüft Stuxnet, ob es auf einem 32-Bit-System läuft, und beendet sich, wenn es auf einem 64-Bit-System läuft, und prüft auch die Version des Betriebssystems. Stuxnet kann nur auf den folgenden Versionen des Betriebssystems ausgeführt werden:

Win2K

WinXP

Windows 2003

Vista

Windows-Server 2008

Windows 7

Windows Server 2008 R2

Überprüfen Sie dann, ob der aktuelle Prozess Administratorrechte hat, und wenn nicht, verwenden Sie die 0-Day-Schwachstelle, um die laufenden Rechte zu erhöhen. Wenn das aktuelle Betriebssystem Windows Vista, Windows 7, Windows Server 2008 R2 ist, verwenden Sie Taskplaner Escalation of Privilege, um Berechtigungen zu erhöhen; wenn das Betriebssystem Windows XP, Win2K ist, verwenden Sie Windows Win32k.sys Local Privilege Escalation (MS10-073) Schwachstelle Rechte erhöhen.

Wenn der Code erfolgreich ausgeführt wird und die Schwachstelle win32k.sys ausgenutzt wird, wird die Haupt-DLL-Datei als neuer Prozess ausgeführt, z. B. mithilfe des Taskplaners, die Haupt-DLL wird im Prozess csrss.exe ausgeführt.

Der Code für den Win32k.sys-Exploit befindet sich in der Ressourcendatei #250,

Wenn die Exporttabelle #15 alle Prüfungen besteht, wird #16 ausgeführt. #16 ist der Hauptinstaller für Stuxnet. Es überprüft das Datum und die Version des Betriebssystems, entschlüsselt, erstellt und installiert Rootkit-Dateien und Registrierungsschlüssel, injiziert sich selbst in services.exe, um Wechseldatenträger zu infizieren, injiziert sich selbst in den Step7-Prozess, um alle Step7-Projekte zu infizieren, erstellt globale Mutexe ( Mutexe) für die Kommunikation zwischen verschiedenen Komponenten; Verbindung zum RPC-Server.

Call#16 Installieren Sie Stuxnet

#16 Überprüfen Sie zuerst, ob die Konfigurationsdaten gültig sind, und überprüfen Sie dann, ob der NTVDM TRACE-Wert in der Registrierung HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS-Emulation 19790509 ist, und wenn ja, beenden Sie. Dieses Element sollte ein Indikator dafür sein, ob eine Infektion zugelassen werden soll. Dann das Datum in den Konfigurationsdaten lesen (Konfigurationsdaten-Offset 0x8c) und mit dem aktuellen Systemdatum vergleichen, wenn das aktuelle Datum nach der Zeit in den Konfigurationsdaten liegt, dann beenden; das Datum in den Konfigurationsdaten ist 2012-6 -24.

Die Kommunikation zwischen den verschiedenen Komponenten von Stuxnet übernimmt das globale Mutual Exclusion Semaphore. Wenn SetSecurityDescriptorDacl in Windows Xp aufgerufen wird, um diese Mutual Exclusion Semaphors zu erstellen; in Windows Vista, Windows 7 und Windows Server2008 SetSecurityDescriptorSacl zum Erstellen aufrufen, kann die Verwendung dieser Methode die Systemintegritätssicherheit verringern überprüft, ob Codeschreiboperationen abgelehnt werden.

Stuxnet erstellt dann 3 verschlüsselte Dateien aus dem .stub-Abschnitt. Speichern Sie sie dann auf der Festplatte.

Ø Die Hauptangriffsnutzlastdatei von Stuxnet wird als Oem7a.pnf gespeichert;

Ø 90-Byte-Daten werden in %SystemDrive%\inf\mdmeric3.PNF gespeichert;

Ø Die Konfigurationsdaten werden nach %SystemDrive%\inf\mdmcpq3.PNF kopiert;

Ø Eine Protokolldatei wird nach %SystemDrive%\inf\oem6C.PNF kopiert;

Stuxnet überprüft dann die Systemzeit, um sicherzustellen, dass sie vor dem 24. Juni 2012 liegt. Anschließend prüft es, ob es selbst und der auf der Festplatte gespeicherte verschlüsselte Code aktuell sind, indem es die auf der Festplatte gespeicherten Versionsinformationen ausliest und entschlüsselt. Diese Funktionalität wird durch #6 erreicht.

Nachdem die Versionsprüfung bestanden ist, veröffentlicht Stuxnet die Ressourcendatei (#201, #242), decodiert und schreibt den Inhalt in zwei Dateien: Mrxnet.sys und Mrxcls.sys; es handelt sich um zwei Treiberdateien: eine zum Laden von Stuxnet Point ( Ladepunkt), der andere wird verwendet, um bösartige Dateien auf der Festplatte zu verstecken. Und die Uhrzeit dieser beiden Dateien stimmt mit der Uhrzeit anderer Dateien im Systemverzeichnis überein, um keinen Verdacht zu erregen; erstellen Sie dann Registrierungseinträge, die auf diese beiden Treiberdateien verweisen, registrieren Sie sie als Dienstelemente, damit diese beiden Dienste ausgeführt werden können beim Booten gestartet werden. Sobald das von Stuxnet erstellte Rootkit korrekt installiert ist, werden einige globale Semaphoren generiert, die anzeigen, dass die Installation erfolgreich war.

Stuxnet verwendet dann weitere 2 Importfunktionen (Exporte), um den Installations- und Infektions- (Infektions-) Prozess fortzusetzen.

  1. Fügen Sie dann payload.dll in services.exe ein und rufen Sie #32 auf (Wechseldatenträger infizieren und RPC-Dienst starten);
  2. Fügen Sie die Payload-.dll in den Step7-Prozess ein: S7tgtopx.exe und rufen Sie Nr. 2 auf (wird verwendet, um die Step7-Projektdatei zu infizieren).Um diesen Schritt erfolgreich durchzuführen, muss Stuxnet möglicherweise die Prozesse explorer.exe und S7tgtopx.exe beenden, falls dies der Fall ist in Worten in Betrieb.

Stuxnet durchläuft die Dienst- und Treiberdateien, die durch Einfügen und Erstellen der beiden oben genannten Payload-DLLs erstellt wurden.

Stuxnet wartet eine kurze Zeit, bevor es versucht, sich mit dem RPC-Dienst zu verbinden (#32 ist aktiviert), ruft Funktion 0 auf, um zu prüfen, ob die Verbindung erfolgreich ist, und ruft Funktion 9 auf, um einige Daten zu empfangen und in oem6c.pnf zu speichern.

Bisher wurden alle Standardverbreitungsmethoden und Angriffsnutzlasten aktiviert.

Stuxnet greift Siemens-SPS-Prozess an

SPS-Prozess angreifen :

  1. Die bösartige DLL benennt s7otbxdx.dll in s7otbxsx.dll um und ersetzt s7otbxdx.dll durch eine angepasste DLL.Die angepasste DLL schreibt hauptsächlich 16 der 109 exportierten Funktionen von s7otbxsx.dll um, die das Lesen, Schreiben und Aufzählen von Codeblöcken beinhalten.Andere Exportfunktionen werden weiterhin von s7otbxdx.dll bereitgestellt;
  2. Stuxnet wählt verschiedene Codes aus, um die SPS gemäß den Merkmalen verschiedener Zielsysteme zu infizieren. Eine Infektionssequenz umfasst Codeblöcke und Datenblöcke, die in die SPS eingeschleust werden, um das Verhalten der SPS zu ändern. Es gibt drei Hauptinfektionssequenzen, von denen zwei ähnlich sind in Funktion Dasselbe, markiert als Sequenz A und B, das andere markiert als Sequenz C;
  3. Wenn s7otbxdx.dll in der Datei ccrtsloader.exe ausgeführt wird, startet die ersetzte s7otbxdx.dll zwei Threads, um bestimmte SPSen zu infizieren:

Thread 1 : (läuft alle 15 Minuten; infiziert 6ES7-315-2 SPS mit spezifischen SDB-Signaturen)

  1. SPS-Typ durch s7ag_read erkennen, es muss 6ES7-315-2 sein;
  2. Erkennen Sie den SDB-Block, um festzustellen, ob die SPS infiziert ist, und wählen Sie aus, welche Sequenz (A oder B) geschrieben werden soll;
    Ø Den SDB (Systemdatenblock) aufzählen und parsen und einen SDB finden, dessen Offset 50h DWORD gleich 0100CB2Ch ist; (erklären Sie Das verwendete Es ist das Profibus-Kommunikationsprozessormodul CP 342-5.)
    Ø Suchen Sie in der SDB nach bestimmten Werten 7050h und 9500h, und nur wenn die beiden Werte in der Summe größer oder gleich 33 erscheinen, können die Infektionsanforderungen erfüllt werden erfüllt; (7050h steht für KFC750V3 Frequenzumrichter, 9500h steht für Vacon NX Frequenzumwandlungstreiber.)
  3. Befolgen Sie die Reihenfolge A oder B für die Infektion:

Ø Kopieren Sie den DP_RECV-Block in FC1869 und ersetzen Sie dann den DP_RECV-Block durch einen benutzerdefinierten Block; (DP_RECV ist der Name des Standardcodeblocks, der vom Netzwerk-Coprozessor verwendet wird, um Netzwerk-Frames auf Profibus zu empfangen. Jedes Mal, wenn ein Paket empfangen wird, wird der benutzerdefinierte Block ruft auf. Der ursprüngliche DP_RECV in FC1869 wird verarbeitet, und dann werden die Paketdaten nachbearbeitet.)

Ø Schreiben Sie einige benutzerdefinierte Blöcke in die SPS (20);

Ø Infizieren Sie OB1, sodass der bösartige Code zu Beginn jedes Zyklus zuerst ausgeführt wird; (Erhöhen Sie zuerst die Größe des ursprünglichen Blocks; schreiben Sie dann den benutzerdefinierten Code an den Anfang des Blocks; fügen Sie schließlich den ursprünglichen OB1-Code hinter dem benutzerdefinierten Code ein .)

Ø OB35 infizieren; (dasselbe wie OB1, mit Code-voranstellender Infektionstechnologie)

Thread 2 : (Abfragen alle 5 Minuten; garantiert gleichzeitige Angriffe)

  1. Überwachen und Abfragen des Datenblocks DB890, der erfolgreich von Thread 1 in jede spezifische SPS (z. B. S7-315) auf dem Bus eingefügt wurde;
  2. Wenn eine bestimmte Bedingung erfüllt ist und die Zerstörungsroutine gestartet wird, schreibt der Thread Daten in den DB890 in allen überwachten SPSen, sodass die SPSen auf demselben Bus gleichzeitig einen Zerstörungsangriff starten.

(4) Unter bestimmten Bedingungen wird die Sequenz C in die SPS geschrieben, was bei 6ES7-417 komplizierter ist;

(5) Zerstörung: (Motorfrequenz zu verschiedenen Zeiten reduzieren oder erhöhen)

  1. Bestimmen Sie die normale Betriebsfrequenz: 807-1210Hz;
  2. Stellen Sie die Frequenz auf 1410 Hz ein;
  3. normalen Betrieb wieder aufnehmen;
  4. Stellen Sie nach etwa 27 Tagen die Frequenz zuerst auf 2 Hz und dann auf 1064 Hz ein;
  5. normalen Betrieb wieder aufnehmen;

Wiederholen Sie den obigen Vorgang.

Kapitel 3 Stuxnet taucht wieder auf 

[Aus Längengründen bitte auf die Folgeartikel achten]

 

Klicken Sie hier, um zu folgen und zum ersten Mal etwas über die neuen Technologien von Huawei Cloud zu erfahren~

{{o.name}}
{{m.name}}

Guess you like

Origin my.oschina.net/u/4526289/blog/6242097