SlideShare une entreprise Scribd logo
1  sur  30
OBFUSCATION & UNPACKING:
FUN & BUSINESS
Ricardo Gómez
@RicardoGomez94
¿De qué va esto?
• Uso de técnicas para evadir el análisis
estático del binario.
• ¿Puedo hacer legible el código?
• ¿Por qué no solo análisis dinámico?
Introducción
• Desemsamblar código no es un problema
simple.
• Cuando se implementa anti-desensamblado,
el autor del malware crea una secuencia de
código que engaña al desensamblador.
• Las técnicas anti-desensamblado funcionan
tomando ventaja de las asunciones y
limitaciones de los desensambladores.
¿De qué se trata el ofuscamiento de
código?
La ofuscación es: alterar la estructura del código
original manteniendo su funcionalidad original.
Cumple dos papeles de vital importancia para el
escritor de código malicioso:
• Retrasar el análisis de ingeniería inversa.
• Burlar o confundir los motores antivirus y que
no detecten el código malicioso.
Un ejemplo sencillo
Los decompiladores esperan código
legible, ordenado. Hacen varias
asunciones, si no se cumplen: fallan.

Luego de un CALL el valor de
ESP no se debería alterar.
El
ofuscamiento:
categorías
• Semántica
– Cambio de instrucciones por otras que den el mismo
resultado: recomendable limpiar el código.

• Código basura (junk code)
– Código inútil. NOPear las instrucciones inválidas.

• Manejo de opcodes
– Código oculto entre instrucciones. Eliminar código
innecesario.

• Dado que “solo” es ofuscamiento, un reverser
determinado logrará su objetivo (aunque con un
consumo mayor de tiempo).
Semántica
• Cambio de instrucciones por otras que den el mismo
resultado.
• Pueden haber dos, tres o más instrucciones que se puedan
simplificar.
• Es casi imposible de SIMPLEMENTE reemplazar las
instrucciones por simples 0x90 (NOP).
Semántica / soluciones
• Simplificar las operaciones.
• Si existe código inservible reemplazarlo por NOPs.
Código basura o junk code
•
•
•
•

Código que no altera el funcionamiento.
Código sin sentido.
Saltos sin sentido.
Calculos complejos para dar un resultado sencillo que luego
no es utilizado.
• Duplicamiento de código.
Código basura / soluciones
• Dado que no alteran la semántica se pueden reemplazar por
NOPs.
Manejo de opcodes
• Si el desensamblador es engañado para mostrar
instrucciones desde un offset errado, se puede ocultar
código.
Manejo de opcodes / soluciones
• Insertar NOPs en los opcodes inválidos.
Xref inválidas
• Se hace uso de técnicas no habituales para transferir el flujo
de código,.
DEMO TIME
(ANTI)DESEMPACADO
Técnicas comunmente usadas
• Anti-debugging
– APIs
– Chequeo manual de estructuras
– Identificación del comportamiento del
depurador
Conceptos básicos
• PEB  Estructura de datos que contiene gran
informacion sobre el proceso.
• HEAP  Un heap es una forma de manejo de
memoria de la cual puede hacer uso una
aplicación cuando necesita reservar y liberar
memoria dinámicamente.
• HANDLE  Manejador. Puntero inteligente.
Referencia objetos o bloques de memoria.
API IsDebuggerPresent
El más básico (y obvio).

El booleano PEB.BeingDebugged se
activa si hay un depurador presente.
FS[0x30] apunta al PEB.
La API kernel32 !IsDebuggerPresent()
revisa este flag
CheckRemoteDebuggerPresent
Identica a IsDebuggerPresent.

Busca en un proceso remoto NO
máquina remota.
NtQueryInformationProcess
 API nativa.
 Devuelve información de un determinado proceso.
 Parámetros:
1 HANDLE ProcessHandle,
•
2 PROCESSINFOCLASS ProcessInformationClass,
•
3 PVOID ProcessInformation,
• ULONG ProcessInformationLength,
• PULONG ReturnLength
Chequeo manual de estructuras
 Byte IsBeingDebugged en el PEB (FS:[30]+2).
 Chequeo del ProcessHeap (localizado en 0x18 en la
estructura PEB).
 Bytes Flag y ForceFlag.
Comportamiento del depurador
 Comprobaciónes de integridad (checksum)
• Calcular la integridad de una sección de su código.

 Chequeos de tiempo de ejecución
 RTDSC
 QueryPerformanceCounter y GetTickCount
CONCLUSIONES
Recursos
• IDAPython
https://code.google.com/p/idapython/
• IDA Pro
https://www.hexrays.com/products/ida/index.shtml
¿PREGUNTAS?

Contenu connexe

Similaire à Obfuscation & unpacking

.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Alfredo Chavez
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmo
Ligia Marcela Tafur
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmo
TAMELIMAR
 
Physical computing cap 4-5
Physical computing cap 4-5Physical computing cap 4-5
Physical computing cap 4-5
Botero7
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
Marco Chunab
 

Similaire à Obfuscation & unpacking (20)

.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Clean code 7-8
Clean code 7-8Clean code 7-8
Clean code 7-8
 
Depuracion errores scratch
Depuracion errores scratchDepuracion errores scratch
Depuracion errores scratch
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Nicholas casañas castaño
Nicholas casañas castañoNicholas casañas castaño
Nicholas casañas castaño
 
Buenas practicas desarrollando software
Buenas practicas desarrollando softwareBuenas practicas desarrollando software
Buenas practicas desarrollando software
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmo
 
PowerPoint Programación
PowerPoint ProgramaciónPowerPoint Programación
PowerPoint Programación
 
Programas diseñados para realizar algoritmo
Programas  diseñados para realizar algoritmoProgramas  diseñados para realizar algoritmo
Programas diseñados para realizar algoritmo
 
PowerPoint (Programación)
PowerPoint (Programación)PowerPoint (Programación)
PowerPoint (Programación)
 
Physical computing cap 4-5
Physical computing cap 4-5Physical computing cap 4-5
Physical computing cap 4-5
 
PowerPoint Programación
PowerPoint ProgramaciónPowerPoint Programación
PowerPoint Programación
 
SIMUNROBOT
SIMUNROBOTSIMUNROBOT
SIMUNROBOT
 
Clase 2 Variables Entorno y Pseudocodigo.pptx
Clase 2 Variables Entorno y Pseudocodigo.pptxClase 2 Variables Entorno y Pseudocodigo.pptx
Clase 2 Variables Entorno y Pseudocodigo.pptx
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Paradigmas programacion
Paradigmas programacionParadigmas programacion
Paradigmas programacion
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Lenguaje de programación Java
Lenguaje de programación Java Lenguaje de programación Java
Lenguaje de programación Java
 
Conceptos Básicos de Programación
Conceptos Básicos de ProgramaciónConceptos Básicos de Programación
Conceptos Básicos de Programación
 

