Invasão do iLO – Proteja seus servidores

Martin Hron 10 jul 2018

Os ataques de ransomware são tão comuns, quanto fáceis de serem produzidos. E todos nós precisamos agir para impedi-los.

Esta é uma chamada à ação! Veja meu experimento abaixo e concorde com minha afirmação de que, como uma cultura digital global, precisamos cuidar mais da segurança. Começando agora.

Você talvez notou, há algumas semanas, que uma campanha de ransomware atingiu um sistema de gerenciamento remoto chamado iLO da HP. Talvez você tenha impressão de ter ouvido falar muito sobre ataques de ransomware atualmente, então, por que se preocupar com mais um?

Bom, eu queria usá-lo como um grande exemplo do problema que temos com a segurança atualmente. O iLO possibilita executar atividades remotamente em um servidor da HP. Se cibercriminosos invadirem o sistema, eles podem acessar servidores, bloquear dados e pedir um resgate. Essa é um história muito comum: servidores conectados à internet com recurso de gerenciamento remoto têm uma vulnerabilidade que permite que até um hacker amador possa acessá-los. Nenhuma novidade.

Mas, sou o tipo de pessoa que gosta de colocar a mão na massa sempre que encontro uma vulnerabilidade. Para manter meus hábitos, eu fiz uma experiência. E se eu fosse o hacker amador? Seria fácil para EU invadir o iLO? Venha comigo nessa jornada...

Etapa 1: Exploração do campo minado

Primeiro, eu preciso encontrar os dispositivos com o serviço iLO conectados à internet. Eu usei o Shodan.io (uma ferramenta útil para os hackers do bem) para procurar por todos os dispositivos iLO e recebi esses resultados:

hp-ilo-ransomware-hack-1

Depois de filtrar esses dados, encontrei 11.000 endereços IP de servidor que executavam o iLO. Tudo certo para a diversão.

Etapa 2: Localização de um ponto de entrada

Como hacker amador, estou agora passando por todas as vulnerabilidade conhecidas. Sim, há várias vulnerabilidades relatadas pelos serviços de gerenciamento do iLO. Depois de algum tempo, encontrei uma chamada “CVE-2017-12542”. Escolhi porque tem uma “pontuação” alta (10), que indica que é a vulnerabilidade mais grave que pode existir.  

O “2017” no nome do arquivo me informa o ano em que o ID da vulnerabilidade foi alocado. Esta específica foi publicada em 15 de fevereiro desse ano. Essas são outras informações:

hp-ilo-ransomware-hack-2

Etapa 3: Tempo de exploração

Qualquer pessoa pode escrever um exploit ou encontrar um que possa ser usado. Como hacker amador e novato, eu começo a procurar alguns scripts prontos para usar. Em menos de 10 segundos, vejam isso, encontrei uma implementação do Python.

Essa vulnerabilidade funciona assim: ao emitir uma solicitação HTTP, posso obter uma lista dos usuários do sistema de gerenciamento do iLO. Nenhuma autenticação é necessária. É tão fácil que você quase pode fazer isso usando seu navegador. Você só precisa alterar um campo no cabeçalho de solicitação para que o servidor pense que você já está conectado. Eu fiz isso e fui recepcionado pelos seguintes dados.

hp-ilo-ransomware-hack-3

Esse é apenas um despejo parcial de dados, mas você pode ver o campo Password (senha), seguido pela palavra “null”. Acontece que a senha não é de fato “null”, mas essa palavra parece porque temos a restrição de não ver a senha real. Provavelmente, ela é armazenada corretamente através de hashing. Então parece que é um beco sem saída. Não existe acesso fácil.

Etapa 4: Um caminho alternativo

OK, então vou tentar outro caminho. Se não posso entrar como usuário existente, por que não tentar como novo usuário? Como o servidor me deu uma lista tão detalhada de usuários sem nenhuma autenticação, talvez possa criar uma conta para mim.

Então, eu crio essa solicitação para o servidor:

hp-ilo-ransomware-hack-4

Por diversão, escolho UserName=’hyperadmin’ e Password=’12345.’ A resposta foi engraçada:

hp-ilo-ransomware-hack-5

Você deve ter percebido que a maior preocupação do servidor aqui não era com o fato de eu estar criando um novo usuário sem autorização, mas que a senha era muito curta. Ok, novamente, dessa vez com Password=’12345678.’ O resultado é:

hp-ilo-ransomware-hack-6

Entrei!

Etapa 5: Tentativa de login

É hora de ver se isso funciona. Estou tentando entrar usando as credenciais que acabei de criar:

hp-ilo-ransomware-hack-7

Aí está:

hp-ilo-ransomware-hack-8

Etapa 6: Tomada de controle total do servidor

Como pode ver, agora tenho controle total do servidor. Posso até mesmo montar minha própria imagem .iso com instalação e inicialização a partir dela, o que é exatamente o que o ransomware mencionado no início do artigo fez.

O que isso significa?

Faz quase três meses que essa vulnerabilidade foi publicada e ela ainda é uma vulnerabilidade CRÍTICA. Alguém se importa?

Considerando como foi fácil se infiltrar no servidor vulnerável, decidi verificar para ver quantos dos 11.000 servidores em todo o mundo ainda eram vulneráveis. A verdade surpreendente é que 2.500 deles ainda estão disponíveis publicamente e são vulneráveis a esse tipo de ameaça. Esse número é alto ou baixo? Eu diria que não importa. O que importa aqui é que por três meses ninguém fez nada para resolver o problema. Correções ESTÃO disponíveis, por isso, não podemos culpar o fornecedor.

O que nos traz ao ponto que deve ser destacado aqui: A segurança dos sistemas de TI são uma responsabilidade conjunta de todos nós.

Há muitas lições:


  • Se você estiver usando ou administrando algum servidor, roteador ou qualquer dispositivo disponível publicamente na internet, é sua responsabilidade corrigi-los regularmente. Não conte com ninguém para isso. Você é responsável pelos dados que são armazenados nele.

  • Evite expor qualquer serviço de gerenciamento à internet diretamente, sempre use e exija gerenciamento através de acesso VPN.

  • Ocasionalmente, considere usar serviços como shodan.io ou censys.io para verificar seus IPs públicos. Esses serviços estão aqui para serem usados para fazer auditorias e testes de invasão. É sempre melhor ser o hacker amador tentando atacar seu próprio dispositivo que descobrir que um cibercriminosos conseguiu invadir primeiro.
--> -->