Você está na página 1de 15

CENTRO UNIVERSITRIO FEEVALE

DANIEL ROBERTO DUMMER

ENGENHARIA REVERSA APLICADA EXPLORAO E PROTEO DE SOFTWARE


(Ttulo Provisrio)

Anteprojeto de Trabalho de Concluso

Novo Hamburgo, maro de 2007.

DANIEL ROBERTO DUMMER


danieldummer@gmail.com

ENGENHARIA REVERSA APLICADA EXPLORAO E PROTEO DE SOFTWARE


(Ttulo Provisrio)

Centro Universitrio Feevale Instituto de Cincias Exatas e Tecnolgicas Curso de Cincia da Computao Anteprojeto de Trabalho de Concluso

Professor orientador: Carlos Srgio Schneider

Novo Hamburgo, maro de 2007.

RESUMO
Com a total adeso da informtica tanto nas esferas industrial e comercial quanto na pessoal, cresce diria e exponencialmente a quantidade de informaes, sigilosas ou no, armazenadas nos computadores ao redor do mundo. Acompanhando esse crescimento, surgem hackers mal-intencionados, vrus, spywares e malwares para assombrar estes dados. No intuito de proteg-los, confiamos em patches e atualizaes dirias de sistema, Firewalls, Anti-vrus e IDS1, dentre vrios outros recursos, sem muitas vezes sabermos para que servem, nem o que protegem e/ou solucionam, tornando assim nossos computadores dependentes, s escuras, de suas contra-medidas de proteo. No entanto se, durante o desenvolvimento destes sistemas, fosse destinada uma ateno maior referente segurana, no seria necessrio investir tanto tempo, dinheiro e trabalho na correo de bugs. A engenharia reversa de software auxilia o desenvolvedor a entender como o software funciona internamente permitindo estudar e aprender sua estrutura e lgica, alm de melhorar a qualidade do software tanto na questo segurana quanto desempenho. Assim, este trabalho tem por objetivo estudar a engenharia reversa de software, analisando em especfico o funcionamento interno de software no formato Win32/Portable Executable sob o sistema operacional Windows, demonstrando tcnicas para extrao de informaes, monitoramento e anlise, os tipos mais comuns de ataques e tcnicas de proteo, alm de discutir dos aspectos legais e ticos desta aplicao.

Intrusion Detection System Sistema de Deteco de Intrusos

Palavras-chave: Engenharia de Software; Segurana de Computador; Proteo de Software; Explorao de Software.

SUMRIO

MOTIVAO ...........................................................................................................................6 OBJETIVOS ..............................................................................................................................9 METODOLOGIA ....................................................................................................................10 CRONOGRAMA ....................................................................................................................13 BIBLIOGRAFIA ....................................................................................................................14

MOTIVAO
Cresce diariamente a importncia do quesito segurana nos softwares. As estatsticas comprovam: no segundo semestre de 2006, a Symantec identificou 2.526 novas vulnerabilidades, o maior ndice desde o incio das medies, iniciadas em janeiro de 2002. Este nmero superou em 12% o ndice do semestre anterior. Deste total de vulnerabilidades, 1.667 (66%) afetam aplicativos Web, sendo 1.150 (69%) deles de fcil explorao e 1.081 (64%) de fcil explorao e explorveis remotamente. Doze vulnerabilidades dia-zero2, um enorme salto comparado a apenas uma do semestre anterior. Porm no so somente aplicativos Web que possuem vulnerabilidades. Como exemplo, neste mesmo perodo foram identificadas 168 vulnerabilidades no banco de dados Oracle. (Symantec Internet Security Threat Report XI, 2007)

Quase todos os sistemas modernos tm o mesmo calcanhar-de-aquiles, que o software. (HOGLUND e McGRAW, 2006, p. 1)

Alm disso, o custo, trabalho e dinheiro gastos nessas correes tambm impressionam. No mesmo perodo pesquisado anteriormente, todas as empresas desenvolvedoras analisadas pela Symantec informaram que foi gasto muito mais tempo desenvolvendo patches de correo que no semestre anterior. Algumas delas, como por exemplo a Sun, com seu sistema operacional Solaris, teve um tempo mdio de 122 dias para desenvolvimento de seus patches - o maior dentre a categoria sistemas operacionais -, contra os 21 dias necessrios pela Microsoft, o menor analisado na categoria. (Symantec Internet Security Threat Report XI, 2007)
2

Vulnerabilidade divulgada antes que haja correo disponvel para a mesma.

No seria necessrio empregar tanto tempo, dinheiro e trabalho em segurana de rede se no tivssemos uma segurana de software to ruim. (VIEGA e McGRAW, 2002, apud HOGLUND e McGRAW, 2006, p. 1)

Diante desses ndices, para proteo dos dados, faz-se necessrio apelar para programas repressivos como anti-vrus, firewall e outros, quando se poderia, simplesmente, utilizar softwares mais seguros.

A engenharia reversa apresenta tcnicas para estudar o funcionamento interno do sistema e como ele realmente interage junto mquina via monitoramento de instrues e flags. Para isto ser estudado o seu conceito, tcnicas de explorao do software, assim como o funcionamento interno do sistema Windows, memria e processamento, alm do formato de arquivo Win32/Portable Executable.

