jueves 15 de enero de 2009

Del parche al exploit con BinDiff e ImmunityDebugger

Con motivo del apartado 4 del concurso 11 de 2008 de CrackSLatinoS, Ricardo propuso analizar 2 versiones consecutivas de WinRAR, para detectar que vulnerabilidad corregía la versión mas nueva.

En este caso de trata de las versiones WinRAR 3.10 y 3.11. La versión 3.10 de WinRAR no comprueba la longitud de las extensiones de los ficheros contenidos un fichero comprimido y procede a copiar su totalidad en una variable local alojada en la pila. Al desbordar esta variable sobreescribe la dirección de retorno guardada en la pila, pudiendo manipular esta dirección, es posible ejecutar código arbitrario.

En el tutorial se explica en detalle como utilizar BinDiff 2 y como analizar los datos que ofrece, para detectar el bloque vulnerable lo mas rápido y eficazmente posible.

Además se procede a elaborar un script que genera un fichero comprimido que provoca el Buffer Overflow y sirve de PoC (Prueba de concepto)

El tutorial finaliza mostrando los detalles necesarios para convertir la PoC en un exploit totalmente funcional, con el que se puede ejecutar código arbitrario en cualquier víctima que abra el fichero comprimido con la versión de WinRAR 3.10 y anteriores.

Espero que os guste y disfrutéis leyéndolo.
Podéis descargar el tutorial pinchando aquí.

martes 23 de diciembre de 2008

Desarrollo de exploits con Metasploit 3 desde cero - Parte 3

Lo prometido es deuda y +NCR/CRC! ha cumplido su parte ;D La tercera parte de esta serie de tutoriales, ha salido a la luz y la podeis descargar de aquí.

Esta parte, explica como realizar el famoso ataque "SMB Relay Attack" utilizando Metasploit. También denominado "SMB Credential Reflection" por Microsoft.

Analiza detalladamente los paquetes que intervienen en el ataque, y explica el código fuente el exploit proporcionado por Metasploit.

Este tutorial, no solo habla de como desarrollar el exploit para esta vulnerabilidad, sino que explica el funcionamiento de los protocolos de red que intervienen en el mismo. Además muestra de que manera podemos utilizar Metasploit para levantar servicios RPC e interactuar mediante SMB.

Destacar también, que en el anexo se explica el ataque pero realizado contra la autenticación en HTTP, que puede resultar mas familiar y donde es mas fácil de comprender el funcionamiento de la autenticación.

Espero que aprendan mucho y que les guste, porque se de primera mano que +NCR/CRC! se ha esforzado mucho para que podamos disfrutarlo.

Gracias +NCR/CRC!

miércoles 17 de diciembre de 2008

Desarrollo de un Fuzzer genérico para binarios PE con PyDbg

Hace ya algún tiempo que conozco PAIMEI, que es un framework para ingeniería inversa. Este trae consigo un debugger programable, hecho en Python (PyDbg). Lo que permite poder utilizarlo para lo que nosotros queramos, en nuestros propios scripts. No hay mucha información de uso al respecto y menos en castellano, así que la mejor manera de aprender a utilizarlo, es manchandose las manos uno mismo ;D

Con esta idea y otras que me rondaban ya hace tiempo en la cabeza, he desarrollado a modo de prueba un Fuzzer genérico para binarios PE con PyDbg. Es decir para ejecutables .exe

Este fuzzer, es capaz de invocar todas y cada una de las funciones de un binario ejecutable, con valores críticos para cada uno de los argumentos y registrar todas las combinaciones de argumentos que provocan un ACCESS VIOLATION al ser invocadas.

Este seria el punto de partida para la búsqueda de algún Buffer Overflow, en un cualquier software.

El proyecto y su respectivo tutorial, donde se explica todo el proceso de elaboración, lo podéis descargar de aquí.

Espero que os sea útil.

domingo 23 de noviembre de 2008

Desarrollo de exploits con Metasploit 3 desde cero - Parte 2

Hace un par de días que termine la segunda parte de la serie de tutoriales que explica como utilizar el framework Metasploit 3, para desarrollar nuestros propios exploit.

Podéis descargarlo aquí.

En esta parte se explica como terminar los exploits propuestos en la parte 1, utilizando las diferentes utilidades que nos proporciona Metasploit, haciéndolo todo lo flexible y potente que nos permite hacer este maravilloso framework. Además se hace una breve introducción sobre ellos:

- Msfpayload: Para introducir en nuestro exploit las diferentes shellcodes para ejecutar código, abrir puertos, descargar fichero remotos, ejecutar un potente shell (Meterpreter)
- Msfencode: Para codificar nuestras shellcodes y hacer nuestros exploit polimórficos y evitar firmas de antivirus e IDS, muy util ;D
- Msfopcode: Una base de datos donde encontrar los necesarios RET, POP/POP/RET, JMP ESP, etc...

