Análise em Memória Volátil: Malware Cridex, Trojan Banker
41
0

Análise em Memória Volátil: Malware Cridex, Trojan Banker

Nesta primeira postagem na plataforma PingBack, trarei a vocês a minha análise técnica em memória volátil do Malware Cridex, Sem mais delongas vamos ao que interessa!

Carlos Adriano de Souza Jorge
0 min
41
0

Nesta primeira postagem na plataforma PingBack, trarei a vocês a minha análise técnica em memória volátil do Malware Cridex, Sem mais delongas vamos ao que interessa!

Para desenvolver está análise, utilizei um conhecido software forense, voltado para memória volátil chamado : Volatility

 Essa ferramenta nos ajudará no processo de inspecionar um despejo de memória volátil de um computador potencialmente infectado. Este software nos ajudará a recuperar informações úteis para nós (os últimos arquivos modificados, os processos em execução, etc...) armazenadas na memória do computador.

Para começo, utilizando o software Volatility  apliquei o plugin imageinfo, onde consegui identificar informações sobre a imagem, entre elas o sistema operacional do computador de onde vem esse despejo de memória (WinXPSP2x86).

Figura 01: Informações sobre a imagem.
Figura 01: Informações sobre a imagem.

Como agora temos o sistema operacional do arquivo analisado, podemos especificar a volatilidade do perfil (--profile = WinXPSP2x86), e por meio dele tentar encontrar o que aconteceu no computador da vítima. Iremos começar então analisando os processos e processos pais em execução utilizando o plugin pstree.

Figura 02: Processos em execução.
Figura 02: Processos em execução.

À primeira vista, podemos notar um processo estranho chamado “reader_sl.exe” com o “explorer.exe” (PPID = 1484) como processo pai , que foi um dos últimos processos em execução na máquina. deixaremos anotado está informação e continuaremos observando outros indicadores, vamos extrair da imagem em questão outros fatores importantes a serem analisados como verificar os soquetes em execução e abrir as conexões no computador para averiguação.  Utilizei então respectivamente os plugins connscan e sockets.

Figura 03: Resultado plugin connscan.
Figura 03: Resultado plugin connscan.
Figura 04: Resultado plugin sockets.
Figura 04: Resultado plugin sockets.

O plugin connscan é um scanner para conexões TCP, enquanto sockets irá imprimir uma lista de sockets abertos. Pode se observar com esses resultados duas conexões TCP que são usadas pelo processo PID 1484 (observando as saídas de histórico de comando, podemos facilmente vincular o PID 1484 ao processo explorer.exe). Podemos ver que uma dessas conexões TCP ainda está aberta, a que usa a porta 1038 e se comunica com o endereço IP de destino 41.168.5.140.

Em busca de mais informações, vasculhei os últimos comandos executados, usando o plugin cmdline . Este plugin exibe os argumentos da linha de comando do processo, e com ele descobrimos  o caminho completo dos processos iniciados com PID 1484 e 1640. Sera que o processo “Reader_sl.exe”  é um meliante (kkkk)??

O que podemos afirmar até então é que este processo foi lançado pelo processo explorer, e possivelmente é um classico aplicativo Adobe Reader (muito usado no ano em questão, 2012). Porém, já foi observado uma conexão em execução para um IP externo usado por este processo...

Antes de afirmarmos algo, vamos vasculhar o executável em questão utilizando os seguintes plugins: procdump e memdump:

Figura 05: Resultado plugin procdump.
Figura 05: Resultado plugin procdump.
Figura 06: Resultado plugin memdump.
Figura 06: Resultado plugin memdump.

O primeiro arquivo “executable.1640.exe” é uma restituição do executável “Reader_sl.exe” e o dump extraído “1640.dmp” representa a memória endereçável do processo. Com os artefatos em mãos, pude analiza-los com o comando "strings" do linux, utilizaremos ele com o auxílio do comando grep pois estamos procurando por uma relação entre a parte da informação já recuperada do dump (especificamente a conexão tcp aberta para o IP 41.168.5.140) e este processo 1640.

Figura 07: Resultado do comando strings com auxílio do comando grep.
Figura 07: Resultado do comando strings com auxílio do comando grep.

Para esclarecer o comando acima, foi feita a leitura de todas as strings dentro do arquivo em busca do IP 41.168.5.140. O comando grep combinado com o -C VALOR foi utilizado para obter as linhas anteriores e posteriores ao valor procurado, dando-nos assim mais contexto para as informações  que queríamos encontrar. Aqui pode-se notar que o executável “Reader_sl.exe” está se comunicando com o IP de destino 41.168.5.140 usando de solicitações POST, podemos supor que está exfiltrando informações do computador da vítima.

Não satisfeito com estes resultados decidi então investigar com mais calma o arquivo, utilizando o "less" no arquivo "1640.dmp", pude encontrar alguns domínios intrigantes.

Figura 08: Urls de domínios bancários.
Figura 08: Urls de domínios bancários.

Uma lista de domínios bancários. Foi isso que foi encontrado dentro da  memória do processo, agora o arquivo “Reader_sl.exe” está praticamente condenado como meliante (kkk). Só nos faltou então ver se o executável é malicioso ou não. 

