PDF de programación - Buffer Overflow En Windows

Imágen de pdf Buffer Overflow En Windows

Buffer Overflow En Windowsgráfica de visualizaciones

Publicado el 28 de Mayo del 2019
754 visualizaciones desde el 28 de Mayo del 2019
2,9 MB
24 paginas
Creado hace 14a (08/02/2010)
Curso de francés avanzado

INDICE



INTRODUCCION

DEBUGGER OLLY



Ventana de Desensamblado



Ventana de Registros


Ventana de Stack (pila)

OVERFLOW (EXPLICACION)

CREANDO UN PROGRAMA VULNERABLE

HACIENDO OVERFLOW


ENCONTRANDO EIP


BUSCANDO UN RETORNO
CREANDO UN EXPLOIT


EXPLOTANDO! (FUNCION OCULTA)
CREANDO UNA SHELLCODE


MODIFICANDO EL EXPLOIT


EXPLOTANDO! (CON SHELLCODE)

DESPEDIDA Y REFERENCIAS




2
3
4
5
6
7
8
10
13
16
17
18
20
21
23
24

1

Buffer Overflow En Windows Buffer Overflow En Windows

INTRODUCCION

En este texto intentare explicar el funcionamiento de los Buffer Overflow en modo local.
Con esto intento que se pierda el miedo a lo "mistico" de este ataque, una vez se com-
prende el funcionamiento, tu mismo te verás capaz de avanzar, programar tus propios
exploits e incluso en un futuro encontrar tus propias vulnerabilidades en programas
conocidos.
En este caso la "explotación" será en local, y si va bien, en poco haré uno para aplica-
ciones en remoto.
- En el documento explicaré el uso del debugger "Ollydbg", como aplicación para se-
guir el transcurso del programa. Este nos servirá para encontrar las direcciones de
memoria en las que se alojan nuestros shellcodes y utilizarlas para incluirlas en nues-
tros exploits.
-También veremos el lenguaje maquina (ensamblador), la pila y el manejo de esta, los
registros del procesador...etc.
-Aprenderemos a aprovecharnos de dos formas de los buffer overflow, hay muchas
mas, pero en este caso nos centraremos en dos:
-

- Y por ultimo tratare de explicar por encima, ya que no es el motivo de este documen-
to, a programar un .exe vulnerable y un exploit para vulnerarlo (valga la redundancia
:D)
En este documento no utilizaré palabras técnicas ni ejemplos demasiado complicados.
Este es un tema para gente que se inicia recientemente y no posee conocimientos ele-
vados sobre ensamblador, programación, etc...
Con esto espero que la gente que se inicia se motive y continúe, ya que como e podido
comprobar, hay muy poca documentación en español sobre este tema en concreto.
Bueno, empezamos?

Ejecutar funciones ocultas de un programa
-Ejecutar shellcodes para crear aplicaciones.

2

Buffer Overflow En Windows

DEBUGER OLLYDBG

Bueno, pues este es el aspecto de OllyDbg. ¿Parece sencillo verdad? jeje, pues lo es,
todo esta estructurado y separado para la mejor comprensión de lo que esta pasando
en nuestro programa

Vamos a explicar paso por paso que significa cada parte del programa.



3

Buffer Overflow En Windows

Ventana de desensamblado

En esta parte del programa podemos ver el código en ensamblador y las direcciones
de memoria en las que se aloja cada una de las lineas de código de nuestro
programa.exe
-En esta sección podemos poner Interrupciones para paralizar el curso del programa
donde queramos para analizar mejor que es lo que esta pasando en nuestro programa
y los registros del procesador en tiempo real.
Cuando creemos una interrupción, la linea seleccionada se pondrá en rojo. (Esto se
hace pulsando F2 o haciendo doble-clic sobre la linea que queramos). Llegado el mo-
mento lo usaremos para que quede mas claro.



4

-Cuando abrimos un módulo (normalmente un archivo .EXE) para depurarlo, el OllyDbg hace un análisis de las secciones que habitualmente son de código ejecutable. Para ello el programa dispone de una serie de op-ciones que podemos configurar, para que el análisis se ajuste lo más posible a nuestras necesidades. -Lo que hace el analizador de código es “formatear” y añadir comentarios automáticos a las líneas de código, para que así nos sea más legible y sencillo el estudio y la compresión. -El Olly en su primera pasada de análisis, es capaz de reconocer varias partesdel código. En primer lugar recono-ce puntos de entrada de subrutinas, para lo cual lo que hace es mirar qué direcciones son llamadas desde tres puntos (omás) del programa. -De este modo, trazando los jumps y los calls puede reconocer casi con total seguridad todos los comandos. Añade además 20 métodos heurísticos Buffer Overflow En Windows

Ventana de registros

En la parte superior derecha. En esta ventana, como su propio nombre indica,
podremos ver todos los registros en tiempo real con sus respectivos valores.
En este documento no trataremos en profundidad este apartado, pero es reco-
mendable conocer al menos los registros importantes que usaremos durante la
practica.



5

