Documentos RTF armados adotam o CVE-2018-0798, outra vulnerabilidade do Equation Editor
Por Gabor Szappanos
Há um ponto distinto de maturação no ciclo de vida de uma exploração do Office: o ponto em que ela se torna geralmente disponível para os grupos criminosos. Antes disso, a exploração afetou apenas algumas poucas vítimas selecionadas, de ataques direcionados. A partir daí, torna-se generalizada e ameaça a população geral de usuários.
A CVE-2018-0798, outra vulnerabilidade do Equation Editor, atingiu esse ponto de maturação em torno do final de junho de 2019.
Como o exploit funciona
Essa exploração foi usada em ataques direcionados que observamos nos últimos meses, permanecendo praticamente fora do radar. Uma descrição detalhada da vulnerabilidade e seu uso em ataques direcionados, publicados no início deste mês, explica os fundamentos.
Em algum momento, parece que alguém integrou a implementação de exploração que foi usada nos ataques direcionados em uma ferramenta mal-intencionada do criador de documentos do Office, com apenas pequenas alterações. Isso prepara o terreno para uma adoção muito mais ampla da técnica de ataque.
As semelhanças são inconfundíveis: por exemplo, o gatilho de exploit é exatamente o mesmo, e o shellcode (responsável por descriptografar e executar a carga útil) é quase idêntico ao shellcode usado nos ataques direcionados. Embora o CVE-2018-0798 seja uma vulnerabilidade de estouro de buffer relativamente simples, há alguns fatores que dificultam o ajuste do próprio disparo de exploração, daí a implementação virtualmente idêntica.
O ataque usa o Editor de Equações para colocar o buffer mal-intencionado em várias transformações e, durante o processamento, o layout da memória será um pouco diferente do layout do arquivo, o que complica a análise (e ajustes). Além disso, o invasor controla apenas a palavra inferior do endereço de retorno na pilha. Essas complicações tornam menos provável que as implementações, pelos criminosos alterem significativamente o gatilho de exploração.
Os arquivos RTF com armas que fazem parte desta campanha têm uma característica curiosa: alguns conteúdos indesejados perto do cabeçalho – conteúdo que se ajusta a um padrão normalmente visto em arquivos PDF. Parece que a presença deste conteúdo de dados de cabeçalho PDF pode ser uma tentativa de confundir analisadores de tipo de arquivo de documento em scanners antivírus.
Um recurso interessante no shellcode é que as funções da API do Windows não são chamadas a partir do próprio shellcode. Em vez disso, a função clearerr do msvcrt.dll é corrigida com um código curto que invoca a função API desejada.
O código original do clearerr é assim:
Isso é substituído por um código que primeiro verifica se a função da API já estava conectada por um software de segurança (a presença de 0xE9 e 0xEB indica que a entrada original do manipulador da API foi corrigida, redirecionada para uma função de monitoramento). Se o patch for detectado, o shellcode irá ignorar os primeiros 5 bytes, o redirecionador, e saltará diretamente para o corpo da função, feito pela instrução JMP EAX.
O resultado desse truque é que todas as chamadas da API do Windows que o shellcode usa parecerão ser iniciadas a partir do msvcrt.dll, o que torna uma atividade muito menos suspeita para o software de monitoramento de comportamento.
A única mudança significativa nos casos de crimeware é a carga extraída. As amostras do APT eram independentes, a carga final foi armazenada no arquivo RTF. Por outro lado, nos exemplos de crimeware, o payload é um trojan de downloader muito simples, que obtém a carga final de um URL codificado.
Em ambos os casos, o arquivo RTF contém uma carga útil incorporada. Houve algumas implementações diferentes nos casos APT. Na mais simples delas, a carga útil é embutida no arquivo RTF sem nenhuma criptografia, conforme ilustrado na figura a seguir, onde o marcador MZ do executável embutido é claramente visível no conteúdo RTF.
O cabeçalho MZ característico da carga útil executável incorporada é claramente visível no RTF
Nos casos típicos, um algoritmo XOR de um byte é usado quando a chave de criptografia é alterada para cada byte de dados. Isso dificulta o reconhecimento do conteúdo incorporado, que a princípio parece com alguns dados aleatórios.
O criador de crimeware, escolheu uma implementação falsa (ainda mais conveniente) do último, mais detalhes na próxima seção.
O componente de download
O exploit CVE-2018-0798 aciona o código de shell que descriptografa a carga útil (algoritmo XOR de um byte, a chave é 0xFC) e o executa. Mais precisamente, o algoritmo de criptografia deve ser um algoritmo XOR byte-wise de chave de execução, mas a amostra APT que foi usada como um modelo para o construtor de crimeware usou uma implementação falsa desse algoritmo.
Em vez de alterar a chave para cada posição de arquivo, a chave só muda para os primeiros 4 bytes, para o resto do arquivo será 0xFC. A figura a seguir mostra grandes blocos de bytes 0xCFC na carga útil incorporada, o que revela claramente a chave de criptografia.
Não deve ser uma coincidência que o criador de crimeware tenha escolhido essa implementação. É muito mais fácil corrigir somente a URL codificada no arquivo RTF com chave fixa, do que recodificar o EXE incorporado e recriar o arquivo RTF para cada amostra.
O programa faz o download do URL codificado, salva-o na pasta %APPDATA% e o executa.
Os nomes de funções críticas da API do Windows são ligeiramente ofuscados, o primeiro caractere do nome é alterado.
O mesmo executável do downloader está presente em todas as amostras recentes de crimeware; apenas a URL de download codificado é alterado. Esta é uma boa escolha para o fácil desenvolvimento do construtor.
Como são as mensagens de spam maliciosas
Observamos várias campanhas de distribuição de e-mail usando esses documentos do Office como armas. A carga útil identificada das campanhas de infecção eram todas as cargas de família de crimeware “suspeitas usuais”: Fareit, Lokibot, Formbook ou AzoruLT. O payload mais distribuído é o Fareit.
Observamos que as campanhas de spam usam uma ampla seleção de tropos de engenharia social.
Mensagens temáticas de aviso de chegada de carga:
O rastreamento da Fedex foi particularmente popular:
E, claro, o spam de confirmação de pedido:
O Lokibot foi distribuído usando uma mensagem com o tema “aviso de pagamento”:
E em mensagens que pretendiam conter uma consulta de produto:
O e-mail “forneça a sua cotação de melhor preço” foi usado para distribuir o Formbook:
A vulnerabilidade afeta todas as versões do Equation Editor (mesmo as que foram corrigidas para o CVE-2017-11882).
O patch para o exploit CVE-2018-0802 “corrige” permanentemente a vulnerabilidade, eliminando completamente o Equation Editor.
Desde o final de junho, começamos a observar um aumento no uso dessa vulnerabilidade em campanhas de phishing. Desde então, observamos cerca de 200 novos documentos RTF maliciosos usando essa exploração. Esses documentos são muito semelhantes entre si. Isso e o grande número de amostras indicaram que uma ferramenta de construção que gera os arquivos .doc com armas provavelmente está em circulação. Podemos esperar que o uso dessa exploração aumente, pelo menos no futuro próximo.
Temos as seguintes detecções que fornecem cobertura genérica para as amostras conhecidas:
Exp / 20180798-A
Troj / RtfExp-FB
Troj / RtfExp-EY
Indicadores de Compromisso
Os hashes de arquivo das amostras analisadas neste relatório estão no SophosLabs Github.
Traduzido do original em: https://news.sophos.com/en-us/2019/07/18/a-new-equation-editor-exploit-goes-commercial-as-maldoc-attacks-using-it-spike/?cmp=30727