Analisando um malvware do ponto de vista de um programador

Hoje vou publicar algumas informações que consegui analisando o malware Trojan.GenericKD. Basicamente este malware é um script .js que baixa diversos arquivos, incluindo paginas fakes de bancos como bb e bradesco.

Caso alguém tenha interesse de baixar e testar, vou deixar o malware aqui para download.

A senha do zip acima é infected, cuidado ao executar.

Então vamos lá. Este malware chegou até mim através de um email de phishing através do endereço atendbemcatu2@yahoo.com.br, com o malware anexado chamado de “boleto…”, “conta…” ou algo do gênero.

A primeira vez que executei, em um windows 7 pt-br, consegui executar e testar tudo e obter estas informações abaixo. Em casa tentei executar em um windows 7 en-us para tirar uns prints e não tive muito sucesso, apesar da infecção ocorrer as páginas não carregaram, nem as originais nem as fakes. Vou tentar conseguir uns prints para ilustrar…

Primeiramente, olhei o email que dizia algo como “aqui está o comprovante que você pediu”. Obviamente que o primeiro passo foi jogar esse script no virus total e ver o resultado. Num primeiro momento nenhum antivirus ou ferramenta pode detectar o malware. 30 minutos depois da minha análise, mandei novamente ao virus total e 4 antivirus já tinham detectado o malware, provavelmente peguei no início da campanha.

 

Link do Virus Total: https://virustotal.com/pt/file/26a2b26b2fccdbe915926981d5f63df9fea3d81f9565003149aa31aa06df4f4c/analysis/1463590150/

Se rodar novamente agora provavelmente muitos antivirus já vão identificar.

Se abrirmos o arquivo no bloco de notas podemos ver que existe um bloco gigante de texto sendo passado para uma variável e algumas funções para decifrar este texto. Esta técnica é muito utilizada hoje em dia para tentar escapar de algumas assinaturas

Neste grande blocão de texto temos todo o código que vai alterar o registro, baixar o resto do malware, alterar algumas configurações e etc.

O resto do código é só pra decifrar esse código cifrado. A função de decode é basicamente diversos base64_decode, xor entre partes de 17 caracteres e algumas outras substituições. Não tentei decifrar manualmente, consumiria muito tempo, resolvi executar e capturar todas as mudanças e pedaços de código que conseguisse. Estas funções de obfuscação tendem a ser muito complexas, encadeando diversas funções umas nas outras para desencorajar quem estiver analisando.

Então, a primeira coisa que notei analisando os logs das ferramentas que deixei rodando é que este script quando roda tenta consultar o domínio dahamarli.xyz e c.fihajaut.xyz na porta 444.

Neste site, em uma url maluca (GET /xxx/8d4adcef?b890088ee4fd908bdfdc1b024cb2b8fd) o script baixa um arquivão de 15MB, que será descomprimido/separado em diversos arquivos.

 

Enviando eles para o virus total 2 deles foram identificados como malware (dahamarli_xyz[1] e Data-Search.dll)

Outra coisa interessante que uma das ferramentas de análise dinâmica encontrou foi uma tentativa de conseguir persistência injetando dados no processo rundll32.exe:
“wscript.exe” allocated memory in “%WINDIR%\System32\rundll32.exe”
Além do processo wscript.exe o malware também cria o processo keytool.exe

O malware também acessa parâmetros de criptografia do registro do windows, provavelmente ele chama alguma função de criptografia para decifrar aquele blocão inicial de texto em código:

“wscript.exe” (Path: “HKLM\SOFTWARE\MICROSOFT\CRYPTOGRAPHY”; Key: “MACHINEGUID”)

Cria diversos arquivos:

