security - hack - ¿Cuáles son algunos recursos avanzados y modernos en la escritura de exploits?
exploits web (4)
DEP (Prevención de ejecución de datos), NX (No-Ejecutar) y otras mejoras de seguridad que específicamente no permiten la ejecución se pasan por alto fácilmente mediante el uso de otras técnicas de explotación como Ret2Lib o Ret2Esp. Cuando se compila una aplicación, generalmente se hace con otras bibliotecas (Linux) o DLL (Windows). Estas técnicas Ret2 * simplemente llaman a una función existente () que reside en la memoria.
Por ejemplo, en un exploit normal, puede desbordar la pila y luego tomar el control de la dirección de retorno (EIP) con la dirección de un NOP Sled, su Shellcode o una Variable Ambiental que contiene su Shellcode. Al intentar este exploit en un sistema que no permite que la pila sea ejecutable, su código no se ejecutará. En su lugar, cuando se desborda la dirección de retorno (EIP), puede apuntarla a una función existente dentro de la memoria como system () o execv (). Pre-rellena los registros requeridos con los parámetros que esta función espera y ahora puedes llamar / bin / sh sin tener que ejecutar nada desde la pila.
Para más información mira aquí:
He leído y finalizado tanto Reversing: Secrets of Reverse Engineering como Hacking: The Art of Exploitation . Ambos se iluminaron a su manera, pero todavía siento que muchas de las técnicas e información que se presentan dentro de ellas están obsoletas en algún grado.
Cuando el infame artículo de Phrack, Smashing the Stack for Fun and Profit , fue escrito en 1996, fue justo antes de lo que en cierto modo consideraba la "edad de oro" de la Seguridad informática.
Escribir hazañas en los años siguientes fue relativamente fácil. Un poco de conocimiento básico en C y Ensamblado era todo lo que se requería para realizar desbordamientos de búfer y ejecutar algún código de shell arbitrario en una máquina víctima.
En pocas palabras, las cosas se han vuelto mucho más complicadas. Ahora los ingenieros de seguridad tienen que lidiar con cosas como la asignación aleatoria del diseño del espacio de direcciones (ASLR) , la prevención de ejecución de datos (DEP) , las cookies de pila , las cookies de montón y mucho más. La complejidad de las hazañas de escritura aumentó al menos un orden de magnitud.
No es posible ejecutar la mayoría de las explotaciones de saturación de búfer en los tutoriales que encontrará hoy sin compilar con un montón de banderas para desactivar las protecciones modernas.
Ahora, si desea escribir un exploit, debe idear formas de desactivar el DEP, rocíe el montón con su código de shell cientos de veces e intente adivinar una ubicación de memoria aleatoria cerca de su código de shell. Sin mencionar la omnipresencia de los lenguajes administrados en uso hoy en día que son mucho más seguros cuando se trata de estas vulnerabilidades.
Estoy buscando ampliar mi conocimiento de seguridad más allá de escribir exploits de juguete para un sistema de una década. Estoy teniendo problemas para localizar recursos que ayuden a abordar los problemas de escritura de hazañas ante todas las protecciones que describí anteriormente.
¿Cuáles son los artículos, libros u otros recursos más avanzados y prevalentes dedicados a enfrentar los desafíos de escribir exploits para sistemas modernos?
Estoy impresionado, eres un hacker de leet como yo . Necesitas moverte a las aplicaciones web. La mayoría de los números CVE emitidos en los últimos años han sido en aplicaciones web.
Lea estos dos documentos:
http://www.securereality.com.au/studyinscarlet.txt
http://www.ngssoftware.com/papers/HackproofingMySQL.pdf
Obtén una pila LAMP e instala estas tres aplicaciones:
http://sourceforge.net/projects/dvwa/ (php)
http://sourceforge.net/projects/gsblogger/ (php)
http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project (j2ee)
Debes descargar w3af y dominarlo. Escribe plugins para ello. w3af es una plataforma de ataque impresionante, pero tiene fallos y tiene problemas con DVWA, se rasgará en escala de grises. Acunetix es un buen escáner comercial, pero es caro.
Has mencionado ''Aplastando la pila''. En cuanto a la investigación, este artículo fue desactualizado incluso antes de que se publicara. El gusano Morris de finales de los 80 lo usó (para explotar el fingerd IIRC). En ese momento causó un gran revuelo porque en aquel entonces todos los servidores estaban escritos en C optimista.
Tomó unos pocos (10 o más) años, pero gradualmente, todos se volvieron más conscientes de los problemas de seguridad relacionados con los servidores públicos.
Los servidores escritos en C se sometieron a muchos análisis de seguridad y, al mismo tiempo, el procesamiento del lado del servidor se dividió en otros idiomas y tiempos de ejecución.
Hoy las cosas se ven un poco diferentes. Los servidores no son considerados un gran objetivo. Estos días son los clientes los que son el pez gordo. Secuestre un cliente y el servidor le permitirá operar bajo las credenciales de ese cliente.
El paisaje ha cambiado.
Personalmente soy un fanático esporádico de jugar juegos de ensamblaje. No tengo ningún uso práctico para ellos, pero si desea participar en este tema, le recomiendo que consulte la fuente de Metasploit y lea sus listas de correo. Hacen muchas cosas locas y todo está a la vista.
Recomiendo altamente "El Manual de Shellcoder". Es fácilmente la mejor referencia que he leído cuando se trata de escribir exploits.
Si estás interesado en escribir exploits, es probable que tengas que aprender a hacer ingeniería inversa. Para el 99% del mundo, esto significa IDA Pro. En mi experiencia, no hay mejor libro IDA Pro que "El libro IDA Pro" de Chris Eagle. Detalla casi todo lo que necesitarás hacer en IDA Pro.
Hay una gran comunidad de ingeniería inversa en OpenRCE.org. Toneladas de papeles y varias aplicaciones útiles están disponibles allí. Aprendí sobre este sitio web en una excelente conferencia bianual de ingeniería inversa llamada RECon. El próximo evento será en 2010.
La mayoría de la investigación en estos días será "fruta de baja altura". La mayoría de las conversaciones en conferencias de seguridad recientes han sido sobre vulnerabilidades en plataformas móviles (iPhone, Android, etc.) donde hay pocas o ninguna de las protecciones disponibles en los sistemas operativos modernos.
En general, no habrá una sola referencia por ahí que explique cómo escribir un exploit moderno, porque hay una gran cantidad de protecciones integradas en los sistemas operativos. Por ejemplo, supongamos que ha encontrado una vulnerabilidad en el montón, pero esa nueva y molesta función de desconexión segura de Windows le impide ganar ejecución. Tendrías que saber que dos genios investigaron esta característica y encontraron una falla .
Buena suerte en tus estudios. Explotar la escritura es extremadamente frustrante, y extremadamente gratificante!
¡Bah! La cosa del spam me impide publicar todos mis enlaces. ¡Lo siento!