Jump to content
  • Montando sua máquina virtual para engenharia reversa em Windows

       (0 reviews)

    Fernando Mercês
     Share

    Resolvi montar este tutorial depois do grande trabalho que tive pra atualizar a máquina virtual que utilizo para analisar malware. Perdi horas procurando e instalando programas. Minha vontade era de distribuir um OVA com a máquina já pronta e talvez faça isso no futuro mas por hora vou discutir aqui os programas que utilizo para uma análise básica de malware ou engenharia reversa de algum software.

    desktop.png.9405a44c6808797ffc7e9305995b31cb.png

    Máquina virtual

    • 512 MB de memória
    • Placa de rede em modo NAT

    Sistema operacional

    Utilizo o Windows 7 64-bits em Português do Brasil, para facilitar na análise de malware brasileiro que teste o idioma do SO. Claro que em alguns casos vale a pena você ter máquinas virtuais de outras versões do Windows e em diferentes idiomas para ver se o comportamento do seu alvo muda. “Alvo” aqui significa o arquivo que você vai analisar, seja porque ele é suspeito seja porque você quer conhecer seu funcionamento.

    Algums dicas durante de instalação:

    • Não utilizar seu nome verdadeiro na criação da conta de usuário do Windows durante a instalação. Não há necessidade.
    • Não instalar as extensões do software virtualizador como VMware Tools ou VirtualBox Guest Additions.
    • Não instalar nenhum antivírus, firewall ou qualquer software de proteção.
    • Desabilitar todos os itens na “Central de Segurança” do Windows, incluindo as atualizações automáticas.

    Arquivos diversos

    Costumo espalhar uns arquivos .doc, .xls etc pela máquina, a fim de parecer que é uma máquina real. Algumas ameaças (principalmente ransomware) tentam encriptar ou mesmo destruir arquivos das vítimas.

    Software geral

    • 7-Zip: Descomprime qualquer formato! E é livre.
    • Firefox: Browser livre.
    • Flash: Caso precise analisar SWF ou visualizar algum site que exija, mas cuidado pra não baixar tralha da McAfee junto.
    • Java: Somente a JRE (Java Runtime Environment), para analisar classes Java.
    • .NET Framework: Para permitir que ferramentas e alvos escritos nesta linguagem rodem.
    • Notepad++: o único editor de arquivos que você precisa no Windows!

    Software específico

    • API Monitor: Pode monitorar qualquer chamada a uma função específica da API do Windows ou de uma DLL específica. Muito bom.
    • DeDe: Descompilador para Delphi. Extremamente útil para os malwares brasileiros!
    • Dis#: Descompilador para .NET.
    • E2A (Event to Address): Somente para alvos escritos em Borland C++, dá os endereços dos eventos, como o clique de um botão por exemplo. Impressionante.
    • FileGrab: Monitora o filesystem e copia para um diretório qualquer arquivo criado nele. Útil pra monitorar comportamento de malware que se deleta.
    • Hex Workshop: Editor hexa animal, mas pago (não se preocupe, há um livre no final da lista).
    • IDA Free: Disassembler e debugger. Tem uma função graph muito útil, além de suporte a vários tipos de binários e muitos recursos.
    • JD-GUI: Descompilador Java (gera código Java a partir dos .class).
    • .NET Reflector: Outro descompilador pra .NET. Assim como o Dis#, gera MSIL (Microsoft Intermeddiate Language) como saída, não Assembly.
    • OllyDbg: Debugger e disassembler. O principal programa para análise.
    • pev: Toolkit para análise de binários.
    • ProcessExplorer: Monitora o que os processos estão fazendo no sitema (chaves de registro que estão abrindo, outros arquivos etc).
    • RawCap: Sniffer de pacotes que usa raw sockets. É muito rápido e simples de usar. Gera o PCAP pra ser analisado no Wireshark futuramente, o que pode ser feito fora da máquina virtual.
    • RegShot: Usado para tirar uma “foto” do sistema antes e outra depois da execução de um aplicativo, a fim de compará-las para investigar o que foi alterado.
    • wxHexEditor: Editor hexadecimal livre, cheio de recursos. Tem a capacidade de editar discos inclusive.

    Software opcional, caso precise programar

    • Orwell Dev-C++: Versão em constante atualização do Dev-C++, para quem precisar codar em C/C++ para ver o comportamento de uma função da API do Windows por exemplo.
    • Visual Studio Express: Para desenvolver em .NET, a Microsoft oferece uma versão gratuita (Express) do Visual Studio.

    IMPORTANTE: Após instalar todos os softwares, é de extrema utilidade criar um snapshot da máquina virtual, pra você voltar facilmente a este estado limpo após analisar um arquivo suspeito, por exemplo.

    Se você é iniciante, recomendo baixar e testar um programa de cada vez, até entender o motivo pelo qual ele pode ser útil. Alguns programas da lista acima são redundantes entre si pois possuem o mesmo objetivo, mas às vez um é mais preciso que outro dependendo do alvo, por isso é interessante mantê-los.

    Recomendo colocar as ferramentas que não possuem programa de instalação, como o E2A, num diretório tipo C:tools e criar atalhos para os executáveis principais na área de trabalho.

    O artigo é curto mas o trabalho que o leitor terá é grande.


    Revisão: Leandro Fróes
     Share


    User Feedback

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.
    Note: Your post will require moderator approval before it will be visible.

    Guest

    • This will not be shown to other users.
    • Add a review...

      ×   Pasted as rich text.   Paste as plain text instead

        Only 75 emoji are allowed.

      ×   Your link has been automatically embedded.   Display as a link instead

      ×   Your previous content has been restored.   Clear editor

      ×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Fernando Mercês
      No últmo artigo falei sobre como montar uma máquina virtual básica para ER em Windows. Agora chegou a vez do Linux, já que o mundo não é feito só de PE. 🙂
       A ideia aqui é montar um ambiente legal para reverter binários ELF. Dá uma olhada neste vídeo (em tela cheia de preferência) pra ter uma ideia do poder dessas ferramentas:
      Legal né? Então mãos à obra!
      Máquina virtual
      1 GB de memória Placa de rede em modo NAT Sistema operacional
      Utilizo a ISO netinstall do Debian 64-bits, mas como sempre você é livre para utilizar a distribuição que quiser, só que este artigo é escrito com base nesta. 😉
      Algumas dicas de instalação:
      Não utilizar seu nome verdadeiro na criação da conta de usuário. Não instalar as extensões do software virtualizador como VMware Tools ou VirtualBox Guest Additions. Não configurar nenhuma regra de firewall ou qualquer software de proteção. /etc/apt/sources.list
      Eu deixo do seguinte jeito:
      deb http://deb.debian.org/debian/ testing main contrib non-free deb-src http://deb.debian.org/debian/ testing main contrib deb http://security.debian.org/debian-security testing-security main contrib non-free deb-src http://security.debian.org/debian-security testing-security main contrib O importante aqui é ter o contrib non-free após o main, já que alguns programas como o rar não são livres.
      Depois de configurado este arquivo, é bom atualizar os pacotes existentes:
      # apt update # apt upgrade -y Instalação de software
      Agora é hora de instalar os pacotes necessários:
      # apt install man gdb binutils vim strace ltrace ht build-essential tcpdump unhide foremost sudo p7zip-full rar unrar fasm gcc-multilib git file zip unzip python3-pip GEF
      Este é um plugin para o GDB que adiciona muitos recursos:
      # pip3 install capstone keystone-engine unicorn ropper # git clone https://github.com/hugsy/gef.git # echo "source $PWD/gef/gef.py" >> ~/.gdbinit Observações finais
      Após instalar todos os softwares, é de extrema utilidade criar um snapshot da máquina virtual, pra você voltar facilmente a este estado limpo após analisar um arquivo suspeito, por exemplo. Não precisa instalar um ambiente gráfico. Existe uma distribuição Linux chamada REMnux com foco em engenharia reversa, se você preferir.
    • By Fernando Mercês
      Versão 0.1 do nosso livro "Fundamentos para Engenharia Reversa", também disponível online.
    • By Felipe.Silva
      Livro em Português sobre Assembly em constante desenvolvimento. É de autoria do @Felipe.Silva, membro da comunidade aqui! 🤗
    • By Bruna Chieco
      O Siloscape é o primeiro malware que tem como alvo os contêineres do Windows – tecnologia para empacotamento e execução de aplicativos. Segundo o ThreatPost, o malware implanta backdoors e nós de invasão para obter credenciais de usuários.
      A campanha em andamento perfura os clusters do Kubernetes – sistema de orquestração de contêineres open-source – para a implantação de backdoors, permitindo que os invasores roubem dados e credenciais do usuário ou sequestrem bancos de dados inteiros hospedados em um cluster.
      Segundo a reportagem, o malware foi descoberto pelo pesquisador de segurança da Unidade 42, Daniel Prizmant, que o apelidou de Siloscape, ou "Fuga do Silo". O malware explora vulnerabilidades conhecidas em servidores da web e bancos de dados para comprometer os nós do Kubernetes e os clusters de backdoor. 
      Prizmant fez um trabalho de engenharia reversa para conseguir se conectar ao servidor de comando e controle (C2) do Siloscape, onde descobriu que estava hospedando um total de 313 usuários. Isso implica que o Siloscape é uma pequena parte de uma campanha mais ampla, observou ele. Prizmant destaca que o Siloscape é um malware fortemente ofuscado. 
      Os pesquisadores da Unidade 42 identificaram 23 vítimas do Siloscape e disseram que as evidências indicam que a campanha foi lançada há mais de um ano, podendo ter iniciado em janeiro de 2020. 
      A recomendação é que os usuários sigam o conselho da Microsoft para não usar contêineres do Windows como um recurso de segurança. Em vez disso, a Microsoft recomenda o uso estritamente de contêineres Hyper-V para qualquer coisa que dependa da conteinerização como limite de segurança. 
    • By Leandro Fróes
      Depois de muita espera a NSA anunciou oficialmente a inclusão de um debugger no Guidra na sua versão 10.0. Depois de muita discussão sobre esta possibilidade o time de desenvolvimento do framework lançou uma release beta da versão 10.0 ontem!
      Neste momento o debugger suporta analisar aplicações em userland e consegue debuggar tanto binários Windows quanto Linux (utilizando o gdb neste caso). Para quem quer começar logo de cara o Guidra disponibiliza um tutorial de início rápido em Help -> Guidra Functionality -> Debugger -> Getting Started:

      Existem várias formas de iniciar o debugger, desde clicando com o Botão direito -> Open With -> Debugger até direto da sua Project Window do Guidra clicando no ícone de "bug" debaixo de "Tool Chest", como mostrado abaixo:

      Uma vez que a ferramenta é inicializada você deve importar o arquivo a ser depurado para a ferramenta. Uma das formas de fazer isto é simplesmente o arrastando da Project Window. Uma fez carregado podemos ver a cara do mais novo debugger do Guidra:

      Algumas das funcionalidades são: debugging remoto utilizando GDB e windbg, rodar o debugger direto no programa do qual você está analizando estaticamente e tracing de memória.
      Além disso ele também conta com as funcionalidades básicas de um debugger como utilização de breakpoints, listagem de regiões de memória mapeadas, estados dos registradores e uma interface de linha de comando própria.
      Todas as funcionalidades listadas aqui possuem sua própria View, isto é, sua própria janela dentro da ferramenta:


      Vale lembrar que esta release está em sua versão beta e tem como objetivo principal coletar o feedback da comunidade. Caso queira dar uma testada e/ou dar um feedback pra galera do Guidra basta baixar a release clicando no botão abaixo 😉.

×
×
  • Create New...