retornarretornar
Follina um lado de cliente silencioso

POR:
Mariano Quintana
CYBERSECURITY TRAINER & RESEARCHER

COMPARTILHAR

Twitter Facebook Linkedin

Follina um lado de cliente silencioso

Muito tem sido dito sobre a agora famosa vulnerabilidade Follina, reportada como Zero-Day no início deste ano e também referida pelo seu nome mais técnico como CVE-2022-30190, particularmente associada ao protocolo URL Microsoft Support Diagnostic Tool (MSDT), considerado pela maioria das equipas do DFIR como "uma grande dor de cabeça" devido ao seu comportamento invulgar. Na maioria dos casos em que os ataques são recebidos utilizando ferramentas do Microsoft Office, as equipas tendem a assumir que ocorrem através dos métodos mais conhecidos, tais como a utilização das famosas Macros, tendo já testado protecções para estes mecanismos comuns utilizados em ataques do lado do cliente.

O que acontece quando nascem novas formas de fazer a mesma coisa? As equipas de resposta a incidentes estão suficientemente maduras para se adaptarem às novas formas de ataque?

A realidade é que cada vez mais frequentemente estas equipas de resposta a incidentes têm de actualizar os seus processos e mecanismos, especialmente quando se trata da utilização de serviços válidos aliados ao funcionamento normal do nosso sistema operativo.

Embora se estime que esteja em funcionamento desde Abril, no final de Maio foi detectado pela primeira vez um documento estranho com a nomenclatura 05-2022-0438.doc e carregado para o virustotal. O investigador nomeou esta amostra Follina, porque o número 0438 é o código postal da cidade italiana de Follina, Treviso. O relatório indicava a possibilidade de executar código através do Office, explorando o serviço interno do Windows MSDT (AKA Troubleshooter), que recolhe informações de diagnóstico a enviar à Microsoft em caso de erro

À medida que vai lendo este post, provavelmente está a perguntar-se como é que um atacante pode explorar esta falha se ela deve ser executada do lado do cliente. Para compreender isto, vamos olhar para uma breve explicação.

Como funciona um ataque do lado do cliente

Se o PC da vítima fosse a nossa casa, normalmente teriam as portas trancadas e a chave de casa para as abrir e deixar entrar as pessoas. Portanto, o objectivo do atacante seria conseguir que alguém de dentro abrisse a porta e deixasse as pessoas entrar sem qualquer inconveniente. Como é que um atacante consegue abrir a porta de uma casa? A principal estratégia utilizada é a utilização da engenharia social para convencer a vítima a abrir a porta. Para tal, o agressor procura um canal comum em que a vítima confie e depois, utilizando estratégias diferentes, convence a vítima a executar um ficheiro ou clica num link fornecido através deste canal comum (gerando a acção de abrir a porta a partir do interior).

imagem ilustrativa

Embora o exemplo gráfico seja absurdo (embora muitas vezes funcione com sucesso) quando se trata de sistemas informáticos, substituir a pizza por uma necessidade latente que envolve, por exemplo, descarregar um documento Microsoft Word para preencher um formulário ou ler algum tipo de informação de interesse para a vítima e, do lado do cliente, estamos a abrir a porta que o agressor precisa.

Funcionamento da Follina como Cliente-Lado

Considerando o exemplo acima, um documento do Office (neste caso Word) é enviado para a vítima. Este documento do Office será criado de modo a gerar um erro a fim de invocar o serviço de resolução de problemas do Windows discutido acima, chamado MSDT.exe. Uma versão inicial deste malware comportou-se da seguinte forma:
imagem ilustrativa

Ou seja, a palavra ficheiro (a nossa pizza), executado pela vítima, chamado ficheiro HTML e descarregado código malicioso executado através do PowerShell.

Mas porque é que isto acontece? Os ficheiros têm a possibilidade de anexar informação adicional em certas variáveis do ficheiro, a fim de fornecer variáveis cosméticas que estão directamente relacionadas com o documento. Por exemplo, se utilizarmos o comando 7z para descomprimir o ficheiro Word, poderemos visualizar o conteúdo adicional dos ficheiros
imagem ilustrativa

Neste caso particular o documento usa a função de modelo remoto do Word (Word/_rels) para recuperar um ficheiro HTML alojado no servidor do atacante, que extrai usa o esquema de instruções "ms-msdt" para carregar código e executar comandos via PowerShell.

Se pensarmos nisso, todas estas são ferramentas fornecidas pelo sistema operativo, excepto a construção da nossa exploração. Para proporcionar mais clareza, vamos agora utilizar uma prova de conceito (PoC) para demonstrar como funciona a vulnerabilidade. O nosso cenário consiste num Kali Linux, onde vamos construir a nossa carga útil. E um Windows 10, com o correspondente pacote Microsoft Office instalado.

