La semana pasada publicamos un artículo definiendo de forma sencilla ¿Qué es Exploit?, bueno hoy vamos a continuar un poco más allá explicando un término estrechamente relacionado con exploit, el archiconocido Payload.
Hablábamos de que las vulnerabilidades o errores presentes
en cualquier software pueden ser aprovechadas para producir efectos inesperados
en los equipos, una vez descubierto ese fallo se desarrollaban pequeños programas
(exploits) para forzar de forma específica ese error en el sistema, ¿y ahora qué?
Además de conseguir que el software produzca ese error lo ideal sería poder
aprovecharlo para que el equipo realice las funciones que yo desee.
Esa parte del software que nos brinda una función ante un
error es el Payload, la ventaja de este planteamiento es que el mismo payload
puede ser utilizado por distintos exploits y un mismo exploit puede utilizar
varios payloads, una programación modular
fantástica, je, je.
Un ejemplo…
Se publica una vulnerabilidad conocida en un servidor web
muy utilizado, ...“cuando una petición malformada chuchugua, chuchugua llama a la función
de php no se qué… que provoca que se pueda X, y permite la ejecución de código en
la maquina del server”.
La comunidad (incluidos los malos) se ponen a trabajar y
desarrollan el software (exploit) normalmente con lenguajes de programación rápidos
ruby, perl o phyton para provocar ese error, además desarrollan o diseñan ese
software para que el fallo permita sacar “ventaja”, brindarnos una Shell,
screenshot, etc. En muchas ocasiones se utilizan Payloads ya creados para
otros exploits, otras veces hay que diseñarlos específicamente para ese
exploit.
Navegando
un poco por la red no hay mucha información sobre este tema, una de las definiciones más precisa y además de una forma muy sencilla de comprender es la que encontramos en
el blog de Eset:
Si queréis profundizar un poco más a nivel técnico sobre
este tema hay unos artículos increíbles de la mano de @DarkOperator en
Hacknode.
Seguridad a lo Jabalí para Todos!!
Interesante artículo, y más que en mi caso no estoy muy metido en el tema de exploits. Solo una duda: a mi me cuesta entender un poco lo que es el meterpreter, pero con este artículo he llegado a entender que meterpreter es como un conjunto de payloads que pueden ser incluidos en varios exploits, y lo que hace metasploit es tener los exploits y los payloads separados, de esta forma al encontrar una vulnerabilidad, se elije el exploit a usar, y de igual forma se elije el payload (compatible con el exploit) a cargar. Y es por ello que muchos escojen como payload alguna función específica del meterpreter (como reverse_tcp por ejemplo) y esta funcion o payload es cargada por el exploit previamente seleccionado... estoy en lo correcto? lo he comprendido bien? les agradeceré sus correcciones, salu2!
ResponderEliminarEl tema es un poco más complejo, pero vas bien en realidad meterpreter es un SuperPayload que inyecta en la memoria de la maquina explotada una serie de DLLs que posteriormente permiten hacer infinidad de cosas, lógicamente el exploit tiene que permitir cargar estas DLLS o parte de ellas, la ventaja es que al no modificar elementos en el equipo de la víctima es fácil “pasar desapercibido”, en general lo que planteas es bastante correcto. Aquí te dejo un par de enlaces en los que está muy bien explicado.
Eliminarhttp://bluelog.blueliv.com/ataque/meterpreter-cheat-sheet/
http://www.flu-project.com/meterpreter-scripts.html
estan locos... :)
ResponderEliminarInteresante post.. Me sirvio muchisimo
ResponderEliminarpodrian explicar como utilizar las diferesntes cabeceras y metodos de conexion con los payloads
ResponderEliminarExcelente. Estoy empezando con esto de seguridad y no terminaba de entender el concepto de "payloads" y este post me sirvió.
ResponderEliminarGracias.
Saludos.