Ich habe ein Gerät bekommen, bei dem der License Key und die Config auf
SD Card gespeichert ist. Die Karte ist hinter einer Gehäuseplatte, die
man anschrauben muss, also für Benutzer eigentlich nicht zugänglich.
Neugierig wie ich war, hab ich die Karte mal in den PC Kartenleser
eingelegt.
Auf dem PC sieht man nur eine readme.txt, die auslesbar ist. Dann noch 2
Dateien, key.dat und config.dat.
Die key.dat und config.dat können nicht geöffnet werden, gibt eine
Fehlermeldung, dass die Datei beschädigt sei.
In der readme steht drin, man soll zum auslesen und schreiben der Daten
nur die Software nutzen (Name der Software steht nicht dabei), und man
soll an der Karte keine direkten Änderungen vornehmen und keine Dateien
drauf kopieren.
Das FAT16 ist übrigens nur 32 Mbyte groß obwohl die Karte 512 Mbyte hat.
Der Rest der Karte ist ungenutzt. zumindest aus PC Sicht, per SPI Mode
könnte man evtl an weitere Daten rankommen
Ich frage mich jetzt, wie die das gemacht haben, dass man die 2 Dateien
mit dem PC nicht direkt öffnen kann.
Und ich frage mich, wie ich an die Daten ran komme.
Dachte an einen dump erstellen unter Linux und dann das Dumpfile mit Hex
Editor öffnen. Könnte klappen, oder?
Eine der ekligeren Funktionen von SD-Karten ist im Namen versteckt:
secure digital. Das ist eine (natürlich nicht frei zugänglich
dokumentierte) Technik, Daten nicht kopier- und nicht auslesbar auf
einer Karte zu speichern, um eben Software an eine Speicherkarte binden
zu können o.ä.
Solange nicht jemand die Verschlüsselungstechnik der SD-Spezifikation
knackt, hast Du da keine Chance.
So hab mal was über die Kiste in erfahrung gebracht, und die Spec des
Original-Herstellers der Hardware gesucht.
Scheinbar läuft auf der Kiste ein Linux mit Kernel 2.6
Technische Daten laut Herstellerseite
http://www.axotec.de/produkte/facility-management/rs485rs422-gsmgprs.html
Angepasst wurde die darauf laufende Software durch ein lokales
Ingenieurbüro.
Vielleicht kann ich ja direkt die auf der Kiste gespeicherte Software
mal unter die Lupe nehmen.
So grad mal versucht, per Ethernet in das System einzudringen.
Telnet läuft nicht, die SSH Zugangsdaten habe ich leider nicht.
Irgendwer ne Idee, wie ich in die Kiste zwecks Softwareanalyse
eindringen könnte?
Das Image ist in der Kiste selber gespeichert.
Sie bootet auch ohne die SD Karte, stellt dann aber keine GPRS
Verbindung her. Die Ethernet IP ist dann fest auf 192.168.1.100. Auf dem
Webinterface, an das man dann per Ethernet rankommt, erschent dann ne
Fehlermeldung und die Kiste arbeitet nicht.
Grade nochmal nachgedacht, ich glaube nicht dass das DRM der SD benutzt
wird, wäre einfach zu exotisch.
Glaube eher an eine Frikellösung des lokalen Ing. Büros, sowas hat
Tradition.
Würde einfach mal vermuten das die Daten im nicht partitionierten
Bereich liegen. Also einfach mal ein Dump der ganzen Karte, nicht nur
der Partition...
Du kannst dann ja mal testweise den Dump auf eine 2. Karte schreiben und
sehen obs damit läuft, wenn ja ist DRM definitiv raus. Kann allerdings
sein das noch der Kartenhersteller und/oder die Seriennummer abgefragt
wird.
DRM wird meiner Meinung nach auch nicht benutzt.
Ich denke ehr, dass die Dateien einfach "ungültig" geschrieben werden,
dass man sie mit nem normalen Texteditor nicht aufmachen kann.
Hab die Karte nochmal gecheckt, da scheint noch ne zweite Partition mit
einem Dateisystem drauf zu sein, was Windows nicht lesen kann.
Entweder kann mein Kartenleser die zweite Partition nicht verarbeiten
oder es ist einfach ein Linux-Filesystem.
Muss echt mal unter Linux gucken.
Zu brutal darf ich aber auch nicht an die Sache rangehen, sonst
funktioniert die Kiste nachher nicht mehr. Und bevor ich sie für
Bastelprojekte nutze wollte ich wenigstens mal gucken, was der Ing da
veranstaltet hat. So rein aus Interesse.
mfg
Ok, die Kiste nochmal normal hochgefahren, und mal die Weboberfläche
versucht. Das Passwort hab ich ja, weils auf dem Aufkleber drauf steht.
Auf der Weboberfläche gibts ne Funktion mit der man Shellbefehle
absenden kann, und die Ausgabe kommt dann als HTML Seite.
Man hat aber keine Rootrechte, sondern man ist nur als "admin" drin.
Ich kann aber die ganzen Dateien mit Cat auslesen.
cat /etc/passwd gibt mir folgendes für root:
root:$1$iLZPUcOt$qXifHZxKKW03n53gxjJsF1:0:0:Root
User,,,:/tmp/root:/bin/sh
Könnte man damit vielleicht das Root Passwort rausfinden?
mfg
Eine Möglichkeit wäre, den Ethernet-Anschluss auf laufende Dienste
abzuklopfen. Vielleicht wurde ein für Dich nützlicher Dienst vergessen,
abzuschalten oder läuft auf einem ungewöhnlichen Port.
Ja, ich weiß, aber evtl gibts ja Programme, die so lange Passwörter
durchprobieren bis der hash passt.
Naja, hab eben den Ingenieur angerufen und gefragt ob er kurz Zeit für
mich hat. Hatte er.
Naja, hab ihm dann erklärt wie ich an das Gerät dran gekommen bin und
dass ich es als Bastler für private Zwecke verwenden will.
Naja, das Root Passwort wollte er mir nicht geben. Er meinte er hätte
aber ein Herz für Bastler und ich soll vorbeikommen.
Er bot mir an, mir die Kiste für nen sechser Bier mit einem Grundimage
neu zu flashen und mir auch die Quellcodes auf CD dazu zu geben. Das
Grundimage ist allerdings nur ein nacktes Linux, ohne die von ihm
erstellten Scripts, Config-Files und ohne Webinterface. Also ohne das
von ihm in das System eingebrachte Know-How.
Am liebsten wollte er mich heute Abend nach Feierabend noch einladen.
Der hat wohl Angst, ich könnte das System hacken und sein KnowHow
klauen.
Heute jetzt nicht, aber Ende der Woche werde ich mich mit Ihm treffen.
moe schrieb:> Eine Möglichkeit wäre, den Ethernet-Anschluss auf laufende Dienste> abzuklopfen. Vielleicht wurde ein für Dich nützlicher Dienst vergessen,> abzuschalten oder läuft auf einem ungewöhnlichen Port.> nmap -v -p1-65535 -A --version-all 192.168.1.100>> Bootet der Rechner auch von SD-Karte/USB-Stick? Dann könntest Du ein> Winz-Linux wie z.B. http://www.minimalinux.org/ttylinux/ (auch für ARM)> benutzen.
Das mit der SD Karte/USB werde ich mal testen. Das mit NMAP auch. Ich
werde auch mal gucken, ob an der RS232 während des Bootvorgangs
vielleicht was machbar ist oder irgendwelche Ausgaben kommen.
Hab ja noch ein paar Tage Zeit, bevor der Ing mir die Kiste mit dem
Grundimage platt macht.
Ich hab aus Interesse mal ein paar Minuten Rechenzeit spendiert, und
siehe da: John (http://www.openwall.com/john/) hat das Root-Passwort in
25 Minuten (!) rausgefunden. Denke mal, da jeder das mit dem Programm
selber nachvollziehen kann, ist es ok, wenn ich es hier poste:
Ok, ich habe das System geknackt.
Die große Schwachstelle liegt im Webinterface selbst und den
Dateirechten.
Man kann ja im Debug-Fenster Shell Befehle absenden.
An der SD Karte hat er schön rumgeknobelt, selbst USB ist dicht, aber im
System selbst ist vieles zumindest auslesbar.
Da kann man sich schön im System umsehen und auch die ganze Arbeit des
Ingenieurs mit CAT begutachten und über den Browser Datei für Datei
abspeichern.
Das Geheimnis der SD Karte habe ich übrigens auch gelüftet.
Die SD Karte ist auf der FAT Partition nur Read Only gemountet, im
Ordner MMC. Man kann also keine Daten aus dem System klauen. Außerdem
werden die Dateien die drauf sind gehasht und der Hash wird gespeichert.
Wenn der Hash nicht stimmt, oder andere/mehr als die zulässigen Dateien
da sind, wird die Karte beim Systemstart direkt wieder umonted, damit
keine Dateien ins System eingeschleust werden, und das System fährt
hoch, wie wenn gar keine Karte ingelegt ist.
Die 2 .DAT Dateien werden an der Checksumme manipuliert, damit Windows
sie als defekt ansieht.
Der Inhalt der Dateien ist relativ simpel. Die config.dat ist ein tar.gz
Archiv, mit GPG verschlüsselt. Sie enthält 1:1 Linux Config Files.Beim
Systemstart werden die entpackt und in die Ramdisk geschrieben. Die
ganzen die ganzen Config Files in /etc sind symlinks auf die Ramdisk.
Sollte die Karte oder die Datei abgewiesen werden, so werden einfach
Standard-Dummyfiles mit "light-Config" in die Ramdisk kopiert.
Außerdem werden einige Scripte erst aktiviert, wenn eine entsprechende
Datei in der Ramdisk vorhanden ist.
Die Key Datei ist einfach ein GPG Key, ein anderer ist im System selbst
gespeichert.
Die zweite Partition ist als JFFS2 im Ordner JFFS gemountet. Auf den
Ordner kann "admin" aber nur lesend zugreifen. Also auch kein Datenklau
aus dem System in Richtung Karte möglich.
Auf der Partition werden durch scripte aufgearbeitete Systemlogs
gespeichert, und die ganzen Daten, die bis zum Senden über GPRS zwischen
gespeichert werden.
Der Upload erfolgt an einen bestimmten Server, den man übers
Admininterface angeben kann.
Nunja, eigentlich ist es nicht möglich, größere Daten aus dem System
raus zu bekommen ohne Rootrechte, weil halt die Datenpartition der SD
Karte keinen Schtreibzugriff von Admin erlaubt. Die Config Partition ist
nur read only gemountet. Wenn man aber die Config im Webinterface
ändert, wird sie zum schreiben neu gemountet, und die Config Datei
komplett neu geschrieben. Sie bleibt dann auch so gemountet bis zum
Reboot.
Dann kann man sich die Ordner /etc /var /tmp /ramdisk /scripts schön
runter ziehen und man hat das gesamte Geheimnis der Kiste auf der SD.
moe schrieb:> Ich hab aus Interesse mal ein paar Minuten Rechenzeit spendiert, und> siehe da: John (http://www.openwall.com/john/) hat das Root-Passwort in> 25 Minuten (!) rausgefunden. Denke mal, da jeder das mit dem Programm> selber nachvollziehen kann, ist es ok, wenn ich es hier poste
Hay Cool, danke, dann kann ich ja nochmal mit vollem Rootzugriff an das
System ran :)
Hab ja auch schon ne Sicherheitslücke im Webinterface entdeckt, mit der
ich Daten klauen konnte :)
Es war eine Daten-Aufzeichnung und Weiterleitung über GPRS.
Die Ertragsdaten der Solaranlage und des BHKW wurden permanent an einen
Webserver gesendet, der dann schöne Statistiken mit schönen Diagrammen
gemacht hat.
Das Teil wollten Monteure schon verschrotten. Es wurde nicht mehr
gebraucht da die Betreiber mit ihrer politischen Selbstdarstellung
fertig waren. War halt so ein typisches Projekt: Schaut alle her, wir
und unsere Partei XXX tun so viel für die Umwelt.
Ich habs das Gerät der Verschrottung gerettet.
Achja, das Root Passwort geht übrigens.
Hatte die gleiche Idee^^
# john --incremental=all --session=mcn passwd.mcn
Loaded 1 password hash (FreeBSD MD5 [32/32])
t3kn (root)
guesses: 1 time: 0:00:41:17 c/s: 5111 trying: t3kn
Nur hatte dafür keine extra optimierte Version von John genommen...
EDIT: Und falls jemand wissen will warum FreeBSD MD5 so viel langsamer
als DES zu knacken ist (~Faktor 300) sollte sich mal
http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/lib/libcrypt/crypt.c?rev=1.2&content-type=text/plain
anschauen.
Achja, bekommen Firmen für solche Solar- und Ökospielereien eigentlich
öffentliche Fördergelder?
Weil sonst kann ich mir solche Spielereien zusammen mit der Politik
eigentlich kaum erklären