Telnet auf der Videotürklingel

 

Kürzlich habe ich mir gedacht, eine WLAN-Türklingel wäre eine sinnvolle Investition, etwa schon allein deshalb, weil sich manchen Zustelldienste gerne in meiner Gegend verirren. Als Sparfuchs, der ich ja bin, wurde es auf Amazon eine [externer Link zu Amazon:  Generic TS-IWP708 Wifi Digital Wireless Video Tür Bell]. Zum Zeitpunkt des Erwerbs lag der Preis bei etwa 30 Euro. Es f olgt eine

Analyse:

Paket und Inhalt

Die weiße Schachtel war relativ neutral. Ein Produktbild und der Name des Produkts auf der Oberseite, seitlich rechts noch ein paar Bildchen, Strichcode-Aufkleber, einer davon mit dem Aufdruck „TS-IWP708“ unter dem Code. Keine Herstellerangaben in irgendeiner Form.

Inhalt der Schachtel

  1. User’s Manual (20 Seiten mit farbigen Illustrationen und Screenshots)
  2. Die Haupteinheit im wiederverschließbaren Plastiksack.
  3. Ein Montagerahmen, der zugleich als Wetterschutz oder Regenblende dient.
  4. Ein Stromadapter 230V zu 5V 1A mit einem 2-Pin Stecker. CE-Loge auf dem Adapter.
  5. LAN-Adapter (8x17cm ungeschirmte Kabel mit acht-pinnigem, einreihigem Stecker auf einer Seite, auf der anderen ist ein RJ45-„Weiberl“ .
  6. Ein Adapter mit drei Kabeln, die jeweils ca. 10,50 cm lang sind und offene Enden haben.
  7. Zwei Stück gepolstertes Teppichband.
  8. Ein Sackerl mit vier billigen Schrauben und ebensolchen Dübeln. Eine weitere, winzige Schraube mit Metallgewinde. [Werbung: Wenn Du an Webhosting, VPS und RootServern interessiert bist, kannst Du gerne meine Liste von Gutscheinen für netcup durchschauen. Es gibt Rabatte oder eine Neukundengutschrift. netcup – german quality webhosting.]

Anmerkungen:

  1. Die Bedienungsanleitung hat keine Lizenzinformation oder gar ein Impressum angefügt.
  2. Die Haupteinheit im Klavierglanzlook, die eine helle, blaue LED unter dem Klingelknopf hat, wirkt sauber verarbeitet. Links und rechts des Knopfes sind je eine weitere LED angebracht.  Im oberen Bereich sitzt der Kamerasensor mit einer Auflösung von 640×480, umgeben von je drei IR-LEDs links und rechts von ihm. Für den Lautsprecher und das Mikrophon gibt es Vertiefungen. Auf der Rückseite ist der abgesenkte Reset-Knopf zu finden. Ein „QC passed“ und das Produktionsdatum sind auf je einem Aufkleber zu sehen.
  3. Das Wetterschutzgehäuse, wenn man die Blende so nennen möchte, hat auf der Unterseite ein Loch, durch das die winzige Metallschraube aus 1.1.1.8 passt. Damit wird die Haupteinheit mit der Blende fixiert. Deshalb würde ein Einbrecher oder Dieb, der die Klingel haben wollte, ein leichtes Spiel haben. Es wäre sinnvoll die Schraubschlitze mit Epoxidharz zu verschließen, wenn man die Klingel nach Lektüre dieses Artikels noch behalten möchte. Aber wie kommt man dann an den Reset-Knopf, wenn man ihn braucht? Aufgrund dessen kommt mir das Konzept in diesem Punkt nicht ganz schlüssig vor.
  4. Das Stromkabel des Netzadapters ist, gemessen daran, dass wir hier eine Außeneinheit vorliegen haben, mit 80cm lächerlich kurz. Ich werde deswegen wohl einen selbstgebastelten PoE-Adapter verwenden müssen.
  5. Der ungeschirmte LAN-Adapter mit seinen ungeschirmten, nicht verdrillten könnte Funkstörungen bewirken. Ich würde ihn mit Alufolie umwicklen, bevor ich ihn letztlich montiere.
  6. Das dreipolige Kabel dient zum Anschluss an einen elektrischen Türöffner. Wie das geht siehst Du in 3.2.

Einrichtung

Vorbereitungen

  1. Auf Seite 7 der Bedienungsanleitung findet man QR-Codes, die auf eine App in entweder dem Google Play Store oder dem iOS App Store verweisen sollten. Nun, sollten, denn der Link für die in einem der Screenshots als  „Door Phone 4.1“ bezeichneten Apps war tot. Ich habe stattdessen mit dem Suchterm „doorphone“ eine andere app gefunden „Door Phone 4.4“, Herausgeber ist „ShenZhen Gogo Link Tech.limited“, die bei mir funktioniert hat.
  2. Fallstrick: Bevor man versucht, eine Verbindung mit der App herzustellen, sollte man jedenfalls das „Mobile Internet“, die „Mobile Datennutzung“, etc. deaktivieren. In meinem Fall hat die App das Gerät nicht detektieren können, solange LTE aktiv war.  (Es könnte sich um einen länderspezifischen Effekt handeln, wenn die privaten IP-Adressbereiche des 4g/3g/2g – Netzes vorrangig behandelt werden und der Broadcast fehladressiert wird.).
  3. Schließen wir also den zweipoligen Stromadapter an der Rückseite der Türklingel an und geben ihr Strom.
  4. Warten wir einen Moment, während die Türklingel bootet. Sie begrüßt und mit „welcome to smart home“ über den Lautsprecher. Nach weiteren 30 Sekunden dürfen wir den blauen Touchbutton für ca. fünf Sekunden drücken. Nach dem Loslassen sagt die Türklingel: „Network configuration mode, please set it down in five minutes“.
  5. Sowie man dies hört, ist auch schon eine WIFI Access Point mit der SSID „GBELL-{Teile der MAC Adresse}“ auf dem Handy sichtbar. Verbinde Dich damit. Das Einrichtungspasswort ist „123456789“.
  6. Sowie das WLAN verbunden ist, öffne die App „Door Phone“ und folge den Anweisungen auf Seite 9 der Antleitung: „Please click here to add bell“, dann „Search“. Und dann tippt man auf den Text „GBELL …“.
  7. Man kann jetzt das Zahnradsymbol in der Übersicht der App antippen, um das lokale WLAN zu konfigurieren.
  8. Man sollte an dieser Stelle nicht vergessen, nach Abschluss der Einrichtung zurück ins heimische WLAN zu wechseln. [Werbung: Puh, nach dem das geschafft ist, möchtest Du vielleicht einen Blick auf meine netcup-Gutscheine werfen? netcup – german quality webhosting.]

Abschluss

  1. Nun, nachdem die Klingel grob eingerichtet ist, kann man ans Feintuning gehen. Als erstes sollte man den Alarmton abstellen, sonst wird man während der nächsten Schritte noch irr …
  2. In den „User settings“ kann man weitere Benutzer anlegen. Bedenke, dass die App Passwörter abverlangt, die zwar länger als sechs Zeichen sein sollen, aber keine Sonderzeichen beinhalten dürfen. Man kann sie zwar eingeben, aber die App lässt sie beim Speichern unter den Tisch fallen.
  3. Bei der Wahl des Passworts bitte auf den vorhergehenden Punkt genau achten. Ansonsten kann man sich mit der App nicht wieder einloggen. Die Reset-Prozedur über den Knopf auf der Rückseite- ist mühsam, man muss von Vorne beginnen. [Werbung: Wie wäre es zur Entspannung mit etwas völlig anderem:  FreeTime Unlimited von Amazon – kindgerechte Inhalte von Amazon?]

Tiefere Einblicke

Dienste

  1. Ein Portscan auf die nun zugewiesene IP der Klingel offenbart folgende drei TCP-Dienste: PORT STATE SERVICE 23/tcp open telnet 81/tcp open hosts2-ns 8600/tcp open asterix
    1. Auf den Telnet-Dienst – oder sollen wir ihn Backdoor nennen? – kann über folgende Nutzerdaten zugegriffen werden User: „root“ Passwort: „123456“
    2. Auf Port 81, kann man ein Webinterface erreichen, auf das nach einem Reboot mit dem selbstgewählten Benutzer zugegriffen werden kann. Bedenke, dass etwaige Sonderzeichen schlicht weggelassen worden sind. Die Schnittstelle wirkt unfertig und kaputt. Sie bietet fünf Funktionen:
      1. Ein Fenster für den Videostream – es ist immer schwarz und funktioniert augenscheinlich nicht.
      2. WLAN scan – man sieht die erreichbaren Netze, kann aber nicht mit ihnen verbinden.
      3. Ein Auslöser für den Türöffner – eigentlich sinnloss, wenn Audio und Video nicht funktionieren…
      4. Audio in – (Gegensprechfunktion) ohne Funktion
      5. Audio out – (Gegensprechfunktion) ohne Funktion
    3. Der Zweck von Port 8600 war mir an dieser Stelle unklar. Es ist kein Asterisk, sondern scheint vom Dienst „go-service“ auszugehen, das ist jene Schnittstelle, die mit der App kommuniziert. Ich konnte das noch nicht tiefer analysieren, aber dahinter steckt anscheinend eine monolithische  Binärdatei, die die ganze Klingel kontrolliert.
  2. Ein genauerer Blick in die Firmware wird durch den zuvor genannten Root-Telnetzugang ermöglicht. Jetzt wird es spannend:
    1. Das Gerät meldet auf Linux und Busybox zu laufen, u.z. konkret auf einem Realtek-SDK mit  Linux 2.6. Nirgendwo auf der Packung oder den Beilagen konnte ich eine Kopie der GPL Lizenz finden. Es gibt keine Hinweise auf wiederverwendeten Code aus unter der GPL lizenzierten Projekten. Aus diesem Grund habe ich den von Amazon genannten Hersteller „Sawful“ und Amazon darüber in Kenntnis gesetzt. Bisher wurde nur meine Rezension auf Amazon wieder gelöscht: Sie enthalte unzulässige URLs. Ich warte auf eine Antwort. #cat /proc/version Linux version 2.6.21 (root@mailzxh-desktop) (gcc version 3.4.2) #655 Wed Nov 21 22:21:46 CST 2012
      # busybox BusyBox v1.12.1 (2012-11-21 22:17:05 CST) multi-call binaryCopyright (C) 1998-2008 Erik Andersen, Rob Landley, Denys Vlasenkoand others. Licensed under GPLv2.See source distribution for full notice.
    2. Zur Hardware:
      1. SoC: Realtek MIPS24K with rt5350 WIFI. # cat /proc/cpuinfo system type : Ralink SoC processor : 0
        cpu model : MIPS 24K V4.12 BogoMIPS : 239.10
        wait instruction : yes
        microsecond timers : yes
        tlb_entries : 32
        extra interrupt vector : yes
        hardware watchpoint : yes
        ASEs implemented : mips16 dsp
        VCED exceptions : not available
        VCEI exceptions : not available

        # ls /proc/rt5350 gmac skb_free tx_ring rx_ring cp0 esw_cnt
      2. RAM: 32MB # cat /proc/meminfo | grep MemTotalMemTotal: 29336 kB
      3. Flash
        1. Konfiguration/Partitionierung # cat /proc/mtd dev: size erasesize name
          mtd0: 00800000 00010000 "ALL"
          mtd1: 00030000 00010000 "Bootloader" mtd2: 00010000 00010000 "Config"
          mtd3: 00010000 00010000 "Factory"
          mtd4: 00100000 00010000 "Kernel"
          mtd5: 00330000 00010000 "RootFS"
          mtd6: 00300000 00010000 "sys"
          mtd7: 00080000 00010000 "param"

          Ok, ein anscheinend acht MB großer Flash mit sieben Partitionen. Die Firmware kann man mittels TFTP-Client aus Busybox’s wegsichern. Dazu setzt man einen TFTP-Server auf einer Maschine innerhalb der eigenen Broadcast Domain auf. Mit „tftp -l [lokale Datei] -r [entfernt gelegene Datei ] -p [IP Adresse des Servers]“ kann man die Inhalte von /proc/mtdblock* auf den Server kopieren.
        2. Partitionen sind wie folgt eingebunden:
          # mount rootfs on / type rootfs (rw) /dev/root on / type squashfs (ro) proc on /proc type proc (rw) none on /var type ramfs (rw) none on /etc type ramfs (rw) none on /tmp type ramfs (rw) none on /media type ramfs (rw) none on /sys type sysfs (rw) none on /dev/pts type devpts (rw) /dev/mtdblock6 on /system type jffs2 (rw) /dev/mtdblock7 on /param type jffs2 (rw
      4. WIFI iwconfig zeigt einen ra0 RTWIFI SoftAP und einige   wds-Interfaces. wds0 hat die SSID mit GBELL… – es scheint, dass der GBELL-AP also weiterhin konfiguriert ist, aber ich konnte nun nicht mehr damit verbinden. Vermutlich also nicht bloß eine versteckte SSID, sondern mit geänderten Einstellungen. apcli0 zeigt die Klingel als Klient am heimischen AP. Ich konnte bisher keine Einstellung zur Regulationsdomäne (Ländereinstellung) finden. Wahrscheinlich hat sie die Weltdomain eingestellt, in der Kanal 12 und 13 (und 14) nicht funktionieren.
      5. Aktive Netzwerkdienste # netstat -aWp Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 133/encoder tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 28/telnetd tcp 0 0 0.0.0.0:8600 0.0.0.0:* LISTEN 31/go-daemon tcp 0 213 192.168.246.1:23 192.168.246.2:32798 ESTABLISHED 28/telnetd udp 0 0 127.0.0.1:8832 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:3073 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:3074 0.0.0.0:* 133/encoder
      6. udp 0 0 0.0.0.0:3075 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:6666 0.0.0.0:* 133/encoder
      7. udp 0 0 0.0.0.0:8600 0.0.0.0:* 31/go-daemon udp 0 0 0.0.0.0:9632 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:9123 0.0.0.0:* 31/go-daemon udp 0 0 127.0.0.1:9124 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:67 0.0.0.0:* 102/udhcpd udp 0 0 0.0.0.0:32108 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:8813 0.0.0.0:* 133/encoder udp 0 0 0.0.0.0:15733 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:8822 0.0.0.0:* 133/encoder udp 0 0 127.0.0.1:8831 0.0.0.0:* 30/cmd_threadActive UNIX domain sockets (servers and established)Proto RefCnt Flags Type State I-Node PID/Program name Pat
      8. Binäre Dateiorte: /system/system/bin: # ls -la /system/system/bin-rwxr-xr-x 1 0 0 156768 go-daemon-rwxr-xr-x 1 0 0 8260 cmd_thread-rwxr-xr-x 1 0 0 877540 encoder drwxrwxrwx 5 0 0 0 ..drwxrwxrwx 2 0 0 0 .
      9. Kamera: Ein Schnappschuss von der Kamera ist mit den selbstgewählten Benutzerdaten zu bekommen – hier im Beispiel mit der Defaultadresse des WLANs im Einrichtungsmodus: http://192.168.246.1:81/snapshot.cgi Es sollte eigentlich auch -so flüstert es mir der Befehl „strings encoder“ auf dem lokalen PC, eine videostream.cgi geben, die mjpg-Streaming macht. Sie funktioniert aber nicht. Warum, das weiß ich noch nicht

Sicherheitslücken

  1. Telnet mit Trivialpasswort, über das man Root-Berechtigungen erhält.
  2. WDS ist möglicher weise für WPA-KRACK anfällig, was noch getestet werden muss. Wenn das Programm go-service Programmcode des alten hostapd beinhaltet, dann ist es wahrscheinlich. Abwehrmaßnahmen gegen KRACK, also Key Replay Attacken sind nicht nur einseitig am Access Point vorzunehmen.  Es ist anzunehmen, dass viele  Smart Home Gadgets auch weiterhin kein Update erhalten haben.

Zusammenfassung.

  1. Qualität: Das ist einer der billigsten WIFI-Videotürklingeln, die ich finden konnte. Während die Haupteinheit auf den ersten Blick einen überraschend grundsoliden Eindruck in Relation zum Preis erweckt, ist das Zubehör von entsprechend schlechter Qualität. Etwa die Schrauben, die nicht sauber gefräst waren und der LAN-Anschluss. Die Bedienungsanleitung ist überaltert und stimmt so nicht mehr.
  2. Lizenzfragen. Verstörend wirkt auf mich, dass der Hersteller es verabsäumt hat, die paar Cent, die eine GPL-konforme Erklärung kosten, zumindest für Linux und Busybox zu investieren. Wir werden ja sehen, wie der Hersteller und Amazon mit der mutmaßlichen Lizenzverletzung umgehend werden. Für beide gilt die Unschuldsvermutung.
  3. Sicherheit: Aus sicherheitstechnischer Sicht sind Root-Zugänge heute, wie auch vor 15 Jahren und länger eigentlich ein absolutes No-Go. Ich habe in einem Artikel von Pentest Partners aber ähnliches gefunden. (Danke!) Die Autoren haben damals eine Maginon IPC-20C analysiert, die offenbar dasselbe SDK/Framework verwendet – wer Interesse hat, sei auf die anregende Lektüre verwiesen: [Externer Link See: Hacking the IP camera (part 1)].
  4. Allgemein Die Türklingel könnte soviel bequemer zu bedienen sein, wenn es eine durchgehende deutsche Übersetzung in der Gogo-Link Door Phone App gäbe. Ich bin etwa in einer Fehlermeldung auch auf chinesische Schriftzeichen gestoßen. Dass die Kamera kein vollwertiges Webinterface bietet, sodass man lokal auch vom PC und ohne die APP auskäme, ist störend. Auch, dass die vom Hersteller empfohlene App, bereits einmal aus dem Goolge Play Store verschwunden ist, aber für’s Konfigurieren zwingend erforderlich wäre, verunsichert mich. Aus Entwicklersicht ist das Gerät dennoch attraktiv, etwa, wenn man eigene  Firmware schreiben wollte oder, wenn man Alternativen zum vermeintlichen Asterisk-Dienst, der in Wahrheit ein proprietärer Dienst für die Ansteuerung sein dürfte, entwickeln wollte. Es wäre spannend OpenIPCam auf dieses Gerät zu übertragen.

[Werbung: Nach einem so langen Text hast Du Dir etwas verdient. Wie wäre es mit etwas Musik von Amazon Music Unlimited?]