Ferramentas

Esta seção aborda não somente ferramentas utilizadas no livro, mas também outras que vale a pena citar na esperança que o leitor se sinta atraído a baixar, usar e tirar suas próprias conclusões em relação à eficiência delas.

Editores hexadecimais

Este tipo de ferramenta é útil para editar arquivos binários em geral, não somente executáveis, dumpar (copiar) conteúdo de trechos de arquivos, etc. Também é possível editar uma partição ou disco com bons editores hexadecimal a fim de recuperar arquivos, por exemplo.

Nome

Licença

Descrição

010 Editor

Shareware

Multiplataforma, bastante usado.

fhex

Livre

Editor gráfico multiplataforma capaz de exibir o binário graficamente, além de suportar expressões regulares na busca.

GNU poke

Livre

Editor REPL genérico (não só para executáveis), ainda em beta, mas muito interessante. Escrevemos um artigo sobre.

Helium Hex Edtitor

Comercial

Editor incrível para Windows. Tem recursos muito legais como edição e alocação de memória, operações com dados (XOR, SHL, etc) e na versão paga tem suporte a vários algoritmos criptográficos, disassembly e mais.

Hex Workshop

Comercial

Pago, somente para Windows, antigo, mas muito bem feito.

HexFiend

Livre

Somente para macOS, com recursos legais como diff e data inspector.

hexxed

Livre

Novo, baseado na ncurses, portanto de linha de comando. Tem potencial e vale o teste.

Hiew (Hacker's View)

Comercial

Editor (e disassembler) muito poderoso, principalmente por conta de seeus módulos HEM. Tem suporte à vários formatos e é muito usado por analistas de malware, mas é pago.

HT Editor

Livre

Interface gráfica baseada em texto, parecido com o Hiew. Feio, mas cumpre seu trabalho.

HxD

Freeware

Bem bom. Possui recursos extras como geração de hashes e suporte a abrir discos.

ImHex

Livre

Impressionante editor gráfico para Windows e Linux. Possui uma linguagem de patterns para aplicar no arquivo, exporta/importa patches e muito mais.

Reverse Engineer's Hex Editor

Livre

Nova proposta de um editor especificamente para engenharia reversa.

wxHexEditor

Livre

Multiplataforma, recursos interessantes.

XVI32

Freeware

Sem muitos recursos, mas quebra um galho.

Analisadores estáticos de executáveis

Analisam estaticamente os binários, sem carregá-los. São úteis para uma primeira visão sobre um executável desconhecido.

Nome

Licença

Descrição

capa

Livre

Detecta as capacidades de executáveis PE e shellcodes para Windows.

CFF Explorer

Freeware

Sendo parte do Explorer Suite, é na real um editor de PE. Com ele é possível adicionar imports, remover seções, etc.

DIE (Detect It Easy)

Freeware

Detecta compilador, linker, packer e protectors em binários. Também edita os arquivos.

DUMPBIN

Freeware

Analisador de PE de linha de comando disponível no SDK do Visual Studio.

Exeinfo PE

Freeware

Detecta compilador, packer, protectors e edita os arquivos, além de suportar vários plugins loucos. Tem versão VIP mediante doação.

Malwoverview

Livre

Mais um nacional pra uma primeira impressão de arquivos suspeitos, URLs e domínios. Checa também APK's. :)

objdump

Livre

Parte do GNU binutils, também analisa PE, além de ELF, a.out, etc.

PE-Bear

Freeware

Analisador gráfico (Qt) multiplataforma que também detecta packers/protectors.

PEdump

Livre

Analisador online muito legal!

pestudio

Freeware

Analisador de PE padrão da indústria, com foco em malware. Tem versão Pro (paga).

pev

Livre

Nosso 💚 toolkit de ferramentas de linha de comando para análise de PE. Artigo introdutório aqui.

readelf

Livre

Também parte do binutils, analisador de ELF.

Stud_PE

Freeware

Analisador e editor com suporte a plugins, assinaturas do antigo PEiD, editor de recursos e mais.

Bibliotecas para parsear executáveis

Nome

Licença

Descrição

BFD

Livre

Binary File Descriptor é a biblioteca usada por programas como readpe e objdump. Tem suporte a muitos tipos de arquivos, incluindo PE e ELF, claro.

libpe

Livre

Nossa 💚 biblioteca multiplataforma para parsing de arquivos PE.

libPeConv

Livre

Biblioteca em C++ para PE usada pelo PE-Bear.

pefile

Livre

Famosa biblioteca em Python pra fazer qualquer coisa com arquivos PE.

PeNet

Livre

Biblioteca em .Net para PE.

PeParser

Livre

Biblioteca em Java para PE.

pyelftools

Livre

Biblioteca em Python para parsear binários ELF.

Assemblers

Nome

Licença

Descrição

flat assembler (FASM)

Livre

Assembler bem recente que já vem com vários exemplos de código. Windows e Linux.

GNU Assembler (GAS)

Livre

Também chamado simplesmente de as, é o assembler do projeto GNU e provavelmente já está instalado no seu Linux! ;)

