BlackHat Europe 2013 Hacking (Polycom) Video Conferencing Systems

Moritz Jodeit, ein Security Consultant der n.runs AG, hat sich mit der Sicherheit von Video Konferenz Systemen beschäftigt und seine Ergebnisse auf der BlackHat vorgestellt. Die bereits bekannten bzw. weit verbreiteten Konfigurationsfehler zur automatischen Anrufannahme solcher Systeme waren dabei nicht Gegenstand seiner Arbeit wenngleich jedem der ein solches System betreibt zu empfehlen ist, diese Funktion zu deaktivieren oder mindestens einzuschränken.

Aufgrund der Kosten solcher Systeme (~20 T€) wurden die Tests derzeit nur mit einem Polycom HDX 7000 HD durchgeführt. Weitere Untersuchungen anderer großer Hersteller wie z. B. Cisco werden ggf. noch folgen. Das erste Ziel der Arbeit war es auf dem System Root-Rechte zu erlangen um gezielt nach weiteren möglichen Schwachstellen suchen zu können:

Wie die meisten Produkte kann auch dieses System über ein Webinterface mit Firmware Updates versorgt werden. Die Analyse dieses Files zeigte dabei, dass das ZIP Archiv eine PUP Datei enthält. Bei der Installation der Firmware wird dabei, wie sich das gehört, die Datei verifiziert. Leider hat man sich jedoch für einen HMAC entschieden, was bedeutet, dass auf dem Gerät selbst auch irgendwo ein privater Key zu finden sein müsste. In diesem speziellen Fall war dies sogar noch einfacher, da der Key direkt in der Update Datei (puputils.ppc) zu finden war. Der Key selbst lässt auf ein gesundes Selbstvertrauen der Entwickler schließen: „weAREtheCAMPIONS“. Die Entwickler wollten es sich und damit auch Angreifern jedoch noch einfacher machen. Das Tool pubutils.ppc wird zur Verifizierung von Update Paketen verwendet. Gibt man diesem Tool nun ein Packet mit einer falschen Prüfziffer vor, so ist es so freundlich und gibt nicht nur eine Fehlermeldung aus sondern es gibt auch gleich den Wert mit aus, den es erwarten würde. Clever! J

image_thumb5-8251172

Damit konnte man jedoch noch kein eigenes Update Paket auf das System laden. Es gibt noch eine zweite Prüfroutine welche mittels einer Public Key DSA Signatur die Integrität des gesamten Files prüft. Dieser Mechanismus erschien auf den ersten Blick recht starkt – daher erfolgte keine weitere Untersuchung dieses Vektors. Dies war jedoch auch nicht weiter notwendig. Die bereits erhaltenen Einblicke in das System zeigten, dass es einen Entwickler Modus gibt welcher auch in der produktiven Version der Firmware noch vorhanden ist. Aktiviert wird dieser Modus recht einfach durch die Übergabe von Variablen wärend des Bootens. Dies wiederum erreicht man über die Flash Variablen „othbootargs“ (z. B. mit command injection über den Dateinamen der Firmware). Nach dem aktivieren des Entwicklermodus wird u. a. ein telnet server auf port 23 gestartet welcher den root Zugang ohne Passwort erlaubt. BINGO. Eine kurze Analyse der Umgebung zeigte auch, dass z. B. der Webserver der für des Webinterface verwendet wird unter root läuft und neben der bereits erwähnten command injection noch unzählige weitere Schwachstellen enthält ;-).

Root-Rechte auf dem System zu erlangen war somit offensichtlich recht einfach. Allerdings wollte Moritz Jodeit einen Zugang zu dem System finden, der einfacher aus der Entfernung ausgenutzt werden kann und zudem nicht so einfach zu patchen ist. Sein nächstes Ziel war somit das core-business der Geräte – die Übertragung von Sprach / Video Daten (H.323 und SIP). Auch der hierfür verwendete Service läuft unter root und bietet somit einen perfekten Ansatzpunkt für weitere Untersuchungen. Schon der erste Blick war dabei sehr vielversprechend:

  • Mehr als 800 xrefs zu strcpy()
  • Mehr als 1400 xrefs zu sprintf()
  • Keinerlei Schutz gegen Exploits im Code
  • Einfaches reverse engineering da die Symbols vorhanden sind

Für eine der gefundenen Schwachstellen (Format String Bug) beim Anrufaufbau mit Hilfe von H.323 hat Moritz Jodeit auch einen Exploit entwickelt welcher nach seinen Ausführungen wie folgt funktioniert:

  • Turn bug into write4 primitive (single SETUP pkt)
  • Use write4 primitive to store shellcode
  • Trigger again to overwrite function pointer

Für seinen Proof of Concept Exploit hat er eine payload geschrieben welche die volle Kontrolle über die Kamera, das Mikrofone, die Lautsprecher und das Display übernimmt. Im vorgeführten Beispiel wurde von den Lautsprechern Musik abgespielt und die Kamera bewegte sich passend dazu wie ein Scheinwerfer hin und her…

Wie Moritz betonte ist der Hersteller Polycom ein sehr gutes Beispiel für ein Unternehmen, welches offen mit entsprechenden Schwachstellen umgeht und konstruktiv daran arbeitet diese zu beseitigen. Es gab wohl sehr regen Kontakt und ein sehr weitgehenden Informationsaustausch zu dem Thema. Dies resultierte auch in einem Firmware Update welches am Tag vor der BlackHat veröffentlicht wurde. Allein Besitzern entsprechender Geräte sei als angeraten dieses Update zeitnah zu installieren und auch in Zukunft ein Auge auf die Geräte zu werfen. Die aufgezeigten doch sehr grundliegenden Schwächen lassen vermuten, dass noch sehr viel Arbeit auf Polycom zukommt um das System sicher zu machen.