En las próximas entregas, se explicaran algunas utilidades mas. Aprovecho para comunicar que en las siguientes entregas, participaran 2 miembros de CrackSLatinoS, +NCR/CRC! y Ulises2k, ellos escribirán sobre como hacer unos exploit MUY INTERESANTES para Metasploit!! Espero que os guste!.

Hasta la próxima entrega!

viernes 10 de octubre de 2008

¿Quien dijo que programar en Assembler no es coser y cantar?

Hace ya algo de tiempo que no escribía nada, pero cuando hice el blog, pensé en poner cosas interesantes y que resulten útiles para la gente con intereses afines a los mios, así que prefiero no escribir que escribir por escribir.

Ahora al tema que nos ocupa. ¿Quien dijo que programar en ASM (Assembler) es engorroso y muy difícil? Eso sera porque no conoce el IDE RadASM ;D

Para todo el que tenga ganas de programar en ASM como el que programa en Borland C++, Delphi, o incluso diría que en Visual Basic, solo tiene que visitar estos 2 enlaces y en menos de lo que piensa podrá ponerse a ello ;D

Tutorial de Iczelion: http://win32assembly.online.fr/tutorials.html
Los tutoriales del 1 al 35 estan traducidos al castellano. Con esto sabréis toda la teoría y practica sobre como programar para Win32: Ventanas, controles, procesos, multithread, systray, MDI ....

Luego hay otra parte en ingles, sobre VxD, ODBC, PE File Format. Interesantisimos!!

Turotial de ASM-RadASM: http://ricardonarvaja.info/WEB/OTROS/DE%20LA%20LISTA%20MASM32-RADSM/CURSO%20DE%20ASM%20DESDE%20CERO/
Este tutorial de 6 partes, eminentemente practico, muestra la sencillez con la que se puede programar en Assembler gracias al IDE RadASM. Además lo hace con varios vídeos cortos donde explica cada concepto.
Un tutorial muy rápido de leer y que va al grano.

Ahora si que no tenéis excusas para no programar en Assembler porque es engorroso hacer ventanitas, ni hacer condicionales, ni bucles, ni nada de eso ;D

Espero que lo disfruteis!

miércoles 3 de septiembre de 2008

Si es version beta, por algo será...

Como todo el que haya navegado hoy con Google, habrá visto el enlace a su nuevo navegador, Google Chrome. Eso no es novedad.

Tampoco lo es, ya que hace varias semana que es publico, un bug para Google Chrome Browser 0.2.149.27, que provoca un DoS.

Esto es provocado al ir al siguiente enlace:
evil:%

Al poner esto en la barra de direcciones o al intentar dirigirse a esta dirección (Pincha aquí) la librería chrome.dll provoca una excepción no controlada por el manejador de excepciones. Por eso sale la ventana típica de: Debug | Send Report | Don't Send.

Si le damos a Debug, vemos como salta a una dirección cuyo contenido es INT3. Con razón que cause una excepción. Esto provoca que se lance el debuguer asignado como JIT.

Cuando salta el debuger, vemos esto:
01002FF0 /. PUSH EBP
01002FF1 |. MOV EBP,ESP
01002FF3 |. INT3
01002FF4 |. POP EBP
01002FF5 \. RETN

Esta parado en 01002FF3, como podemos ver luego restaura EBP y sale del CALL de manera correcta, el ret de la pila no es manipulable. Si seguimos vemos que se reinicia de nuevo el Chrome.

Con este pequeño análisis podíamos descartar la posibilidad de ejecutar código, ya que no se aprecia ningún Buffer Overflow, solo que al ser una versión beta, aun les queda por programar el manejador de excepciones para este trozo de código ;D Hale señores de Google, a currar que seguro que la versión estable es bastante buena.

lunes 18 de agosto de 2008

And the winner is ...

Hace unos meses que empecé con el tema de los concursos en CrackSLatinoS y cerrado el Concurso 6 y sumados los puntos totales, el ganador del regalo que se ofrecía para el que mas puntuara hasta el concurso de Julio, ha sido....redoble tambores.....: Boken

Los concursos constan de 5 o 6 apartados. 1 de exploits y el resto de desproteger crackmes con diferentes empaquetadores comerciales o de prueba, hacer keygens, etc...

Los exploits puntuaban bastante, y me ha valido para puntuar lo suficiente como para resultar ganador ;D

El premio, es el increíble libro:
http://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X
en el que colabora Gerardo Richarte, miembro de CrackSLatinoS y cofundador de CORE Security, donde trabajan algunos miembros de la lista reconvertidos de "crackers" a "exploit writer", ingeniería inversa al fin y al cabo ;D

Mis soluciones a los apartados que hice, sobre los concursos, los podéis leer aquí:
http://boken00.blogspot.com/2008/07/ingenieria-inversa-y-crackslatinos.html
al final del mensaje están los enlaces de mis soluciones.

Espero haberos animado a concursar y formar parte de la lista, para que entre todos podamos aprender mucho mas!!

Saludos.