Este documento presenta información sobre técnicas de anti-análisis usadas en malware para dificultar su análisis, incluyendo anti-desensamblado, anti-depuración y anti-VM. Se describen métodos como la inserción de código basura, sustitución de instrucciones, detección de la presencia de un depurador a través del uso de APIs como IsDebuggerPresent, y explotación de vulnerabilidades en el depurador modificando campos en la cabecera PE. El objetivo de estas técnicas es retrasar
JUnit es una herramienta de código abierto para realizar pruebas unitarias de software escrito en Java. Permite automatizar la ejecución de casos de prueba para validar que las clases y métodos cumplen con su especificación. Se han desarrollado plugins para IDEs como Eclipse que facilitan la creación de casos de prueba. JUnit incluye métodos como assertEquals para comparar resultados esperados vs. obtenidos y detectar errores.
Este documento contiene 22 programas de código en Java con diferentes funciones como imprimir números, promediar calificaciones, leer datos de alumnos, realizar operaciones matemáticas, utilizar constructores, excepciones y diseño gráfico. El portafolio muestra la evolución del estudiante en el aprendizaje de programación en Java a través de ejemplos prácticos de código.
Este documento discute técnicas de ofuscamiento de código y anti-desensamblado. Explica que la ofuscación altera la estructura del código para retrasar el análisis inverso sin cambiar la funcionalidad. También describe algunas técnicas comunes como el uso de código basura, manejo de opcodes y detección de depuradores. El documento concluye señalando que un reverso determinado eventualmente podrá desensamblar el código a pesar de estas técnicas.
Este documento presenta una introducción al análisis de malware. Explica conceptos clave como ensamblador, debuggers, desensambladores, la estructura de archivos ejecutables, y técnicas de protección como crypters y packers. Luego, realiza un análisis estático y dinámico de una muestra de malware Trickbot, un troyano bancario, para demostrar técnicas de análisis. Finalmente, proporciona una lista de herramientas y recursos útiles para el análisis de malware.
Este documento presenta una introducción a la depuración avanzada con WinDbg y Visual Studio 2010. Explica conceptos como el modo kernel vs modo usuario, la arquitectura de memoria de Windows, callstacks y hilos. Luego cubre temas como la depuración de código nativo y .NET con WinDbg usando extensiones como SOS y SOSEX. Finalmente, propone algunos laboratorios prácticos para depurar problemas como bloqueos, crashes y fugas de memoria en aplicaciones .NET.
Este documento presenta una agenda y actividades para un taller sobre pruebas de penetración (pentest). La agenda incluye introducciones a pentest, técnicas básicas de hacking y una sesión de preguntas y respuestas. Las actividades cubren riesgos de seguridad corporativa, tipos de pruebas de pentest, estructura de un pentest, técnicas básicas de hacking y conclusiones. El documento también proporciona ejemplos de shellcodes y explica vulnerabilidades como buffer overflows.
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...Iván Portillo
Este documento presenta una discusión sobre la investigación reactiva vs proactiva de amenazas cibernéticas. La investigación reactiva implica analizar un hash malicioso detectado para identificar su naturaleza y posibles vínculos con otras amenazas conocidas. La investigación proactiva implica explorar objetivos potenciales utilizando técnicas de inteligencia como análisis de dominios, IPs, usuarios en redes sociales y más para simular escenarios de amenazas. También se discuten las tácticas, técnicas
JUnit es una herramienta de código abierto para realizar pruebas unitarias de software escrito en Java. Permite automatizar la ejecución de casos de prueba para validar que las clases y métodos cumplen con su especificación. Se han desarrollado plugins para IDEs como Eclipse que facilitan la creación de casos de prueba. JUnit incluye métodos como assertEquals para comparar resultados esperados vs. obtenidos y detectar errores.
Este documento contiene 22 programas de código en Java con diferentes funciones como imprimir números, promediar calificaciones, leer datos de alumnos, realizar operaciones matemáticas, utilizar constructores, excepciones y diseño gráfico. El portafolio muestra la evolución del estudiante en el aprendizaje de programación en Java a través de ejemplos prácticos de código.
Este documento discute técnicas de ofuscamiento de código y anti-desensamblado. Explica que la ofuscación altera la estructura del código para retrasar el análisis inverso sin cambiar la funcionalidad. También describe algunas técnicas comunes como el uso de código basura, manejo de opcodes y detección de depuradores. El documento concluye señalando que un reverso determinado eventualmente podrá desensamblar el código a pesar de estas técnicas.
Este documento presenta una introducción al análisis de malware. Explica conceptos clave como ensamblador, debuggers, desensambladores, la estructura de archivos ejecutables, y técnicas de protección como crypters y packers. Luego, realiza un análisis estático y dinámico de una muestra de malware Trickbot, un troyano bancario, para demostrar técnicas de análisis. Finalmente, proporciona una lista de herramientas y recursos útiles para el análisis de malware.
Este documento presenta una introducción a la depuración avanzada con WinDbg y Visual Studio 2010. Explica conceptos como el modo kernel vs modo usuario, la arquitectura de memoria de Windows, callstacks y hilos. Luego cubre temas como la depuración de código nativo y .NET con WinDbg usando extensiones como SOS y SOSEX. Finalmente, propone algunos laboratorios prácticos para depurar problemas como bloqueos, crashes y fugas de memoria en aplicaciones .NET.
Este documento presenta una agenda y actividades para un taller sobre pruebas de penetración (pentest). La agenda incluye introducciones a pentest, técnicas básicas de hacking y una sesión de preguntas y respuestas. Las actividades cubren riesgos de seguridad corporativa, tipos de pruebas de pentest, estructura de un pentest, técnicas básicas de hacking y conclusiones. El documento también proporciona ejemplos de shellcodes y explica vulnerabilidades como buffer overflows.
[2020] Taller IntelCon - La reactividad del forense digital vs la proactivida...Iván Portillo
Este documento presenta una discusión sobre la investigación reactiva vs proactiva de amenazas cibernéticas. La investigación reactiva implica analizar un hash malicioso detectado para identificar su naturaleza y posibles vínculos con otras amenazas conocidas. La investigación proactiva implica explorar objetivos potenciales utilizando técnicas de inteligencia como análisis de dominios, IPs, usuarios en redes sociales y más para simular escenarios de amenazas. También se discuten las tácticas, técnicas
Este documento presenta la segunda clase de un taller de programación orientada a objetos. Explica conceptos como paradigmas de programación, instalación de herramientas de desarrollo Java, tipos de datos primitivos, operadores aritméticos y lógicos, condicionales if y retos de programación. También incluye código de ejemplo para ingreso de datos, cálculos matemáticos y comparaciones.
Este documento presenta la segunda clase de un taller de programación orientada a objetos. Explica conceptos como paradigmas de programación, instalación de herramientas de desarrollo Java, tipos de datos primitivos, operadores aritméticos y lógicos, condicionales if y retos de programación para identificar años bisiestos.
Este documento contiene preguntas y respuestas sobre herramientas de Windows como la BIOS, la administración del sistema, los puntos de restauración, las claves de registro, el administrador de equipos y el monitor de estado. Proporciona información sobre cómo examinar conflictos de hardware, almacenar valores de configuración, generar informes de actividad del sistema, asociar tipos de archivo con aplicaciones y analizar el estado del sistema en tiempo real.
Code::Blocks es un IDE multiplataforma de código abierto que soporta múltiples compiladores como GCC y Clang. C++ es un lenguaje de programación diseñado para extender C con mecanismos de objetos. Un programa en C++ está definido por funciones, donde la función principal es main, y contiene directivas de preprocesador, declaraciones globales, y funciones definidas por el usuario.
En esta plática se explicará como montar un laboratorio de análisis de malware. Incluyendo todo el proceso, desde la captura hasta el análisis.
Se capturará el malware “in the wild” utilizando Dionaea, posteriormente se mostrará el proceso para analizar dinamicamente el malware utilizando Cuckoo Sandbox en una “Internet controlada”.
No pertenezco a ninguna casa antivirus, así que los reportes se quedan en privado para cuestiones académicas. Y cuando el virus lo amerita, pues le hacemos algo de “reversing” para conocer más sobre él.
La idea es integrar las herramientas para generar análisis semi-automáticos de los virus que caen en el sensor.
Se publicará la nueva versión de la herramienta Arania. Arania nos sirve para detectar ataques de RFI (Remote File Inclusion) buscando en los logs del servidor, en este caso si descarga la herramienta y busca una “segunda inclusión”, para obtener el código completo.
GUADALAJARACON 2012
http://www.guadalajaracon.org
Guadalajara, Jalisco, México - 20 y 21 de abril del 2012
Este documento describe un laboratorio para el análisis de malware. El laboratorio tiene como objetivos conocer el comportamiento del malware, ayudar en la automatización del análisis, contribuir a la seguridad en Internet y resolver problemas relacionados con el análisis de malware. El laboratorio utiliza herramientas de código abierto como Dionaea y Cuckoo para capturar y analizar malware de forma estática, dinámica y de comportamiento. Los resultados incluyen informes detallados, clasificación de malware y firmas para antivirus.
Este documento habla sobre las pruebas de software. Explica que una prueba de software evalúa la entrada y salida de un programa para verificar que funciona como se espera. Luego describe los diferentes tipos de pruebas como caja negra, caja blanca y de regresión. Finalmente, explica que aunque las pruebas pueden encontrar errores, no pueden garantizar que no haya errores en el software.
El documento describe un análisis forense de un rootkit llamado Necurs. Explica cómo el rootkit infecta sistemas ejecutando un dropper que instala un driver malicioso. El driver oculta procesos y archivos, y se comunica con procesos en modo usuario para inyectar código malicioso. Almacena información en el registro de Windows de forma cifrada.
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]RootedCON
Este documento proporciona instrucciones para crear virus informáticos y rootkits de manera ilegal. Describe métodos como el uso de SEO para propagar malware, técnicas de encriptación y mutación de código, formas de controlar botnets, esconderse en sistemas mediante rootkits, y expandir virus a otros equipos.
Este documento presenta una prueba diagnóstica para el sexto grado. Contiene preguntas sobre tecnología como relacionar términos tecnológicos con sus definiciones, identificar componentes de hardware y software, y describir el uso de programas comunes. También incluye ejercicios para emparejar conceptos tecnológicos y realizar actividades en Word. El objetivo es evaluar los conocimientos básicos de los estudiantes sobre tecnología e informática.
¿Cómo detectar ataques de red utilizando Snort? | CISObeatCISObeat
#Webinar #CISObeat 06/12/2018
Puedes ver el video en nuestro canal de YouTube:
https://www.youtube.com/watch?v=id-i-6FgJJc
Ponente: José Antonio Gonzáles Jurado
Security Analyst, BSidesPE 2018 Speaker
Únete a la comunidad: https://tiny.cc/RegistroCISObeat
Este documento define qué es un algoritmo y sus características. Un algoritmo es una secuencia detallada de pasos que conduce a la solución de un problema. Los algoritmos deben ser precisos, definidos y finitos. El documento también describe las fases para resolver un problema mediante un algoritmo, incluyendo el análisis del problema, el diseño del algoritmo y su implementación.
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORTJose Gonzales
El documento resume la experiencia de Jose Antonio Gonzales como especialista en seguridad. Tiene experiencia como analista de seguridad y pentester, desarrollando escenarios de prueba de concepto. También tiene experiencia implementando servicios de red y telecomunicaciones. Su agenda incluye una introducción al sistema de detección de intrusos Snort y demostraciones de detección de ataques de backdoor y SQLi usando herramientas como Katana, Empire, Burp Suite y SQLMap.
Java es un lenguaje de programación y plataforma que permite desarrollar aplicaciones interpretadas, portables, seguras, robustas y orientadas a objetos. La máquina virtual de Java ejecuta bytecode independientemente de la arquitectura hardware, lo que permite ejecutar aplicaciones Java en cualquier sistema que soporte la máquina virtual. Java también soporta características como distribución, multithreading, dinamismo y altas prestaciones.
Este documento presenta una agenda para un taller sobre hacking con Python. La agenda incluye temas como la creación de rutinas para inyectar malware en sistemas Linux y Windows utilizando Python, el monitoreo de la actividad del usuario a través de keyloggers, screen scrapers y webcam scrapers creados con Python, y la creación de herramientas para monitorear y controlar sistemas de manera remota. El documento también proporciona detalles técnicos sobre cómo implementar estas técnicas, incluidos ejemplos de código y librerías de Python como OpenCV
El documento presenta una agenda para una charla sobre hacking con Python. La agenda incluye temas como la creación de rutinas para inyectar malware en sistemas Linux y Windows utilizando Python, el monitoreo de la actividad del usuario a través de keyloggers, screen scrapers y webcam scrapers creados con Python, y la creación de herramientas para monitorear y controlar sistemas. También proporciona detalles sobre cómo inyectar malware en procesos de Windows y Linux usando funciones como CreateRemoteThread, LoadLibrary y ptrace.
Java es un lenguaje de programación y plataforma que permite desarrollar aplicaciones una sola vez y ejecutarlas en múltiples sistemas operativos y hardware gracias a la máquina virtual Java. Sus principales características incluyen ser sencillo, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, con altas prestaciones, multithread y dinámico. Esto ofrece ventajas a los desarrolladores como comenzar y escribir código más rápido y elim
Visual Studio.NET es un entorno de desarrollo integrado que permite crear aplicaciones para la plataforma .NET de Microsoft utilizando diversos lenguajes como C#, Visual Basic, C++ y F#. Proporciona herramientas para diseñar interfaces, programar lógica, depurar y publicar aplicaciones web, de escritorio y móviles.
Reglas de Oro para el Desarrollo con Windows Vistajuliocasal
Este documento presenta 10 reglas para el desarrollo de aplicaciones para Windows Vista. Cubre temas como diseño de interfaz de usuario, seguridad, compatibilidad con Aero Glass, uso de controles estándar, integración con características como UAC y transacciones NTFS, y verificación de la versión de Windows. También proporciona consejos sobre el uso de temas, fuentes y gráficos consistentes con Vista.
Este documento presenta la segunda clase de un taller de programación orientada a objetos. Explica conceptos como paradigmas de programación, instalación de herramientas de desarrollo Java, tipos de datos primitivos, operadores aritméticos y lógicos, condicionales if y retos de programación. También incluye código de ejemplo para ingreso de datos, cálculos matemáticos y comparaciones.
Este documento presenta la segunda clase de un taller de programación orientada a objetos. Explica conceptos como paradigmas de programación, instalación de herramientas de desarrollo Java, tipos de datos primitivos, operadores aritméticos y lógicos, condicionales if y retos de programación para identificar años bisiestos.
Este documento contiene preguntas y respuestas sobre herramientas de Windows como la BIOS, la administración del sistema, los puntos de restauración, las claves de registro, el administrador de equipos y el monitor de estado. Proporciona información sobre cómo examinar conflictos de hardware, almacenar valores de configuración, generar informes de actividad del sistema, asociar tipos de archivo con aplicaciones y analizar el estado del sistema en tiempo real.
Code::Blocks es un IDE multiplataforma de código abierto que soporta múltiples compiladores como GCC y Clang. C++ es un lenguaje de programación diseñado para extender C con mecanismos de objetos. Un programa en C++ está definido por funciones, donde la función principal es main, y contiene directivas de preprocesador, declaraciones globales, y funciones definidas por el usuario.
En esta plática se explicará como montar un laboratorio de análisis de malware. Incluyendo todo el proceso, desde la captura hasta el análisis.
Se capturará el malware “in the wild” utilizando Dionaea, posteriormente se mostrará el proceso para analizar dinamicamente el malware utilizando Cuckoo Sandbox en una “Internet controlada”.
No pertenezco a ninguna casa antivirus, así que los reportes se quedan en privado para cuestiones académicas. Y cuando el virus lo amerita, pues le hacemos algo de “reversing” para conocer más sobre él.
La idea es integrar las herramientas para generar análisis semi-automáticos de los virus que caen en el sensor.
Se publicará la nueva versión de la herramienta Arania. Arania nos sirve para detectar ataques de RFI (Remote File Inclusion) buscando en los logs del servidor, en este caso si descarga la herramienta y busca una “segunda inclusión”, para obtener el código completo.
GUADALAJARACON 2012
http://www.guadalajaracon.org
Guadalajara, Jalisco, México - 20 y 21 de abril del 2012
Este documento describe un laboratorio para el análisis de malware. El laboratorio tiene como objetivos conocer el comportamiento del malware, ayudar en la automatización del análisis, contribuir a la seguridad en Internet y resolver problemas relacionados con el análisis de malware. El laboratorio utiliza herramientas de código abierto como Dionaea y Cuckoo para capturar y analizar malware de forma estática, dinámica y de comportamiento. Los resultados incluyen informes detallados, clasificación de malware y firmas para antivirus.
Este documento habla sobre las pruebas de software. Explica que una prueba de software evalúa la entrada y salida de un programa para verificar que funciona como se espera. Luego describe los diferentes tipos de pruebas como caja negra, caja blanca y de regresión. Finalmente, explica que aunque las pruebas pueden encontrar errores, no pueden garantizar que no haya errores en el software.
El documento describe un análisis forense de un rootkit llamado Necurs. Explica cómo el rootkit infecta sistemas ejecutando un dropper que instala un driver malicioso. El driver oculta procesos y archivos, y se comunica con procesos en modo usuario para inyectar código malicioso. Almacena información en el registro de Windows de forma cifrada.
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]RootedCON
Este documento proporciona instrucciones para crear virus informáticos y rootkits de manera ilegal. Describe métodos como el uso de SEO para propagar malware, técnicas de encriptación y mutación de código, formas de controlar botnets, esconderse en sistemas mediante rootkits, y expandir virus a otros equipos.
Este documento presenta una prueba diagnóstica para el sexto grado. Contiene preguntas sobre tecnología como relacionar términos tecnológicos con sus definiciones, identificar componentes de hardware y software, y describir el uso de programas comunes. También incluye ejercicios para emparejar conceptos tecnológicos y realizar actividades en Word. El objetivo es evaluar los conocimientos básicos de los estudiantes sobre tecnología e informática.
¿Cómo detectar ataques de red utilizando Snort? | CISObeatCISObeat
#Webinar #CISObeat 06/12/2018
Puedes ver el video en nuestro canal de YouTube:
https://www.youtube.com/watch?v=id-i-6FgJJc
Ponente: José Antonio Gonzáles Jurado
Security Analyst, BSidesPE 2018 Speaker
Únete a la comunidad: https://tiny.cc/RegistroCISObeat
Este documento define qué es un algoritmo y sus características. Un algoritmo es una secuencia detallada de pasos que conduce a la solución de un problema. Los algoritmos deben ser precisos, definidos y finitos. El documento también describe las fases para resolver un problema mediante un algoritmo, incluyendo el análisis del problema, el diseño del algoritmo y su implementación.
Webinar CISOBeat - Detectar Ataques de Red Utilizando SNORTJose Gonzales
El documento resume la experiencia de Jose Antonio Gonzales como especialista en seguridad. Tiene experiencia como analista de seguridad y pentester, desarrollando escenarios de prueba de concepto. También tiene experiencia implementando servicios de red y telecomunicaciones. Su agenda incluye una introducción al sistema de detección de intrusos Snort y demostraciones de detección de ataques de backdoor y SQLi usando herramientas como Katana, Empire, Burp Suite y SQLMap.
Java es un lenguaje de programación y plataforma que permite desarrollar aplicaciones interpretadas, portables, seguras, robustas y orientadas a objetos. La máquina virtual de Java ejecuta bytecode independientemente de la arquitectura hardware, lo que permite ejecutar aplicaciones Java en cualquier sistema que soporte la máquina virtual. Java también soporta características como distribución, multithreading, dinamismo y altas prestaciones.
Este documento presenta una agenda para un taller sobre hacking con Python. La agenda incluye temas como la creación de rutinas para inyectar malware en sistemas Linux y Windows utilizando Python, el monitoreo de la actividad del usuario a través de keyloggers, screen scrapers y webcam scrapers creados con Python, y la creación de herramientas para monitorear y controlar sistemas de manera remota. El documento también proporciona detalles técnicos sobre cómo implementar estas técnicas, incluidos ejemplos de código y librerías de Python como OpenCV
El documento presenta una agenda para una charla sobre hacking con Python. La agenda incluye temas como la creación de rutinas para inyectar malware en sistemas Linux y Windows utilizando Python, el monitoreo de la actividad del usuario a través de keyloggers, screen scrapers y webcam scrapers creados con Python, y la creación de herramientas para monitorear y controlar sistemas. También proporciona detalles sobre cómo inyectar malware en procesos de Windows y Linux usando funciones como CreateRemoteThread, LoadLibrary y ptrace.
Java es un lenguaje de programación y plataforma que permite desarrollar aplicaciones una sola vez y ejecutarlas en múltiples sistemas operativos y hardware gracias a la máquina virtual Java. Sus principales características incluyen ser sencillo, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, con altas prestaciones, multithread y dinámico. Esto ofrece ventajas a los desarrolladores como comenzar y escribir código más rápido y elim
Visual Studio.NET es un entorno de desarrollo integrado que permite crear aplicaciones para la plataforma .NET de Microsoft utilizando diversos lenguajes como C#, Visual Basic, C++ y F#. Proporciona herramientas para diseñar interfaces, programar lógica, depurar y publicar aplicaciones web, de escritorio y móviles.
Reglas de Oro para el Desarrollo con Windows Vistajuliocasal
Este documento presenta 10 reglas para el desarrollo de aplicaciones para Windows Vista. Cubre temas como diseño de interfaz de usuario, seguridad, compatibilidad con Aero Glass, uso de controles estándar, integración con características como UAC y transacciones NTFS, y verificación de la versión de Windows. También proporciona consejos sobre el uso de temas, fuentes y gráficos consistentes con Vista.
3. Ricardo Gómez
Las entrañas del malware
Trucos anti análisis usados en malware bajo plataformas MS
Windows.
4. ¿Qué es malware?
Malware es un programa que contiene código
malicioso.
Un malware es un virus, un worm, una botnet ...
5. Evolución del malware
2001 Virus Anna Kournikova
“Here you are ;-),” “here you have ;o)” and here
you go ;-)”
Cuerpo del mensaje: "Hi, check this!”
Annakournikova.jpg.vbs
6. Evolución del malware
2004 Mydoom, Netsky, Sasser, Bagger.
2005 Redes de bots para obtener dinero.
TROYANOS BANCARIOS.
7. Evolución del malware
Malware bajo pedido.
Espionaje industrial y ciber-guerra.
TDL4 (2008) (indestructible).
Stuxnet (junio 2010).
Flame (mayo 2012).
Medre (junio 2012).
8. Análisis de malware
Análisis de código (estático).
Análisis de comportamiento (dinámico).
Objetivo de ambos: Explicar cómo funciona el
malware.
9. Análisis de malware
Análisis de código (estático).
Obtener información del malware mirando el archivo
(sin ejecución).
10. Análisis de malware
Análisis de comportamiento (dinámico).
Obtener información del malware mediante la
ejecución del mismo.
11. ¿Qué dificulta el análisis?
Anti-desensamblado
Anti-depuración
Anti-VM
Packers
12. Anti-desensamblado
Código insertado manualmente con la finalidad de
provocar un listado incorrecto en las herramientas de
desensamblado.
14. Anti desemsamblado
Ofuscación
¿Qué es código ofuscado?
Alterar la estructura del código original manteniendo
su funcionalidad original.
Objetivos:
Retrasar el análisis de ingeniería inversa.
Burlar o confundir los motores antivirus y que no
detecten el código malicioso.
¿Fácil o difícil?
22. Anti-debugging
Muy popular entre creadores de malware usada para
reconocer cuando la muestra está bajo el control de
un depurador.
23. Anti-debugging
APIs
IsDebbugerPresent
CheckRemoteDebuggerPresent
NtQueryInformationProcess
OutputDebugString
Chequeo manual de estructuras
Chequeo del PEB
Chequeo del ProcessHeap
Chequeo de NtGlobalFlag
24. Anti-debugging
Identificación del comportamiento del depurador
Comprobaciónes de integridad (checksum)
Chequeos de tiempo de ejecución.
Interferir con la funcionalidad del debugger
Explotar vulnerabilidades del depurador
25. Algunos conceptos
PEB Estructura de datos que contiene una gran
cantidad de información sobre el proceso.
HEAP Forma de manejo de memoria de la cual
puede hacer uso una aplicación cuando necesita
reservar y liberar memoria dinámicamente.
HANDLE Manejador.
26. Anti-debugging
APIs
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
30. Anti-debugging
APIs
OutputDebugString
Envía una cadena al depurador para que la muestre.
Depurado No depurado
OutputDebugString El depurador de
no hace nada. sistema llama
internamente la
función DbgPrint
para mostrar la
string.
32. Anti-debugging
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.
NT, 2000, Vista y
XP Vista y W7
Campo XP W7
(64 bits) (64 bits)
(32 bits) (32 bits)
Flag 0x0C 0x40 0x14 0x70
ForceFlag 0x10 0x44 0x18 0x74
33. Anti-debugging
Chequeo de NtGlobalFlag
Un programa ejecutado en un depurador se
comporta ligeramente diferente.
Se crean heaps de memoria diferentes.
PEB en el offset 0x68 (no documentada. Si es igual
0x70, está siendo depurado.
34. Anti-debugging
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
41. Conclusión:
Saber las técnicas es útil para el analista.
Existen plugins, pero para realizar tools se necesita
saber como operan.
El conocimiento permite adaptarse a nuevos
métodos.