Como ainda não me sinto confortável para fazer uma análise estática, recorri a análise dinâmica para finalizar nosso trabalho. Utilizei o Vírus Total, o mesmo é um serviço online que permite analisar arquivos em busca de padrões, reconhecimento de hash e outras técnicas a ponto de classificar como malicioso/não malicioso.

Obs: A ferramenta é ideal para quem não tem um antivírus instalado no PC ou gostaria de uma segunda opinião, para ter certeza que um arquivo é malicioso ou não.  

Figura 09: Vírus Total executable.1640.exe.
Figura 09: Vírus Total executable.1640.exe.

Podemos ver então que definitivamente este arquivo é um Malware . Utilizando o Hybrid Analysis pude extrair mais informações, a primeira de todas foi a confirmação que o arquivo é um clássico aplicativo Adobe Reader.

Figura 10: Comprovação de um classico aplicativo Adobe reader.
Figura 10: Comprovação de um classico aplicativo Adobe reader.

A segunda coisa que pudemos coletar com a análise do Hybrid Analysis, é que o arquivo em questão possui técnicas contra Engenharia Reversa, contém capacidade de consultar o tempo da máquina e utiliza técnicas de instalação e persistência no ambiente.

Figura 11: Análise do Hybrid Analysis.
Figura 11: Análise do Hybrid Analysis.

Sem sombra de dúvidas as duas fontes de consultas que utilizamos nos mostrou a real faceta do arquivo " executable.1640.exe". Logo abaixo então, iremos pontuar o que já conseguimos de informações em toda a investigação:

  • Um processo incomum "Reader_sl.exe PID 1640"com Explorer como um "ParentPID 1484".
  • Uma conexão para 41.168.5.140:8080 usada pelo PID 1484.
  • IP 41.168.5.140 e domínios de banco encontrados no despejo do processo 1640.
  • O arquivo executable.1640.exe detectado como Trojan malicioso pelas fontes consultadas.

Se esta imagem de memória volátil foi extraída do computador de um usuário comum ou funcionário de alguma empresa, poderíamos concluir que o computador está infectado por um Trojan. 

Análise feita! se este Malware tivesse aparecido em um ambiente empresarial, agora seria a hora de extrair IOCs (Indicadores de Comprometimento), para ajudar a equipe de SOC (Centro de Operações de Segurança) a deixar a rede e ativos seguros. Iremos continuar seguindo essa situação como exemplo . 

OK, encontramos um IP (41.168.5.140) que possivelmente é utilizado como Comando e Controle, mas e se tiverem mais? voltando na Figura 07, podemos ver que o Malware faz uma requisição POST para o caminho " /zb/v_01_a/in /", então utilizei essa string de ponto de procura, para checar se Malware faz outras requisições POST para este mesmo caminho.

Figura 12: Pesquisa por outros IOCs baseado no caminho "<b>/zb/v_01_a/in /</b>".
Figura 12: Pesquisa por outros IOCs baseado no caminho "/zb/v_01_a/in /".

Voilà achamos mais um IOC (IP: 188.40.0.138), com esses dois IOCs em mãos só nos resta ver se podemos associar esses IPs a possíveis nomes de host usando um DNS passivo.

Figura 13: Nomes de hosts, IP&nbsp;<b>188.40.0.138.</b>
Figura 13: Nomes de hosts, IP 188.40.0.138.

Daqui pra frente, teríamos que prosseguir e analisar cada nome de host possível para ver se eles podem ser ligados ao Trojan Banker. Compilando essas informações, forneceríamos esses IOCs para a equipe SOC, a mesma seria responsável pelo processo de verificação e detecção de infecção deste Malware na infraestrutura do empresa, implementando regras de detecção em IPS/IDS, EDR E SIEM de forma customizada.

Cheat sheet Volatility

  Para saber o tipo do despejo de memória volátil:
$ volatility -f MyDump.dmp imageinfo

  Para baixar o processo do arquivo.exe e o arquivo.exe em memória:
$ volatility -f MyDump.dmp --profile = MeuProfile procdump -p MyPid --dump-dir.
$ volatility -f MyDump.dmp --profile = MyProfile memdump -p MyPid --dump-dir.

  Para listar conexões TCP / UDP abertas:
$ volatility -f MyDump.dmp --profile = MyProfile connscan
$ volatility -f MyDump.dmp --profile = MyProfile  netscan

$ volatility -f MyDump.dmp --profile = MyProfile  sockets

  Para saber quais comandos foram executados por último no computador:
$ volatility -f MyDump.dmp --profile = MyProfile cmdline
$ volatility -f MyDump.dmp --profile = MyProfile consoles
$ volatility -f MyDump.dmp --profile = MyProfile cmdscan

  Para saber qual processo está executando:
$ volatility -f MyDump.dmp --profile = MeuPerfil pslist
$ volatility -f MeuDump.dmp --profile = MeuPerfil pstree
$ volatility -f MeuDump.dmp --profile = MyProfile psxview  

Referências

Virus Total: https://www.virustotal.com/gui/

Hybrid Analysis: https://hybrid-analysis.com/

Volatility: https://github.com/volatilityfoundation/volatility

Cridex Malware Sample: http://files.sempersecurus.org/dumps/cridex_memdump.zip