Forum: Mikrocontroller und Digitale Elektronik Modifizieren einer LevelOne WCS-2000 IPCam


von Philipp W. (jppweber)


Lesenswert?

Guten Abend,

ich habe seit längerer Zeit eine Level-One WCS-2000 Netzwerkkamera in 
meinem Flur.

Bevor die Daten kommen, erstmal mein Anliegen.

Auf der Kamera läuft ein ziemlich schlankes Linux, mein Wunsch ist nun 
auf die Daten des Linux drauf zu zugreifen, um es anzupassen, die 
HTML-Seiten zu ändern und zus chauen was noch so geht.

Dinge die ich probiert habe:

Logischer erster Weg das Handbuch und die Homepage von Level-One:
-> Ergebnis : Auf der Homepage kann man sich zwei Firmware-Updates 
saugen und ein Daten Paket in dem scheinbar alle System und 
Programmdateien herunterladen.

Das hat mich überrascht und voreilige Freude brach aus, ich stöberte die 
Ordner durch, fand alles, aber alles nur in der Grundfassung, sprich 
nicht angepasst an die Cam und auch keine Software zum erstellen einer 
neuen Firmware.

LINK GPL : 
http://download.level1.com/level1/gpl/WCS-2000(GPL)_2004-07-28.zip


Ich stöberte weiter durch die Dateien in der Hoffnung ein Hintertürchen 
zu finden, aber dabei muss ich ehrlich zugeben, ich benutze zwar auch 
öfters Linux, aber ich bin kein Linux Profi.

Nächster Schritt: Portscan, nach Bekannten wie SSH und TELNET:
-> Ergebnis NMap :
  -> Offene Ports
    80/tcp   open  http           thttpd 2.20b 10oct00
    1024/tcp open  http           thttpd 2.20b 10oct00
    6789/tcp open  ibm-db2-admin?

Zusätzliches Ergenis von NMap:

1 service unrecognized despite returning data. If you know the 
service/version, please submit the following fingerprint at 
http://www.insecure.org/cgi-bin/servicefp-submit.cgi :
SF-Port6789-TCP:V=5.21%I=7%D=6/26%Time=4C261D38%P=i686-pc-windows-window 
s%
SF:r(GetRequest,AE,"HTTP/1\.1\x20404\x20Not\x20Found\r\nCONTENT-LENGTH:\ 
x2
SF:048\r\nDATE:\x20Sat,\x2001\x20Jan\x202000\x2000:07:04\x20GMT\r\nSERVE 
R:
SF:\x20Linux/6\.0\x20UPnP/1\.0\x20Intel\x20UPnP/0\.9\r\n\r\n<html><body> 
<h
SF:1>404\x20Not\x20Found</h1></body></html>")%r(FourOhFourRequest,AE,"HT 
TP
SF:/1\.1\x20404\x20Not\x20Found\r\nCONTENT-LENGTH:\x2048\r\nDATE:\x20Sat 
,\
SF:x2001\x20Jan\x202000\x2000:07:29\x20GMT\r\nSERVER:\x20Linux/6\.0\x20U 
Pn
SF:P/1\.0\x20Intel\x20UPnP/0\.9\r\n\r\n<html><body><h1>404\x20Not\x20Fou 
nd
SF:</h1></body></html>");
MAC Address: [ENTFERNT] (Sercomm)
Device type: general purpose
Running: Linux 2.0.X
OS details: Linux 2.0.39 - 2.0.40 (embedded)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=259 (Good luck!)
IP ID Sequence Generation: Incremental
Service Info: Device: WAP

-> Das ewiglange rumprobiere via WGet unter Linux brachte auch nicht 
viel, außer das ich herausgefunden habe das die Kamera in eine Datei 
streamt die ladbar und direkt via VLC aufrufbar ist.

-> Der Port 6789 ... dort habe ich mal wie WinSCP und PuTTy angeklopft 
und habe auch eine User/PW Abfrage bekommen aber der Admin Zugang ging 
nicht.

-> Sicherheitslücken konnte ich auch im Netz nicht finden im 
HTTP-Daemon. Mit der aktuellen Firmware 3.5 die darauf ist wurden noch 
Lücken gestopft.

-> Eine Anfrage an Level One ist gestellt aber ich bezweifel das man mir 
trotz des Alters mir Daten gibt.

-> Die Anschlüße auf dem Board habe ich noch nicht via OSC gemessen, da 
ich auch nur auf das AVR-Lab zugreifen kann und das liegt gerade zu 
Hause und nicht hier.

-> Ich denke weiter das einer der Anschüße auf dem Board ein JTAG ist 
für den TI µC der verwendet wurde.

Verbaute Komponenten:
-> TI DSP : TMS3200SC21 ( AF 32A30XW )
-> 2x WinBond 317WG
-> Davicom DM9000E 0309S MG5825 [ISA TO ETHERNET MAC CONTROLLER WITH 
INTEGRATED 10/100 PHY]
-> AMD AM29LV3200B -90EI 03100BM H
-> ATMEL ATF16V8B 15JC 0245 [250 gate electrically erasable PLD, 20 
pins, standard power, 5V]

Sooo bevor ich noch endlos hier weiterschreibe, erstmal noch Bilder ( 
Host ImageShack ) ... 
http://img203.imageshack.us/gal.php?g=dsc00332t.jpg


MfG
 Phil

von Philipp W. (jppweber)


Lesenswert?

Sooo, hab mal weiter gesucht ... wenn man das oben aufgeführte Archiv 
lädt dann entpackt und das Archiv dort drin wieder findet man den Pfad:

DDC WCS-2000\fs\scripts\etc

Dort sind ein paar Scripts, in den auch die Services und Benutzer 
aufgeführt sind, nur die Passwörter fehlen natürlich^^

von Philipp W. (jppweber)


Lesenswert?

Moin,

also habe die passwd gefunden ...


Inhalt:

root:GP8Mzr7E4HfmM:0:0:root:/root:/bin/sh
ftp:*:14:50::/tmp:
nobody:*:99:99:nobody:/tmp:
user::100:100:user:/:/bin/sh

Dieser Inhalt bedeutet doch, das das Passwort im Grunde die 
"GP8Mzr7E4HfmM" ist, nur das dieses noch verschlüsselt ist oder?

Sprich Benutzer sind: root, ftp, nobody, user ...

von Hans (Gast)


Lesenswert?

>Dieser Inhalt bedeutet doch, das das Passwort im Grunde die
>"GP8Mzr7E4HfmM" ist, nur das dieses noch verschlüsselt ist oder?

Das sieht nach einem Standard crypt-Password aus, welches
via salt (ersten beiden Zeichen) einen Hash-Algorithmus auf Basis
einer DES-Variante auswaehlt.

Mache (hier wird salt=00 fix gesetzt->erste beiden Zeichen "00D..."):

$ openssl passwd -crypt -salt 00
Password: <eigen-gewaehltes-PW>
00Dk/ChnJr13M


und ersetze die letzte Zeile im root-PW im password-File.

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

Hallo,

also die passwd komm aus dem Archiv aus dem Supportbereich von LevelOne 
und ich kann nicht auf die passwd auf der Kamera drauf zugreifen.

Um da reinzukommen brauche ich halt das PW, kann natürlich auch sein das 
es nichts bringt aber ein Versuch ist es wert.

... ich versuche es gerade schon mit John ( the ripper ).

von Hans (Gast)


Lesenswert?

Die GPL-Lizenz schreibt eine Bereitstellung des GPL-Quellen
und die Möglichkeit der Modifikation derselben vor.

Falls die PW-Mod nicht hilft, koennte Dir vielleicht Harald Welte
unter:

       http://gpl-violations.org/

behilflich sein, insbesondere die Formulierung einer ernstzunehmenden
Mail/Einschreiben, was nicht gleich in /dev/null landet.

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

Mhm, meine Frage ist nun im Grunde nur, was ich noch übersehen habe und 
noch machen kann.

Leider bin ich nicht zu hause deswegen kann ich den JTAG/Seriellen 
Anschluß gerade nicht anzapfen.

von Hans (Gast)


Lesenswert?

>Leider bin ich nicht zu hause deswegen kann ich den JTAG/Seriellen
>Anschluß gerade nicht anzapfen.


Hmm, ich hab' mir das Archiv jetzt auch runtergeladen. Also
Sourcen da! Hast Du ein Binärupdate, welches Du entpacken kannst
und die (modifizierte) passwd ersetzen kannst?

Ich sehe in den Quellen rsh/rlogin Sourcen. Bist Du sicher,
dass auf 514/tcp nichts lauscht? (Ansonsten auf Deinem Rechner
root werden und mal rsh a.b.c.d probieren)

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

Hallo,

also das Resultat von NMap habe ich oben ja eingefügt.

Ein Firmwareupdate im *.bin Format ist kein Problem, aber ich weiss 
nicht wie ich das "richtig" entpacke und dann auch wieder im richtigen 
Format zusammen bekomme.

Sprich gibt ja da auch kleine Unterschiede, Komprimierung, 
Verschlüsselung usw...

Firmware:

1.30 :
http://download.level1.info/firmware/WCS-2000(1.30)_2003-11-13.zip

1.35 ( aktuelle, auch derzeit auf der Kamera ):
http://download.level1.info/firmware/WCS-2000(1.35)_2004-09-13.zip

von Philipp W. (jppweber)


Lesenswert?

Wenn du mir sagen kannst wie ich das ent und wieder zusammenpacke =P

Ich bin was solche Geräte angeht nämlich noch relativ unerfahren.

von Hans (Gast)


Lesenswert?

>Wenn du mir sagen kannst wie ich das ent und wieder zusammenpacke

In den Quellen sollte ein Zusammenpackskript zu finden sein, aber...

Ich habe die 1.30 runtergeladen, dort finde ich den
root/PW-Hash-Eintrag (mit einem Binaereditor). Den könnte man
mit dem Hex-Editor seiner Wahl aendern.

Folgende Dinge sind zu beachten:
- damit kann man das Device komplett bricken
- falls eine Prüfsumme verwendet wird, muesste man diese finden
  und neu berechnen.

VG,
Hans

PS: ich würde erstmal auf John warten ;-)

