SNOM 760 Firmware decrypt


#1

Habe ein SNOM 760 und wollte mal sehen ob ein SSH Zugang noch möglich ist.

Auf der Rückseite befindet sich eine serielle Schnittstelle. Man kann den U-Boot stoppen. Setzt man dann eine Variable “setenv development 'yes’” wird der SSH Server gestartet und man kann sich ohne Passwort einloggen.

Unter / findet man ein firmware1.pub Zertifikat. Damit lässt sich jedes Firmware Update von SNOM für das 760er entschlüsseln und entpacken.

Darauf hin habe ich das Zertifikat durch mein eigenes ersetzt und so ist möglich, eigene Firmware Updates einzuspielen. Natürlich werden dann die Updates von SNOM nicht mehr akzeptiert, was mich aber nicht stört.

Wenn Interesse besteht, lade ich die Scripte gerne hoch.

Lg roema


#2

Cool, gut zu wissen.

Was gibt es denn für Modifikationen die du bei einem Telefon so benutzt?


#3

Grundsätzlich ging es mir darum, bei Sicherheitslücken schnell reagieren zu können um “eigene” Updates auf meine Telefone zu spielen.
Abgesehen davon mag ich es nicht, wenn die Kontrolle von solchen Geräten teilweise beim Hersteller liegt.

Ich habe das Programm Zebedee für Testzwecke installiert. Damit kann man verschlüsselte Tunnel erstellen und jeglichen Datenverkehr durchschleusen. Habe bei meinen Telefonanalgen die IAX2 Kanäle, welche AES128 verschlüsselt sind, nochmals durch einen (Zebedee) Blowfish 448 Tunnel geleitet. Bei den SNOM teste ich den SIP Traffic durch einen solchen Tunnel zu leiten.


#4

Hier eine kurze Erklärung zum Aufbau:

0-128 Byte = Signatur
128-256 Byte = encryption Key
256 - Ende tar.gz Archiv

mit dd erstellen wir das Signature File:

dd if=SNOMXXX.bin bs=128 count=1 >sigFile

Nun prüfen wir die Signatur:

dd if=SNOMXXX.bin bs=128 skip=1 2>/dev/null | openssl dgst -sha1 -verify fimrware1.pub -signature sigFile

Ab hier wird die firmware1.pub des jeweiligen Models benötigt.
Ist die Signatur okay, können wir den Key extrahieren:

dd if=SNOMXXX.bin bs=128 skip=1 count=1 2>/dev/null | openssl rsautl -verify -out keyFile -inkey “pubFile” -pubin

und nun decrypten:

dd if=SNOMXXX.bin bs=128 skip=2 | openssl enc -aes128 -d -kfile keyFile >> image.tar.gz

Bitte vorsichtig sein mit dem UBOOT, es wäre ungünstig diesen zu zerstören!
Dieser ist ebenfalls in den Update Pakten enthalten.

Würde mich freuen, wenn sich jemand meldet, der ebenfalls ein SNOM Telefon hat. Die öffentlichen Keyfiles (firmware1.pub) gelten immer nur für die entsprechende Version.

Gruss roema


#5

Nett. Ich habe ein 821 und werde wohl bei Gelegenheit auch mal schauen wie weit ich komme.

Schätze deine serielle Schnittstelle war hinter der Abdeckung. Ich habe mein Telefon noch nicht auseinander genommen und bisher noch keine Bilder vom Board gefunden.


#6

Die Schnittstelle ist von aussen zugänglich, 4 Polige Pin Leiste.


#7

Übrigens gibt es die Firmware mit VPN.
Danach wird über eine URL ein Konfigurationspaket in Form eines tar welches die Zertifikate und die openvpn.conf entält installiert.

Unter Openvpn lassen sich bei Herstellung eines Tunnels Scripte ausführen. So wäre es eventuell möglich, ohne serieller Schnittstelle den SSH Server zu starten sobald ein VPN aufgebaut wird.

Ich konnte es noch nicht testen, würde aber in die VPN Konf folgende Zeilen eintragen.

“up /usr/local/bin/startsshd”

Es kann etwas dauern, da bei ersten Start die Zertifikate erstellt werden…

Gruss roema


#8

Ich habe auf meinem Board 4 pins entdeckt und einen header angelötet, habe aber leider keine serielle Ausgabe bekommen. Echo bekomme ich damit. Wenn ich Zeit habe kann ich mal ältere Firmware Versionen ausprobieren, vielleicht klappt es ja damit.


#9

Danke. Ja vielleicht ist das auch ein Weg.


#10

Kontrolliere mal den Logigpegel!
Mit einem Oszi findest du beim Booten des Telefons sehr leicht die RX Leitung.

Eventuell musst du dein MAX232 Inerface anpassen. Bei mir waren es 2.5 Volt.
Ich habe den MAX3218 verwendet.


#11

Übrigens gibt es eine neue Firmware.

Das Zertifikat zur Entschlüsselung ist gleich geblieben.

Hier ein gaaaaanz einfaches Shell Skript zum entpacken.

decrypt.pdf (17,4 KB)

Und so könnte der Public Key aussehen.

firmware1.pub.pdf (21,7 KB)

Das test.img ist wie der Name schon sagt, nur zum testen.

Binwalk spuckt folgendes aus:

0x80 OpenSSL encryption, salted, salt: 0x7C09A4312FE5CB61


#12

Funktioniert übrigens auch noch mit der neuesten Firmare V8 9 3 80


#13

Wollte nur mal zu dem Thema VPN Rückmeldung geben… Damit lässt sich der ssh Server in der Tat starten


#14

Danke für die Info!
Hab bis heute nichts mehr am SNOM getestet.

Lg roema