Ing inverso

45
Posibilidades de una nueva profesión en Perú Mamá: De grande quiero ser Ingeniero Reverso Miguel Febres / Q-Protex

Transcript of Ing inverso

Page 1: Ing inverso

Posibilidades de una nueva profesión en Perú

Mamá: De grande quieroser Ingeniero Reverso

Miguel Febres / Q-Protex

Page 2: Ing inverso

Quien soy?

Un psicólogo y músico frustado

Analista Programador: Java, Pascal, C#, PHP, Python, ASM

Docente de Java en Cibertec

IT Security Consultant en Q-Protex

Page 3: Ing inverso

Quien soy?

Nicks anteriores:

AnonimoSer

DiHACKblo

BeeMoul

Nick actual:

emadicius

Autor del MSLRH: Protector de ejecutables

Page 4: Ing inverso

Antes de empezar

A estirarnos un poco!

Page 5: Ing inverso

Objetivos de la Presentación

Comentar experiencia personal1

Despertar tu interés!2

Posibilidades de estudio y laborales3

Page 6: Ing inverso

Estructura de la Presentación

Que es la ingeniería reversa/inversa?

Ingeniería Inversa de Software

Casos de Uso

Certificaciones

Como y donde aprender?

Oportunidades Laborales

Page 7: Ing inverso

Estructura de la Presentación

Que es la ingeniería reversa/inversa?

Ingeniería Inversa de Software

Casos de Uso

Certificaciones

Como y donde aprender?

Oportunidades Laborales

Page 8: Ing inverso

Que es Ingeniería Inversa?

Definición de Wikipedia:

El objetivo de la ingeniería inversa es obtener información a partir de un producto accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado.

Page 9: Ing inverso

Que es Ingeniería Inversa?

Definición de Wikipedia:

Hoy en día (principios del siglo XXI), los productos más comúnmente sometidos a ingeniería inversa son los programas de computadoras y los componentes electrónicos, pero, en realidad, cualquier producto o bien puede ser objeto de un análisis de Ingeniería Inversa.

Page 10: Ing inverso

Que es Ingeniería Inversa?

Usos en la medicina

Las vacunas se hacen

luego de hacer una

ingeniería inversa a las

bacterias o virus.

Page 11: Ing inverso

Que es Ingeniería Inversa?

Usos en la psicología

“Los fundadores de la PNL

sacaron sus plantillas del

pensamiento humano haciendo

ingeniería inversa a las mentes

de personas con éxito: las

estudiaron y desensamblaron sus

programas, hasta obtener el

código, que aplicaron a otras

personas.”

Page 12: Ing inverso

Que es Ingeniería Inversa?

Los militares lo usan para copiar tecnologías de países rivales!

Page 13: Ing inverso

Que es Ingeniería Inversa?

Resolver casos misteriosos?

Page 14: Ing inverso

Que es Ingeniería Inversa?

Cazar mitos!

No video

Page 15: Ing inverso

Estructura de la Presentación

Que es la ingeniería reversa/inversa?

Ingeniería Inversa de Software

Casos de Uso

Certificaciones

Como y donde aprender?

Oportunidades Laborales

Page 16: Ing inverso

Ingeniería Inversa de Software

Definición de Wikipedia:

En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones.

Page 17: Ing inverso

Ingeniería Inversa de Software

Conocida con otros nombres:

Reversing: Reverse Engineering

RCE: Reverse Code Engineering

SRE: Software Reverse Engineering

Cracking es solo una posibilidad de la Ingeniería Inversa.

Page 18: Ing inverso

Motivos para aprenderlo?

Diversión: Es un hobby fabuloso!

Curiosidad: Mi caso!

Aprendizaje: Te hace conocer mejor el funcionamiento interno de las cosas

Seguridad: Análisis de malware, Desarrollo de exploits, Ethical hacking, Test de penetración

Desarrollo/análisis/ruptura de sistemas de protección de software: Protectores, packers, loaders, cracking

Duplicación/Recuperación: Al no disponer de la documentacion o el código fuente.

Page 19: Ing inverso

Implementación

de la API de

Windows

Permite a

sistemas

operativos UNIX

compartir archivos

con sistemas

Microsoft Windows