Dernier

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Dernier (15)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Obfuscation & unpacking

  • 1. OBFUSCATION & UNPACKING: FUN & BUSINESS Ricardo Gómez @RicardoGomez94
  • 2. ¿De qué va esto? • Uso de técnicas para evadir el análisis estático del binario. • ¿Puedo hacer legible el código? • ¿Por qué no solo análisis dinámico?
  • 3. Introducción • Desemsamblar código no es un problema simple. • Cuando se implementa anti-desensamblado, el autor del malware crea una secuencia de código que engaña al desensamblador. • Las técnicas anti-desensamblado funcionan tomando ventaja de las asunciones y limitaciones de los desensambladores.
  • 4. ¿De qué se trata el ofuscamiento de código? La ofuscación es: alterar la estructura del código original manteniendo su funcionalidad original. Cumple dos papeles de vital importancia para el escritor de código malicioso: • Retrasar el análisis de ingeniería inversa. • Burlar o confundir los motores antivirus y que no detecten el código malicioso.
  • 6. Los decompiladores esperan código legible, ordenado. Hacen varias asunciones, si no se cumplen: fallan. Luego de un CALL el valor de ESP no se debería alterar.
  • 8. • Semántica – Cambio de instrucciones por otras que den el mismo resultado: recomendable limpiar el código. • Código basura (junk code) – Código inútil. NOPear las instrucciones inválidas. • Manejo de opcodes – Código oculto entre instrucciones. Eliminar código innecesario. • Dado que “solo” es ofuscamiento, un reverser determinado logrará su objetivo (aunque con un consumo mayor de tiempo).
  • 9. Semántica • Cambio de instrucciones por otras que den el mismo resultado. • Pueden haber dos, tres o más instrucciones que se puedan simplificar. • Es casi imposible de SIMPLEMENTE reemplazar las instrucciones por simples 0x90 (NOP).
  • 10. Semántica / soluciones • Simplificar las operaciones. • Si existe código inservible reemplazarlo por NOPs.
  • 11. Código basura o junk code • • • • Código que no altera el funcionamiento. Código sin sentido. Saltos sin sentido. Calculos complejos para dar un resultado sencillo que luego no es utilizado. • Duplicamiento de código.
  • 12. Código basura / soluciones • Dado que no alteran la semántica se pueden reemplazar por NOPs.
  • 13. Manejo de opcodes • Si el desensamblador es engañado para mostrar instrucciones desde un offset errado, se puede ocultar código.
  • 14.
  • 15. Manejo de opcodes / soluciones • Insertar NOPs en los opcodes inválidos.
  • 16. Xref inválidas • Se hace uso de técnicas no habituales para transferir el flujo de código,.
  • 19. Técnicas comunmente usadas • Anti-debugging – APIs – Chequeo manual de estructuras – Identificación del comportamiento del depurador
  • 20. Conceptos básicos • PEB  Estructura de datos que contiene gran informacion sobre el proceso. • HEAP  Un heap es una forma de manejo de memoria de la cual puede hacer uso una aplicación cuando necesita reservar y liberar memoria dinámicamente. • HANDLE  Manejador. Puntero inteligente. Referencia objetos o bloques de memoria.
  • 21. API IsDebuggerPresent El más básico (y obvio). El booleano PEB.BeingDebugged se activa si hay un depurador presente. FS[0x30] apunta al PEB. La API kernel32 !IsDebuggerPresent() revisa este flag
  • 23. NtQueryInformationProcess  API nativa.  Devuelve información de un determinado proceso.  Parámetros: 1 HANDLE ProcessHandle, • 2 PROCESSINFOCLASS ProcessInformationClass, • 3 PVOID ProcessInformation, • ULONG ProcessInformationLength, • PULONG ReturnLength
  • 24.
  • 25. Chequeo manual de estructuras  Byte IsBeingDebugged en el PEB (FS:[30]+2).  Chequeo del ProcessHeap (localizado en 0x18 en la estructura PEB).  Bytes Flag y ForceFlag.
  • 26. Comportamiento del depurador  Comprobaciónes de integridad (checksum) • Calcular la integridad de una sección de su código.  Chequeos de tiempo de ejecución  RTDSC  QueryPerformanceCounter y GetTickCount
  • 27.
  • 29. Recursos • IDAPython https://code.google.com/p/idapython/ • IDA Pro https://www.hexrays.com/products/ida/index.shtml

Notes de l'éditeur

  1. ¿Qué podrá hacer el público después de completar este curso? Describa brevemente para cada objetivo cómo el públicoobtendrá beneficios de esta presentación.
  2. ¿Qué podrá hacer el público después de completar este curso? Describa brevemente para cada objetivo cómo el públicoobtendrá beneficios de esta presentación.
  3. ¿Qué podrá hacer el público después de completar este curso? Describa brevemente para cada objetivo cómo el públicoobtendrá beneficios de esta presentación.
  4. Use un encabezado de sección para cada uno de los temas, de manera que la transición resulte clara para el público.
  5. Use un encabezado de sección para cada uno de los temas, de manera que la transición resulte clara para el público.
  6. Agregue diapositivas a cada sección del tema según sea necesario, incluidas diapositivas con tablas, gráficos e imágenes. Consulte la siguiente sección para ver una muestradiseños de vídeo, imagen, gráfico y tabla de muestra.