Forum: PC Hard- und Software RS232 verschlüsselter Handshake reverse engineering


von reverser (Gast)


Lesenswert?

Hi hätte mal eine Frage:

Es gibt ja online Tools um Checksummen zu berechnen etc.

Hab hier ne SPS und ein Testgerät mit Fuji µc die mittels RS232 mit 
einander kommunizieren.

Dabei sendet die SPS (Programm auslesen ist nicht möglich) immer 4 Bytes 
im Hex Format an das Testgerät und das weiß dann, was für eine Antwort 
die SPS erwartet. Wohl eine Art Schutz damit die Steuerbefehle nicht 
durch x-beliebige Terminal Programme gesendet werden können.

Nun die Frage: Gibt es online fertige Tools bei denen man möglichst 
viele Anfragen und Antworten dieser Art eingibt und das Tool versucht 
dann den "Rechenweg" zu finden? Damit man sich dann selbst was schreiben 
kann um mit eigener Software korrekt auf die Anfrage antworten zu können 
(sonst sperrt die SPS einen aus). Ich hätte auch andere Wege...da sich 
die Anfragen immer mal wieder wiederholen könnte man die alle manuell 
einbauen aber das wäre ziemlich aufwendig und keine elegante Lösung.

Weiß da jemand was?

von c-hater (Gast)


Lesenswert?

reverser schrieb:

> Es gibt ja online Tools um Checksummen zu berechnen etc.

Hunderte.

> Dabei sendet die SPS (Programm auslesen ist nicht möglich) immer 4 Bytes
> im Hex Format an das Testgerät und das weiß dann, was für eine Antwort
> die SPS erwartet.

OK. Das läßt aber noch vieles offen. Und das geht weit über einfache 
Checksummen hinaus.

> Wohl eine Art Schutz damit die Steuerbefehle nicht
> durch x-beliebige Terminal Programme gesendet werden können.

Davon ist auszugehen, ja.

> Nun die Frage: Gibt es online fertige Tools bei denen man möglichst
> viele Anfragen und Antworten dieser Art eingibt und das Tool versucht
> dann den "Rechenweg" zu finden?

Nicht das ich wüßte.

> Weiß da jemand was?

Ja: das Feld der Möglichkeiten ist ziemlich groß. Rein maschinelle 
Auswertung nicht zielführend, jedenfalls nicht in akzeptabler Zeit. Hier 
hilft nur menschliche Intelligenz und Intuition. Die Maschine kann aber 
natürlich wertvolle Unterstützung liefern, insbesondere, wenn es anfangs 
darum geht, ganze Klassen von Möglichkeiten der Codierung 
auszuschließen.
Nur muss halt der Benutzer wissen, was er tut. Der "Do what I 
want"-Button is nich...

von Gustl B. (-gb-)


Lesenswert?

reverser schrieb:
> 4 Bytes im Hex Format

Dann zeig die doch mal her. Bisher hast du nicht mal geschrieben, dass 
sich diese Bytes jedes Mal ändern. Nimm mal viele solche 4 Bytes auf, 
dann kann man sehen was sich ändert. Und wie oft. Ob es Muster gibt, ...

von Hexer (Gast)


Lesenswert?

interessant wäre auch der Kontext zu den 4 gesendeten Byte (z.B. 
Auswirkung).

Bzgl. "4 Bytes im Hex Format" ... 4 Byte ja, aber das Hex Format machst 
du bzw. das Tooling. Vielleicht sind es auch 4 ASCII characters oder ein 
anderer Zeichensatz ... oder, oder ... warum sind es eigentlich nicht 4 
Byte dezimal?

von Dieter (Gast)


Lesenswert?

reverser schrieb:
>
> Hab hier ne SPS und ein Testgerät mit Fuji µc die mittels RS232 mit
> einander kommunizieren.
>