Sero apresentadas as ferramentas disponveis no mercado para auxlio na extrao, estudo e monitoramento deste trabalho, assim como os tipos mais comuns de ataque e tcnicas de proteo e prevenes. Sero discutidas as questes ticas incidentes na reverso de software e como as leis de diversos pases lidam com o assunto.

A demonstrao dos tipos mais comuns de ataques tem por finalidade alertar sobre erros comumente implementados pelos desenvolvedores. Sero demonstrados os problemas de implementao, sintaxe e tratamento de erros, e ainda sugestes para correo dos mesmos.

A engenharia reversa til tambm na aquisio de conhecimento perdido nos casos onde ocorre a perda ou indisponibilidade do cdigo-fonte de um software. Utiliza-se das tcnicas de engenharia reversa para se estudar o funcionamento do mesmo a partir do produto final, ou seja, do software pronto.

A melhor compreenso e conhecimento interno do software capacitam o desenvolvedor na escrita de cdigos mais seguros e otimizados, desenvolvendo software de

maior qualidade, visto que a aplicao e a utilizao das tcnicas exigem um considervel conhecimento do funcionamento do sistema e da estrutura dos arquivos. Qualifica o software e o profissional.

Devido rara bibliografia nacional especializada neste assunto, ser apresentado um trabalho de reviso sobre engenharia reversa aplicada a software, com objetivo de divulgar o assunto. A disseminao do assunto tende a criar o interesse de um maior nmero de pesquisadores e desenvolvedores, incentivando o desenvolvimento de novas tcnicas e auxiliando na descoberta de novas vulnerabilidades nos sistemas existentes, alm possibilitar um compartilhamento de experincias e, por conseguinte, um aprimoramento na qualidade geral dos softwares.

OBJETIVOS
Objetivo geral Este trabalho tem como objetivo geral apresentar o conceito de engenharia reversa, demonstrando as ferramentas de auxlio de extrao e estudo da estrutura, funcionamento e monitoramento de software, apresentao dos tipos mais comuns de ataque e tcnicas de proteo e preveno, analisados todos sob funcionamento no sistema operacional Windows e arquivos executveis no formato Win32/Portable Executable.

Objetivos especficos Os objetivos especficos referem-se s etapas necessrias para a execuo do objetivo geral do estudo. Apresentar o conceito de engenharia reversa; Analisar o sistema operacional Windows e o formato de arquivos Win32/Portable Executable; Apresentar as ferramentas de auxlio de extrao de informaes, funcionamento e estrutura do software; Apresentar os tipos de ataques mais comuns; Apresentar os cuidados e tcnicas de proteo anti-reversing; Discutir a questo tica e aspectos legais da aplicao de engenharia reversa;

METODOLOGIA

O trabalho proposto seguir uma metodologia de pesquisa, seguindo as etapas a seguir:

1 Pesquisa de material bibliogrfico.

A pesquisa de material bibliogrfico servir de alicerce para a estudo da proposta de trabalho, bem como para o desenvolvimento do mesmo. As fontes de consulta predominantes sero livros e artigos, revistas, sites e teses universitrias.

2 Estudo do conceito, histria e importncia da engenharia reversa.

A busca da origem do termo, histria e aplicabilidade da engenharia reversa nas reas industriais, comerciais e militares, demonstrar o quanto j foi e utilizada a engenharia reversa no mundo. Apresentar-se- tambm importncia na proteo de aplicativos contra esta tcnica, discernindo engenharia reversa de cracking.

3 Anlise da estrutura e funcionamento de arquivos Win32/Portable Executable no ambiente Windows

Nesta etapa ser dissecada a estrutura do arquivo Win32/Portable Executable, demonstrando detalhadamente cada segmento de sua estrutura, mais enfaticamente, seu

cabealho. Ser estudado e apresentado tambm, porm mais sucintamente, o funcionamento deste formato no ambiente Windows, analisando detalhes como sua inicializao, tratamento e armazenamento da memria, entre outros. De mesmo modo, ser introduzida a linguagem Assembly, pr-requisito importante para entendimento do funcionamento interno do software.

4 Ferramentas de monitoramento e de auxlio para visualizao, extrao e edio de dados

Baseados nas informaes obtidas na anlise de estrutura e funcionamento do software, sero apresentadas e brevemente demonstradas algumas ferramentas, como: Debuggers, ferramentas para testes e anlise por instruo, permitindo em tempo real, ajustes de controle de fluxo, edio de dados internos de memria, e diversos outros comando sobre o software em execuo; Monitoramento de atividades, como acesso a arquivos externos, registro do Windows e portas de rede; Decompiladores, ferramentas que convertem o cdigo de mquina do software pronto em cdigo-fonte; Dumpings, ferramentas utilizadas para transferir todo contedo da memria de um software em execuo um arquivo; Editores hexadecimais, ferramentas para edio de arquivos binrios.

5 Estudo e apresentao de ataques