EIP (Extended Instruction Pointer):El registro EIP siempre apunta a la siguiente dirección de memoria que el procesador debe ejecutar. La CPU se basa en secuencias de instrucciones, una detrás de la otra, salvo que dicha instrucción requiera un salto, una llamada...al producirse por ejemplo un "salto", EIP apuntara al valor del salto, ejecutando las instrucciones en la dirección que especificaba el salto. Si logramos que EIP contenga la dirección de memoria que queramos, podremos controlar la ejecución del programa, si también controlamos lo que haya en esa dirección. EAX, EBX... ESI, EDI: Son registros multipropósito para usarlo según el programa, se pueden usar de cualquier forma y para alojar cualquier dirección, variable o valor, aunque cada uno tiene funciones "especificas" según las instruccio-nes ASM del programa:EAX: Registro acumulador. Cualquier instrucción de retorno, almace-nara dicho valor en EAX. También se usa para sumar valores a otros registros en funciones de suma, etc.... EBX:Registro base. Se usa como "manejador" o "handler" de fiche-ros, de direcciones de memoria (para luego sumarles un offset) etc... ECX: Registro contador. Se usa, por ejemplo, en instrucciones ASM loop como contador, cuando ECX llega a cero, el loop se acaba.EDX: Registro direcciÛn o puntero. Se usa para referenciar a direc-ciones de memoria mas el offset, combinado con registros de seg-mento (CS, SS, etc..)ESI y EDI: Son registros an·logos a EDX, se pueden usar para guar-dar direcciones de memoria, offsets, etc..CS, SS, ES y DS: Son registros de segmento, suelen apuntar a una cierta secciÛn de la memoria. Se suelen usar Registro+Offset para direccionar a una dirección concreta de memoria. Los mas usados son CS, que apunta al segmento actual de direcciones que esta ejecutando EIP, SS, que apunta a la pila y DS, que apunta al segmento de datos actual. ES es "multipropósito", para lo mismo, referenciar direcciones de memoria, y un largo etc...ESP EBP: Extended Stack Pointer y Extender Base Pointer. Ambos los veremos más en profundidad cuando explique la pila. Sirven para manejar la pila, referenciando la "cima" (ESP) y la "base" (EBP). ESP siempre contiene la direcciÛn del inicio de la pila (la cima) que esta usando el programa o hilo (thread) en ese momento. Cada programa usara un espacio de la pila distinto, y cada hilo del programa tambiÈn. EBP seÒala la direcciÛn del final de la pila de ese programa o hilo.---Texto extraido del manual de Rojodos (Exploits y Stack Overflows en Windows.txt)--- Ventana de Stack (Pila)

En la parte inferior derecha.
Bien, para nuestros cometidos, esta es la ventana mas importante, y en la cual debe-
remos tener los ojos fijados cuando hagamos el ataque.
En esta ventana podremos ver el estado en tiempo real de la pila de nuestro programa.
Vamos a explicar un poco primero que es esto de "la pila" ^^

El manejo de la pila se hace mediante el método LiFo
(Last input, First Output), quiere decir, el ultimo en
entrar es el primero en salir. Y esto es así por que el
procesador debe de tener todos los datos antes de
poder realizar una operación.

Para entender esto imaginar una caja en la cual intro-
ducimos piedras, si introducimos una piedra, esta se
puede sacar la primera, pero si introducimos otra,
esta se queda encima de la primera y para sacar la
de abajo, primero habría que sacar la de arriba.

De esta misma forma, para hacer una suma se haría
de la siguiente manera:

1- metemos el comando suma en la pila, y se pondría
en primera posición (ESP)
2- introducimos el primer numero de la suma, el cual
se pondría en pri-
mera posición y el
comando suma pa-

saría a la segunda posición (ESP-4)(EBP)
3- Introducimos el ultimo numero de la suma y em-
puja (push) al resto de componentes hacia abajo,
así, el comando suma quedaría en ultima posición
(ESP-8)(EBP) y el primer dígito de la suma quedaría
en segundo lugar (ESP-4)

Ahora para hacer la suma, el procesador sacaría
primero el primer dígito, luego el segundo y, te-
niendo ya todos los datos para realizar la suma,
saca la función suma y realiza la operación.



6

Buffer Overflow En WindowsAparte de los componentes de la arquitectu-ra presentados en las secciones anteriores, la mayor parte de procesadores ofrecen la in-fraestructura necesaria para manipular una estructura de datos organizada y almacenada en memoria que se denomina “la pila”.La pila es una zona de la memoria sobre la que se pueden escribir y leer datos de forma convencional. Esta zona tiene una posición especial que se denomina “la cima de la pila”. El procesador contiene dos instrucciones de su lenguaje máquina para realizar las opera-ciones de “apilar” y “desapilar” datos de la pila. Los datos que se pueden apilar y desa-pilar, en el caso del Intel Pentium son siempre de tamaño 4 bytes.-De este modo, trazando los jumps y los calls puede reconocer casi con total seguridad todos los comandos. Añade además 20 métodos heurísticos. OVERFLOW (EXPLICACION)

En general, overflow hace referencia a un exceso de datos que se introducen en un
programa para generar la inestabilidad en este.
En esta ocasión abordaremos un tipo de overflow que se denomina "Stack Overflow"
Que consiste en desbordar el buffer de memoria reservado para una cierta cantidad de
datos con mas datos de los que puede contener con motivo de sobreescribir la pila del
programa y ejecutar código arbitrario (shellcode) no esperado por el programa. ¿Se
entiende?
-Bueno, un poquito m
  • Links de descarga
http://lwp-l.com/pdf15996

Comentarios de: Buffer Overflow En Windows (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad