engenharia reversa para principiantes
DESCRIPTION
Conhecimentos e habilidades necessárias para iniciar-se na arte da escovação de bits.TRANSCRIPT
![Page 1: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/5.jpg)
Conhecimentos necessários
• Programaçãoo Conceitos básicoso APIso Arquitetura
![Page 6: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/6.jpg)
Conhecimentos necessários
• Sistema operacionalo Sistema de janelaso Processos e threadso Gerenciamento de memória
![Page 7: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/7.jpg)
Conhecimentos necessários
• Ferramentaso Depuradoreso Disassemblerso Loggers
![Page 8: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/8.jpg)
Programação
• Conceitos básicos• APIs• Arquitetura
![Page 9: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/9.jpg)
Conceitos básicos de programação
![Page 10: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/11.jpg)
APIs
![Page 12: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/13.jpg)
Arquitetura
![Page 14: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/15.jpg)
Sistema operacional
• Arquitetura• Sistema de janelas• Processos e threads• Gerenciamento de memória
![Page 16: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/18.jpg)
Sistema de janelas
![Page 19: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/21.jpg)
Processos de um mesmo executável
![Page 22: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/22.jpg)
Criação de um processo
![Page 23: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/24.jpg)
Gerenciamento de memória
![Page 25: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/26.jpg)
Gerenciamento de memória
![Page 27: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/29.jpg)
WinDbg
![Page 30: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/31.jpg)
IDA
![Page 32: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/33.jpg)
Process Monitor
![Page 34: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/34.jpg)
Process Monitor
• Monitora registro, arquivos e processos• Possui filtros extremamente poderosos• Consegue monitorar boot do SO
![Page 35: Engenharia Reversa para Principiantes](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022081506/5585a64ad8b42ae22a8b4997/html5/thumbnails/36.jpg)
Dúvidas?
http://www.caloni.com.br/blog
2007-10-10