engenharia reversa para principiantes

36
Engenharia reversa para principiantes Conhecimentos e habilidades necessárias para iniciar-se na arte da escovação de bits Wanderley Caloni v1

Upload: wanderley-caloni

Post on 21-Jun-2015

889 views

Category:

Software


4 download

DESCRIPTION

Conhecimentos e habilidades necessárias para iniciar-se na arte da escovação de bits.

TRANSCRIPT

Page 1: Engenharia Reversa para Principiantes

Engenharia reversa para principiantes

Conhecimentos e habilidades necessárias para iniciar-se na arte

 da escovação de bits

Wanderley Caloni

v1

Page 2: Engenharia Reversa para Principiantes

Objetivos

• Inicianteo Apontar caminhos de aprendizado

• Intermediárioo Preencher lacunas de conhecimentoo Gerar dúvidas e questões para serem respondidas

Page 3: Engenharia Reversa para Principiantes

O que é engenharia reversa

Descobrir os princípios tecnológicos de um dispositivo, um objeto ou um sistema (programa).

Sem palavras bonitas: descobrir como funciona.

Page 4: Engenharia Reversa para Principiantes

Onde a engenharia reversa é usada

• Empresas de antivírus (vacina)• Análise de vulnerabilidades (service-packs)• Debugging (e.g. blogue do Mark Russinovich)• Formatos proprietários (e.g. OpenOffice)• SOs fechados (e.g. projeto Wine)

Page 5: Engenharia Reversa para Principiantes

Conhecimentos necessários

• Programaçãoo Conceitos básicoso APIso Arquitetura

Page 6: Engenharia Reversa para Principiantes

Conhecimentos necessários

• Sistema operacionalo Sistema de janelaso Processos e threadso Gerenciamento de memória

Page 7: Engenharia Reversa para Principiantes

Conhecimentos necessários

• Ferramentaso Depuradoreso Disassemblerso Loggers

Page 8: Engenharia Reversa para Principiantes

Programação

• Conceitos básicos• APIs• Arquitetura

Page 9: Engenharia Reversa para Principiantes

Conceitos básicos de programação

Page 10: Engenharia Reversa para Principiantes

Conceitos básicos de programação

• Aprenda lógica• Aprenda C

o C Completo e Total (Schildt)o Treinamento em linguagem C (Mizrahi)o C - A Linguagem de Programação (R&K)

• Programeo Programe

Programe

Page 11: Engenharia Reversa para Principiantes

APIs

Page 12: Engenharia Reversa para Principiantes

APIs

• Aprenda a programar para seu SO preferidoo Programming Windows (Petzold)o Advanced Programming In The UNIX Environment

(Stevens)• Use a documentação como referência

o MSDN• Programe

o Programe Programe

Page 13: Engenharia Reversa para Principiantes

Arquitetura

Page 14: Engenharia Reversa para Principiantes

Arquitetura

• Aprenda os conceitos básicos da arquitetura preferidao Introdução a microprocessadoreso Guia do Programador para IBM PC (Norton)

• Memória e pilha• Assembly

o The Art of Assembly Language (Hyde)• Faça programas simples em assembly

Page 15: Engenharia Reversa para Principiantes

Sistema operacional

• Arquitetura• Sistema de janelas• Processos e threads• Gerenciamento de memória

Page 16: Engenharia Reversa para Principiantes

Arquitetura do sistema operacional

• Divisão modular do sistema operacionalo Microsoft Windows Internals (Russinovich)

• Testes no funcionamento interno do SOo Ferramentas da Sysinternals (sysinternals.com)

• Funcionamento de driverso DriverEntry.com.br

Page 17: Engenharia Reversa para Principiantes

Sistema de janelas

Cada sessão possui d desktops e cada desktop possui w janelas. Cada sessão possui p processos, que possuem n threads, que controlam w janelas.

Page 18: Engenharia Reversa para Principiantes

Sistema de janelas

Page 19: Engenharia Reversa para Principiantes

Sistema de janelas

• Programar para Windowso Programming Windows (Petzold)

• Testar relação e mensagens entre janelas e threadso Ferramenta Spy++ (Microsoft Visual Studio)

Page 20: Engenharia Reversa para Principiantes

Processos e threads

• Um processo é um espaço de memória no sistema que contém uma ou mais linhas de execução (thread).

• Uma thread é uma linha de execução que roda no contexto de um determinado processo.

Page 21: Engenharia Reversa para Principiantes

Processos de um mesmo executável

Page 22: Engenharia Reversa para Principiantes

Criação de um processo

Page 23: Engenharia Reversa para Principiantes

Gerenciamento de memória

• É função do sistema operacional gerenciar a memória física e torná-la disponível para as aplicações.

• A visão de uma aplicação quanto à memória se trata de uma abstração chamada de memória virtual.

Page 24: Engenharia Reversa para Principiantes

Gerenciamento de memória

Page 25: Engenharia Reversa para Principiantes

Gerenciamento de memória

Um endereço virtual é um índice que se traduz em um bloco de memória física alocada.

Page 26: Engenharia Reversa para Principiantes

Gerenciamento de memória

Page 27: Engenharia Reversa para Principiantes

Gerenciamento de memória

• Mais informações:o 1bit.com.br (palestra "Por dentro do Windows:

Gerenciamento de Memória")

Page 28: Engenharia Reversa para Principiantes

Ferramentas

• Depuradoreso WinDbgo OllyDbg

• Disassemblerso IDAo OllyDbg

• Loggerso File Monitoro Registry Monitoro Process Monitor

o Adicionaiso HxDo Process Explorer

Page 29: Engenharia Reversa para Principiantes

WinDbg

Page 30: Engenharia Reversa para Principiantes

WinDbg

• Vem com o pacote "Debugging Tools"• Interface amigável para depuradores console• Depura kernel mode (núcleo do SO)• Extensões poderosas

Page 31: Engenharia Reversa para Principiantes

IDA

Page 32: Engenharia Reversa para Principiantes

IDA

• Disassembler estático e dinâmico• Analisa código de acordo com chamadas da API• Facilita reconstrução de código• Cria patches (remendos para o executável original)• Gera gráfico de chamadas

Page 33: Engenharia Reversa para Principiantes

Process Monitor

Page 34: Engenharia Reversa para Principiantes

Process Monitor

• Monitora registro, arquivos e processos• Possui filtros extremamente poderosos• Consegue monitorar boot do SO

Page 35: Engenharia Reversa para Principiantes

Tarefas de aprimoramento

• Resolver problemas em seu sistema operacionalo Travamento de programaso Lentidão não esperadao Crash do SO

• Quebrar proteção de programas (para aprendizado)o Antidebuggingo Telas com senhao Licenciamento

• Entender funcionamento de víruso Fontes de vírus conhecidoso Ataques recebidos por emailo Desenvolvimento de ataques (para aprendizado)

• Faça você mesmo (não espere por ajuda)

Page 36: Engenharia Reversa para Principiantes

Dúvidas?

http://www.caloni.com.br/blog

2007-10-10