Wireshark Plugin für S7-Protokoll

Zuviel Werbung?
-> Hier kostenlos registrieren
zip

Ja. Genau diese Idee hat auch bei und einen Durchbruch gebracht - vor Jahren beim Bau des OPC Servers Rockwell. Da lag es nahe das Andere die gleiche Idee hatten. Ein eigenes Packverfahren macht kaum jenand, allein wegen des Aufwands. Aber auch weil ein offenes altes verfahren keinen Patentklagen ausgesetzt ist. Der Tani OPC Server nutzt das auch so. Wenn nun die Zip bekannt sind dann ist sicher die nächste Frage wie die vielen ID in den XML verwoben sind. Dazu gibt es mehrere Regeln, wahrscheinich haben mehrere Teams gearbeitet. Im Prinzip gibt es Regeln und Ausnahmen. Ist das Regelwerk klar so werden damit in Datenbausteinen die Strukturen erkannt und zugeweisen. Ebenso werden im Programmcode wie OB FB .. die Module zugeweisen. Manche Module beziehen sich auf Hardware, die haben dann "bekannte" id. Wer eine SPS baut der nutzt ja FPGA für komplexe schnelle Dinge. Zusätzlich werden die Möglichkeiten des Prozessors so intelligent wie möglich genutzt. An manchen Grenzen klappt das nicht. Genau da sind dann die Ausnahmen im Regelwerk. Manche Ausnahmen dienen auch dem Bugfix. Da hats geklemmt, das zu erkennen und nachzubauen kostet die große Zeit. Mit diesem Wissen kann eine komplette Programmiersoftware zur S7 1500 gebaut werden, oder eine kompatible Soft SPS entsteht. Auf jeden Fall ist ein SPS Backup und Restore so zu bauen (und wir bauen das). Ein SPS Protokoll bildet normalerweise diese Innereien der SPSsen ab. Darum ist ein Protokollnachbau immer vom Knowhow der SPS Interna abhängig. Wichtige Info dazu kommt oft von erfahrenen SPS Programmierern die die Dinger in den Anlagen nutzen. Der Rest ist Nachdenken.
Der s7comm-plus hat uns die Arbeit oft erleichtert. Ursprünglich hatten wir selbst einen rudimentären Decoder gebaut. Es ist aber viel einfacher mit jemand zusammenzuarbeiten der sich dem Thema voll widmet. Daher kommt auch der Spruch das Wissen sich vermehrt wenn man es teilt.

Ist es geplant s7comm-plus in Wireshark Standard aufzunehmen ?
Wenn ja, wann ?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier gibt es ein paar Details zu den kryptografischen Funktionen, die im s7comm-plus Protokoll der 1200/1500er Steuerungen verwendet werden, nachzulesen:

https://www.darkreading.com/vulnera...pto-key-pair-researchers-find-/d/d-id/1335452

"All PLCs of the same model have the same key, which means if you crack one, you've cracked all of them,"
Oje :-(

The researchers here today will detail the Siemens security issues, which they reported to the PLC vendor.
=>
"No update is necessary," a Siemens spokesperson told
 
Wenn du den Zugriff so nicht möchtest, dann musst du eben den Zugriffsschutz auf der CPU aktivieren.
Insofern hat Siemens schon Recht damit, dass kein Update notwendig ist. Der Benutzer ist dafür verantwortlich die Einstellung zu setzen wenn er meint das sei bei seiner Anlage notwendig.

Der Zugriff ist genau dafür konzipiert worden, damit es so funktioniert wie es jetzt ist. D.h. jeder der das Verfahren kennt kann im Prinzip alles auf der Steuerung machen. Ich habe hier eine 1200er mit einer alten Protokollvariante ohne Kryptografie aber ansonsten fast identischem Protokoll. Dafür habe ich einen rudimentären Treiber, und da kannst du schon einiges an Schindluder treiben auf der SPS. Ich habe sie auch mehrmals in "Defekt" gesetzt bei meinen Experimenten, so ganz robust scheint das nicht zu sein.

Vor allem die Möglichkeit einen Unterschied zwischen Binärcode und Quellcode in der Steuerung zu generieren finde ich sehr problematisch, das riecht stark nach Stuxnet 2.0. Wenn du den Code aus der Steuerung lädst dann ist das die Quelle (als XML) und nicht der Binärcode. Und wenn die Quelle eine andere ist als der Binärcode darin, dürfte das mindestens zu Verwirrung führen. Der Bausteinvergleich beim Online-gehen führt soweit ich weiß auch keinen Codevergleich durch.
 
Ich bin noch eher Anfänger im Bereich Wireshark und benötige eine kleine Hilfe um mir mal auf die Sprünge zu helfen.

Ich starte Wireshark mit dem S7Comm Filter, starte die Aufnahme und öffne die Baugruppendiagnose
Baugruppenzustand.png

Ich würde gerne herausfinden, welcher SZL ID und welcher Index benutzt wird, um die
Firmware-Erweiterung auszulesen. Leider finde ich die Information nicht in den empfangenen
Paketen bzw. deute sie vermutlich falsch. ( Also ich finde die Stelle nicht, wo die V2.5.0 steht und welche ID/Index verwendet wird)

Anhang anzeigen Wireshark.zip

Es handelt sich um eine Sinumerik 840D sl NCU 730.3

(CPU hat 10.168.0.10)

Vielleicht kann mir mal jemand auf die Sprünge helfen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Versionsstände lassen sich mit SZL ID 0x0011 und Index 0 auslesen.
Diese Abfrage hast du bei deiner Aufzeichnung nicht mit erfasst, denn diese Informationen werden nur einmalig beim Öffnen des Baugruppenzustands abgefragt, und weder bei einem Wechsel auf einen anderen Reiter, noch beim Drücken auf "Aktualisieren".
 
Guten Abend Thomas,

danke für diese Info. Ich war der Meinung, das diese Werte erneut geholt werden, wenn ich den Reiter wechsle bzw. aktualisiere.
Ich schaue es mir morgen noch einmal an und melde mich noch einmal.

Vielen Dank
 
Ich habe es bei meiner CPU getestet, und mich gerade selber gewundert, dass die Daten beim Aktualisieren nicht erneut abgefragt werden. In den Daten die aktualisiert werden sind die Versionsstände auf jeden Fall nicht enthalten, nur die Baugruppenbezeichnungen die auf dem Reiter ebenfalls angezeigt werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es bei meiner CPU getestet, und mich gerade selber gewundert, dass die Daten beim Aktualisieren nicht erneut abgefragt werden.
Ja, ich war auch der Meinung das immer alles geholt wird, da beim Registerwechsel ein Schwung abgefragt wird.

Wieder was gelernt :)
 
