Autor Tema: Ejemplo real de un buffer overflow con explicación básica  (Leído 2846 veces)

0 Usuarios y 1 Visitante están viendo este tema.

nitr0us

  • ***
  • Mensajes: 358
  • Liked: 94
  • #rm -fr /
    • http://www.brainoverflow.org
Ejemplo real de un buffer overflow con explicación básica
« : diciembre 31, 2014, 01:44:20 pm »


Para quienes aún se preguntan cómo es buffer overflow y esas cosas del demonio... Justo encontré un ejemplo sencillísimo, por diversión, en el cliente NTP. Al darle un comando, verifica si lo entiende y sino manda un error, pero el buffer overflow ocurre cuando el comando es "muy largo" para el buffer que reservaron (quinientos veintitantos bytes).

En las instrucciones en ensamblador se puede observar claramente que el microprocesador quiere copiar el contenido del registro EAX, que es 0x41414141 (AAAA en hexadecimal) al buffer apuntado por el registro ESI, que es 0x41414141 (controlado totalmente, es decir, se puede sobreescribir cualquier parte de la memoria, lo que lleva al control de ejeción de código).

Es eso que escuchan de repente en las noticias o parches de seguridad como "... bug que permite la ejecución remota de código..", aquí con un claro ejemplo :D. Feliz año !
« Última Modificación: enero 01, 2015, 07:16:58 pm por hkm »

int_0x40

  • **
  • Mensajes: 163
  • Liked: 25
Re:Ejemplo real de un buffer overflow con explicación básica
« Respuesta #1 : enero 05, 2015, 09:21:05 am »
Parece un stack based típico. Si entendí bien el bug esta en el cliente, no en el daemon cierto?

"
Bugs
ntpdc is a crude hack. Much of the information it shows is deadly boring and could only be loved by its implementer. The program was designed so that new (and temporary) features were easy to hack in, at great expense to the program's ease of use. Despite this, the program is occasionally useful."

En este caso su utilidad fue acémica...

Saludos.
"I am a blind man...now my room is cold..."

nitr0us

  • ***
  • Mensajes: 358
  • Liked: 94
  • #rm -fr /
    • http://www.brainoverflow.org
Re:Ejemplo real de un buffer overflow con explicación básica
« Respuesta #2 : enero 07, 2015, 01:57:54 pm »
Justamente ayer, @dronesec hizo este excelente tutorial detalladísimo del exploit:

http://hatriot.github.io/blog/2015/01/06/ntpdc-exploit/

Explica todo detallado, desde el uso de ROP gadgets hasta cómo evadir las protecciones anti ejecución.