*[Cracking &  protección de software] <ul><ul><li>Mikel Gastesi </li></ul></ul><ul><ul><li>Asegúr@IT III </li></ul></ul><u...
AGENDA <ul><li>Introducción </li></ul><ul><li>Evolución de la protección de software </li></ul><ul><li>Herramientas - ¿Qué...
INTRODUCCIÓN <ul><li>¿Qué es? ¿Qué no es? </li></ul><ul><li>¿Por qué es importante? </li></ul><ul><ul><li>Entender el soft...
EVOLUCIÓN DE LA PROTECCIÓN DE SOFTWARE <ul><li>El programador pone un obstáculo </li></ul><ul><li>Alguien se lo salta </li...
¿POR QUÉ TENEMOS QUE PENSAR? Pág.
HERRAMIENTAS - ¿QUÉ TENEMOS? <ul><li>Ojos </li></ul><ul><li>Cerebro </li></ul><ul><li>Paciencia </li></ul><ul><li>Identifi...
ANÁLISIS <ul><li>Dos opciones: </li></ul><ul><ul><li>Análisis estático </li></ul></ul><ul><ul><ul><li>PRO:  </li></ul></ul...
ANÁLISIS DINÁMICO <ul><li>Dos opciones: </li></ul><ul><ul><li>Ring0 (SoftICE, Syser, WinDbg)‏ </li></ul></ul><ul><ul><ul><...
PROBLEMAS DURANTE EL ANÁLISIS <ul><li>Cifrado de los strings/datos </li></ul><ul><li>Las APIs se cargan con técnicas víric...
MÁS PROBLEMAS <ul><li>TLS </li></ul><ul><ul><li>Creado para inicialización de valores de hilos... </li></ul></ul><ul><ul><...
PACKING / UNPACKING <ul><li>¿Cómo funcionan? </li></ul><ul><ul><li>Se modifica el punto de entrada </li></ul></ul><ul><ul>...
ALGUNOS CONSEJOS <ul><li>Pensar en cómo va a ser atacada.  </li></ul><ul><li>Tener cuidado al plasmar la idea de la compro...
*[ Muchas gracias ]  [email_address] T.902 222 521
Upcoming SlideShare
Loading in …5
×

Asegúr@IT III - Técnicas de protección de Software y Cracking

7,334
-1

Published on

