Stuxnet Source und Gegenmaßnahmen

matthiasd:-m

Level-1
Beiträge
40
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus,

hat zufällig jemand einen Stuxnet aus der freien Wildbahn ...
ich würde mir gerne mal anschauen was den wirklich
in den Bausteinen die in die CPUs geladen werden alles so passiert.

Da das Teil ja Zero-Days nutzt, sind die gut gemeinten Tips in Sachen
MS update und Virenscanner Signaturen nicht der Hit.

Wie könnte man sich den am besten schützen das keiner den Code in
der SPS ändert. Der CPU Passwortschutz ist ja nicht unbedingt sicher :)

Vielleicht ist ein Ansatzpunkt der Port 102, aber das würde wieder heissen
ich brauche eine Firewall. Die Frage ist nur einfach freischalten bei bedarf ist
auch wieder eine Schwachstelle. Filtern nach Bausteindownloads im OBxy wäre vielleicht schon sicherer ...

Grüße
 
Schlüsselschalter...

Wenn du noch ne CPU mit Schlüsselschalter hast, von Run_P auf Run stellen...

Ansonsten? Passwortschutz, aber den könnte der Virus natürlich in endlicher Zeit durch BruteForce knacken...
 
hat zufällig jemand einen Stuxnet aus der freien Wildbahn ...
ich würde mir gerne mal anschauen was den wirklich
in den Bausteinen die in die CPUs geladen werden alles so passiert.

Da das Teil ja Zero-Days nutzt, sind die gut gemeinten Tips in Sachen
MS update und Virenscanner Signaturen nicht der Hit.
Den gib es massig im Internet zu laden.

Einfach mal Google anwerfen.

So nach dem Motto, ich will mal mit der Miezekatze auf dem Sofa spielen.
( Nur die Mietze ist ein Bengalischer Königstieger *ROFL*)


Ich hoffe, du weisst was du tust !

TIP, nur auf einen Testrechner OHNE Netzwerkverbindung testen.
Sonst hast du mehr Code als du beabsichtigt hast.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehe ich nicht so. Die CPU lehnt mit Fehler ab, wenn das Passwort nicht stimmt.


Nach eigenen Versuchen kann man mit Libnodave Variablen
schreiben wenn in einer S7-400 die CPU mit einem Schreibschutz versehen ist.
Ich vermute das der umgang mit den Bausteinen ebenso umgesetzt ist
 
Den gib es massig im Internet zu laden.

Einfach mal Google anwerfen.

So nach dem Motto, ich will mal mit der Miezekatze auf dem Sofa spielen.
( Nur die Mietze ist ein Bengalischer Königstieger *ROFL*)


Ich hoffe, du weisst was du tust !

TIP, nur auf einen Testrechner OHNE Netzwerkverbindung testen.
Sonst hast du mehr Code als du beabsichtigt hast.


Ok wer lange googelt findet auch was nettes ...

Gut den SQL Query hab ich schon mal gefunden siehe Anhang

dump.jpg

Geh ich richtig in der Annahme das ein guter Suchwert "0x70 0x70" für die Bausteine ist ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nach eigenen Versuchen kann man mit Libnodave Variablen
schreiben wenn in einer S7-400 die CPU mit einem Schreibschutz versehen ist.
Ich vermute das der umgang mit den Bausteinen ebenso umgesetzt ist

In einer Visu musst du ja beim Variablen schreiben auch nicht das CPU Passwort eingegeben werden...
 
Also wenn ich das richtig verstehe ist der Baustein upload
usw. Pwd geschützt. Das Steuern von Variablen nicht.
Wie sieht es den mit Run/Stop aus ... hoffe hier ist wenigstens
ein Passwortschutz möglich ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So hab das mit Run / Stop und schreibschutz getestet.
Man kann ohne Eingabe des Passwortes mit Libnodave
die CPU in RUN/STOP versetzen.
Ebenso ist es möglich Variablen zu setzen.

Kann man irgendwelche Maßnahmen treffen um auch dies
zu verhindern ?

Ist Port 102 mit MAC Filterung die letzte Lösung ?
 
Eventuell die SFC109 "PROTECT" programmieren? Habe ich aber nicht ausprobiert.

Harald

SFC109 bietet exakt den gleichen Schutz wie der fruehere Run/Run-P Schluesselschalter. Bietet also Schutz vor Codeplatzierung ala Stuxnet im lfd. Betrieb, jedoch nicht vor Sabotage ala CPU-Stop. Ist auf jeden Fall besser als nichts.

Gruss,
Flinn
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es wäre schön eine Möglichkeit zu finden dies es er möglicht
auch eine vernünftige Authentifizierung im Betriebszustand RUN zu haben.

Änderungen des Codes im Livesystem sind ja nicht ungewöhnlich.

wie sieht es mit Anwenderspezifischen Filterregeln in der CP aus ?
Gibts hier einen SFC um ACLs definieren zu können.
Alles was ich bis dato gesehen hab war eine Blacklist...

Allerdings wäre eine Authentifizierung über die Windows Domain Controller
wesentlich geschickter ...

Aber nachrüstbar wäre ggf. nur eine Art von Hardware NAC vorm Port ...
Ich weiß nur leider nicht ob die NAC Lösungen auch auf RFC 1006 Zugriffe
auf dem Port 102 parametrierbar sind...
Diese müsste dann aber eine Client Applikation bedingen die den Zugriff bemerkt, meldet und bei korrekter Authentifizierung (Radius, DOC usw)
freigibt.
 
Hast du einen konkreten Anwendungsfall? Wenn ja, welcher Datenaustausch mit der SPS darf/muss möglich sein?

Da die gesamte Kommunikation zu einer S7 über Port 102 läuft wirst du eine Firewall benötigen die auf Applikationsebene ansetzt. Dann musst du noch das Protokoll kennen um zu wissen welche Pakete du erlauben möchtest und welche nicht.
Man könnte z.B. eine Whitelist erstellen bei der nur Pakete in Richtung SPS erlaubt sind mit denen Datenbereiche gelesen werden können. Ob das aber in einem Intranet einen relevanten Sicherheitsgewinn darstellt? Vor allem wogegen: gegen "aus Versehenes" in Stop setzen?
 
Der Anwendungsfall wäre jede S7 Steuerung der Welt,
man muss sicherlich Kosten/Nutzen in Relation stellen.

Stuxnet war der Anfang ... Laut Langner kommt üblicherweise in 90 Tagen
was anderes nettes.

Es wurde ja demonstriert was möglich ist.

Somit muss verhindert sein:

- Einspielen von Programm und Datenbausteinen ...
- Einfluss auf und E/A Daten
- Einfluss auf den Systemzustand (RUN/STOP)
- Auslesen von Systeminformationen
- Auslesen von Applikationsknowhow
- DoS Attacken
- Brute Force Attacken

Das alles immer unter der Annahme der Virenscanner findet nichts ...
Zero Days Exploits sind ja dafür bekannt unbekannt zu sein ...

Autorisiert ist der SPS Entwickler. Der Stuxnet und Co muss aussen bleiben.

So nun zur (un-)lösbaren Aufgabe -> wieviel von 100% kann man abfangen.
 
Zurück
Oben