Alm de ser efetuado um levantamento estatstico sobre ataques a software pelo mundo, ser elaborada uma sinopse sobre os tipos mais freqentes de ataques a software, demonstrando como eles funcionam e quais brechas eles exploram.

6 Estudo e apresentao de tcnicas de proteo anti-reversing

A compreenso de como funciona os ataques software auxiliar o desenvolver a vislumbrar possveis erros de implementao, ressaltando a importncia das medidas de precauo e o cuidado no desenvolvimento de software. Para tanto, sero demonstradas essas tcnicas de proteo assim como as tcnicas de proteo anti-reversing, na finalidade de inibir a utilizao das ferramentas de cracking, como debuggers ou patchers, por parte do invasor.

7 Discusso dos aspectos legais e ticos

A discusso dos aspectos legais e ticos servir para cotejar o tratamento do assunto diante as leis de diversos pases, demonstrando as permisses atribudas aos desenvolvedores e reversores.

8 Difuso da engenharia reversa

Conforme relatado anteriormente, a engenharia reversa aplicada software possui uma pequena bibliografia nacional e raramente pauta de discusses na rea. Em meios underground, o assunto bastante discutido e aplicado, porm este conhecimento deve estar tambm de posse dos desenvolvedores de software. A publicao deste trabalho em simpsios, alm de revistas e sites voltadas a esta rea de interesse, serviro como base literria e motivadora para novas pesquisas, tudo no intuito alavancar o crescimento, familiarizao e adoo desta tcnica.

CRONOGRAMA

Trabalho de Concluso I

Etapa Pesquisa de material bibliogrfico. Redigir o Anteprojeto. Estudar o conceito, histria e importncia da engenharia reversa. Estudar o formato Win32/PE e ambiente Windows. Analisar as ferramentas de engenharia reversa. Redigir o Relatrio Final de TC1.

Mar

Ms Abr Mai

Jun

Trabalho de Concluso II

Etapa Estudo e apresentao de ataques. Estudo e apresentao de tcnicas de proteo anti-reversing. Discusso dos aspectos legais e ticos. Difuso da engenharia reversa. Elaborar Documento Final.

Ago

Ms Set Out

Nov

BIBLIOGRAFIA

CERVEN, Pavol. Crackproof Your Software. No Starch Press, 2002. 165p. EILAM, Eldad. Reversing: Secrets of Reverse Engineering. Wiley Publishing, Inc., 2005. 589p. ERICKSON, Jon. Hacking: The Art of Exploitation. No Starch Press, 2003. 241p. FAYOLLE, Pierre-Alain; GLAUME, Vincent. A Buffer Overflow Study - Attacks and Defenses. Disponvel em http://community.corest.com/~juliano/enseirbof.pdf. Acesso em: 11 mar 2007. 102p. FOSTER, James C. et al. Buffer Overflow Attacks: Detect, Exploit, Prevent. Syngress Publishing, Inc., 2005. 497p. FOSTER, James C.; PRICE, Mike. Sockets, Shellcode, Porting and Coding: Reverse Engineering Exploits and Tool Coding for Security Professionals. Syngress Publishing, Inc., 2005. 667p. FOTOPOULOS, Fotis. Reverse Engineering: In Computers Applications. Boston, 2001. 119p. HOGLUND, Greg; BUTLER, James. Rootkits: Subverting the Windows Kernel. Addison Wesley Professional, 2005. 352p. HOGLUND, Greg; McGRAW, Gary. Como quebrar cdigos: A Arte de Explorar (e Proteger) Software. So Paulo: Pearson Education do Brasil, 2006. 424p. KASPERSKY, Kris. Hacker Disassembling Uncovered. A-LIST Publishing, 2003. 584p. McGRAW, Gary. Software Security: Building Security In. Addison Wesley Professional, 2006. 448p. PRODANOV, Clber C. Manual de metodologa cientfica. 3 ed. Novo Hamburgo: Feevale, 2003. 77p.

SCHNEIER, Bruce. Secrets and Lies: Digital Security in a Networked World. John Wiley & Sons, 2000. SKOUDIS, Ed; ZELTSER, Lenny. Malware: Fighting Malicious Code. Prentice Hall, 2003. 672p. SPOSITO, Rosa. A Era da Vigilncia. Info SMB, So Paulo, v. 1, n. 1, p. 18 28, out. 2005. SYMANTEC. Symantec Internet Security Threat Report: Trends for JulyDecember 06 Volume XI. Disponvel em http://eval.symantec.com/mktginfo/enterprise/white_papers/entwhitepaper_internet_security_threat_report_xi_03_2007.en-us.pdf. Acesso em: 03 abr 2007. 104p. SZOR, Peter. The Art of Computer Virus Research and Defense. Addison Wesley Professional, 2005. 744p. VIEGA, John; McGRAW, Gary. Building secure software. Disponvel em http://www128.ibm.com/developerworks/linux/library/s-build.html. Acesso em: 19 mar 2007. VIEGA, John; McGRAW, Gary. Building secure software: How To Avoid Security Problems the Right Way. Addison Wesley Professional, 2002.

Você também pode gostar