von Hans (Gast)


Lesenswert?

> also das Resultat von NMap habe ich oben ja eingefügt.

Falsche Antwort :-)

nmap sucht im default nach den vermeindlichen Standardports
(variierend mit der Version).
Generell: Ohne die (nmap-)Kommandozeile ist für andere
der Output eines tools fast wertlos.

Man kann nmap sagen, alle Ports durchzuprobieren, das dauert.
Man sollte es auch nicht zu schnell machen, denn wenn ein
Device unter einem Paketsturm ueberlastet wird, könnten
offene Ports verlorengehen.

Um "zu Fuß" herauszufinden ob ein Port offen ist,
macht man folgendes:

-tcpdump -n -i eth0 host a.b.c.d   auf dem Linuxrechner
 in einem Fenster.
-telnet a.b.c.d 514    (für das rsh) in einem anderen Fenster

Kommt ein RST Paket zurueck: Port zu.
Kommt ein Handshake: Port offen.
Kommt nichts: (vermutlich) irgendwo Firewallregeln....

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

Resultat:

Erstmal die Kamera, macht scheinbar ab und zu ein Broadcast, aber an 
eine seltsame Adresse.

Befehl:

tcpdump -n -v -i eth0 host 192.168.0.10

Ohne eine Eingabe am Linux Rechner kam folgendes:

IP (tos 0x0, ttl 1, id 350, offset 0, flags [none], proto UDP (17), 
length 347)
192.168.0.10.1060 > 239.255.255.250.1900: UDP, length 346

Wobei die Länge minimal variert und die 5. Stelle der IP einen weiter 
hochzählt jedes mal.


Sooo, nun zu dem was du explizit sagtest:

IP 192.168.0.100.38860 > 192.168.0.10.514: Flags [R.], seq 0, ack 
xxxxxxxxxx, win 0, legth 0


Interessant war auch noch das, wenn ich nicht gemacht habe mein Rechner 
trotzdem der Kamera Pakete auf den Port 6789 schickte

von Philipp W. (jppweber)


Lesenswert?

Wenn ich via Telnet auf 6789 verbinde baut er eine verbindung auf, sagt 
mir womit ich sie schließe, ich kann was eingeben aber er schließt die 
Verbindung nach der Eingabe unt dem Enter druck sofort.

