der sog. jail break, also das Ausbrechen aus der ?gesicherten? Umgebung, ist geglückt. Folgend ein paar Hintergrundinfos (obwohl ich manchmal das Gefühl habe, dass meine Infos mehr verwirren und ich besser nur ?Passt? sagen sollte
Wie bereits erwähnt, läuft auf dem SRP das Betriebssystem Linux und das was wir auf dem Fernseher sehen, ist ?nur? eine Applikation. TAPs wiederum werden von dieser Applikation (derzeit heißt sie ?pvr?), ähnlich DLLs unter Windows, geladen und ausgeführt. Damit diese TAPs aber keine pösen Dinge anstellen können, wird vor dem Aufruf der TAP_Main() eine Tabelle im TAP geprüft, auf welche Funktionen das TAP zurückgreifen möchte. Hat man nun einen Systemaufruf in das TAP eingebaut, gibt der SRP die Meldung "TAP konnte nicht gestartet warden." (inklusive Tippfehler
Folgend die Liste der pösen Befehle:
close, closedir, create, fopen, freopen, fchdir, fchmod, fchown, fclose, fdopen, fflush, fileno, chdir, chmod, chown, calloc, dlopen, dlclose, dlerror, dlsym, dupioctl, environ, execl, execv, execle, execve, execlp, execvp, fork, fprintf, fread, fwrite, free, getcwd, getenv, getgid, getpid, getgrp, getuid, gets, kill, killpg, lchown, listen, lstat, mkdir, mkfifo, mknod, mkstemp, mktemp, mktime, mlockall, mlock, mmap, malloc, open, opendir, pipe, poll, popen, pread, pselect, readdir, readlink, read, realloc, recvfrom, recvmsg, recv, remove, rename, rewinddir, rewind, rmdir, select, socket, symlink, tmpfile, tmpnam, truncate, unlink, utime, vfork und write.
Für Insider: es werden alle GLOBAL FUNC-Einträge der .symtab-Section abgegrast.
Es gab zwar mehrere Angriffsszenarien, aber nachdem ich mich etwas intensiver mit dem ELF-Dateiformat und der Prüfroutine der Firmware auseinandergesetzt habe (ca. 477 Minuten), blieb letztendlich eine relativ einfach Version über, die auch noch den Vorteil hat, dass die Firmware nicht gepatcht werden muss. Um an dem Wärter vorbei zu schlüpfen und aus dem Gefängnis ausbrechen zu können, wird einfach die .symtab-Tabelle des kompilierten TAPs manipuliert. Auch hier gäbe es mehrere Ansätze, ich habe mich dafür entschieden, alle indizierten Wörter durch eine Version in Großbuchstaben zu ersetzen. Da die Prüfroutine case-sensitive arbeitet, werden sie von dieser nicht mehr gefunden.
Und warum funktioniert dieser Hack? Weil die .strtab-Tabelle für die Ausführung des TAPs irrelevant ist. Sie wird vom Betriebssystem nicht einmal in den Speicher geladen.
Jetzt fehlt nur noch das Tool, das diese Manipulation automatisiert. Weiterforschen dürfen jetzt die Besitzer eines SRP, denn ohne Gerät ist mir das zu langweilig.
Danke noch an den Mann mit dem schnellen Rollstuhl.
MfG. Alex







