“Uma agulha no palheiro”: Encontrar componentes UEFI indesejados entre milhões de amostras

Especialistas da ESET descrevem como treinaram um modelo de machine learning para reconhecer componentes UEFI indesejados numa avalanche de milhões de amostras inofensivas.

A segurança da UEFI (Unified Extensible Firmware Interface) tem sido um tópico bastante importante nos últimos anos, mas, devido a várias limitações, poucos malwares baseados em UEFI foram encontrados anteriormente. Depois de descobrir o Lojax, o primeiro rootkit UEFI usado em uma campanha, começamos a construir um sistema que nos permite explorar o vasto cenário UEFI de forma eficiente, para detetar com segurança ameaças UEFI emergentes.

Usando a telemetria conseguida através do scanner UEFI da ESET como ponto de partida, criamos uma pipeline de processamento personalizado para executáveis UEFI que aproveita o machine learning para detetar comportamentos estranhos entre amostras recebidas. Este sistema, para além de demonstrar os seus fortes recursos para identificar executáveis UEFI suspeitos, oferece monitorização em tempo real do cenário UEFI e reduz a carga de trabalho dos nossos analistas em até 90%.

Ao procurar por ameaças dirigidas à UEFI utilizando a nossa pipeline de processamento, descobrimos vários componentes UEFI interessantes que dividimos em duas categorias: backdoors de firmware UEFI e módulos de persistência ao nível do sistema operativo. A mais notável das nossas descobertas é a backdoor ASUS, uma backdoor de firmware UEFI, que foi encontrada em vários modelos de laptop ASUS e que foi solucionada pela ASUS após a notificação da ESET.

O que é a UEFI?

A UEFI é uma especificação que define a interface que existe entre o sistema operativo e o firmware do dispositivo. Ela define um conjunto de serviços padronizados, chamados “serviços de inicialização” e “serviços runtime”, que são as principais APIs disponíveis no firmware UEFI. Portanto, a UEFI é uma sucessora da interface do firmware do BIOS (Basic Input/Output System), apresentado para abordar as limitações técnicas do BIOS.

O firmware UEFI é armazenado na memória flash SPI, que é um chip soldado na motherboard do sistema. Portanto, reinstalar o sistema operativo ou substituir o disco rígido não afeta o código do firmware. O firmware UEFI é muito modular: normalmente contém dezenas, se não centenas, de diferentes executáveis/drivers.

Figure 1. Como são armazenados os executáveis/drivers UEFI em um PC

UEFI como vetor de ataque

Existem diversas formas de modificar o firmware, comprometendo a segurança do computador afetado. A primeira opção, e mais comum, é a modificação do firmware pelo fornecedor do computador para permitir o diagnóstico ou serviço remoto, que, se implementado incorretamente, pode servir como backdoor. Outra opção é o flash malicioso através de adulteração manual, quando o atacante tem acesso físico ao dispositivo afetado. A terceira opção: ataques remotos usando malware capaz de modificar o firmware.

Esta terceira opção foi documentada na nossa pesquisa sobre o LoJax, o primeiro rootkit UEFI detetado em atividade. Numa campanha voltada para organizações governamentais nos Balcãs, bem como na Europa Central e Oriental, o grupo Sednit APT implementou com sucesso um módulo UEFI malicioso no sistema de uma vítima. Este módulo foi capaz de inserir e executar malware no disco durante o processo de inicialização – um método de persistência particularmente invasivo que não só sobreviverá à reinstalação de um sistema operativo, mas também à substituição do disco rígido.

Um método de machine learning para explorar o cenário UEFI

Encontrar malware como o LoJax é raro – existem milhões de executáveis UEFI em uso de forma ativa e apenas uma pequena parte dos mesmos é maliciosa. Já vimos mais de 2,5 milhões de executáveis UEFI únicos (de um total de seis mil milhões) nos últimos dois anos. Como não é viável analisar cada um deles manualmente, tornou-se imprescindível criar um sistema automatizado para reduzir o número de amostras que requerem atenção humana. Para resolver esse problema, decidimos construir um sistema sob medida para destacar amostras atípicas ao encontrar características incomuns em executáveis UEFI.

