Stuxnet ist ein Computerwurm, der im Juni 2010 entdeckt und zuerst unter dem Namen RootkitTmphider beschrieben wurde. Das Schadprogramm wurde speziell entwickelt zum Angriff auf ein System zur Überwachung und Steuerung (SCADA-System), das speicherprogrammierbare Steuerungen des Herstellers Siemens vom Typ Simatic S7 verwendet. Dabei wurde in die Steuerung von Frequenzumrichtern der Hersteller Vacon aus Finnland und Fararo Paya in Teheran eingegriffen. Frequenzumrichter dienen beispielsweise dazu, die Geschwindigkeit von Motoren zu steuern.

Solche Steuerungen werden vielfach eingesetzt, etwa in Industrieanlagen wie Wasserwerken, Klimatechnik oder Pipelines.

Da bis Ende September 2010 der Iran den größten Anteil der infizierten Computer besaß und es zu außergewöhnlichen Störungen im iranischen Atomprogramm kam, lag es nah, dass Stuxnet hauptsächlich entstand, um als Schadsoftware die Leittechnik für Zentrifugen der Urananreicherungsanlage in NatanzAngriff auf Irans Atomprogramm – Stuxnet könnte tausend Uran-Zentrifugen zerstört haben. Spiegel Online, 26. Dezember 2010 oder des Kernkraftwerks BuschehrIran Reports a Major Setback at a Nuclear Power Plant. nytimes.com, 25. Februar 2011 zu stören.

Die hochversierte Entwicklergruppe und Auftraggeber sind unbekannt. Jedoch leitete das US-Justizministerium im Jahr 2013 Ermittlungen gegen Stuxnet-Projektleiter General James E. Cartwright ein. Die Behörde vermutete, dass dieser im Jahr 2010 Details zu Stuxnet an die New York Times weitergab, was mutmaßlich zur Enttarnung des 50 Millionen Dollar teuren Sabotageprogramms führte. Eine Anklage gegen Cartwright in der Sache selbst erfolgte nicht. Allerdings wurde er wegen einer Falschaussage bei den Ermittlungen angeklagt, jedoch 2017 noch vor einem Urteil von Präsident Barack Obama begnadigt.

Eigenschaften und Besonderheiten Stuxnet gilt aufgrund seiner Komplexität und des Ziels, Steuerungssysteme von Industrieanlagen zu sabotieren, als bisher einzigartig. Die öffentlich verfügbaren Erkenntnisse basieren auf den Aussagen von IT-Fachleuten, die ausführbare Dateien der Schadsoftware analysierten. Die Beurteilungen basieren teilweise auf Interpretationen, da der Quelltext der Urheber nicht veröffentlicht ist.

Aufgrund der Komplexität von Stuxnet wird ein für eine Schadsoftware außerordentlich hoher Entwicklungsaufwand vermutet. Der Zeitaufwand wird bei einer vorhandenen Testumgebung für Hard- und Software auf mindestens sechs Monate, der Personalaufwand auf mindestens fünf bis zehn Hauptentwickler sowie zusätzliches Personal für Qualitätssicherung und Management geschätzt. Neben dem Fachwissen für die Entwicklung der Software mussten Kenntnisse über unbekannte Sicherheitslücken und Zugang zu geheimen Signaturen zweier Unternehmen vorhanden sein. Die Unternehmen mit den frühesten Anzeichen einer Stuxnet-Infektion waren Zulieferer. Daher wurde das Schadprogramm indirekt über das Partnernetzwerk eingeschleust.

Die Einzigartigkeit von Stuxnet zum Zeitpunkt seiner Entdeckung zeigt sich insbesondere in der Art seiner Verbreitung durch Ausnutzung mehrerer teilweise bis dahin unbekannter Sicherheitslücken der Microsoft-Betriebssysteme ab Windows 2000 bis zu Windows 7 oder Windows Server 2008 R2, Installation eines Rootkits in diesen Betriebssystemen mit Hilfe gestohlener digitaler Signaturen der taiwanischen Hardware-Hersteller Realtek und JMicron Technology, genaue Kenntnisse des Prozessvisualisierungssystems WinCC zur Überwachung und Steuerung technischer Prozesse mit Simatic S7 (engl. ICS: Industrial Control System) sowie Installation eines weiteren Rootkits in der Steuerung (SPS, engl. PLC: Programmable Logic Controller) einer solchen PCS-7-Anlage.