Para obtener los

formatos

propietarios

de Microsoft

Office

Casos de éxito

Samba WineOpen

Office

Desarrollo de aplicaciones

Page 20: Ing inverso

Conocimiento

• Se necesita conocer algunos

conceptos informáticos como los

siguientes:

• Arquitectura de PC’s

• Sistemas operativos

• Formatos de archivos binarios

• Programación

Ingeniería

Inversa

Herramientas

• Se necesita aprender el manejo

de un gran número de

herramientas que trabajan en

conjunto para lograr el objetivo

comun.

Requerimientos

Page 21: Ing inverso

•Editores de recursos

•Utilidadades varias

•Decompiladores

•Desensambladores

•Programming

Languages e IDES

•Analizadores de Archivos

• Detectores de Packers, Unpackers

•Hex Editors

•PE Tools

Herramientas

Open Source / Free / Paid

Page 22: Ing inverso

Herramientas - Frameworks

REMnux: A Linux Distribution for Reverse-Engineering Malware

REMnux is a lightweight Linux distribution for assisting malware analysts in

reverse-engineering malicious software. The distribution is based on

Ubuntu and is maintained by Lenny Zeltser

Opensource tools to disasm, debug, analyze and manipulate binary files.

•Highly scriptable

•Multi-architecture multi-platform

•Hexadecimal editor

•IO is wrapped

•Debugger support

•Diffing between two functions or binaries

•Code analysis at opcode, basicblock, function levels

Page 23: Ing inverso

Metodología

No hay metodología.

Solo usa el Zen-Cracking!!

Page 24: Ing inverso

Metodología

1. Especificar la razón del análisis: Estudio, Modificar o Agregar

funcionalidad, Entender cierta parte del código, Análisis de

Malware, etc.

2. Análisis de comportamiento

1. Ejecutar el binario en un ambiente de pruebas (VM)

2. Monitorear como interactúa con los archivos, registro,

red

3. Interactuar con el binario directamente en caso tenga

GUI

3. Usar un analizar de binario para detectar posible compilador

y/o compresor/protector.

4. En caso exista un compresor/protector, evaluar la necesidad

de quitarlo:

1. Depurar hasta el OEP

2. Dumpear

3. Arreglar IAT

5. De acuerdo con el tipo de binario detectado en el punto 3,

reunir las herramientas enfocadas a este tipo.

6. Análisis de código:

1. Refuerza lo encontrado en el análisis de

comportamiento

2. Uso de decompiladores, debuggers y otros

3. Examinar el código y buscar las partes mas

importantes

7. Enfocarse en lo establecido en el punto 1

Page 25: Ing inverso

Metodología

Análisis de código es la parte mas divertida / difícil:

Técnicas Anti-debugging y anti-tracing

• Detección de Breakpoints

• Anti Virtual Machines y emuladores

• Anti dump

• Timers

• Discrepancias de valores en memoria

• Discrepancia de resultados de funciones API

• Self-Debugging

• Código automodificable

• Uso de algoritmos de encriptación y de hash (CRC)

• Uso de interrupciones

• Detección específica de debuggers usando enumeración de

ventanas / procesos o revisando el registro

Page 26: Ing inverso

Estructura de la Presentación

Que es la ingeniería reversa/inversa?

Ingeniería Inversa de Software

Casos de Uso

Certificaciones

Como y donde aprender?

Oportunidades Laborales

Page 27: Ing inverso

Casos de Uso

1

Soporte Informático

Caso Anti-Porn

2

Desarrollo de Sistemas

Caso IpView

Page 28: Ing inverso

Casos de Uso - AntiPorn

1

Soporte Informático

Caso Anti-Porn

• Aló, soporte?

• Por favor ayuda!!! Instalé un programa

que filtra el internet y no lo he podido

configurar correctamente!!!!

• Ahora no puedo entrar a ninguna página

pues me pide un password para

configurarlo o desinstalarlo!!!

Usuario con problemas!

Page 29: Ing inverso

Casos de Uso - AntiPorn

1

Soporte Informático

Caso Anti-Porn

• No hay otra solución mas que formatear

el disco e instalar de nuevo el sistema

operativo.

• Esto va a tomar un par de días pues

debo recoger la PC y traerla a mi