Es sei angemerkt, dass nicht jeder SZL-Datensatz der von außen über das Netzwerk ausgelesen werden kann, auch aus dem SPS-Programm heraus ausgelesen werden kann. Da bestehen einige Unterschiede.
 
Ja, ich kann bereits alles aus dem Screenshot auslesen, es fehlt nur noch die eine Info.
Ich probiere es morgen, falls es nicht geht stelle ich trotzdem mal ein Wireshark Auszug ein.

Ich zeige solche Werte immer auf einer Serviceseite am Panel an.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier noch einmal der Wireshark Auszug der während des öffnen von Baugruppenzustand erstellt wurde.
Mit SZL ID 0x0011 und Index 0 werden die Versionsstände ausgelesen, nur ist scheinbar die Firmwareerweiterung
nicht dabei. Ich kann sie auch in den anderen Telegrammen nicht entdecken.

Baugruppenzustand.png

Anhang anzeigen Wireshark.zip
 
Doch die ist mit dabei. Das ist der 4. Datensatz mit Index 0x81 und der Mlfb "Boot Loader".
In den beiden Wörtern "Ausbg" und "Ausbe" stehen 56 02 05 00, das bedeutet "V2.5.0".

Eigentlich müsste ich die Daten je nach Index leicht unterschiedlich interpretieren, aber Index 0x81 ist von Siemens nicht dokumentiert, nur 1, 6 und 7.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Thomas,

kurzes Feedback. Es funktioniert mit dem (undokumentierten) Index #81. Ich habe dir zwei Screenshots angehängt:
Bootloader.jpgBootloader2.jpg

Vielen Dank für deine Unterstützung, ich habe einiges daraus gelernt :)
 
Das einzigste, was mir noch nicht klar ist, im Wireshark steht SZL-ID 0x0011. Ich muss jedoch W#16#111 verwenden, damit die gewünschten Werte kommen.
Mit Index W#16#11 kommen nur (für mich) wirre Werte.

Gibt es hierfür eine Erklärung?
 
Zuletzt bearbeitet:
Soweit ich weiß gibt es da keinen Unterschied.

Mit ID=0x0011 Index=0x0000 liest du die Identifikationsdaten von allen vorhandenen Modulen, dann erhältst du mehrere SZL-Datensätze in der Antwort die du dann durchgehen musst um anhand des ersten Wortes festzustellen um welches Modul es sich handelt.

Mit ID=0x0111 Index=xy kannst du die Identifikationsdaten von einem bestimmten Modul lesen, dessen Modulkennung du im Index xy angibst. Beispielsweise um die Daten der Firmware zu lesen, wäre dazu ID = 0x0111 mit Index 0x0007 notwendig.

Es sind nicht immer alle Module bei allen CPUs vorhanden, z.B. eine WinAC Soft-SPS hat keine Hardware, und den Bootloader gibt es auch nicht bei allen.
 
Hallo zusammen,

Ich bin noch Anfänger im Bereich, und ich wollte die Kommunikation zwischen WinCC und SPS mit Wireshark untersuchen. Die Kommunikation erfolgt mit Ethernet. Also Wer mit Wireshark die Kommunikation prüft, sucht bestimmt irgend ein Problem in der Kommunikation.
Wie kann man die Daten aus Wireshark sinnvoll visualisieren, um Probleme zu erkennen?

für jede Hilfe oder Quellen wäre ich sehr dankbar

Liebe Grüße
 
Zurück
Oben