Na nossa pesquisa, examinamos e comparamos várias abordagens de cada parte do processo – desde a extração de recursos, incorporação de texto, incorporação de dados multidimensionais por meio de armazenamento eficiente e consulta das amostras para gerar um algoritmo de pontuação final – tudo isto considerando o desempenho e os recursos em tempo real das técnicas escolhidas. Assim que estabelecemos um método eficiente de recuperar as proximidades de qualquer binário UEFI recebido, configuramos um sistema para atribuir pontuações de similaridade no intervalo de zero a um aos executáveis recebidos, comparando-os com arquivos vistos anteriormente. Arquivos com a menor pontuação de similaridade são então inspecionados com a maior prioridade por um analista.

Como prova de conceito, testamos o sistema resultante em executáveis UEFI suspeitos e maliciosos conhecidos que não estavam anteriormente incluídos no nosso conjunto de dados – especialmente o driver LoJax UEFI. O sistema concluiu com sucesso que o driver LoJax era muito diferente de tudo o que tínhamos visto antes, atribuindo-lhe uma pontuação de similaridade de 0.

Este teste bem-sucedido dá-nos um grau de confiança de que, se outra ameaça UEFI semelhante surgir, seremos capazes de identificá-la como uma raridade, analisá-la prontamente e criar uma deteção conforme necessário. Além disso, a nossa abordagem baseada em machine learning pode reduzir a carga de trabalho de nossos analistas em até 90% (se eles analisassem cada amostra recebida). Finalmente, graças ao facto de que cada novo executável UEFI recebido é adicionado ao conjunto de dados, processado, indexado e levado em consideração para as próximas amostras recebidas, a nossa solução oferece monitorização em tempo real do cenário UEFI.

Procura de componentes UEFI indesejados

Com o teste à nossa pipeline de processamento em amostras maliciosas conhecidas, era hora de começar a buscar módulos UEFI indesejados que estejam ativos. Os componentes interessantes que encontramos podem ser agrupados em duas categorias: backdoors de firmware UEFI e módulos de persistência ao nível do sistema operativo.

Backdoors de firmware UEFI

Então o que são backdoors de firmware UEFI? Na maioria das configurações de firmware UEFI, estão disponíveis opções para proteger o sistema contra o acesso não autorizado durante os primeiros estágios do processo de inicialização. As opções mais comuns permitem definir passwords para proteger o acesso à configuração do firmware UEFI, para evitar que o sistema inicialize e para aceder ao disco. Os backdoors de firmware UEFI são mecanismos que permitem ignorar essas proteções quando desconhecida a password do utilizador.

Embora essas backdoors de firmware UEFI sejam muito comuns, elas são usadas principalmente como um mecanismo de recuperação no caso do proprietário do computador se esquecer da password, ou seja, têm uma série de implicações de segurança. Além de permitir que hackers com acesso físico ao computador afetado contornem vários mecanismos de segurança, também criam uma falsa sensação de segurança para utilizadores que não os conhecem e podem acreditar que seus computadores não podem ser iniciados por alguém que não tenha a password.

O mais prevalente das backdoors de firmware UEFI que analisamos é a chamada backdoor ASUS. A nossa pesquisa confirmou que pelo menos seis modelos de laptop ASUS foram enviados ao mercado com a backdoor; o número, no entanto, é provavelmente muito maior (verificar a presença em cada modelo de laptop ASUS estava fora do alcance da nossa pesquisa). Depois da nossa notificação à ASUS sobre a backdoor em abril de 2019, o fornecedor removeu o problema e lançou atualizações de firmware a 14 de junho de 2019.

Módulos de persistência ao nível do sistema operativo

As nossas restantes descobertas são módulos de persistência ao nível do sistema operativo – componentes de firmware responsáveis pela instalação do software ao nível do sistema operativo. Com estes módulos de persistência, o principal problema de segurança é que – dada a natureza complicada da entrega de atualizações de firmware – um computador que saiu para o mercado com um componente de firmware vulnerável provavelmente permanecerá vulnerável durante toda a sua vida útil. Por esta razão, acreditamos que a persistência do firmware deve ser evitada tanto quanto possível e limitada aos casos em que é estritamente necessário, como é o caso das soluções anti-roubo.

Para saber mais sobre a pesquisa da ESET, veja o artigo completo: A machine-learning method to explore the UEFI landscape.

DEIXE UMA RESPOSTA

Please enter your comment!
Please enter your name here

15 − fourteen =