von Hans (Gast)


Lesenswert?

>IP (tos 0x0, ttl 1, id 350, offset 0, flags [none], proto UDP (17),
>length 347)
>192.168.0.10.1060 > 239.255.255.250.1900: UDP, length 346

Das ist ein Multicastprotocol a la Microsoft um Devices zu finden.

>IP 192.168.0.100.38860 > 192.168.0.10.514: Flags [R.], seq 0, ack
>xxxxxxxxxx, win 0, legth 0

OK, somit ist der rsh/rlogin Port zu. Waere zu schön gewesen ;-)

> Wenn ich via Telnet auf 6789 verbinde baut er eine verbindung auf

Wenn ein sshd da waere, käme eine sshd-Bannermeldung.
Nach dem nmap waere auf 6789 ein "GET / HTTP/1.0" + 2xReturn
noch interessant.
War John erfolgreich?

>trotzdem der Kamera Pakete auf den Port 6789 schickte

Da wäre ein tcpdump als "Beweis" hilfreich gewesen....
Vermutlich waren das RST oder FIN Pakete (von verangegangenen
Verbindungen). Selbständig dürfte die Kamera nichts machen :-)
(wäre zu erkennen an dem ephermeral port der vorangegangen
vom Client aus initierten Verbindung).

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

Ich probier gleich nochmal folgendes setup.

Ich verbinde Die Kamera direkt mit meinem Laptop auf dem Linux läuft und 
sonst nichts, davor hing da noch mein Router/Switch dazwischen ( WRT54GS 
).

Hast du vllt ICQ oder ähnliches um einen schnelleren Austausch zu haben 
und dann am Ende die Lösung hier zu posten?

ICQ 137443502
MSN jpp-weber@live.de

von Philipp W. (jppweber)


Lesenswert?

Achso, wegen dem Multicast ... die 192.168.0.10 ist die Kamera

von Hans (Gast)


Lesenswert?

>Hast du vllt ICQ oder ähnliches um einen schnelleren Austausch zu haben
>und dann am Ende die Lösung hier zu posten?

Ich bin momentan im Urlaub und schaue nur ab und zu (vorwiegend
abends) rein.

VG,
Hans

PS: Wobei die "Zugänge auf Netzwerkebene" wohl ausgeschöpft sind.
IMHO wird Dir nichts anderes als eine hardwarenähere Vorgehensweise
übrigbleiben, wenn John nichts liefert.

von Philipp W. (jppweber)


Lesenswert?

Sooo nun hier die Ergebnisse.

Hier die Anfrage
http://pastebin.com/QtbWsaX1

Hier das Dump
http://pastebin.com/KH2upi8d

... kleine Erklärung, er baut eine Verbindung auf, ich kann eine 
beliebig lange Eingabe machen und sobald ich Enter drücke, beendet er 
die Verbindung.

Was sagt mir das nun, oder fehlt mir noche in "Zauberwort"?

von Hans (Gast)


Lesenswert?

>> Was sagt mir das nun, oder fehlt mir noche in "Zauberwort"?

Gib' mal bitte nach dem telnet Connect:

GET / HTTP/1.0                              +2xReturn

ein.

Kommt dann was?

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

root@g0ttmobil:/home/g0tt# telnet 192.168.0.10 6789
Trying 192.168.0.10...
Connected to 192.168.0.10.
Escape character is '^]'.
GET / HTTP/1.0
HTTP/1.1 404 Not Found
CONTENT-LENGTH: 48
DATE: Sun, 02 Jan 2000 05:52:33 GMT
SERVER: Linux/6.0 UPnP/1.0 Intel UPnP/0.9

<html><body><h1>404 Not Found</h1></body></html>Connection closed by 
foreign host.
root@g0ttmobil:/home/g0tt#

von Hans (Gast)


Lesenswert?

>> SERVER: Linux/6.0 UPnP/1.0 Intel UPnP/0.9

Ok, d.h. keine Möglichkeit über UPnP reinzukommen.
Der Server ist der "Bruder" zu den Multicasts auf UDP/1900.
Hoffen wir mal auf John ;-)

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

Ok, dann lass ich gleich noch mal john los, wärend ich in die Stadt 
gehe.

Kannst du mir deinen Satz:

Ok, d.h. keine Möglichkeit über UPnP reinzukommen.
Der Server ist der "Bruder" zu den Multicasts auf UDP/1900.

Nochmal ausführlich erklären?

MfG
 Phil

Und danke schön für deinen ausführlichen Rat die ganze Zeit =)

von Hans (Gast)


Lesenswert?

> Nochmal ausführlich erklären?

Naja... en.wikipedia.org/wiki/UPnP gibt eine gute Übersicht.
Ganz unten sind >100-seitige Referenzen angegeben. "Ausführlich"
würde also vermutlich das Forumszeilenlimit überschreiten ;-)

Kurzgefasst:
Das UPnP gibt es primär um Geräte innerhalb einer
broadcast(= multicast)-Domäne zu finden... denn wenn DHCP
verwendet wird weiss der Endanwender i.d.R. nicht die
IP-Adresse;-)

Ohne jetzt die Referenzen nochmal nachzulesen, also
alles nur zu 80% Sicherheit (wrt. Pilawa-Sicherheitsprozenten ;-) :

Basierend auf dem Multicast werden Ressourcen von neuen
Geräten in einem Multicast annonciert, in dem Multicast
steht sowas drin wie: "willst Du näheres wissen, frag'
meinen UDP(!) oder TCP http-server, der gibt Dir eine
Beschreibung von dem was ich kann und wie man auf mich
zugreift."

Der Rechner hat dann die Möglichkeit sich nach einem
kleinen Multicastpaket genaue Infos gezielt via
Unicast abzuholen (anstatt die vollständige Beschreibung
zu "broad"casten).

Windows sollte dann das gefundene Geräte anzeigen... das habe ich
aber nie selbst gesehen.

Soweit ich mich erinnere wollte (oder hat) M$ auch UPnPs
definiert, um eine Heimfirewall gezielt mit UPnPs zu öffnen,
will heisen: das interne Gerät schaltet sich seine Ports
gezielt selbst an der UPnP-aware FW frei. Zum Glück hat
sich dieses Horrorszenario am Markt nie durchgesetzt....

Das Protokoll ist stark M$ lastig und in dem referenzierten
Wikipediaartikel steht, dass das RfC-Proposal 2001 "ausgelaufen"
ist.

VG,
Hans

von Philipp W. (jppweber)


Lesenswert?

Ok, danke =)

Hab noch ein bisschen nach Exploits gesucht, aber keins gefunden was 
genau hier wirkt.

Hab nochmal ein bisschen weiter nach Dateien gesucht, via wget auf dem 
http.

Aber auch nicht viele neue gefunden.

Hab weiter nochmal die alte Firmware Version im Editor geladen und mal 
durchgestöbert.

Dort ist auch einmal von "root:x:blablabla" die Rede aber das zog auch 
nicht.

John läuft gerade wieder seit über 10 Stunden, aber da wird eh nichts 
bei herauskommen. Denke ich.

Der Port 6789, ist mir allerdings immer noch so ein Rätsel, weil man 
sich wie gesagt, per Telnet anmelden kann aber nichts dabei herauskommt, 
bzw ich nicht weiss mit welchen Befehlen ich da weiterkomme.

von Hans (Gast)


Lesenswert?

> Der Port 6789, ist mir allerdings immer noch so ein Rätsel

Mit der Antwort auf das "GET / HTTP/1.0" und der Antwort:

    SERVER: Linux/6.0 UPnP/1.0 Intel UPnP/0.9

ist das der http-Server (TCP), den ein M$ Rechner nach dem
Multicast fragen würde, um weitere UPnP-Informationen über die
Kamera zu bekommen.

VG,
Hans

PS: telnet macht eine vanilla-tcp-Verbindung auf, Du koenntest auch
netcat (nc) verwenden.... Der telnet Client ist ein wichtiges
Netzwerkdebuggingool zum Testen von tcp-Kanälen aller Art ;-)
(Sorry, wenn das PS jetzt für Dich klar ist, ich wollte nur
sicherstellen, dass hier nicht Dein Problem liegt ;-)

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.