Infektionsweg Der Stuxnet-Wurm wurde spätestens ab dem 15. November 2007 in Umlauf gebracht, die dazugehörigen Command-and-Control-Server wurden am 3. November 2005 registriert. Erstmals wurde Stuxnet im Juni 2010 von Sergej Ulasen vom belarussischen Unternehmen VirusBlokAda nach einem Hinweis eines iranischen Kunden identifiziert. Es kam bei einer dortigen Anlage zu Systemabstürzen und anderen Störungen. Auf der Virus Bulletin 2010 ConferenceVirus Bulletin in der englischsprachigen Wikipedia wurde von Symantec der bisherige Kenntnisstand im W32.Stuxnet Dossier zusammengefasst, das aktualisiert wird, wenn neue Erkenntnisse vorliegen. Demnach greift Stuxnet Simatic-S7-Anlagen an, deren Konfiguration bestimmte Eigenschaften aufweist.

Im Allgemeinen werden Simatic-Anlagen mit einem speziellen Notebook, dem „SIMATIC Field PG“, projektiert, in Betrieb genommen und gewartet. Auf einem solchen Programmiergerät (PG) ist neben dem Betriebssystem Software zur Programmierung mit STEP 7 und zur Prozessvisualisierung mit WinCC vorinstalliert. Außerdem ist das Gerät mit Ethernet-, USB- und PROFIBUS-Schnittstellen ausgerüstet.

Die Projektierung und Entwicklung der HMI-Software (Human-Machine-Interface) findet innerhalb eines internen Netzwerkes (LAN) statt, dessen Internetzugang durch eine Firewall abgesichert ist. Auf einem Field-PG ist dazu mindestens ein STEP-7-Projektordner vorhanden. Die Kopplung mit einer SPS wird softwareseitig durch die Softwarebibliothek der WinCC-DLL (Dynamic Link Library) hergestellt. Zur Inbetriebnahme, Diagnose und Wartung wird das Field-PG mit der eigentlichen Steuerungsanlage verbunden. Diese ist in der Regel selten mit einem LAN oder gar mit dem Internet direkt verbunden.Fotos aus dem KKW Buschehr:

Anhand der technischen Eigenschaften von Stuxnet ergibt sich ein mögliches Angriffsszenario: Nach der Erstinfektion in einem Betrieb versucht Stuxnet sich innerhalb des LANs zu verbreiten, um Field-PGs ausfindig zu machen. Auf diesen werden alle STEP7-Projektordner als auch die WinCC-Bibliothek infiziert. Sobald ein betroffenes PG mit einer geeigneten Steuerungsanlage verbunden wird, versucht Stuxnet deren Programmierung zu verändern. Dies erfolgt vor den Operatoren versteckt: Stuxnet ist auch ein PLC-Rootkit. Für einen Computerwurm ist das Schadprogramm ungewöhnlich groß. Es führt allen benötigten Code mit sich, um sich mit einem Peer-to-Peer-Mechanismus selbst zu aktualisieren, ohne eine dauerhafte Internetverbindung zu benötigen. Zusätzlich gibt es Funktionen, um einem command and control server, wie in einem Botnet, Rückmeldungen geben zu können.

Betriebssystem-Ebene Um sein Ziel zu erreichen, muss Stuxnet auf Rechner gelangen, die mit der anvisierten Anlagensteuerung verbunden sind oder werden. Dazu wurden vier während des Einsatzes unveröffentlichte Windows-Sicherheitslücken (Zero-Day-Exploits) missbraucht. Davon betroffen sind die 32-Bit-Betriebssysteme Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 und Windows 7. Stuxnet versucht, sich auf einem der genannten Systeme zu installieren, sobald ein USB-Speichermedium angeschlossen wird. Dazu wird das fehlertolerante Parsen der autorun.inf durch Windows ausgenutzt. Diese Datei enthält sowohl den eigentlichen Schadcode als auch an ihrem Ende gültige Autorun-Informationen, nach der die Datei eine ausführbare EXE-Datei ist. Auch wenn die Autostart-Option abgeschaltet wurde, steht im Kontextmenü eine Open-Funktion zur Verfügung, die das manuelle Ausführen des Schadcodes erlaubt.

Zu Beginn der Infektion prüft Stuxnet, ob der Rechner schon infiziert ist und, wenn ja, ob seine gespeicherten Konfigurationsdaten aktuell sind. Danach prüft er auf ein passendes 32-Bit-System. Je nach Version des Betriebssystems gibt er sich durch zwei verschiedene Zero-Day-Exploits mittels Privileg-Eskalation erweiterte Rechte. Bis zur Version Windows XP SP2 verwendet Stuxnet dazu einen Fehler im Kernel-Mode-Treiber win32k.sys, bei neueren Versionen benutzt er eine Lücke im Task-Scheduler. Anschließend versucht Stuxnet, seinen Schadcode in installierte Antiviren- und Windows-Systemdienste zu injizieren. Die eigentliche Installation führt Stuxnet danach in einem eigenen, vom kompromittierten System als vertrauenswürdig eingestuften Prozess aus. Neben anderen Dateien installiert der Wurm mit Hilfe der signierten Zertifikate auch zwei Treiberdateien mrxcls.sys und mrxnet.sys im System, die die weitere Verbreitung von Stuxnet auch nach einem Neustart sicherstellen sollen.