Gibt es von der SPS oder dem Testgerät die Firmware? Dann hat man
eventuell eine Chance den Challenge-Response Algorithmus in
der Firmware zu finden (aber auch nur wenn die Firmware nicht
z.B. verschlüsselt ist).

Ansonsten ist die Chance den verwendeten Algorithmus manuell
oder automatisch zu finden eher gering, zumindest wenn es nicht
nur eine trivial Rechenvorschrift ist.

von honko (Gast)


Lesenswert?

reverser schrieb:
> mit einander kommunizieren.

Du meintest sicherlich "mit ein Ander" , so schreibt man das richtig  !

von Pepe T. (pepe_t)


Lesenswert?

reverser schrieb:
> Weiß da jemand was?

Bei 4 bytes gibt das 64k kombinationen. Das passt in eine tabelle. Du 
musst den code nicht mal entschlüsseln, nur lange genug zuhören.

von Dieter (Gast)


Lesenswert?

Pepe T. schrieb:
>
> Bei 4 bytes gibt das 64k kombinationen. Das passt in eine tabelle. Du
> musst den code nicht mal entschlüsseln, nur lange genug zuhören.

32 Bit sind immer noch 4 GByte Möglichkeiten.

von Pepe T. (pepe_t)


Lesenswert?

Dieter schrieb:
> 32 Bit sind immer noch 4 GByte

Huch. Hab ich falsch gerechnet.

von A. S. (Gast)


Lesenswert?

Das sind 3 verschiedene Dinge:

a) Aufbau und Inhalt des Telegramms (Daten, Kennung, Chks, ...)
b) Berechnung der Chks (macht nur Sinn, wenn man den Aufbau kennt. Sonst 
sind das einfach 4-Byte-Muster
c) sinnvolle Antworten (nachdem man a und b kennt)

Überlicherweise liest man ein paar Hundert Telegramme mit und versucht 
Muster je Stelle zu erkennen
- immer gleiche Zeichen (z.B. Start-Stopkennung)
- fortlaufende Zeichen (z.B. ein Sequenz-Counter)
- häufige Zeichen (z.B. 7 dedizierte Telegrammkennungen, die quer 
durcheinander kommen)
- Komplementäre Bereiche (wenn die ersten 2 Zeichen gleich sind, sind es 
auch die letzten --> große Chance für 2 Byte Checksumme)

Danach versucht man das gleiche mit Anfrage/Antwort. Also wenn in der 
Anfrage das erste Byte 0x09 ist, ist das in der Antwort immer 0x89. 
Sowas.

Für uns fehlen hier halt 100 Telegramm-Paare.

von c-hater (Gast)


Lesenswert?

Pepe T. schrieb:

> Dieter schrieb:
>> 32 Bit sind immer noch 4 GByte
>
> Huch. Hab ich falsch gerechnet.

Nicht nur das. Du hast völlig außer Betracht gelassen, das es relativ 
einfache Möglichkeiten gibt, die Kommunikation gegen Replay-Attacken zu 
schützen. Eine temporale Komponente läßt die Möglichkeiten auf weit 
jenseits der 4G-Genze explodieren.

Und selbst so eine Kommunikation wäre aus kryptographischer Sicht immer 
noch eher schwach gesichert (schließlich muss es entweder einen IV als 
shared secret geben oder eine Nachricht zu dessen Übermittlung), aber 
das herauszufinden, ist mit ein bissel dümmlicher Bit-Daddelei schon 
kaum noch möglich.

Da müssten Profis anrücken und den Traffic sehr lange beobachten. Das 
kann der TO sicher nicht bezahlen...

von Fitzebutze (Gast)


Lesenswert?

Ja, solche Tools gibt's. Aber nicht online.
Alleine um ein unbekanntes CRC-Polynom aus einem Strom ermitteln 
benötigt man gehörig Brute-Force und je nach Bitbreite entsprechend 
geloggte Daten.

