Por Alexandre Siviero (atualizado em 29 de abril) – Esta é uma análise de um malware bancário brasileiro visto pela primeira vez em 2017, chamado de Ousaban, ou Javali. Há uma campanha em curso que dissemina esse malware com phishing de notas fiscais eletrônicas. Uma vez estabelecido na máquina da vítima, esse malware fica dormente até que o usuário acesse serviços de pagamento no navegador, como Mercado Pago. Nesse momento ele se conecta a um servidor de controle para roubar credenciais e dados de pagamento.
Phishing com notas fiscais eletrônicas
Observamos uma campanha em curso no último mês com e-mails cujo remetente se passa por uma prefeitura municipal genérica que está enviando notas fiscais eletrônicas. O phishing direciona o usuário para um instalador MSI que contém uma rotina maliciosa para infectar máquinas com o malware bancário brasileiro Ousaban/Javali.
Neste relatório, demonstraremos como foi feita a análise do arquivo MSI para identificar e desofuscar o código malicioso para download e execução desse malware.
A campanha inicia com um phishing com remetente de nome “Prefeitura Municipal”. Seus assuntos seguem o padrão “✅ Emissao de NF-e Pedido: (82234018574) Nota Fiscal Eletronica – 12/04/2022”, onde o número do pedido e a data variam. Um exemplo do conteúdo da mensagem é fornecido na imagem abaixo.
O nome do alvo foi suprimido, mas o CPF não. Todas as mensagens fazem alusão ao Cadastro de Pessoa Física, mas sem trazer qualquer número de documento. Os hyperlinks sugerem que a nota mencionada está disponível em dois formatos. Na realidade, ambos o redirecionam para a mesma página, demonstrada abaixo.
Esse endereço inicia o download de um arquivo comprimido (.zip), que contém um instalador do Windows (.msi) de mesmo nome. Para a mensagem específica que demonstramos na página anterior, ambos possuem o nome hyh6728i0zbnnp rspehu.msi.zip e hyh6728i0zbnnp rspehu.msi.
Não há execução automática deste conteúdo. A campanha depende de uma execução voluntária do instalador pelo alvo.
Analisando malwares em MSI
Até então nossos boletins trataram de scripts ou executáveis maliciosos. Um arquivo de instalação do Windows funciona de maneira um pouco diferente. É possível visualizar seu conteúdo de maneira não estruturada com qualquer software que lide com arquivos comprimidos. A imagem abaixo demonstra a inspeção do msi malicioso por meio do 7zip.
O problema que encontramos neste momento é a falta de contexto para o conteúdo do arquivo de instalação. Poderíamos seguir nossa análise com base em tamanho e extensão dos arquivos nele contidos, mas é mais proveitoso usarmos um software que permita a análise de instaladores do Windows. Para isso, utilizamos um programa distribuído pela própria Microsoft chamado Orca.
O Orca divide um instalador em diversas tabelas, que por sua vez contêm ações e condições. Na imagem acima inspecionamos a tabela InstallExecuteSequence, ou sequência de instalação e execução. Como seu próprio nome indica, ela orienta o Windows sobre quais ações devem ser tomadas e em que ordem durante o processo de instalação. Destacamos em amarelo e azul uma ação com um nome suspeito, sdfsdfdsfsd. Para entender melhor do que essa ação se trata, iremos para outra tabela: CustomAction.
Destacamos novamente a ação sdfsdfdsfsd. Dessa vez, a coluna Target nos traz uma declaração de variável. Copiando todo seu conteúdo para uma ferramenta de edição (Notepad++), confirmamos tratar-se de um vbscript ofuscado.
Desofuscando o script
A primeira ação do script contido em sdfsdfdsfsd é a declaração de uma variável, _$_89794564972389472398625984758798273489234987239847973423, que é referenciada diversas vezes ao longo do código. A imagem abaixo destaca-a em verde para demonstrar sua recorrência:
Essa variável contém 50 strings em hexadecimal, que são referenciadas no código segundo sua posição. É uma ofuscação extremamente simples, que pode ser desfeita apenas com a substituição das referências a posições pelas strings correspondentes, convertidas de hexadecimal para ascii. Aplicando isso à imagem acima, obtemos um código relativamente simples:
Logo de cara encontramos um novo IOC, o endereço april140420022xx.s3.sa-east-1.amazonaws[.]com/gmtax2020. Esse endereço contém um arquivo comprimido e protegido por senha, que recebe um nome aleatório durante a execução do script. Outra rotina mais adiante é responsável por sua extração:
Temos alguns pontos de interesse a tratar na imagem acima. Comecemos com uma nova URL, april140420022xx.s3.sa-east-1.amazonaws[.]com/polarRIT. Essa é passada para a função downyJr (todos esses nomes são originais do script; talvez seu autor goste do Homem de Ferro), que é responsável por baixar o conteúdo da página. O segundo argumento passado para essa função é a geração aleatória de caracteres, seguida pela extensão .exe. Disso, concluímos que o conteúdo desse endereço é um executável.
A linha oShell.run dá a pista sobre qual executável é esse, por meio das flags x, -o e -p. Trata-se do 7zip. A flag -p é responsável por fornecer uma senha para a extração de um arquivo protegido. A variável que carrega essa senha foi destacada em verde: 123456ze.
O script conclui sua rotina extraindo o arquivo protegido por senha, renomeando um de seus componentes (Isname.name) para um executável de nome gerado aleatoriamente e chamando sua execução. Por fim, envia uma requisição GET para uma URL da Azure, secffnb.westcentralus.cloudapp.azure[.]com/gmix/samper[.]php, (possivelmente avisando sobre uma infecção bem-sucedida).
Ousaban/Javali
Ao extrair manualmente o arquivo protegido por senha, nos deparamos com uma técnica que busca subverter a análise de arquivos por ferramentas de antivírus, assim como sua submissão para serviços de nuvem: inflar artificialmente o tamanho de um arquivo a níveis exagerados. Isso é visível em EDSDK.dll, com cerca de 785 MB de tamanho. A maioria do arquivo é preenchido por zeros e após a retirada desses espaços vazios, ele diminui para apenas 1,2 MB de tamanho.
A família de malware Ousaban (também chamada de Javali pela Kaspersky) tem como tradição proteger suas DLLs maliciosas com tamanhos de arquivo absurdos e executá-las por meio de DLL hijacking em softwares legítimos e assinados. Em julho de 2020, a Kaspersky observou esse comportamento com o que parecia ser o software Nvidia Display. Nessa versão de 2022, o grupo usa um programa chamado Photo On Web:
Após a injeção de DLL, o software comprometido passa a se comunicar com o servidor de comando e controle deste malware (20.226.67.9). É interessante observar que essa comunicação se dá em português, conforme demonstrado pelos logs de rede que colhemos:
Enviado para C2:
# C o n v i t R C # < # > W i n d o w s 7 P r o f e s s i o n a l < # > U S E R - P C < # > N a o < # > A m s t e r d a m N o r t h H o l l a n d
Recebido:
# S o c k e t M a i n # < # > 2 9 4 9 8 1 0 # U p l o a d F i l e # # O N - L I N E #
Enviado:
# s t r P i n g O k # # R E C E B E N D O # < # > U S E R - P C
O demonstrativo acima traz um comando de upload de arquivo na máquina comprometida. Caso essa ação não complete, um aviso é enviado ao C2:
# s t r P i n g O k # # P L U G I N # < # > N a o # C O M P L E T O U # < # > U S E R - P C
Além das comunicações com seus controladores, a aplicação que foi alvo de hijacking também cria persistência por meio do registro do Windows, inserindo-se em HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN com a chave “[STRING ALEATORIA].exe” –no-startup-window –win-session-start /prefetch:5.
O comando UploadFile é responsável por baixar um novo executável legítimo e assinado, que também será alvo de DLL hijacking. Observamos esse comportamento com os softwares Picasa.exe (Google) e Graphic Workshop Professional (Alchemy Mindworks). Tal que ocorrido com Photo On Web, os executáveis recebem nomes aleatórios e as DLLs maliciosas têm seu tamanho inflado para cerca de 780MB.
Esse novo aplicativo é executado e fica “dormente”, sem realizar qualquer ação. A partir do momento que o usuário da máquina infectada abre o navegador e acessa algum site mirado pelo malware, o processo estabelece uma nova conexão com o servidor de controle e começa a se comunicar via HTTPS. Observamos que no ato de estabelecer essa conexão, mais dados acerca da máquina infectada são enviados aos controladores. Um exemplo é a string abaixo:
Sem antivirus#strPingOk##Convite##ConvitRC#<#>#UploadFile##SocketMain##RECEBENDO#<#>#ON-LINE#
Identificamos também que o malware recupera suas configurações iniciais de um endereço que faz alusão a um escritório de advocacia, adsadvogados[.]com/juridico/. Todos os arquivos de configuração presentes nesse diretório (que está aberto para a internet) datam do dia 13 de abril de 2022. Um exemplo de conteúdo de arquivo de configuração é fornecido a seguir:
inicio{
"host":"B0A091EA79EC7AEF4AE64DB5",
"porta":"0000"
}fim
Não encontramos por ora todos os endereços responsáveis por “acordar” o malware durante navegação na internet, mas confirmamos que acessar o site Mercado Pago é uma das maneiras de desencadear conexões com o servidor de controle. Essa associação tinha sido observada pela Kaspersky em 2020 (segundo relatório citado no início deste item) e nossa análise demonstrou que ela persiste nessas amostras de 2022.
Observamos também um comportamento que parece acontecer quando o endereço do servidor de controle não está disponível. Nessas circunstâncias, o Photo On Web é encerrado e reaberto em loop, sem que uma conexão seja estabelecida com o destino controlado pelos operadores do Ousaban. Essa situação se repetiu algumas vezes durante nossa investigação.
É interessante pontuar que, nas situações em que ocorreu falha de conexão com o C2, não houve a criação de chave no registro como forma de persistência. É possível que essa indisponibilidade comprometa a infecção da máquina alvo.
Restituição de Imposto de Renda também é uma isca
Outro golpe detectado com o Ousaban usa o Imposto de Renda como isca para atrair vítimas desatentas. Esse é um caso que requer mais atenção, uma vez que estamos em período de declaração do documento (prazo final para envio é 31 de maio de 2022), então um ataque pode mais facilmente se esconder entre comunicações legítimas. Um exemplo dessa variante aponta como o “funcionamento” é muito semelhante: e-mail que parece oficial, mas que revela-se suspeito com um olhar mais cuidadoso, e um link que redireciona a um site falso, conforme mostram as imagens:
Prevenção
Por se tratar de um golpe que necessita que a vítima clique no link, não existe uma única solução a ser adotada para evitá-lo, mas sim uma série de boas práticas. A chave está em prestar atenção nos sinais: sejam endereços que soam suspeitos e/ou aleatórios, ou notas fiscais de aquisições que você não se lembra de ter realizado.
Caso o e-mail indique que o conteúdo a ser baixado trata-se de um PDF, por exemplo, e o que de fato aparece nos downloads não é isso, trata-se de um ataque (como nos dois casos expostos, onde o que é visto é uma pasta em formato .zip, e nenhuma nota fiscal).
Na dúvida, é sempre melhor consultar uma fonte oficial para se certificar. O trabalho será maior, mas recompensará, por evitar o que pode ser uma tremenda dor de cabeça.
IOCs (notas fiscais eletrônicas)
URLs
http://ip-72-167-45-95.ip.secureserver.net/.idfiscal/?hash=
https://pdf-nfe82234018756.northcentralus.cloudapp.azure.com/idcupom/?hash=
april140420022xx.s3.sa-east-1.amazonaws[.]com/gmtax2020
april140420022xx.s3.sa-east-1.amazonaws[.]com/polarRIT
secffnb.westcentralus.cloudapp.azure[.]com/gmix/samper[.]php
ip-api.com
adsadvogados[.]com
adsadvogados[.]com/juridico/
adsadvogados[.]com/juridico/geo1.txt
adsadvogados[.]com/juridico/geo.txt
adsadvogados[.]com/juridico/reuniao.txt
adsadvogados[.]com/juridico/sh.txt
adsadvogados[.]com/juridico/sh1.txt
Endereços IP
20.226.67.9 (C2)
20.231.51.105
E-mail phishing
root@marf5.notasonlinevmbc.org
40.114.206.69
Artefatos
Instalador comprimido (hyh6728i0zbnnp rspehu.msi.zip):
B6BFFF299048888CECF4985E3546C7DA70EB0C33BE24456FEAC7D4BE58B1DEB2
Instalador pós-extração (hyh6728i0zbnnp rspehu.msi):
9091A791B900C6B7398B38B4641EDFF93036F83A36E1244594D5ECFD664B9931
Arquivos comprimidos com senha:
0B36DE4D494A750AA46E2C2EE60B515B30E5A86BEB9DE8142DAD54AA79361EFF
86A92468CCF83EC66FCCB5C7DDD8CC7C7CED1BA9F79DDD3515175085484E3838
Versão do Photo On Web:
4ED66AD6E2CA374221ED660177521DC2C4DB9492A048C52410931B86A66CC837
DLL inflada (EDSDK.dll)
0082CB5F94FA2E9E0010439A06CC022481B92DBD569DED0DDC73DBF7E8EE3507
Versão do Picasa:
ABBF57F0882021EBCC31AA2B1C9303CA083B609E44CC8F50D387BD68F7B50634
Versão do Graphic Workshop Professional:
A2E2DC14BE9EA407BEAFE99762F2C0193EB554135C0D8AA5249DE47403754483
Mensagens trocadas entre malware e C2:
# P R I N C I P A L #
# C o n v i t e # # S o c k e t M a i n # < # > [NÚMERO]
# C o n v i t R C # < # > [SISTEMA OPERACIONAL] < # > [NOME DA MÁQUINA] < # > N a o < # > [CIDADE E PAÍS]
# S o c k e t M a i n # < # > [NÚMERO] # U p l o a d F i l e # # O N - L I N E #
# s t r P i n g O k # # R E C E B E N D O # < # > U S E R - P C
# s t r P i n g O k # # P L U G I N # < # > N a o # C O M P L E T O U # < # > U S E R - P C
Sem antivirus
#strPingOk#
#strCmd#
Persistência:
HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN
IOCs (imposto de renda)
root@ipos6.notasfrias.]org (20.114.251.]33)
ip-92-205-18-61.ip.]secureserver.]net/.idrec/?hash=
restituicaodevalores-irf.canadaeast].cloudapp.azure.com
hxxp://isfactorytox.]duckdns.]org/gg/gmptx secffnb.westcentralus[.cloudapp.azure.com/gamermix/play.php
Configs
abcadvogados.]com/g/WWA tmjdrinks.]com/geo/drinks.txt
C2: 20.]226.]99.72:59613
Emulações e análises
https://tria.ge/220427-smn83se
Referências
https://securelist.com/the-tetrade-brazilian-banking-malware/97779/
https://rvsec0n.wordpress.com/2020/02/22/msi-malware-analysis/
https://twitter.com/dodo_sec/status/1513920321707024386
https://docs.microsoft.com/en-us/windows/win32/msi/orca-exe
https://app.any.run/tasks/77d32721-dcf5-4e79-b04d-e26b0b54a935