Nach der Installation des Windows-Rootkits stehen Stuxnet mehrere Möglichkeiten zur Verfügung, sich in einem LAN zu verbreiten, in dem nur ein eingeschränkter oder gar kein Internetzugang möglich ist: Es werden RPC-Server- und -Client-Programme installiert, die die Peer-to-Peer-Kommunikation zwischen mehreren infizierten Rechnern erlauben. Die verschiedenen Stuxnet-Instanzen sind dadurch in der Lage, sich auf eine vorhandene neuere Version zu aktualisieren. Weiterhin versucht sich Stuxnet, über die Verzeichnis-Freigaben aller Benutzer eines Computers und der Domäne auf weiteren Computern zu installieren.

Der Computerwurm nutzt eine Sicherheitslücke in der Verwaltung des Druckspoolers („Print Spooler zero-day vulnerabilty“), um Dateien in das %System%-Verzeichnis zu schreiben. Inzwischen hat sich herausgestellt, dass diese Sicherheitslücke von der Zeitschrift Hakin9 zwar schon im April 2009 beschrieben wurde, aber in freier Wildbahn zum ersten Mal von Stuxnet ausgenutzt wurde.Belege:

Diese Lücke wird nur ausgenutzt, wenn das Systemdatum vor dem 1. Juni 2011 liegt.

Ein Pufferüberlauf im Windows Server Service (WSS)Belege:

wurde schon von dem Computerwurm Conficker alias Downadup ausgenutzt. Stuxnet verwendet diesen Fehler ebenfalls, um sich per SMB auf weiteren Computern zu installieren. Allerdings müssen dazu bestimmte zeitliche Rahmenbedingungen erfüllt sein: Das aktuelle Datum liegt vor dem 1. Januar 2030. Die jeweiligen Virendefinitionsdateien wurden zuletzt vor dem 1. Januar 2009 aktualisiert. Die Zeitmarken von kernel32.dll und netapi32.dll liegen nach dem 28. Oktober 2008 (Windows Patch Day).

In einer seit März 2010 nachgewiesenen Version von Stuxnet wird eine Schwachstelle in der Behandlung von LNK-DateienBelege:

verwendet, um den Wurm über neu angeschlossene USB-Laufwerke verbreiten zu können, ohne auf eine Netzwerkverbindung angewiesen zu sein. Dazu genügt es, sich den Verzeichnisinhalt des Laufwerks anzeigen zu lassen. Vor einer Installation prüft Stuxnet, ob durch das Laufwerk schon drei Rechner infiziert wurden. In diesem Fall werden die Dateien vom Laufwerk gelöscht. Außerdem findet nach dem 24. Juni 2012 keine weitere Verbreitung statt. Durch Eingriffe in kernel32.dll und netapi32.dll bleiben diese Vorgänge dem Benutzer verborgen.

WinCC-Software mini|Kopplung eines Step7-Programms mit einer SPS über WinCC mini|Stuxnet verhindert die Anzeige der eigenen AWL Der nächste wichtige Schritt für Stuxnet ist, sich in STEP7-Projektdateien (S7P-Dateien) festzusetzen. Zum einen benutzt er dazu den Server, der die WinCC-Datenbank-Software zur Verfügung stellt. Mit Hilfe des in der Software fest einprogrammierten Kennworts schreibt Stuxnet durch SQL-Befehle eine Kopie seiner selbst in die Datenbank. Sobald der lokale Rechner infiziert ist, wird der Eintrag wieder entfernt, aber gleichzeitig eine CAB-Datei geschrieben, die eine neue Stuxnet-DLL erzeugen kann. Durch Suchvorgänge beim Laden der Systembibliotheken wird dann diese modifizierte DLL geladen, entschlüsselt und installiert. Damit ereignet sich eine neue Infektion, die auch ein vorheriges Löschen der Dateien von Stuxnet wieder kompensiert. Zum anderen installiert er zwei Hooks im Simatic Manager für PCS 7. Es wird jedes Projekt infiziert, das innerhalb etwa der letzten 3,5 Jahre benutzt oder geändert wurde und das einen Ordner wincproj mit einer gültigen MCP-Datei (eine solche wird typischerweise von WinCC selbst erzeugt) enthält. Von einer Infektion ausgenommen werden Projekte, die nach dem Schema \Step7\Examples\* benannt sind.