viernes, 5 de octubre de 2012

¿Qué es PayLoad?

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!!

6 comentarios:

  1. 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!

    ResponderEliminar
    Respuestas
    1. El 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.
      http://bluelog.blueliv.com/ataque/meterpreter-cheat-sheet/
      http://www.flu-project.com/meterpreter-scripts.html

      Eliminar
  2. Interesante post.. Me sirvio muchisimo

    ResponderEliminar
  3. podrian explicar como utilizar las diferesntes cabeceras y metodos de conexion con los payloads

    ResponderEliminar
  4. Excelente. Estoy empezando con esto de seguridad y no terminaba de entender el concepto de "payloads" y este post me sirvió.
    Gracias.
    Saludos.

    ResponderEliminar

Archivo del blog

Consultor e Instructor de Sistemas y Seguridad Informática en Asturias