O gráfico seguinte mostra como seria o cenário correcto:

  1. O atacante envia o ficheiro malicioso

  2. A vítima executa o ficheiro

  3. A vítima irá buscar o HTML com as instruções correspondentes

imagem ilustrativa

Cenário de teste

  - Primeiro vamos clonar este repositório github com o gitclone de comando a partir do repositório: https://github.com/JohnHammond/msdt-follina imagem ilustrativa

  - Verificamos então se foi correctamente clonado: imagem ilustrativa

  - Vamos agora criar a nossa primeira carga útil, com o comando python3 follina.py -- port [Porto à sua escolha] , na imagem anterior podemos ver que o script utilizado deixa uma carga útil HTML, no porto que seleccionámos anteriormente:

imagem ilustrativa

  - Se quisermos ver como são os pedidos feitos pela vítima em tempo real, podemos executar um wget http://localhost:5555/ e visualizar todos os pedidos feitos no registo do nosso guião.

imagem ilustrativa

  - Depois copiamos o documento gerado follina.doc da pasta onde estava alojado no nosso caso /root/msdt-follina (Para simular o envio) Depois movemo-lo para a nossa máquina virtual com o Windows 10:

imagem ilustrativa

  - Procedemos à execução do ficheiro correspondente, depois de o termos executado podemos observar como o serviço MSDT.exe se abre e, adicionalmente, a instrução para abrir a calculadora é executada:

Como se defender

Embora na origem destes problemas, a única coisa a fazer era desactivar o serviço msdt.exe, é muito importante hoje em dia manter os nossos sistemas operativos actualizados. Se não mantivermos registos das habituais correcções de segurança, este pode ser o nosso principal ponto de fraqueza.

Dentro das correcções estão as seguintes bases de conhecimento (KB), a serem consideradas;

KB5014678: Windows Server 2022
KB5014697: Windows 11
KB5014699: Windows 10 Versão 20H2 – 21H2, Windows Server 20H2
KB5014692: Windows 10 Versão 1809 (IoT), Windows Server 2019
KB5014702: Windows 10 1607 (LTSC), Windows Server 2016
KB5014710: Windows 10 1507 (RTM, LTSC)
KB5014738: Monthly Rollup Windows Server 2012 R2, Windows RT 8.1, Windows 8.1
KB5014746: Segurança only Windows Server 2012 R2, Windows RT 8.1, Windows 8.1
KB5014747: Monthly Rollup Windows Server 2012
KB5014741: Segurança only Windows Server 2012
KB5014748: Monthly Rollup Windows Server 2008 R2, Windows 7 SP1
KB5014742: Segurança only Windows Server 2008 R2, Windows 7 SP1

Caso se encontrem na situação de não poderem aplicar correcções devido à impossibilidade de actualizar os sistemas ou, na sua falta, devido a erros na gestão das actualizações. A falha poderia ser tratada da seguinte forma: aplicar uma regra ASR (Attack Surface Reduction) com o Windows Defender, onde as aplicações Microsoft Office são bloqueadas para que não criem processos secundários.

Exemplo:
  - Add-MpPreference
  - AttackSurfaceReductionRules_Ids   - 4f940ab-401b-4efc-aadc-ad5f3c50688a   - AtaqueSuperfícieReduçãoRegras_Acções Avisos | Activar Desactivar o protocolo MSDT url, modificando a seguinte chave de registo:
  - Criar backup; “reg export HKEY_CLASSES_ROOT\ms-msdt filename”
  - Executar o comando “reg delete HKEY_CLASSES_ROOT\ms-msdt /f”

Conclusão

Como vimos neste artigo, todos os ataques de que temos conhecimento evoluem com o tempo. É também possível que estas notícias tenham sido recebidas no início do ano e possam ou não ter actualizado as suas infra-estruturas. O mais importante é que nunca perdemos a noção deste tipo de problema, pois podem existir variantes deste tipo de ataque que podem causar danos extensos à infra-estrutura pessoal ou organizacional.

Além disso, nunca se deve perder de vista a importância de formar as equipas de segurança da organização para que sejam devidamente formadas no dia-a-dia para executar contramedidas e soluções. A melhor defesa contra o Dia Zero será sempre uma equipa de pessoas que seja o mais resistente possível a qualquer acontecimento infeliz.

«Mesmo a melhor espada, se deixada imersa em água salgada, acabará por enferrujar». (A Arte da Guerra, Sun Tzu)