laboratorio.

• Esto le va a costar!

Técnico en Computadoras

Page 30: Ing inverso

Casos de Uso - AntiPorn

1

Soporte Informático

Caso Anti-Porn

• Ok, no problem. Con mi debugger puedo

modificar el programa en memoria para

poder desinstalarlo.

• Esto va a tomar unos minutos

• Esto le va a costar! (Posiblemente más)

Técnico en Computadoras con

conocimiento en Ingeniería Inversa

Page 31: Ing inverso

Casos de Uso - IpView

2

Desarrollo de Sistemas

Caso IpView

• El software que nos vino con el

dispositivo no se ve correctamente en los

monitores LCD del área de distribución!

• Por favor necesito una solución ASAP!

Ejecutivo

Page 32: Ing inverso

Casos de Uso - IpView

2

Desarrollo de Sistemas

Caso IpView

• Vamos a programar las reuniones para

levantar los requerimientos y desarrollar el

software a medida pues no tenemos el

código fuente de dicha aplicación.

• Esto va a tomar algunas semanas!

Desarrollador – Area de Sistemas

Page 33: Ing inverso

Casos de Uso - IpView

2

Desarrollo de Sistemas

Caso IpView

• Vamos a modificar el programa para que

pueda verse en los monitores

• Esto tomará un par de horas.

Desarrollador – Area de Sistemas

con conocimiento en Ingeniería

Inversa

Page 34: Ing inverso

Casos de Uso - IpView

Ventana en tamaño real. Nótese el tamaño de las

letras y la ausencia del botón de maximizar.

436X472

Page 35: Ing inverso

Casos de Uso - IpView

Creación de un Loader en delphi con el

componente TDbgCLS que modifica el tamaño de

la letra, el ancho y el alto de la ventana.

Page 36: Ing inverso

Casos de Uso - IpView

Duración: 2 ~ 3 horas

1024x750

Page 37: Ing inverso

Estructura de la Presentación

Que es la ingeniería reversa/inversa?

Ingeniería Inversa de Software

Casos de Uso

Certificaciones

Como y donde aprender?

Oportunidades Laborales

Page 38: Ing inverso

Certificaciones

•Certified Reverse Engineering Analyst

(CREA)

•Certified Reverse Code Engineering

Professional (Windows)

•Certified Reverse Code Engineering

Expert (Windows)

•GIAC Reverse Engineering Malware

(GREM)

Page 39: Ing inverso

Estructura de la Presentación

Que es la ingeniería reversa/inversa?

Ingeniería Inversa de Software

Casos de Uso

Certificaciones

Como y donde aprender?

Oportunidades Laborales

Page 40: Ing inverso

Como y donde aprender?

•Reverse Engineering: Malware, Binary

Analysis and Software Vulnerabilities

•Advanced Reverse Engineering Malware

•Reverse Code Engineering Training

•Reverse-Engineering Malware:

Malware Analysis Tools and

Techniques

• Capacitación en Ingeniería Inversa.

Curso en desarrollo planeado para el

2011

Page 41: Ing inverso

Como y donde aprender?

•RECon: Reverse Engineering

Conference

•http://recon.cx/2010/

• Tecnologías de programación y la

estructura interna de los

programas(Ingenieria Inversa)

http://groups.google.com/group/crackslati

nos

• Infinidad de webs y recursos de

donde aprender

Page 42: Ing inverso

Estructura de la Presentación

Que es la ingeniería reversa/inversa?

Ingeniería Inversa de Software

Casos de Uso

Certificaciones

Como y donde aprender?

Oportunidades Laborales

Page 43: Ing inverso

Oportunidades Laborales

• Desarrollador C/Reverse Engineering

•Desarrollador (Seguridad Informática) SSR o SR

•Muchos de los miembros de CracksLatinos

trabajan aquí. (Argentina)

• Analista de Malware. Laboratorio de Análisis de

Malware próximo a abrirse en Argentina

• Laboratorio de desarrollo de

exploits en Argentina

• Senior Reverse Engineer and

Vulnerability Researcher (Dinamarca)

Page 44: Ing inverso

Conclusiones

Que quieres ser de

grande hijo?

Quiero ser... Ingeniero Reverso!