“wscript.exe” created file “C:\Windows\System32\en-US\WScript.exe.mui”
“wscript.exe” created file “C:\Windows\System32\WScript.exe”
“wscript.exe” created file “C:\Windows\Globalization\Sorting\sortdefault.nls”
“wscript.exe” created file “C:\Windows\system32\rsaenh.dll”
“wscript.exe” created file “C:\Windows\system32\wshom.ocx”
“wscript.exe” created file “C:\Windows\system32\en-US\KERNELBASE.dll.mui”
“wscript.exe” created file “C:\Windows\System32\msxml3r.dll”
“wscript.exe” created file “C:\Windows\System32\msxml3.dll\1”
“wscript.exe” created file “C:\Windows\System32\msxml3.dll”
“wscript.exe” created file “%APPDATA%\Microsoft\Windows\Cookies”
“wscript.exe” created file “%LOCALAPPDATA%\Microsoft\Windows\History”
“wscript.exe” created file “C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\index.dat”
“wscript.exe” created file “C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\5E4YAL0D”
“wscript.exe” created file “C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\5E4YAL0D\desktop.ini”
“wscript.exe” created file “C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\XEIBNJZA”
“wscript.exe” created file “C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\XEIBNJZA\desktop.ini”
“wscript.exe” created file “C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\M1P475FU”
“wscript.exe” created file “C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\M1P475FU\desktop.ini”

Modifica os certificados confiáveis para que a página falsa apareça confiável e assinada, como um banco deve ser:

“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA”)
“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA\CERTIFICATES”)
“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA\CRLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA\CTLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA\CERTIFICATES”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA\CRLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\CA\CTLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED”)
“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED\CERTIFICATES”)
“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED\CRLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKCU\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED\CTLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED\CERTIFICATES”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED\CRLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\DISALLOWED\CTLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\ROOT”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\ROOT\CERTIFICATES”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\ROOT\CRLS”)
“wscript.exe” (Access type: “CREATE”; Path: “HKLM\SOFTWARE\POLICIES\MICROSOFT\SYSTEMCERTIFICATES\ROOT\CTLS”)

 

Identifica a linguagem do sistema (talvez aqui ele tenha parado de executar ou tenha dado errado em alguma coisa, já que ele foi feito especialmente para estações brasileiras):

“wscript.exe” (Path: “HKLM\SYSTEM\CONTROLSET001\CONTROL\NLS\CUSTOMLOCALE”; Key: “EN-US”)
“wscript.exe” (Path: “HKLM\SYSTEM\CONTROLSET001\CONTROL\NLS\EXTENDEDLOCALE”; Key: “EN-US”)
“wscript.exe” (Path: “HKLM\SYSTEM\CONTROLSET001\CONTROL\NLS\LOCALE”; Key: “00000409”)
“keytool.exe” (Path: “HKLM\SYSTEM\CONTROLSET001\CONTROL\NLS\CUSTOMLOCALE”; Key: “EN-US”)
“keytool.exe” (Path: “HKLM\SYSTEM\CONTROLSET001\CONTROL\NLS\EXTENDEDLOCALE”; Key: “EN-US”)

 

E por fim cria processos e migra tudo para onde não chame a atenção, com processos padrões do windows:

Spawned process “rundll32.exe” with commandline “rundll32 data-search.dll,#1 00008782” (UID: 00024580-00002864)
Spawned process “svchost.exe” with commandline “%WINDIR%\system32\svchost.exe -k LocalServiceNetworkRestricted 00008782” (UID: 00024601-00001756)
Spawned process “svchost.exe” with commandline “%WINDIR%\system32\svchost.exe -k LocalSystemNetworkRestricted 00008782” (UID: 00024641-00001816)

 

Abaixo alguns dos arquivos baixados pelo script com seu tipo identificado pela ferramenta de análise dinâmica:

