Con esta entrada pretendo continuar con el aprendizaje, pasito a pasito del arte de explotar las vulnerabilidades que nos brindan algunas aplicaciones Windows.
En este caso, se trata de practicar una técnica denominada "SEH Based Exploits", es decir, explotar aplicaciones en donde se puede sobrescribir el puntero de algún SE Handler.
Para ello, usaremos un ejecutable del cual disponemos del código fuente y que fue publicado hace años en la lista de CrackSLatinoS.
La solución propuesta, muestra como explotar la vulnerabilidad sobre Windows XP con SP3 y con DEP deshabilitado.
Los ficheros adjuntos son:
- La resolución en formato PDF (lizer-sissy by L0ngin0s.pdf).
- El binario vulnerable (01-lizer-sissy.exe).
- El código fuente del binario (01-lizer-sissy.c)
- El script en python para explotar la aplicación (lizer_sissy.py).
- Mini-guía con los pasos generales para realizar un SEH Based Exploits.
Cualquier crítica constructiva, será bien recibida.
Hasta el próximo exploit!!!
Genial la resolución, muy bien explicado. Como aporte si fuese tú, en la zona que utilizas metasploit, para hacer el patrón lo muestras con una imagen, creo que a pesar de no ser el objetivo, te podías meter a explicar un poco más la utilidad. Concretamente este le resuelves en pocas páginas y eso permite explayarse en otras cosas. Pero es sólo una idea ;). Un abrazo!
ResponderEliminarBuenas madrugadas WiNSoCk ;)
ResponderEliminarAnoto la idea e intentaré que no se me pase para el próximo. No obstante, la generación del patrón, la explique en el primer tutorial que hice sobre exploiting:
http://longinox.blogspot.com.es/2013/01/solucion-al-reto-explotamebypekeinfov1.html
Muchas gracias por dedicarme un trozito de tu tiempo.
Un abrazo.
Ummm... Supongo que le tendré en pendientes de lectura, por que no le había leído. Mañana le daré caña.
ResponderEliminarOtra anotación (y si no lo crees conveniente, no me hagas mucho caso, que me dieron a elegir, o guapo, o listo, y me tangaron...). Pero también hubiera explicado el tema del salto inverso, en el idioma de cervantes. Ya que es un tema un poco lioso, si te pilla de nuevas.
"The first byte of a SHORT Jump is always EB and the second is a relative offset from 00h to 7Fh for Forward jumps, and from 80h to FFh for Reverse (or Backward) jumps."
Bueno, dejo de dar ideas, que mucho criticar pero luego no publico nada para que me deis a mi caña! :D Un abrazo, y acuéstate... ¡Qué a estas horas, sólo se hacen maldades! ;)
PD: Soy adicto a lo que escribes, me haces aprender en cada tute y eso me encanta, te dedico una canción si es necesario!
Personalmente prefiero recibir críticas, siempre que sean constructivas, como es en esta caso. Así conseguimos aprender y mejorar con cada nueva crítica, por tanto WiNSoCk, te pido por favor que no dejes de hacerlo ;)
ResponderEliminarRespecto al salto inverso es más sencillo de lo que parece, sin embargo, lo tendré en cuenta para el próximo tutorial que se precie a ello.
Como adelanto te puedo decir que tiene que ver y mucho con la representación de números con signo, concretamente con el complemento a la base:
http://es.wikipedia.org/wiki/Representaci%C3%B3n_de_n%C3%BAmeros_con_signo
Estoy seguro que esto lo sabes de sobra, pero por si acaso te apetece recordar algo de arquitectura de computadores.
Respecto a la canción, creo que a estas horas me vendría bien esta:
http://www.youtube.com/watch?v=pFS4zYWxzNA
por la motivación más bien jejje ;)
Un saludo, brother.
Me encanta la canción. El tema de saltos, he de reconocer, que al leer el tutorial no lo entendía, con el anexo fue donde vi (y recordé), el funcionamiento de saltos sin dirección. (Prometo que ya lo tengo claro xD).
ResponderEliminarPero vamos, el ponerlo en el tutorial es sólo como idea, por tener toda la documentación junta, en la web que pones de referencia se aclara perfectamente.
Un abrazo! :)
Hola Longinos, para cerrar la aplicación correctamente puedes intentar restaurar los valores originales de la pila en vez de llamar a ExitProcess.
ResponderEliminarPor lo demás y como crítica constructiva sólo decirte que al poner los opcodes de la shell que ejecuta la calculadora, parece "magia". Es decir, sería interesante poner el código fuente que generan los opcodes de la shell.
Saludos,
Shoulck
Muchas gracias Javier por tus consejos. Los tendré en cuenta para el próximo ;)
ResponderEliminarUn saludo.