Skip to content

Latest commit

 

History

History
238 lines (185 loc) · 36.8 KB

ferramentas.md

File metadata and controls

238 lines (185 loc) · 36.8 KB

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. Suporta templates e scripts. Alguns dizem que é o melhor atualmente.
bvi Livre Editor de interface de texto (TUI), similar ao HT Editor. Tem versão para DOS/Windows mas reina mesmo é no Linux.
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) com uma abordagem 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.
Hexinator Shareware Linux, macOS e Windows. Tem templates (chamados de "grammars"), scripting em Python e Lua e compara binários.
hexxed Livre Baseado na ncurses, portanto de interface gráfica de texto. Tinha potencial, mas o desenvolvimento parou no final de 2022.
Hiew (Hacker's View) Comercial Editor (e disassembler) muito poderoso, principalmente por conta de seus 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. Tem muitos recursos, mas infelizmente o desenvolvimento parou em 2015. Hora de alguém fazer um fork!
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, macOS 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.
Synalyze It! Comercial Para macOS, desenvolvido por quem faz o Hexinator. Tem o mesmo nível de recursos.
wxHexEditor Livre Multiplataforma, recursos interessantes. Infelizmente o desenvolvimento parou em 2017.
XVI32 Freeware Sem muitos recursos, mas quebra um galho no Windows para uma edição rápida.

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.
Edump Freeware Parser de linha de comando para Windows. Suporta arquivos NE, LX/LE, PE/PE32+, ELF/ELF64 (little-endian), Mach-O (little-endian), e TE.
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 APKs.
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).
readelf Livre Também parte do binutils, analisador de ELF.
readpe Livre Anteriormente chamado de pev, este é o nosso 💚 toolkit de ferramentas de linha de comando para análise de PE. Artigo introdutório aqui.
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.
HyperDbg Livre Debugger que roda no nível do hypervisor, também conhecido como ring -1.
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
Reko Livre Descompilador genérico com versão de linha de comando, gráfica e até web.
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 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.
System Informer (antigo Process Hacker) Livre Talvez o melhor da categoria. Mostra os handles, objetos, processos, quem tá usando o que e muita mais.

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┊×J@00000│
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

$ 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 -Ax -tx1 -N32 /bin/ls
0000000    7f  45  4c  46  01  01  01  00  00  00  00  00  00  00  00  00
0000010    03  00  28  00  01  00  00  00  21  3e  00  00  34  00  00  00
0000020

$ 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.