Bootkitty: o primeiro bootkit UEFI para Linux

bootkitty-uefi-linux-backdoor

Alguns dias atrás ESET anunciou a notícia da primeira prova de conceito de bootkit UEFI para Linux, nomeado como «Bootkitty«, este bootkit faz parte de um projeto criado por estudantes de segurança cibernética do programa de treinamento Best of the Best (BoB) da Coreia.

Bootkitty, como tal, É uma ameaça avançada que é instalada como um substituto para o bootloader GRUB em sistemas Linux, usando o ambiente UEFI para manter o controle do sistema secretamente. Este malware, que é o primeiro bootkit UEFI projetado para Linux, carrega componentes maliciosos no kernel para garantir a persistência.

Operação Bootkitty

  1. Substituindo o GRUB:
    O primeiro passo do bootkit é substituir o carregador de boot padrão, grubx64.efi, na partição do sistema EFI, permitindo iniciar a carga maliciosa durante a inicialização do sistema.
  2. Alteração GRUB na memória:
    Depois que o bootkit é ativado, ele carrega o bootloader GRUB2 legítimo na memória, mas introduz modificações para desabilitar a verificação de integridade em componentes posteriores. Ele também adiciona um driver que manipula o processo de carregamento do kernel.
  3. Modificações do kernel:
    • O bootkit modifica as funções do kernel carregadas na memória, desativando a validação de assinatura digital nos módulos do kernel.
    • Depois disso, a linha de inicialização do kernel muda, substituindo /init por um comando malicioso que usa LD_PRELOAD para carregar a biblioteca maliciosa injector.so.
  • Componentes maliciosos:
    • Injetor.so:
      Esta é uma biblioteca responsável por interceptar chamadas de sistema, como SELinux e init_module, permitindo o carregamento de módulos maliciosos do kernel.
    • Conta-gotas.ko:
      Um módulo do kernel que cria e executa o arquivo binário /opt/observer. Ele também se esconde na lista de módulos do kernel e manipula funções do sistema para evitar sua presença ou a detecção de determinados arquivos e tráfego de rede.
    • Observador e carregador de rootkit:
      O executável /opt/observer carrega outro módulo malicioso (rootkit_loader.ko), que por sua vez ativa um rootkit completo no sistema comprometido.

Como tal, Bootkitty é um bootkit funcional cujo objetivo é:

» Conscientizar a comunidade de segurança sobre riscos potenciais e incentivar medidas proativas para prevenir ameaças semelhantes. “Infelizmente, poucas amostras de bootkit foram lançadas antes da apresentação planejada na conferência.”

Método de ataque

O ataque é executado por inserindo uma imagem BMP projetada especificamente na partição ESP (EFI System Partition). Esta imagem apresentado como o logotipo do fabricante para firmware UEFI. Devido a vulnerabilidades nas bibliotecas usadas pelo firmware para processar imagens, como buffer overflows, a imagem maliciosa aciona a execução de código no contexto do firmware UEFI. Embora a vulnerabilidade LogoFAIL tenha sido descoberta há um ano e tenha sido corrigida em atualizações recentes de firmware UEFI, muitos dispositivos ainda operam com versões desatualizadas e vulneráveis, deixando-os expostos a esse tipo de exploração.  bootkitty - arte ASCII incorporada no bootkit

Bootkitty Possui limitações importantes em sua implementação, uma vez que as modificações feitas nas funções de memória do kernel foram baseadas em deslocamentos padrão, sem verificar sua validade em relação à versão específica do kernel carregada.

La A eficácia do bootkit é limitada apenas às versões do kernel e GRUB incluídas em certas distribuições do Ubuntu., causando falhas de inicialização em outros sistemas. Além disso, o bootkit usou um certificado autoassinado para validar seu bootloader criado (grubx64.efi), tornando-o ineficaz em sistemas com UEFI Secure Boot habilitado, a menos que o certificado do invasor tenha sido incluído manualmente na lista de firmware de certificados confiáveis ​​do invasor.

Pesquisadores da Binarly Research observaram que imagens BMP vinculadas à vulnerabilidade LogoFAIL, uma brecha no UEFI que permite a execução arbitrária de código no nível do firmware e ignorando as restrições do UEFI Secure Boot, foram encontradas entre os componentes do Bootkitty. Neste caso, o LogoFAIL foi utilizado para inserir automaticamente o certificado autoassinado do invasor na lista de certificados confiáveis, permitindo que o bootkit seja executado mesmo em sistemas com Secure Boot ativo.

finalmente se você está interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir