Desbordamiento de buffer remoto - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

Desbordamiento de buffer remoto

Description:

No necesita cuenta de usuario en la m quina a asaltar como la necesitar a una ... Asocia una 'shell' de commandos interactiva a ese puerto. Con un poco de suerte ... – PowerPoint PPT presentation

Number of Views:150
Avg rating:3.0/5.0
Slides: 15
Provided by: asyc1
Category:

less

Transcript and Presenter's Notes

Title: Desbordamiento de buffer remoto


1
Desbordamiento de buffer remoto
  • Conceptos básicos
  • (CPU Intel x86)

2
Ventajas del método
  • No necesita cuenta de usuario en la máquina a
    asaltar como la necesitaría una escalada de
    privilegios.
  • Los exploits suelen ser bastante compactos y no
    muy extensos.
  • El código de Windows ...

3
Tipos de Desbordamiento
  • Tres tipos
  • Desbordamiento de buffer en stack (machacar
    dirección de retorno en el stack). lt-------
  • Desbordamiento de heap memory (machacar
    header de espacio libre, la función de
    asignación machaca dirección de retorno de
    función).
  • Desbordamiento en segmento de datos (machacar
    puntero a función).

4
Regiones de un proceso en memoria
Pila (stack) Memoria dinámica (heap)
Parte alta de memoria
Variables estáticas (espacio reservado y valores
de inicialización)
Código y datos de sólo lectura
Parte baja de memoria
5
Parte alta de memoria
función(char parametro1,...) char
buff_aux_localN ... procesa la petición del
usuario del servicio parte de la info se mete en
buff_aux_local main() ... char
buff_pet_usuarioSIZE ... apertura de un
socket, asociado a un puerto donde se presta el
servicio escucha en el socket y lo que reciba lo
mete en buffer buff_pet_usuario ... función(buff_
pet_usuario,...) ...

M A I N
buff_pet_usuario
Parte baja de la pila
...
Parámetro 1
...
F U N C I O N
Dirección de Retorno
Saved Frame Pointer
buff_aux_local
...
Parte alta de la pila
Stack pointer
Parte baja de memoria
6
La función copia parte de la petición a
buff_aux_local

STACK OVERFLOW
Info a copiar en buff_aux_local
Shellcode
buff_pet_usuario
Parámetro 1
3)
1)
...
Dirección de retorno machacada!
Dirección dentro de buff_pet_usuario
Buffer local, es desbordado y en la posición de
la dirección de retorno de la función,
metemos una dirección que apunta a una posición
dentro de buff_pet_usuario, a un lugar que nos
interese en el shellcode.
Info...
2)
Info...
buff_aux_local
...
7
Shellcode
  • Escucha en otro puerto diferente al del servicio
    o aplicación.
  • Asocia una shell de commandos interactiva a ese
    puerto.
  • Con un poco de suerte ... se ejecutará con
    privilegios de administrador!

8
Requisitos del shellcode
  • El paso a ensamblador de la shellcode debe
    cumplir con el requisito de no tener caracteres
    nulos intermedios, pues podrían ser entendidos
    como final del string que se mete en el buffer
    (p.ej MOVL EBX,0x0 -gt XOR EBX,EBX).
  • La estructura de la información en el buffer a
    desbordar, dependerá de la aplicación o servicio
    a ser atacado. Normalmente el código de la
    shellcode, y la información necesaria para
    desbordar el buffer local de la función
    vulnerable, se integrarán en una petición
    válida para esa aplicación o servicio.
  • No sabemos donde está el buffer en el que
    colocamos el shellcode todos los
    direccionamientos deben ser relativos.

9
Info de la petición
buff_pet_usuario
Info a copiar a buff_aux_local
Dirección de salto algún lugar entre los NOPs
NOP NOP NOP NOP ...
JMP CALLZ (salto relativo)
- sacar de la pila dirección del string
/bin/sh y meterlo en un registro. - apertura de
un socket en un puerto predefinido, - espera
conexiones en ese puerto. - ejecutar la shell
START
S H E L L C O D E
CALL START
CALLZ
No sabemos en qué sitio de la memoria va a
estar el string /bin/sh
/bin/sh
Dirección en pila,como dirección de retorno
de CALL START
10
En un caso real (I)
  • Para una aplicación/versión/S.O. determinados
    que queremos atacar, podemos averiguar donde
    comienza la pila. A partir de ahí intentar caer
    en los NOPs de relleno que hemos colocado con el
    shellcode en el buffer.
  • El fin de los NOPs es aumentar la probabilidad de
    acertar en el sitio adecuado con el salto.

11
En un caso real (II)
  • Connect back shells
  • Abren conexiones a puertos predefinidos de la
    máquina atacante.
  • El objetivo es burlar posibles firewalls
    intermedios.
  • En desbordamientos de buffer locales, usar
    variables de entorno si no cabe el shellcode en
    el buffer donde se realiza la petición del
    usuario
  • Las variables de entorno se cargan a principio
    de la pila del programa.

12
Referencias
  • http//compsecassoc.org/downloads/Smashing_The_Sta
    ck.txt
  • Smashing the stack for fun and profit.
  • http//www.insecure.org/stf/mudge_buffer_overflow_
    tutorial.html
  • How to write buffer overflows.
  • http//www.securiteam.com/securityreviews/5OP0B006
    UQ.html
  • Writing buffer overflows exploits a tutorial
    for beginners.
  • http//www.shmoo.com/securecode
  • How to write secure code.
  • http//www.thc.org
  • http//rootkit.com

13
FIN de la primera parte
  • Que no nos pase nada!

14
Demo de Exploits
  • Microsoft IIS 5.x SSL PCT1.0 Remote Windows 2K/XP
    Exploit (MS04-011).
  • KAHT II Massive DCOM RPC Exploit (MS03-026).
  • Microsoft Internet Explorer .ANI Files Handling
    Exploit (MS05-002).
  • LSASS.EXE Win2K Pro Remote Denial-of-Service
    (MS04-007).
  • Metasploit (version 2.4 77 exploits).
Write a Comment
User Comments (0)
About PowerShow.com