Wenn das System anhand eines Pseudozufallsgenerators noch nonces erzeugt 
und man die Datenfelder nicht kennt, ist ein "Erraten" etwa so zwecklos 
wie bei einem TAN-Generator. Also: Die SPS oder den uC-Peer auslesen ist 
definitiv zielführender.
Trotzdem kannst du ja mal versuchen, einen "Replay" einer Sequenz zu 
machen. Solange dich der uC nicht irreversibel aussperrt, kann man mit 
FPGA-Power in relativ kurzer Zeit "schlechte" Polynome finden. Da 
solches Knowhow aber einen hohen Marktwert hat, wird dich da kaum einer 
in die Karten gucken lassen.

von reverser (Gast)


Lesenswert?

A. S. schrieb:
> Überlicherweise liest man ein paar Hundert Telegramme mit und versucht
> Muster je Stelle zu erkennen
> - immer gleiche Zeichen (z.B. Start-Stopkennung)
> - fortlaufende Zeichen (z.B. ein Sequenz-Counter)
> - häufige Zeichen (z.B. 7 dedizierte Telegrammkennungen, die quer
> durcheinander kommen)
> - Komplementäre Bereiche (wenn die ersten 2 Zeichen gleich sind, sind es
> auch die letzten --> große Chance für 2 Byte Checksumme)

Ich zitiere das mal, aber die Antwort betrifft einige Beiträge:

Ich hab das ganze natürlich schon analysiert und hier entsprechend nur 
die Bytes erwähnt, die die Challenge-Response Sache betreffen.

Es sind immer 4 Zeichen...z.B. 99 9c.
Wenn ich richtig liege, wären das 2x 255 Möglichkeiten... geht ja nur 
von 0-9 und a-f.

Das Testgerät ist nicht gegen Replay-Attacken o.ä. geschützt, sondern 
ich kann mich als SPS "ausgeben" und bekomme entsprechend die Antwort.

Vermutlich wäre es einfacher einen Skript zu schreiben der mit 00 01 
beginnt, 00 02 etc. (falls das erste Byte überhaupt 00 sein kann, sonst 
sind es noch ein paar weniger mögliche Kombinationen) und dann 
entsprechend alle möglichen Kombis an das Testgerät schickt, und die 
Antworten verarbeitet.

Dann kann man ein relativ einfaches Programm schreiben, Buttons mit den 
Steuerbefehlen belegen, Feld für Anzeige der Daten und im Hintergrund 
wartet das Programm auf die Anfrage der SPS und sucht entsprechend in 
einer DB die richtige Antwort raus... (Falls Anfrage 82 
a5...dann...erwartete Antwort für 82 a5 in der DB suchen und senden...)


Denke ich zu einfach?

von A. S. (Gast)


Lesenswert?

reverser schrieb:
> Es sind immer 4 Zeichen...z.B. 99 9c.
> Wenn ich richtig liege, wären das 2x 255 Möglichkeiten... geht ja nur
> von 0-9 und a-f.

FacePalm!

Also wenn Du nicht einfach echte Mitschnitte lieferst (ohne 
sinnentstellende Begriffe), wird Dir hier vermutlich keiner mehr 
sinnvoll antworten.

von Pepe T. (pepe_t)


Lesenswert?

reverser schrieb:
> Es sind immer 4 Zeichen...z.B. 99 9c.
> Wenn ich richtig liege, wären das 2x 255 Möglichkeiten.

Also 1 "zeichen" von 0 bis F sind 4 bits. HEX schreibweise.
Du hast insgesamt 4 zeichen, also 16 bits?
Das sind 256x256, 64k kombinationen.

Durchaus möglich sowas mir einer liste zu machen.

von Fitzebutze (Gast)


Lesenswert?

reverser schrieb:
> Wenn ich richtig liege, wären das 2x 255 Möglichkeiten... geht ja nur
> von 0-9 und a-f.

Du liegst nicht richtig. Geh nochmal über die Bücher, und beim nächsten 
Mal: Bitte gleich die volle Geschichte, bevor 20 Irrlichter entfacht 
werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.