“3ae37555.tmp” has type “PEM certificate”
“HelperModule.lnk” has type “MS Windows shortcut Item id list present Points to a file or directory Has Relative path Has Working directory Has command line arguments Icon Archive ctime=Mon Jul 13 23:41:43 2009 mtime=Mon Jul 13 23:41:43 2009 atime=Tue Jul 14 01:14:31 2009 length=44544 window=hide”
“dahamarli_xyz[1]” has type “data”
“dahamarli_xyz[1]” has type “PE32 executable (DLL) (GUI) Intel 80386 for MS Windows”
“prefs.js” has type “ASCII text with very long lines with CRLF line terminators”
“{4C285BCE-A8F9-E92B-8702-E03D4A012352}.xpi” has type “Zip archive data at least v2.0 to extract”
“04c2f310.tmp” has type “PEM certificate”
“extensions.json” has type “ASCII text with very long lines with no line terminators”
“Data-Search.dll” has type “PE32 executable (DLL) (GUI) Intel 80386 for MS Windows”
“%OSUSER%@dahamarli[1].txt” has type “ASCII text”
“Ident Tapi.lnk” has type “MS Windows shortcut Item id list present Points to a file or directory Has Relative path Has Working directory Has command line arguments Icon Archive ctime=Mon Jul 13 23:41:43 2009 mtime=Mon Jul 13 23:41:43 2009 atime=Tue Jul 14 01:14:31 2009 length=44544 window=hide”
“exception.sites” has type “ASCII text with CRLF line terminators”
“en-US.pak” has type “data”
“trusted.certs” has type “Java KeyStore”
“deployment.properties” has type “ASCII text with CRLF line terminators”
“icudt.dll” has type “PE32 executable (DLL) (GUI) Intel 80386 for MS Windows”

 

E por último, a informação provavelmente mais importante, algumas das páginas que ele redireciona para a fake que consegui descobrir:

keytool.exe -import -alias “deploymentusercert$tsflag$loc=https//aapj.bb.com.br:443##docbase:https//aapj.bb.com.br:443##from:https//aapj.bb.com.br:443java.util.random@0e6f5d” -file “%TEMP%\\3ae37555.tmp” -keystore “%LOCALAPPDATA%\ow\Sun\Java\Deployment\security\trusted.certs” -storepass “changeit” -noprompt

keytool.exe -import -alias “deploymentusercert$tsflag$loc=https//www.ne2.bradesconetempresa.b.br:443##docbase:https//www.ne2.bradesconetempresa.b.br:443##from:https//www.ne2.bradesconetempresa.b.br:443java.util.random@a4cd80″ -file “%TEMP%\\04c2f310.tmp” -keystore “%LOCALAPPDATA%\ow\Sun\Java\Deployment\security\trusted.certs” -storepass “” -noprompt

 

E era isso que eu consegui descobrir!

Vou seguir rodando aqui e testando, tentando tirar o máximo de informação dele.

Achou interessante ou quer contribuir? Faça sua análise e compartilhe aqui ou nos grupos do Facebook e Telegram da BS o que você encontrou.

Até a próxima.

Como fazer uma análise de malvware via automação usando o Cuckoo Sandbox

Como fazer uma análise de malvware via automação usando o Cuckoo Sandbox

 

Se você se interessa por análise de malware em algum momento deve ter se deparado com ferramentas de análise de malware automatizadas como Virustotal, FireEye, Anubis, Payload-security, malwr, entre outras. Entre todas estas você também deve ter ouvido falar do Cuckoo Sandbox. Uma sandbox automatizada open source.

Toda a análise de malware pode ser automatizada de uma forma simples com o Cuckoo. Veja abaixo algumas funcionalidades da ferramenta:

  • Análise automática em múltiplas VMs
  • Identificação de tipo de arquivo
  • Geração e comparação de Hashs MD5, SHA1, SHA256 e SHA512 com banco de dados
  • Envio de amostra para análise no VirusTotal
  • Identificação de assinatura
  • Screenshots de modificações no sistema infectado
  • Informações de versão e compilação
  • Sessões do arquivo
  • Imports realizados e chamadas a DDLs
  • Strings
  • Arquivos baixados pelo artefato
  • Análise de rede
  • Processos envolvidos
  • Análise com Volatility

 

