Upload
michael-ferneine
View
293
Download
1
Tags:
Embed Size (px)
Citation preview
Posibilidades de una nueva profesión en Perú
Mamá: De grande quieroser Ingeniero Reverso
Miguel Febres / Q-Protex
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
Quien soy?
Nicks anteriores:
AnonimoSer
DiHACKblo
BeeMoul
Nick actual:
emadicius
Autor del MSLRH: Protector de ejecutables
Antes de empezar
A estirarnos un poco!
Objetivos de la Presentación
Comentar experiencia personal1
Despertar tu interés!2
Posibilidades de estudio y laborales3
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
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
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.
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.
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.
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.”
Que es Ingeniería Inversa?
Los militares lo usan para copiar tecnologías de países rivales!
Que es Ingeniería Inversa?
Resolver casos misteriosos?
Que es Ingeniería Inversa?
Cazar mitos!
No video
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
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.
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.
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.
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
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
•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
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
Metodología
No hay metodología.
Solo usa el Zen-Cracking!!
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
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
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
Casos de Uso
1
Soporte Informático
Caso Anti-Porn
2
Desarrollo de Sistemas
Caso IpView
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!
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
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
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
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
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
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
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.
Casos de Uso - IpView
Duración: 2 ~ 3 horas
1024x750
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
Certificaciones
•Certified Reverse Engineering Analyst
(CREA)
•Certified Reverse Code Engineering
Professional (Windows)
•Certified Reverse Code Engineering
Expert (Windows)
•GIAC Reverse Engineering Malware
(GREM)
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
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
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
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
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)
Conclusiones
Que quieres ser de
grande hijo?
Quiero ser... Ingeniero Reverso!