Extraindo o máximo de informações com o PEframe

Olá pessoal, esse post será o primeiro de uma série voltada ao “kali linux” da análise de malware e engenharia reversa, estamos falando do REMNUX. A abordagem vai ser bem simples para facilitar o entendimento, com objetivo de atingir os sysadmin e analistas de segurança que não tem conhecimento em reversing e precisam fazer um assessment de algum RAT, botnet e afins.

Usaremos técnicas de análise estática especificamente em PE(Portable Executable) e arquivos genéricos. Esse tutorial vai basicamente te ensinar a identificar algumas informações que serão primordiais para prosseguir com seu processo de identificação do malware ( algo como puxar a ficha do sujeito hehehhehe) e identificar informações como: packer, xor, assinatura digital, mutex, anti debug, anti VM, funções suspeitas, e outras informações que podem ajudar você a declarar que aquele arquivo é realmente um malware ou comprar assinaturas de outros malwares existente para denominar sua função.

Então, mãos na massa ;)! Nosso primeiro assessment será com o PEframe, open source e escrita em python <3. Dê um git clone no projeto ou execute a VM do Remnux usando o Virtualbox, VMWare ou usando Docker para começarmos:

OBS: Use um sample de sua preferência ou faça o download do meu ( BITCOIN GENERATOR)  senha: infected

1 – Use o seguinte comando sem nenhum parâmetro, inserindo o caminho do seu arquivo:

malwarev@remnux:~# peframe bitcoin.exe

Com apenas um comando já temos informações relevantes sobre o PE. Separados por número, vamos ver o que o output exibe:

  1. Informações básicas como data que o malware foi compilado, hashs, já foi detectada a presença de packer(compactação de arquivos), diretórios que ele cria ao ser extraido.
  2. Packers utilizados, ou seja, quais ferramentas de compactação o cibercriminoso usou para diminuir consideravelmente o seu malware.
  3. Possíveis funções maliciosas detectadas pelo PEframe baseadas em hashs.
  4. Real nome do arquivo, lib utilizada(no nosso malware vimos q é a mscoree.dll) e db.
  5. Por último, informações como versão do asm, copyright do autor do malware( Copyright \xa9  2016), versão do malware e afins.

2 – Para obter um output completo em json e usar em sua ferramenta de report, use o seguinte comando:

malwarev@remnux:~# peframe –json bitcoin.exe >> saida_json

Veja o resultado do output: https://pastebin.com/raw/zA8f9vmf

3 – Exibindo dll’s presentes no seu PE; use o seguinte comando:

malwarev@remnux:~# peframe –import bitcoin.exe
Imported [1] DLL and [1] Functions
————————————————————
mscoree.dll 0x402000 _CorExeMain

4 – Realizando um dump do seu malware para adquirir informações mais precisas como endereços de memórias, hashs de arquivos dropado pelo malware e C2, use o comando:

malwarev@remnux:~# peframe –dump bitcoin.exe >> dump_malware

A saída será dessa forma: https://pastebin.com/raw/ExiPAi3e

5 – E por último, verificação de strings, use o comando abaixo:

malwarev@remnux:~# peframe –strings bitcoin.exe >> strings_malware

Vale lembrar que em muitos malwares as strings vem criptogradas, exigindo uma análise mais detalhada. Em nosso caso, conseguimos descobrir em quais versões do Windows o nosso PE pode ser executado:

Informações do compilador. Abaixo podemos perceber qual versão do VisualStudio o autor do malware usou para compilar seu projeto:

E para terminar, as sections:

Uffa, terminamos ;)…

Para resumir, conseguimos adquirir informações relevantes do malware sem ter q executá-lo, fazendo uso do PEframe e realizando análise estática do PE. Fique de olho no próximo post para evoluir mais ainda no caça aos malwares e elevar suas skills em reversing.

PEframe: https://github.com/guelfoweb/peframe
OS utilizado no LAB: Remnux remnux.org
Nosso grupo no Telegram: https://t.me/MalwareReverseBR

Experiência em ambientes open source e Pentesting. Atualmente sou freelancer e sempre aberto para participações em projetos e atividades voltadas ao hacking e análise de malwares. Participe do grupo de discussões no Telegram: https://t.me/MalwareReverseBR

Leave a reply:

Your email address will not be published.