La disciplina de cracking software tiene mucho que ver con la protección de software. En esta sesión Mike Gastesi, de S21Sec, cuenta cuales son algunas de las técnicas utilizadas para la decompilación y crackeo de software y al final dará algunas recomendaciones para proteger el software contra este tipo de técnicas.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,334
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Asegúr@IT III - Técnicas de protección de Software y Cracking

  1. 1. *[Cracking & protección de software] <ul><ul><li>Mikel Gastesi </li></ul></ul><ul><ul><li>Asegúr@IT III </li></ul></ul><ul><ul><li>25/09/2008 Bilbao </li></ul></ul>
  2. 2. AGENDA <ul><li>Introducción </li></ul><ul><li>Evolución de la protección de software </li></ul><ul><li>Herramientas - ¿Qué tenemos? </li></ul><ul><li>Distintos análisis </li></ul><ul><li>Problemas durante el análisis </li></ul><ul><li>Packing / Unpacking </li></ul><ul><li>Algunos consejos </li></ul>Pág.
  3. 3. INTRODUCCIÓN <ul><li>¿Qué es? ¿Qué no es? </li></ul><ul><li>¿Por qué es importante? </li></ul><ul><ul><li>Entender el software </li></ul></ul><ul><ul><li>Analizar malware </li></ul></ul><ul><ul><li>Mejorar las protecciones </li></ul></ul><ul><li>Al lío... </li></ul>Pág.
  4. 4. EVOLUCIÓN DE LA PROTECCIÓN DE SOFTWARE <ul><li>El programador pone un obstáculo </li></ul><ul><li>Alguien se lo salta </li></ul><ul><li>El programador pone otro obstáculo </li></ul><ul><li>Alguien se lo salta </li></ul><ul><li>El programador pone otro obstáculo </li></ul><ul><li>Alguien se lo salta </li></ul><ul><li>... </li></ul>Pág.
  5. 5. ¿POR QUÉ TENEMOS QUE PENSAR? Pág.
  6. 6. HERRAMIENTAS - ¿QUÉ TENEMOS? <ul><li>Ojos </li></ul><ul><li>Cerebro </li></ul><ul><li>Paciencia </li></ul><ul><li>Identificador de packers </li></ul><ul><ul><li>Rdgsoft packer detector, PeId </li></ul></ul><ul><li>Depurador </li></ul><ul><ul><li>OllyDbg + plug-ins + Scripts </li></ul></ul><ul><li>Desensamblador </li></ul><ul><ul><li>IDA + hex rays </li></ul></ul><ul><li>Monitors </li></ul><ul><ul><li>Filemon, Regmon, Kam --> Análisis en vivo (Honkey Donkey)‏ </li></ul></ul><ul><li>Desde lenguajes de alto nivel </li></ul><ul><ul><li>Pefile, pydbg... </li></ul></ul><ul><li>Varios </li></ul><ul><ul><li>ImpRec, Lord PE, Resource Hacker, decompiladores ... </li></ul></ul>Pág.
  7. 7. ANÁLISIS <ul><li>Dos opciones: </li></ul><ul><ul><li>Análisis estático </li></ul></ul><ul><ul><ul><li>PRO: </li></ul></ul></ul><ul><ul><ul><ul><li>Análisis completo más factible </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Evitamos detección </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Pseudo C </li></ul></ul></ul></ul><ul><ul><ul><li>CONTRA: </li></ul></ul></ul><ul><ul><ul><ul><li>Más lento/tedioso </li></ul></ul></ul></ul><ul><ul><li>Análisis dinámico </li></ul></ul><ul><ul><ul><li>PRO: </li></ul></ul></ul><ul><ul><ul><ul><li>Controlamos la ejecución del programa y detenemos la ejecución donde nos convenga. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Vemos los datos “reales” en memoria </li></ul></ul></ul></ul><ul><ul><ul><li>CONTRA: </li></ul></ul></ul><ul><ul><ul><ul><li>Infección, caducidad </li></ul></ul></ul></ul>Pág.
  8. 8. ANÁLISIS DINÁMICO <ul><li>Dos opciones: </li></ul><ul><ul><li>Ring0 (SoftICE, Syser, WinDbg)‏ </li></ul></ul><ul><ul><ul><li>Tenemos más poder </li></ul></ul></ul><ul><ul><ul><ul><li>Análisis de drivers </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Malware </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Packers ring0 </li></ul></ul></ul></ul><ul><ul><li>Ring3 (OllyDbg)‏ </li></ul></ul><ul><ul><ul><li>Espacio de usuario </li></ul></ul></ul><ul><ul><ul><ul><li>Herramientas más amigables </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Lo que no necesite de depurador ring0 </li></ul></ul></ul></ul>Pág.
  9. 9. PROBLEMAS DURANTE EL ANÁLISIS <ul><li>Cifrado de los strings/datos </li></ul><ul><li>Las APIs se cargan con técnicas víricas </li></ul><ul><li>Los BreakPoint son detectados </li></ul><ul><li>Los Hardware Breakpoint son detectados/borrados </li></ul><ul><li>Los Memory Breakpoint son borrados </li></ul><ul><li>Técnicas anti-debug: </li></ul><ul><ul><li>IsDebuggerPresent </li></ul></ul><ul><ul><li>Nombre del proceso padre </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>Legibilidad del código </li></ul><ul><ul><li>Lenguaje de programación </li></ul></ul><ul><ul><li>Optimizaciones </li></ul></ul><ul><ul><li>Ofuscación </li></ul></ul>Pág.
  10. 10. MÁS PROBLEMAS <ul><li>TLS </li></ul><ul><ul><li>Creado para inicialización de valores de hilos... </li></ul></ul><ul><ul><li>Se ejecuta antes que el EP </li></ul></ul><ul><ul><li>¿ Cargado en OllyDbg = ejecutado ? </li></ul></ul><ul><ul><ul><li>System breakpoint </li></ul></ul></ul><ul><li>Programas multithread </li></ul><ul><ul><li>El programa se ramifica y ejecuta “en paralelo” </li></ul></ul><ul><ul><ul><li>Detener la ejecución al crear cada hilo </li></ul></ul></ul><ul><ul><ul><ul><li>CreateThreadA </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Iniciarlo como suspended </li></ul></ul></ul></ul><ul><li>Programas multiproceso </li></ul><ul><ul><li>El proceso crea otros procesos </li></ul></ul><ul><ul><ul><li>Detener la ejecución al crear el proceso. </li></ul></ul></ul><ul><ul><ul><ul><li>CreateProcess </li></ul></ul></ul></ul><ul><ul><ul><ul><li>EBFE + attach </li></ul></ul></ul></ul>Pág.
  11. 11. PACKING / UNPACKING <ul><li>¿Cómo funcionan? </li></ul><ul><ul><li>Se modifica el punto de entrada </li></ul></ul><ul><ul><li>Se cifra la sección de código </li></ul></ul><ul><ul><li>La rutina inicial descifra el código y lo pone en memoria. </li></ul></ul><ul><ul><li>Algunos cifran el fichero completo. </li></ul></ul><ul><li>¿Como atacar? </li></ul><ul><ul><li>Detener la ejecución cuando lo pone en memoria (OEP)‏ </li></ul></ul><ul><ul><li>Volcar el proceso al disco duro </li></ul></ul><ul><ul><li>Reconstruir datos destrozados </li></ul></ul><ul><ul><ul><li>IAT </li></ul></ul></ul><ul><ul><ul><li>Stolen Bytes </li></ul></ul></ul>Pág.
  12. 12. ALGUNOS CONSEJOS <ul><li>Pensar en cómo va a ser atacada. </li></ul><ul><li>Tener cuidado al plasmar la idea de la comprobación. </li></ul><ul><li>No dar información innecesaria. </li></ul><ul><li>Separar la comprobación y la reacción a ella. </li></ul><ul><li>No insertar funcionalidad que no sea necesaria (demos)‏ </li></ul><ul><li>Si se solicita contraseña, no solo comprobarla, además utilizarla </li></ul><ul><li>Atacar al reverser, no a sus aplicaciones </li></ul><ul><ul><li>Protección lógicamente compleja </li></ul></ul><ul><ul><li>Multiproceso y multihilo puede ser muy doloroso </li></ul></ul>Pág.
  13. 13. *[ Muchas gracias ] [email_address] T.902 222 521

×