O que você irá precisar

  • Cuckoo Sandbox: O Cuckoo pode ser baixado pelo Github.
  • Dezenas de dependências, plugins e softwares: Não vou focar aqui na instalação do cuckoo já que pode variar de acordo com sistema operacional host, plugins e utilitários instalados. Para mais informações sobre instalação você pode consultar a documentação oficial, este tutorial específico (caso use macOS), ou utilizar uma distro linux com o Cuckoo previamente instalado como a BugTraq. Atenção: O sistema que o Cuckoo vai ser instalado não pode ser uma VM, já que ele irá gerenciar e rodar outras VMs dentro dele. Você precisa instalar ele diretamente no HD. VM dentro de VM não é uma boa idéia.
  • Software de virtualização: O padrão do Cuckoo é o Virtualbox mas também é possível configurar VMWare e outros.
  • Máquinas virtuais: Diversas VMs, com diversos SOs, diversas versões, diversos softwares instalados em cada uma, com versões vulneráveis e versões atualizadas, etc, vai da sua disponibilidade de recurso e criatividade. Importante: Utilize as VMs no modo Host-only e crie roteamento no host para elas sairem para internet para o Cuckoo poder interceptar e analisar o tráfego de rede.
  • Snapshot das VMs: Assim que tudo estiver instalado em cada VM salve um snapshot para poder voltar caso um artefato danifique o sistema ou algo muito errado aconteça.
  • Cuckoo Agent: Após tudo configurado coloque o agente do Cuckoo nas VMs. O agente pode ser encontrado na pasta de instalação do Cuckoo no host.

 

Assim que tiver tudo isso (bastante coisa mesmo) e nada ter dado errado no download e instalação, precisamos apenas verificar algumas configurações e tudo vai estar pronto para começar a analisar malwares.

cuckoo.conf

 

Neste arquivo temos algumas configurações que devem ser verificadas, como por exemplo o IP do host para enviar os logs, diretórios temporários e de relatório, tamanho de arquivo, etc. Caso use Virtualbox todas as configurações aqui podem ser as default. Interfaces para as VMs sairem para a internet também são setadas aqui. O virtualizador utilizado deve ser informado neste arquivo (default: virtualbox).

 

virtualbox.conf (ou outro .conf do virtualizador que escolher utilizar)

 

Neste arquivo temos diversas coisas para verificar, algumas destas são o diretório da ferramenta de virtualização, a interface virtual do virtualizador, o IP da VM, plataforma, quantidade de VMs e seus respectivos nomes, nomes dos snapshots para o qual a VM será revertida ao final da análise, entre outos.

 

Uso

Agora sim, com tudo instalado e configurado podemos começar a usar o Cuckoo Sandbox. Você pode utiliza-lo de duas formas: Via interface web ou via linha de comando.

Via interface web a utilização é bem simples, similar a outras ferramentas de análise de malware já citadas. Um campo para inserir o artefato a ser analisado e um botão para iniciar a análise. Também tem a disposição um dashboard com informações de análises anteriores, relatórios e configurações da ferramenta você também pode trocar paysafecard por bitcoin usando esse site: paysafecard to bitcoin para fazer isso.

Para utilizar o Cuckoo pelo terminal é necessário 3 abas do terminal, uma para inicializar o virtualizador, uma para inicializar o Cuckoo e uma para submeter os artefatos. Para submeter os artefatos utilize o script python disponível na pasta “utils”, dentro da pasta de instalação do Cuckoo.

Assim que a análise for concluída o Cuckoo vai gerar um relatório em html ou outro formato definido no .conf similar ao relatório da imagem abaixo:

 

E este é o funcionamento básico do Cuckoo!

Depois de entender como ele funciona você pode modificar e customizar algumas coisas, como novas bases de assinaturas e adicionar outros plugins para analisar ou automatizar funções.

Espero que este pequeno artigo seja útil.

Caso tenha alguma dúvida ou problema nos procure no Grupo do Facebook ou no Grupo de Telegram!

Divirta-se analisando malware! 😀