Microsoft Macro Assembler (MASM)

Freeware

Atualmente já vem com o Visual Studio da Microsoft, mesmo na versão Community. Segue um tutorial de como compilar um "Hello, world".

Netwide Assembler (NASM)

Livre

Multiplataforma, suporte à sintaxe Intel e bem popular. Veja um tutorial de como compilar um "Hello, world" no Linux.

Yasm Modular Assembler (YASM)

Livre

Multiplataforma, escrito com base no NASM pra ser um substituto mas acho que não vingou. hehe

Disassemblers

Nome

Licença

Descrição

Binary Ninja

Comercial

Novo disassembler que teoricamente compete com o IDA. Possui versão online gratuita mediante registro.

Ghidra

Livre

Disassembler livre lançado pela NSA. Temos um treinamento em vídeo sobre ele.

Hopper

Comercial

Disassembler com foco em binários de Linux e macOS.

IDA

Comercial

Disassembler interativo padrão de mercado. Possui versão freeware.

Debuggers

Nome

Licença

Descrição

dnSpy

Livre

Somente para .NET, descompila, debuga e (dis)assembla.

edb (Evan's Debugger)

Livre

Debugger gráfico (Qt) com foco em binários ELF no Linux.

GDB (GNU Debugger)

Livre

Super conhecido debugger pra Linux do projeto GNU. Tem uma versão não oficial pra Windows também. É modo texto, mas possui vários front-ends como GDBFrontend, dentre outros.

GEF

Livre

O GDB Enhanced Features extende o GDB com recursos para engenharia reversa.

OllyDbg

Freeware

Poderoso debugger, apesar de não mais mantido.

PEDA

Livre

O Python Exploit Development Assistance também extende o GDB, assim como o GEF. A interface é um pouco diferente, no entanto.

WinDbg

Freeware

Debugger ring0/3, parte integrante do SDK do Windows.

x64dbg

Livre

Debugger user-mode para Windows com suporte a 32 e 64-bits.

Desofuscadores

Nome

Licença

Descrição

de4dot

Livre

Para .NET. Conhece vários ofuscadores e permite trabalhar genericamente também.

Threadtear

Livre

Para programas feito em Java. Suporta os ofuscadores mais comuns como Stinger e ZKM.

Descompiladores

.NET

Nome

Licença

Descrição

ILSpy

Livre

Descompilador multiplataforma para .NET.

Delphi

Nome

Licença

Descrição

IDR (Interactive Delphi Reconstructor)

Livre

Para binários compilados em Delphi.

Genéricos (C, C++, Delphi, etc)

Nome

Licença

Descrição

RetDec (Retargetable Decompiler)

Livre

Descompilador para C/C++ feito pelo time do Avast. Inclui detector de compilador e packer, plugins para IDA e radare2.

Snowman

Livre

Descompilador livre para C/C++. Pode ser usado como plugin no IDA, x64dbg, etc.

Java

Nome

Licença

Descrição

CFR

Livre

Descompilador para Java de linha de comando. O output é o código fonte e só.

IntelliJ IDEA

Mista

Na verdade é uma IDE para programação em Java mas mesmo a versão Community possui descompilador e debugger para classes compiladas em Java.

JD-GUI

Livre

Descompilador para Java com GUI.

Procyon

Livre

Para Java, com suporte a recursos novos da linguagem. É modo texto mas há GUI's disponíveis documentadas no link.

Visual Basic

Nome

Licença

Descrição

VB Decompiler

Comercial

Descompilador para VB5/6 e disassembler para VB .NET.

Emuladores

Nome

Licença

Descrição

Qiling

Livre

Framework que combina emulação com instrumentação de binários. É possível emular programas de Windows e Linux, além de outros SOs, incluindo ring0.

Speakeasy

Livre

Emulador feito pela FireEye, inicialmente para programas nativos de Windows (ring0) mas possui um crescente suporta à programas em usermode (ring3), emulando várias das funções da Windows API.

Frameworks

Nome

Licença

Descrição

angr

Livre

Framework para análise estática e simbólica de binários.

Frida

Livre

Framework para instrumentação dinâmica de binários.

PANDA

Livre

Plataforma de análise dinâmica baseada no QEMU, que faz até replay de ações.

Radare

Livre

Suíte completa com debugger, disassembler e outras ferramentas para quase todo tipo de binário existente!

Monitores de processos

Nome

Licença

Descrição

Process Hacker

Livre

Talvez o melhor da categoria. Mostra os handles, objetos, processos, quem tá usando o que e muita mais.

Process Explorer

Freeware

Clássica ferramenta do conjunto SysInternals, que exibe muito mais que o Gerenciador de Tarefas comum.

System Explorer

Livre

Versão do Pavel Yosifovich que conta com algumas vantagens sobre o Process Explorer, como visualizar informações de processos protegidos (através de um driver), listar todas as threads abertas no Windows, todos os jobs, etc.

Sandboxes (Linux)

Existem outros projetos como Limon, Detux, HaboMalHunter, mas na lista abaixo procurei deixar somente os que estão ativos.

Nome

Licença

Descrição

LiSa

Livre

Possui uma API bem simples e suporta binários ELF compilados para x86, x86-64, ARM e MIPS.

Sandboxes (Windows)

Esta lista não inclui serviços de sandbox puramente comerciais.

Nome

Licença

Descrição

DRAKVUF Sandbox

Livre

Projeto co-financiado pelo CERT da Polônia que usa o engine DRAKVUF para criar uma sandbox de Windows 7 ou Windows 10 sem agente no guest.

CAPE

Livre

Sandbox específica para extração de configuração de malware.

Cuckoo

Livre

Provavelmente a sandbox mais popular e utilizada.

Sandboxes (Online)

Nome

Licença

Descrição

Any.Run

Community

Apesar do nome, só suporta artefatos de Windows, mas é muito bom!

Hybrid Analysis

Community

Sandbox muito boa. Também é um portal de investigação inclusive com suporte à regras de Yara.

Joe Sandbox

Community

Um dos primeiros serviços. Suporta ELF (x86 e x86-64), PE e documentos.

Visualizadores hexadecimais

Nome

Licença

Descrição

hdump

Livre

Clone nosso 💚, multiplataforma (funciona no Windows!) do hexdump que imita a saída do hd.

heksa

Livre

Multiplataforma, com saída colorida e recursos interessantes como seek negativo (a partir do fim do arquivo).

HexLasso

Gratuito

Visualizador web que faz análises estatísticas visuais muito úteis.

hexyl

Livre

Multiplataforma, também com output colorido, exibição de borda, etc.

hexdump/hd

Livre

Padrão no BSD e Linux. Se chamado por "hd" exibe saída em hexa/ASCII.

od

Livre

Padrão no UNIX e Linux. O comando od -tx1 produz uma saída similar à do hd.

xxd

Livre

Vem com o vim. Uma saída similar à do hd é obtida com xdd -g1.

Abaixo um comparativo onde dumpamos os primeiros 32 bytes do binário /bin/ls utilizando os visualizadores acima:

$ hdump -n 32 /bin/ls
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00 |..(.....!>..4...|
$ heksa -l 32 /bin/ls
00000┊7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00┊.ELF...Ø ØØØØØØØØ
00010┊03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00┊.Ø(Ø.ØØØ !>ØØ4ØØØ
$ hexyl -n32 /bin/ls
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 7f 45 4c 46 02 01 01 00 ┊ 00 00 00 00 00 00 00 00 │•ELF•••0┊00000000│
│00000010│ 02 00 3e 00 01 00 00 00 ┊ fc 4a 40 00 00 00 00 00 │•0>0•000┊×[email protected]
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘
$ hd -n32 /bin/ls
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00 |..(.....!>..4...|
00000020
$ od -tx1 -N /bin/ls
0000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
0000020 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00
0000040
$ xxd -g1 -l32 /bin/ls
00000000: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 .ELF............
00000010: 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00 ..(.....!>..4...

Outras

Nome

Licença

Descrição

Kaitai Struct

Livre

Se você pensa em parsear um formato desconhecido ou tá estudando PE/ELF, vale olhar este gerador de parser livre.

Intezer Analyzer

Community

Online. Requer um pequeno cadastro. Tem um recursos de identificar "genes" estaticamente de famílias de binários.