Os rootkits do UEFI são vistos como ferramentas extremamente perigosas para a implementação de ciberataques, pois são difíceis de detectar e capazes de sobreviver a medidas de segurança, como a reinstalação do sistema operacional e até mesmo a substituição de um disco rígido. Alguns rootkits do UEFI foram apresentados como provas de conceito; alguns são conhecidos por estarem à disposição de (pelo menos alguns) órgãos governamentais. No entanto, nenhum rootkit do UEFI foi detectado alguma vez em uso até este momento, quando descobrimos uma campanha do grupo Sednit que implantou com sucesso um módulo UEFI malicioso no sistema de uma vítima.
A descoberta do primeiro rootkit do UEFI em uso é muito importante por dois motivos.
Primeiro, mostra que os rootkits do UEFI são uma ameaça real e não apenas formam parte dos assuntos atrativos que são utilizados na hora de dar uma conferência.
E segundo, serve como um aviso, especialmente para todos aqueles que podem estar na mira do Sednit. Este grupo, também conhecido como APT28, STRONTIUM, Sofacy e Fancy Bear, pode ser ainda mais perigoso do que se pensava anteriormente.
A nossa análise da campanha do Sednit que utiliza o rootkit do UEFI foi apresentada no dia 27 de setembro na edição 2018 da conferência Microsoft BlueHat e é descrita em detalhes no nosso whitepaper “LoJax: First UEFI rootkit found in the wild, courtesy of the Sednit group”. Neste post, resumimos nossas principais descobertas.
O grupo Sednit opera desde pelo menos 2004, e tem sido manchete com frequência nos últimos anos: acredita-se que esteja por trás de grandes ataques a alvos de alto perfil. Por exemplo, o Departamento de Justiça dos EUA acusou o grupo de ser o responsável pelo ataque ao Comitê Nacional Democrata (DNC) antes das eleições de 2016. O grupo também está supostamente por trás do ataque à rede de TV global TV5Monde, do vazamento de e-mails da Agência Mundial Antidoping (WADA) e de muitos outros. Este grupo tem um conjunto diversificado de ferramentas de malware em seu arsenal, vários exemplos dos quais documentamos anteriormente em nosso white paper sobre o Sednit que publicamos em 2016.
Nossa pesquisa determinou que esse ator malicioso teve êxito, pelo menos uma vez, ao escrever um módulo UEFI malicioso na memória flash SPI do sistema. Este módulo é capaz de droppear e executar malware no disco durante o processo de “booteo”. Esse método de persistência é particularmente invasivo, pois não só sobrevive a uma reinstalação do sistema operacional, mas também a uma substituição do disco rígido. Além disso, a limpeza do firmware do sistema UEFI significa reativá-lo, uma operação que não é simples de realizar e, certamente, não é feita por um usuário comum e corrente.
Nossa pesquisa mostrou que os operadores do Sednit utilizaram diferentes componentes do malware LoJax para atingir algumas organizações governamentais nos Bálcãs, bem como na Europa Central e do Leste.
LoJack torna-se LoJax
Em maio de 2018, um post no blog Arbor Networks descreveu várias amostras trojanizadas do instalador do programa Absolute LoJack rpcnetp.exe. Essas amostras maliciosas se comunicavam com um servidor C&C malicioso em vez do servidor legítimo do programa Absolute, porque suas definições de configuração hardcodeadas terem sido alteradas. Alguns dos domínios encontrados nas amostras do LoJax foram vistos antes: foram usadas no final de 2017 como domínios C&C para o backdoor de primeiro estágio do Sednit, o SedUploader. Devido ao uso malicioso do instalador do LoJack nesta campanha foi que denominamos esse malware de LoJax.
O LoJack é um software anti-roubo. Versões anteriores deste programa eram conhecidas como Computrace. Como seu nome anterior implica, uma vez que o serviço foi ativado, o computador ligaria de volta ao seu servidor C&C e seu proprietário seria notificado de sua localização se ele tivesse desaparecido ou sido roubado. O Computrace atraiu a atenção da comunidade de segurança, principalmente devido ao seu método incomum de persistência. Como a intenção deste software é proteger um sistema contra roubo, é importante que ele resista à reinstalação do sistema operacional ou à substituição do disco rígido. Assim, é implementado como um módulo UEFI/BIOS, capaz de sobreviver a tais eventos. Esta solução vem pré-instalada no firmware de uma grande quantidade de fabricantes de laptops, esperando para serem ativados por seus proprietários.
Ao pesquisar sobre o LoJax, encontramos vários artefatos interessantes que nos levaram a acreditar que esses agentes maliciosos poderiam ter tentado imitar o método de persistência do Computrace.
Parcheando a memória flash SPI com malware
Nos sistemas que foram alvo da campanha LoJax, encontramos várias ferramentas que podem acessar e pachear configurações de UEFI/BIOS. Todos usaram um driver de kernel, RwDrv.sys, para acessar as configurações de UEFI/BIOS. Este driver de kernel é incluído com o RWEverything, um utilitário gratuito disponível na web que pode ser usado para ler informações sobre quase todas as configurações de baixo nível do computador, incluindo PCI Express, memória, etc. Como este driver de kernel pertence a um software legítimo, ele é assinado com um certificado de assinatura de código válido.
Três tipos diferentes de ferramenta foram encontrados ao lado dos instaladores do LoJax. A primeira é uma ferramenta que lança informações sobre configurações de sistemas de baixo nível em um arquivo de texto. Já que ignorar a proteção de uma plataforma contra atualizações de firmware ilegítimas é altamente dependente da plataforma, a coleta de informações sobre a plataforma de um sistema é crucial. O objetivo da segunda ferramenta era salvar uma imagem do firmware do sistema em um arquivo lendo o conteúdo da memória flash SPI onde o UEFI/BIOS está localizado. O propósito da terceira ferramenta era adicionar um módulo UEFI malicioso à imagem do firmware e gravá-lo de volta na memória flash SPI, instalando efetivamente o rootkit do UEFI no sistema. Essa ferramenta de correção usa técnicas diferentes para se aproveitar de plataformas mal configuradas ou para ignorar as proteções de gravação de memória flash SPI da plataforma. Como ilustrado na figura a seguir, se a plataforma permitir operações de gravação na memória flash SPI, ela será executada e gravada nela. Caso contrário, ele realmente implementará um exploit contra uma vulnerabilidade conhecida.
O rootkit do UEFI adicionado à imagem do firmware tem uma única função: droppear o userland malware na partição do sistema operacional Windows e certificar-se de que ele seja executado na inicialização.
Como estar protegido?
O rootkit do UEFI do Sednit não está devidamente assinado, portanto, o primeiro mecanismo de segurança que poderia ter bloqueado esse ataque é o Secure Boot. Quando o Secure Boot está habilitado, todo e qualquer componente de firmware carregado pelo firmware precisa ser devidamente assinado, garantindo assim a integridade do firmware. Nós sugerimos que você o habilite. Essa é a defesa básica contra ataques direcionados ao firmware UEFI e pode ser desativada no boot time através das opções de configurações de seu sistema UEFI.
A atualização do firmware de sistemas não deve ser algo trivial para um ator malicioso alcançar. Existem diferentes proteções fornecidas pela plataforma para evitar gravações não autorizadas na memória flash SPI do sistema. A ferramenta descrita acima é capaz de atualizar o firmware do sistema somente se as proteções de memória flash SPI estiverem vulneráveis ou mal configuradas. Portanto, você deve se certificar de que está usando o último UEFI/BIOS disponível para a sua placa-mãe. Além disso, como a vulnerabilidade explorada afeta apenas os chipsets mais antigos, certifique-se de que os sistemas críticos possuam chipsets modernos com o Platform Controller Hub (apresentado com a Série 5 de chipsets da Intel em 2008).
Infelizmente, a atualização do firmware de um sistema não é uma tarefa simples. Assim, a segurança do firmware está principalmente nas mãos dos fornecedores de UEFI/BIOS. Os mecanismos de segurança fornecidos pela plataforma precisam ser configurados corretamente pelo firmware do sistema para protegê-lo. O firmware deve ser construído do zero com a segurança em mente. Felizmente, cada vez mais pesquisadores de segurança estão olhando para a segurança do firmware, contribuindo para melhorar essa área e aumentar a conscientização entre os fornecedores de UEFI/BIOS.
A recuperação de um firmware de UEFI comprometido é um problema difícil de resolver. Não há maneiras fáceis de remover automaticamente essa ameaça de um sistema. No caso descrito acima: para remover o rootkit, a memória flash SPI precisa ser atualizada com uma imagem de firmware limpa e específica para a placa-mãe. Esta é uma operação delicada que deve ser executada manualmente. Definitivamente não é um procedimento com o qual a maioria dos donos de computadores estejam familiarizados. A única alternativa ao reinstalar do UEFI/BIOS é substituir a placa-mãe do sistema comprometido.
A relação com o grupo Sednit
Como mencionado acima, alguns dos intaladores do servidore C&C LoJax foram utilizados no passado pelo SedUploader, um backdoor de primeiro estágio usado rotineiramente pelos operadores do Sednit. Além disso, em casos de comprometimento do LoJax, traços de outras ferramentas do Sednit nunca estiveram distantes. Na verdade, os sistemas visados pelo LoJax geralmente mostravam esses três exemplos de malware do Sednit:
- SedUploader, um backdoor de primeiro estágio.
- XAgent, backdoor principal do Sednit.
- Xtunnel, uma ferramenta de proxy de rede que pode retransmitir qualquer tipo de tráfego de rede entre um servidor C&C na Internet e um computador endpoint dentro de uma rede local.
Esses fatos nos permitem atribuir LoJax, com alta confiança, ao grupo Sednit.
Conclusão
Ao longo dos anos em que passamos a acompanhar o grupo Sednit, lançamos muitos relatórios sobre suas atividades, desde o uso de zero-day a malwares personalizados que foram desenvolvidos pelo grupo, como o Zebrocy. No entanto, o componente do rootkit do UEFI descrito acima está em uma liga própria.
A campanha do LoJax mostra que alvos de ataque de alto valor são os principais candidatos para o seu desenvolvimento. Neste sentido, tais alvos devem sempre estar atentos a possíveis sinais de comprometimento. Além disso, uma coisa que esta pesquisa nos ensinou é que sempre é importante cavar o mais profundo possível.
Uma lista completa de indicadores de comprometimento (IOCs) e amostras pode ser encontrada no GitHub.
Para uma análise detalhada do backdoor, confira o nosso whitepaper (em inglês) LoJax: First UEFI rootkit found in the wild, courtesy of the Sednit group.