SlideShare una empresa de Scribd logo
Creación de Shellcodes para
Exploits en Linux/x86
Daniel Fdez. Bleda
dfernandez@isecauditors.com
Internet Security Auditors, S.L.
HackMeeting III
(Madrid, 5 octubre 2002)
Índice (I)
Parte TEÓRICA.
Un poco de historia.
Conceptos básicos: registros, memoria, ASM, etc.
Tipos de exploits.
Modo de actuación de cada tipo de exploit.
Sistemas de protección “anti-exploits”.
Métodos de evasión anti protectores de pila/heap.
Programación de shellcodes para exploits.
Métodos de evasión en shellcodes anti IDS.
Índice (II)
Parte PRÁCTICA.
Funcionamiento básico de exploits:
Stack.
Heap (pointer/function pointer/VPTR overwrite).
Format String.
Casos de reales:
Remote root con un b0f.
Remote root con un exploit de formato (Posadis
DNS, Washington University (wu-ftp) FTP).
El primer Exploit
2 de noviembre de 1988, un gusano, el
"Internet Worm", causa los mayores daños
de la historia, hasta entonces...
b0f en fingerd y replicación con sendmail.
Desde entonces, se han explotado buffer
overflows en todo tipo de aplicaciones y en
todo tipo de sistemas operativos.
La Memoría de un Proceso
ret
ret
call func1 call func2
var *u1, u2
u1=malloc(...)
var *v1, v2
v1=malloc(...)
top memoryfunc2(argy1..argyn)
STACK
HEAP
argx1..argxn
argy1..argyn
u1, v1
u2, v2
func1(argx1..argxn)
./programa
bottom memory
Llamadas al Sistema (syscalls)
Un programa de usuario no puede acceder
directamente al HW sino a través de una capa
intermedia (HAL, Hardware Abstraction Level).
Esta capa intermedia la proveen las syscalls.
Las definiciones de las syscalls se encuentran en
la librería (g)libc que ejecutará el kernel para
interactuar con el hardware de la máquina.
Usuario
Kernel
H/W
[g]libc
syscalls
int 80h
Descriptores estándar
• Cualquier proceso tiene tres descriptores iniciales
(identificados por un número) para recibir o emitir
salidas del o al exterior:
i. stdin (standar input): es la entrada estándar.
ii. stdout (standar output): es la salida estándar.
iii.stderr (standar error): es la salida de errores
estándar.
stdin(0) proceso stdout(1)
stderr(2)
Conceptos de ASM (I):
Registros
Registro Nombre Funciones
*a* Acumulador
Tipo syscall
Valor de retorno
Funciones I/O
*b* Base
Parametro 1º
Valor de retorno
*c* Contador
Contador en bucles
Parámetro 2º
Valor de retorno
*d* Datos
I/O a puertos
Parámetro 3º
Aritméticas
Syscalls
esp Frame PointerTop frame actual de la pila
ebp Stack PointerBase frame actual de la pil
eip y edi Segmentos Paso de datos en el scode
e*x (32b), *x (16b), *h (8b + sig), *l (8b – sig).
Conceptos de ASM (II):
Instrucciones
Instrucción Función
mov mover datos entre/de/a un registro/memoria
inc incrementar un registro
dec decrementar un registro
add sumar algo a/desde un registro
sub restar algo a/desde un registro
xor 0 xor 0=0;0 xor 1=1;1 xor 0=1;1 xor 1 = 0;
lea
int ejecuta una interrupción: syscall(0x80)
push añade un elemento en la pila
pop extrae un elemento de la pila
pasar un dato en mem a un registro (load
effective address)
La Pila
Parámetros en llamadas a funciones.
Variables locales.
Valores de retorno.
Permitir controlar el flujo de ejecución tras
una llamada a función.
La pila en una llamada a función
int funcion(int x, int y, int z)
{
int i = 4;
return (x + i);
}
int main()
{
funcion(0, 1, 2);
return 0;
}
bottom of top of
memory memory
<---- i sfp ret 0 1 2
<---- [ ][ ][ ][ ][ ][ ]
top of bottom of
stack stack
Explotando la pila(I):
Cambiando el flujo de ejecución
Void funcion(int a, int b, int c)
{
char buffer1[5];
char buffer2[10];
int *ret;
ret = buffer1 + 12;
(*ret) += 8;
}
int main()
{
int x;
x = 0;
funcion(1, 2, 3);
x = 1;
printf("%dn",x);
}
Si podemos
modificar la dirección
de retorno (ret)
guardada de forma
implicita por “call”
podremos variar el
flujo norma de
ejecución.
¡x = 1 = 0 !
Heap
Espacio para variables que emplean
memoria de forma dinámica.
El espacio es reservado por la aplicación.
Explotando el Heap (I):
Generalidades
Es más difícil de conseguir que el stack
overflow.
Basado en técnicas diversas:
Sobreescritura de apuntadores a funciones.
Sobreescritura de Vtables.
Explotación de librerías malloc.
Requiere condiciones concernientes a la
organización de un proceso en la memoria.
Explotando el Heap (II):
Sobreescritura de punteros
Requiere un orden estricto en la declaración
de variables:
Es difícil que se produzca esta condición.
Requiere localizar la dirección de argv[1].
Es independiente del SO.
...
static char buf[BUFSIZE];
static char *ptr;
...
buf
ptr
buf
ptr
/tmp/tmpfile.tmp
/root/.rhosts
Explotando el Heap (II):
Sobreescritura de punteros a funciones
Requiere un orden estricto en la declaración
de variables:
Es difícil que se produzca esta condición.
Permite ejecutar otra función o shellcode.
...
static char buf[BUFSIZE];
static int (*funcptr)(const char *str);
...
buf
ptr
buf
ptr int funcptr(char *str) system(“/bin/sh”)
Explotando el Heap (IV):
Alterando VPTR Tables (C++) - 1
Explota el mecanismo dinámico de las
llamadas a funciones virtuales en una clase.
Pocas aplicaciones se desarrollan en C++,
con lo que es complicado de explotar.
Precondición: Necesita que se declare un
buffer y una función virtual dentro de la clase
a explotar.
Explotando el Heap (V):
Alterando VPTR Tables (C++) - 2
class BaseClass
{
private:
char Buffer[100];
public:
void SetBuffer(char *String) {
strcpy(Buffer,String);
}
virtual void PrintBuffer() {
printf("%sn",Buffer);
}
};
class MyClass1:public BaseClass
{
public:
void PrintBuffer()
{
printf("MyClass1: ");
BaseClass::PrintBuffer();
}
};
B son los bytes Buffer Object[0]: BBBBBB....BBBBBBBVVVV
V el byte de la VPTR a VTABLE_MyClass1 =+==
I es información de la clase que +--------------------+
hereda de BaseClass (MyClass1) +--> IIIIIIIIIIIIIIIPPPP
P es el apuntador a la fun. PrintBuffer VTABLE_MyClass1
+----(1)---<------------------+ S es la dir. de inicio del shcode
| ==+= N bytes de alineamiento (NOPs)
SSSS..SSSS..NNN..CCCCC..CCCCVVVV0 C codigo del shellcode
| + V Puntero a la función virtual
+----(2)--->-----+ 0 0x00h que finaliza el buffer
Overflow de Enteros (I): Heap/Stack
Bugs de tipo.
Algunos valores o parámetros se emplean en
variables de diferentes tamaños de forma
incorrecta.
Permite saltarse comprobaciones de límites
en reservas de memoria, copias de buffers,
etc. El overflow es una consecuencia del uso
incorrecto de los tipos variables.
unsigned short int
0 0
1 1
65534 65534
0 65535
1 65536
Overflow de Enteros (II): Heap/Stack
Bugs de signo.
Algunos valores se emplean a veces con
variables con signo y otras sin signo sin
comprobaciones correctas.
Enteros con signo usados en comparaciones.
Enteros con signo usados en operaciones aritméticas.
Enteros sin signo usado en comparaciones con
enteros con signo. unsigned int int
0 0
1 1
4294967293 4294967293
4294967294 0
4294967295 -1
4294967296 -2
Exploits de Format String (I)
Emplea una técnica reciente (1999), pero
explota vulnerabilidades que existían desde
hace años (de 2 a 6 y hasta 8).
Explota la posibilidad de poder pasar
directamente a una funcion *printf un
parámetro no parseado: printf(input).
Aprovecha bugs de programación fáciles de
encontrar.
write-anything-anywhere.
Exploits de Format String (II)
Emplean la capacidad de poder desplazarse
por la memoria definiendo longitudes de
numeros en una cadena de formato (%Nx).
Y la utilidad de una opción, %n, que
devuelve la cantidad de bytes escritos
previamente.
Desplazandonos por la memoria y sabiendo
la posición de memoria a escribir y
descomponiéndola mediante %hn, podemos
escribir word a word, esta posición.
Shellcodes (I)
Es un conjunto de instrucciones compiladas
de ensamblador que realizan una función
normalmente simple y con unas
restricciones precisas debido a su uso.
Toma el nombre a su primer objetivo:
ejecutar una shell.
Shellcodes (II):
Funcionamiento básico
La mayoría de veces no podemos saber
donde se encuentra nuestro shellcode en
memoría, debemos aproximar su posición.
Para asegurarnos que ejecutaremos nuestro
scode empleamos el efecto "tobogán": si no
sabemos dónde está, intentaremos saltar
hasta donde podamos hacer que se ejecute.
shellcode
NOP...NOP...NOP...NOP
C
Saltar hasta A, B o C
permite ejecutar el
shellcode que
comienza en D, sin
conocer su posición
exacta en la memoriaD
A
B
Shellcodes (III):
Herramientas
gdb: debug/trace.
nasm: compilación de códido ensamblador.
disasm: desemblado/análisis de scodes.
strace: trace de llamadas al sistema.
Un ejecutor de shellcodes.
Un convertidor de scodes a binarios para
análisis de shellcodes.
Shellcodes (II):
Limitaciones
NULL byte: No pueden contener 00 (eos).
Addressing problem: No se pueden emplear
dirección de memoria hardcoded.
Tamaño: No se suele disponer de buffers
muy grandes. El shellcode ha de ser
reducido.
Shellcodes (IV):
Métodos de evasión anti IDS
Ofuscación de cadenas sensibles a la
detección (p.e. “/bin/sh”).
Shellcodes alfanúmericos (Raise
(netsearch), rix (Phrack)).
Shellcodes comprimidos.
Sistemas de protección
“Anti-exploits”: Introducción
La mayoría de exploits son posibles
gracias a funciones C no fiables (e.j strcpy,
sprintf, ..).
Dos mecanismos de protección: Libsafe,
Grsecurity, StackGuard y StackShield.
Sistemas de protección
“Anti-exploits”: Libsafe (I)
Librería que reescribe funciones sensibles de la
librería libc (strcpy, strcat, sprintf, vsprintf, fscanf,
scanf, sscanf,..).
Lanza alertas en caso de detectar un posible
intento de buffer overflow.
Librería dinámica. Cargada en memoria antes
que cualquier otra librería.
Intercepta las llamadas a funciones peligrosas de
libc y utiliza la suya en su lugar.
Detecta violaciones en los límites de buffers
Info: http://www.research.avayalabs.com/project/libsafe/
Sistemas de protección
“Anti-exploits”: Libsafe (II)
char *strcpy (char *dest, const char *src)
{
char *temp = dest;
while ((*dest = *src)!= '0')
/*nothing*/
return tmp;
}
strcpy original:
Fin de bucle controlado
únicamente por el fin de
cadena '0' !!!
char *strcpy (char *dest, const char *src)
{
...
if ((len = strlen(src, max_size)) == max_size) /*overflow?*/
_libsafe_die(“Overflow caused by strcpy()”);
memcpy(dest,src,len+1); /* libreria estandard de C */
return dest;
}
strcpy de Libsafe:
max_size: distancia (#bytes) entre dest y el frame pointer de dest =>
tamaño máximo posible que puede tener dest.
Sistemas de protección
“Anti-exploits”: Libsafe (III)
Beneficios
Fácil de instalar. No se necesita recompilar el kernel
Buena o Mejor performance. Strcat de libsaf es más
rápido que el original.
Inconvenientes
Embedded Frame Pointer => gcc con -fomit-frame-pointer
Podemos ejecutar exploits basados en sobreescritura de
punteros a ficheros o funciones (sin sobrepasar el
max_size)
Sistemas de protección
“Anti-exploits”: GrSecurity
Conjunto de parches para el kernel.
Ofrecen la posibilidad de hacer las areas
de memoria stack y heap no ejecutable.
Open Wall -> Stack
PaX -> Head y Stack
www.grsecurity.net
Sistemas de protección
“Anti-exploits”: Open Wall (I)
arch/i386/kernel/traps.c
Segmentation fault: Cuando sucede un evento
de memoria inesperado, se procesa en la función
do_general_protection.
do_general_protection: Si estado de los registros
no refleja ninguna de las situaciones previstas =>
Open Wall ofrece nuevas posibilidades de
analisis.
Si alguna de los analisis proporcionados por
Open Wall detecta un intento de ejecutar
instrucciones en la pila => Se lanza una alerta
Sistemas de protección
“Anti-exploits”: Open Wall (II)
security_alert("return onto stack by "
DEFAULTSECMSG, "returns onto stack",
DEFAULTSECARGS);
...
Current->thread.error_code = error_code;
current->thread.trap_no = 13;
force_sig(SIGSEGV, current);
return;
gp_in_vm86:
handle_vm86_fault((struct
kernel_vm86_regs *) regs, error_code);
return;
gp_in_kernel:
{
unsigned long fixup;
fixup =
search_exception_table(regs->eip);
if (fixup) {
regs->eip = fixup;
return;
}
die("general protection
fault", regs, error_code);
}
}
asmlinkage void do_general_protection(struct
pt_regs * regs, long error_code)
{
#ifdef CONFIG_GRKERNSEC_STACK
unsigned long addr;
#ifdef CONFIG_GRKERNSEC_STACK_GCC
unsigned char insn;
int err, count;
#endif
#endif
if (regs->eflags & VM_MASK)
goto gp_in_vm86;
if (!(regs->xcs & 3))
goto gp_in_kernel;
#ifdef CONFIG_GRKERNSEC_STACK
.....
/* * * Check if we are returning to the stack area,
which is only likely to happen * * when
attempting to exploit a buffer overflow. * */
if ((addr & 0xFF800000) == 0xBF800000 || (addr >=
PAGE_OFFSET - _STK_LIM && addr < PAGE_OFFSET))
Sistemas de protección
“Anti-exploits”: PaX (I)
Utiliza los mecanismos de paginación
(PTE, DTLB, ITLB): Cuando se produce un
fallo de página la CPU carga la nueva
página utilizando el PTE, que contiene los
permisos para cada página.
Controla las páginas de memoria
ejecutables mediante un sistema de
estados y transiciones.
Implementa nuevas funcionalidades en el
mecanismo para el control de los fallos de
página => arch/i386/mm/fault.c
Sistemas de protección
“Anti-exploits”: PaX (II)
Inconvenientes de no permitir la ejecución
de código en la pila o el heap:
Algunas aplicaciones no funcionan: Servidores XFree86-4.
Lenguajes como Java tiene VM que requieren un stack
ejecutable.
Sistemas de protección
“Anti-exploits”: PaX (III)
Return into libc:
Evasión para PaX o Open Wall
No ejecuta código en la pila o heap -> llamada a una
función de la librería libc (system()). Ret = @función a
llamar.
Sólo necesitamos saber @función a llamar.
Solución PaX: Cambiar la dirección de la función cada vez
que se llama => mmap randomization => Fuerza Bruta.
Sistemas de protección
“Anti-exploits”: StackGuard
Técnica de compilación.
“Permite eliminar stack smashing attacks”.
“canary” cerca de la dirección de retorno.
Si canary ha sido alterando cuando la
función retorno => intento de ataque =>
alerta.
Canary Spoofing: Terminator (NULL, CR,
LF, EOF), Random, etc.
Sistemas de protección
“Anti-exploits”: StackShield
Utilidad que permite añadir protección en
tiempo de compilación.
Solo controlamos el código que
compilamos nosotros. No podemos
controlar binarios que instalamos por
ejemplo mediante paquetes RPM.
www.angelfire.com/sk/stackshield/
Bibliografía (I):
Stack Overflows
prym: “finding and exploiting programs with buffer overflows”.
http://destroy.net/machines/security/buffer.txt
lefty: “Buffer overruns, whats the real story".
http://reality.sgi.com/nate/machines/security/stack.nfo.txt
kekabron: “Buffer Overflows (b0f’s)”. Netsearch Ezine #4 (0x11).
http://www.netsearch-ezine.com
klog: “The Frame Pointer Overwrite". Phrack #55 (0x08).
http://www.phrack.org/show.php?p=55&a=8
Aleph1: “Smashing the Stack for Fun and Profit”. Phrack #49 (0x05).
http://www.phrack.org/show.php?p=56&a=5
Bibliografía (II):
Heap Overflows
Fayolle, Pierre-Alain; Glaume, Fayolle: “A Buffer Overflow Study. Attacks & Defenses".
http://www.enseirb.fr/~glaume/bof/report.html
Matt Conover & w00w00 Security Team: “w00w00 on Heap Overflow".
http://www.w00w00.org/articles.html
cafo: “Heaps Overflows (1/2)”. Netsearch Ezine #4 (0x14).
http://www.netsearch-ezine.com
rix: “Smashing C++ VPTRS". Phrack 56 (0x08).
http://www.phrack.org/show.php?p=56&a=8
twitch: “Taking advantage of non-terminated adjacent Memory Spaces”. Phrack 56
(0x0e).
http://www.phrack.org/show.php?p=56&a=14
Bibliografía (III):
String Format exploits
gera & riq: "Advances in format string exploiting". Phrack 59 (0x07).
http://www.phrack.org/show.php?p=59&a=7
scut/team teso: "Exploiting Format String Vulnerabilities".
http://teso.scene.at/releases/formatstring-1.2.tar.gz
Umesh Shankar: “Detecting Format String Vulnerabilities with Type Qualifiers”.
http://qb0x.net/papers/FormatString/usenix01/usenix01.pdf
RaiSe: “Bugs de Formato (1/2)”. NetSearch Ezine.
http://www.netsearch-ezine.com
The Itch: “Exploiting local format string holes on x86/ linux”.
http://qb0x.net/papers/FormatString/fmtpaper.txt
Frédéric Raynal: “Howto remotely and automatically exploit a format bug”.
http://www.security-labs.org/cvRaynal.pdf
Bibliografía (IV):
Writing Shellcodes (I)
Fayolle, Pierre-Alain; Glaume, Fayolle: “A Buffer Overflow Study. Attacks & Defenses".
http://www.enseirb.fr/~glaume/bof/report.html
Matt Conover & w00w00 Security Team: “w00w00 on Heap Overflow".
http://www.w00w00.org/articles.html
Umesh Shankar: “Detecting Format String Vulnerabilities with Type Qualifiers”.
http://qb0x.net/papers/FormatString/usenix01/usenix01.pdf
RaiSe: “Shellcodes en Linux/i386”. Netsearch Ezine #4 (0x04).
http://www.netsearch-ezine.com
RaiSe: “Shellcodes en Linux/i386 (2)”. Netsearch Ezine #5 (0x04).
http://www.netsearch-ezine.com
The Last Stage of Delirium Research Group: “UNIX Assembly Codes Development for
Vulnerabilities Illustration Purposes”. Version 1.0.2.
http://lsd-pl.net/papers.html#assembly
Bibliografía (IV):
Writing Shellcodes (II)
Zillion: “Writing Shellcode”.
https://uhf.ath.cx/papers/Writing_shellcode.htm
Miyagi, Robin: “Linux Assembler Tutorial”.
http://www.geocities.com/SiliconValley/Ridge/2544
“Linux System Call Table”.
http://quaff.port5.com/syscall_list.html
UNF && pr1: “Writing Linux/x86 shellcodes for dum dums”.
http://www.u-n-f.com/papers/shellcode-pr10n.txt
Bibliografía (V):
Sistemas de protección/evasión.
Bulba and Kil3r: “Bypassing StackGuard and StackShield”. Phrack 56 (0x05).
http://www.phrack.org/show.php?p=56&a=5
“Bypassing PaX ASLR Protection”. Phrack 59 (0x09).
http://www.phrack.org/show.php?p=59&a=9
Nergal: “The advanced return-into-lib(c) exploits (PaX case study)”. Phrack 58 (0x04).
http://www.phrack.org/show.php?p=58&a=4
Cowan, Crispin; Wagle, Perry; Pu, Calton; Beattie, Steve; Walpole, Jonathan: “Buffer
Overflows: Attacks and Defenses for the Vulnerability of the Decade”
http://www.cse.ogi.edu/DISC/projects/immunix
Fayolle, Pierre-Alain; Glaume, Fayolle: “A Buffer Overflow Study. Attacks & Defenses".
http://www.enseirb.fr/~glaume/bof/report.html
Change Log
v 1.1: Añadidas transparencias (6, 7, 19, 20 y 24) . Correcciones.
Gracias a Pablo Garaizar (txipi) de sindominio.net (transparencias 6, 7 y 24)
v 1.0: Presentada en el Hackmeeting III (MadHack02).

Más contenido relacionado

La actualidad más candente

2 punteros y lenguaje c
2 punteros y lenguaje c2 punteros y lenguaje c
2 punteros y lenguaje c
Pedro Contreras Flores
 
Act 01
Act 01Act 01
Act 01
brando soto
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
Diego Andrés Alvarez Marín
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
Diego Andrés Alvarez Marín
 
Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Bibliotecas o libreria de c++
Bibliotecas o libreria de c++
Idalia Tristan
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
guest79d55c9
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
Lenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II PunterosLenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II Punteros
sirfids
 
bibliotecas c++
bibliotecas c++bibliotecas c++
bibliotecas c++
Gustavo Castillo
 
Creacion de una librería propia en C
Creacion de una librería propia en CCreacion de una librería propia en C
Creacion de una librería propia en C
Ronny Parra
 
Bibliotecas de c_
Bibliotecas de c_Bibliotecas de c_
Bibliotecas de c_
GamePlayer35
 
Clase3_Python-CTIC
Clase3_Python-CTICClase3_Python-CTIC
Clase3_Python-CTIC
Abraham Zamudio
 
Bibliotecas en c
Bibliotecas en cBibliotecas en c
Bibliotecas en c
demata
 
Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_
Oziel Solis Juarez
 
Librerias de C++
Librerias de C++Librerias de C++
Librerias de C++
Jesús Alexander
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
Diego Andrés Alvarez Marín
 
El lenguaje de pogramación C++
El lenguaje de pogramación C++El lenguaje de pogramación C++
El lenguaje de pogramación C++
Rodrigo Corral
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
Abraham Zamudio
 
Sesion 4
Sesion 4Sesion 4
Apuntes generación de codigo intermedio
Apuntes generación de codigo intermedioApuntes generación de codigo intermedio
Apuntes generación de codigo intermedio
Humano Terricola
 

La actualidad más candente (20)

2 punteros y lenguaje c
2 punteros y lenguaje c2 punteros y lenguaje c
2 punteros y lenguaje c
 
Act 01
Act 01Act 01
Act 01
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
Bibliotecas o libreria de c++
Bibliotecas o libreria de c++Bibliotecas o libreria de c++
Bibliotecas o libreria de c++
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Lenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II PunterosLenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II Punteros
 
bibliotecas c++
bibliotecas c++bibliotecas c++
bibliotecas c++
 
Creacion de una librería propia en C
Creacion de una librería propia en CCreacion de una librería propia en C
Creacion de una librería propia en C
 
Bibliotecas de c_
Bibliotecas de c_Bibliotecas de c_
Bibliotecas de c_
 
Clase3_Python-CTIC
Clase3_Python-CTICClase3_Python-CTIC
Clase3_Python-CTIC
 
Bibliotecas en c
Bibliotecas en cBibliotecas en c
Bibliotecas en c
 
Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_Bibliotecas o librerias_para_c_
Bibliotecas o librerias_para_c_
 
Librerias de C++
Librerias de C++Librerias de C++
Librerias de C++
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
 
El lenguaje de pogramación C++
El lenguaje de pogramación C++El lenguaje de pogramación C++
El lenguaje de pogramación C++
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
 
Sesion 4
Sesion 4Sesion 4
Sesion 4
 
Apuntes generación de codigo intermedio
Apuntes generación de codigo intermedioApuntes generación de codigo intermedio
Apuntes generación de codigo intermedio
 

Destacado

The Dark Arts of Hacking.
The Dark Arts of Hacking.The Dark Arts of Hacking.
The Dark Arts of Hacking.
Sumutiu Marius
 
Design and Implementation of Shellcodes.
Design and Implementation of Shellcodes.Design and Implementation of Shellcodes.
Design and Implementation of Shellcodes.
Sumutiu Marius
 
Shellcode mastering
Shellcode masteringShellcode mastering
Shellcode mastering
Positive Hack Days
 
Exploitation
ExploitationExploitation
Exploitation
Security B-Sides
 
Reverse engineering - Shellcodes techniques
Reverse engineering - Shellcodes techniquesReverse engineering - Shellcodes techniques
Reverse engineering - Shellcodes techniques
Eran Goldstein
 
One Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform ExploitationOne Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform Exploitation
Quinn Wilton
 
Shellcode injection
Shellcode injectionShellcode injection
Shellcode injection
Dhaval Kapil
 
Ethical Hacking
Ethical HackingEthical Hacking
Ethical Hacking
Jakub Ruzicka
 
Cisco IOS shellcode: All-in-one
Cisco IOS shellcode: All-in-oneCisco IOS shellcode: All-in-one
Cisco IOS shellcode: All-in-one
DefconRussia
 
Netcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beemaNetcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beema
Raghunath G
 
Manual de integración de Latch en Mosquito MQTT Broker
Manual de integración de Latch en Mosquito MQTT BrokerManual de integración de Latch en Mosquito MQTT Broker
Manual de integración de Latch en Mosquito MQTT Broker
Telefónica
 

Destacado (11)

The Dark Arts of Hacking.
The Dark Arts of Hacking.The Dark Arts of Hacking.
The Dark Arts of Hacking.
 
Design and Implementation of Shellcodes.
Design and Implementation of Shellcodes.Design and Implementation of Shellcodes.
Design and Implementation of Shellcodes.
 
Shellcode mastering
Shellcode masteringShellcode mastering
Shellcode mastering
 
Exploitation
ExploitationExploitation
Exploitation
 
Reverse engineering - Shellcodes techniques
Reverse engineering - Shellcodes techniquesReverse engineering - Shellcodes techniques
Reverse engineering - Shellcodes techniques
 
One Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform ExploitationOne Shellcode to Rule Them All: Cross-Platform Exploitation
One Shellcode to Rule Them All: Cross-Platform Exploitation
 
Shellcode injection
Shellcode injectionShellcode injection
Shellcode injection
 
Ethical Hacking
Ethical HackingEthical Hacking
Ethical Hacking
 
Cisco IOS shellcode: All-in-one
Cisco IOS shellcode: All-in-oneCisco IOS shellcode: All-in-one
Cisco IOS shellcode: All-in-one
 
Netcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beemaNetcat 101 by-mahesh-beema
Netcat 101 by-mahesh-beema
 
Manual de integración de Latch en Mosquito MQTT Broker
Manual de integración de Latch en Mosquito MQTT BrokerManual de integración de Latch en Mosquito MQTT Broker
Manual de integración de Latch en Mosquito MQTT Broker
 

Similar a Creacion de shellcodes para Exploits en Linux/x86

Historia de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan SaccoHistoria de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan Sacco
Juan Sacco
 
Material taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edMaterial taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4ed
Ignacio Sorribas
 
Understanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowUnderstanding Advanced Buffer Overflow
Understanding Advanced Buffer Overflow
Conferencias FIST
 
Slides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4edSlides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4ed
Ignacio Sorribas
 
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Websec México, S.C.
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas Forenses
Conferencias FIST
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
RootedCON
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
Tensor
 
Artipcs
ArtipcsArtipcs
Artipcs
gorilonplaza
 
Guia compilador c18 microcontrolador
Guia compilador c18 microcontroladorGuia compilador c18 microcontrolador
Guia compilador c18 microcontrolador
Maria Leon
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
andermijan
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
victdiazm
 
Generacion codigomaquina
Generacion codigomaquinaGeneracion codigomaquina
Generacion codigomaquina
tre_na_gil
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
RootedCON
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
Juan Cardona
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
Carlos Posada
 
procesos
procesosprocesos
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
erikalejo
 
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
Sesion Nº 04   Introducción A Php   Operadores E InstruccionesSesion Nº 04   Introducción A Php   Operadores E Instrucciones
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
Edgar A. Cruz Huaman
 
ELF en la mira: Hacking y Defensa
ELF en la mira: Hacking y DefensaELF en la mira: Hacking y Defensa
ELF en la mira: Hacking y Defensa
Alejandro Hernández
 

Similar a Creacion de shellcodes para Exploits en Linux/x86 (20)

Historia de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan SaccoHistoria de los buffer overflows por Juan Sacco
Historia de los buffer overflows por Juan Sacco
 
Material taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4edMaterial taller de exploiting Navaja Negra 4ed
Material taller de exploiting Navaja Negra 4ed
 
Understanding Advanced Buffer Overflow
Understanding Advanced Buffer OverflowUnderstanding Advanced Buffer Overflow
Understanding Advanced Buffer Overflow
 
Slides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4edSlides taller de exploiting Navaja Negra 4ed
Slides taller de exploiting Navaja Negra 4ed
 
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas Forenses
 
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
 
Artipcs
ArtipcsArtipcs
Artipcs
 
Guia compilador c18 microcontrolador
Guia compilador c18 microcontroladorGuia compilador c18 microcontrolador
Guia compilador c18 microcontrolador
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
Generacion codigomaquina
Generacion codigomaquinaGeneracion codigomaquina
Generacion codigomaquina
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 
procesos
procesosprocesos
procesos
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
Sesion Nº 04   Introducción A Php   Operadores E InstruccionesSesion Nº 04   Introducción A Php   Operadores E Instrucciones
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
 
ELF en la mira: Hacking y Defensa
ELF en la mira: Hacking y DefensaELF en la mira: Hacking y Defensa
ELF en la mira: Hacking y Defensa
 

Más de Internet Security Auditors

Explotando los datos como materia prima del conocimiento
Explotando los datos como materia prima del conocimientoExplotando los datos como materia prima del conocimiento
Explotando los datos como materia prima del conocimiento
Internet Security Auditors
 
XIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligencia
XIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligenciaXIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligencia
XIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligencia
Internet Security Auditors
 
Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301
Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301
Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301
Internet Security Auditors
 
Problemática de implementación de un SGSI o un SGCN en contact centers y BPOs
Problemática de implementación de un SGSI o un SGCN en contact centers y BPOsProblemática de implementación de un SGSI o un SGCN en contact centers y BPOs
Problemática de implementación de un SGSI o un SGCN en contact centers y BPOs
Internet Security Auditors
 
PCI DSS en el Cloud: Transferencia Internacional Datos
PCI DSS en el Cloud: Transferencia Internacional DatosPCI DSS en el Cloud: Transferencia Internacional Datos
PCI DSS en el Cloud: Transferencia Internacional Datos
Internet Security Auditors
 
Problematicas de PCI DSS en Contact Centers & BPO
Problematicas de PCI DSS en Contact Centers & BPOProblematicas de PCI DSS en Contact Centers & BPO
Problematicas de PCI DSS en Contact Centers & BPO
Internet Security Auditors
 
PCI DSS: Justificacion del Cumplimiento
PCI DSS: Justificacion del CumplimientoPCI DSS: Justificacion del Cumplimiento
PCI DSS: Justificacion del Cumplimiento
Internet Security Auditors
 
Proteccion de Datos Personales: Conceptos, Sanciones, Metodologia
Proteccion de Datos Personales: Conceptos, Sanciones, MetodologiaProteccion de Datos Personales: Conceptos, Sanciones, Metodologia
Proteccion de Datos Personales: Conceptos, Sanciones, Metodologia
Internet Security Auditors
 
GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)
GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)
GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)
Internet Security Auditors
 
RootedCon 2017 - Workshop: IoT Insecurity of Things?
RootedCon 2017 - Workshop: IoT Insecurity of Things?RootedCon 2017 - Workshop: IoT Insecurity of Things?
RootedCon 2017 - Workshop: IoT Insecurity of Things?
Internet Security Auditors
 
PCI DSS en la Nube
PCI DSS en la NubePCI DSS en la Nube
PCI DSS en la Nube
Internet Security Auditors
 
Cambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCI
Cambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCICambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCI
Cambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCI
Internet Security Auditors
 
Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...
Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...
Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...
Internet Security Auditors
 
Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...
Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...
Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...
Internet Security Auditors
 
Conferencia sobre Protección de Datos (Bogotá): Aprendiendo de las Sanciones
Conferencia sobre Protección de Datos (Bogotá): Aprendiendo de las SancionesConferencia sobre Protección de Datos (Bogotá): Aprendiendo de las Sanciones
Conferencia sobre Protección de Datos (Bogotá): Aprendiendo de las Sanciones
Internet Security Auditors
 
Catosfera 2016: Anàlisi de xarxes socials amb finalitats d'investigació: ris...
Catosfera 2016:  Anàlisi de xarxes socials amb finalitats d'investigació: ris...Catosfera 2016:  Anàlisi de xarxes socials amb finalitats d'investigació: ris...
Catosfera 2016: Anàlisi de xarxes socials amb finalitats d'investigació: ris...
Internet Security Auditors
 
CIBERSEG'16. Técnicas #OSINT
CIBERSEG'16. Técnicas #OSINTCIBERSEG'16. Técnicas #OSINT
CIBERSEG'16. Técnicas #OSINT
Internet Security Auditors
 
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
Internet Security Auditors
 
CIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones Android
CIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones AndroidCIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones Android
CIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones Android
Internet Security Auditors
 
(ISC)2 Security Congress EMEA. You are being watched.
(ISC)2 Security Congress EMEA. You are being watched.(ISC)2 Security Congress EMEA. You are being watched.
(ISC)2 Security Congress EMEA. You are being watched.
Internet Security Auditors
 

Más de Internet Security Auditors (20)

Explotando los datos como materia prima del conocimiento
Explotando los datos como materia prima del conocimientoExplotando los datos como materia prima del conocimiento
Explotando los datos como materia prima del conocimiento
 
XIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligencia
XIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligenciaXIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligencia
XIII Jornadas STIC CCN-CERT. OSINT de la información a la inteligencia
 
Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301
Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301
Proceso de implementación de los sistemas de gestión ISO 27001 e ISO 22301
 
Problemática de implementación de un SGSI o un SGCN en contact centers y BPOs
Problemática de implementación de un SGSI o un SGCN en contact centers y BPOsProblemática de implementación de un SGSI o un SGCN en contact centers y BPOs
Problemática de implementación de un SGSI o un SGCN en contact centers y BPOs
 
PCI DSS en el Cloud: Transferencia Internacional Datos
PCI DSS en el Cloud: Transferencia Internacional DatosPCI DSS en el Cloud: Transferencia Internacional Datos
PCI DSS en el Cloud: Transferencia Internacional Datos
 
Problematicas de PCI DSS en Contact Centers & BPO
Problematicas de PCI DSS en Contact Centers & BPOProblematicas de PCI DSS en Contact Centers & BPO
Problematicas de PCI DSS en Contact Centers & BPO
 
PCI DSS: Justificacion del Cumplimiento
PCI DSS: Justificacion del CumplimientoPCI DSS: Justificacion del Cumplimiento
PCI DSS: Justificacion del Cumplimiento
 
Proteccion de Datos Personales: Conceptos, Sanciones, Metodologia
Proteccion de Datos Personales: Conceptos, Sanciones, MetodologiaProteccion de Datos Personales: Conceptos, Sanciones, Metodologia
Proteccion de Datos Personales: Conceptos, Sanciones, Metodologia
 
GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)
GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)
GigaTIC 2017 - Más allá del futuro: Negocio, tecnología y robótica. (Abril 2017)
 
RootedCon 2017 - Workshop: IoT Insecurity of Things?
RootedCon 2017 - Workshop: IoT Insecurity of Things?RootedCon 2017 - Workshop: IoT Insecurity of Things?
RootedCon 2017 - Workshop: IoT Insecurity of Things?
 
PCI DSS en la Nube
PCI DSS en la NubePCI DSS en la Nube
PCI DSS en la Nube
 
Cambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCI
Cambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCICambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCI
Cambios de las versiones 3.2, Cuestionarios y Ecosistema de Normas PCI
 
Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...
Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...
Overdrive Hacking Conference 2016 - Riesgos en el uso de las Redes Sociales (...
 
Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...
Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...
Conferencia sobre Protección de Datos (Bogotá): Errores comunes en la identif...
 
Conferencia sobre Protección de Datos (Bogotá): Aprendiendo de las Sanciones
Conferencia sobre Protección de Datos (Bogotá): Aprendiendo de las SancionesConferencia sobre Protección de Datos (Bogotá): Aprendiendo de las Sanciones
Conferencia sobre Protección de Datos (Bogotá): Aprendiendo de las Sanciones
 
Catosfera 2016: Anàlisi de xarxes socials amb finalitats d'investigació: ris...
Catosfera 2016:  Anàlisi de xarxes socials amb finalitats d'investigació: ris...Catosfera 2016:  Anàlisi de xarxes socials amb finalitats d'investigació: ris...
Catosfera 2016: Anàlisi de xarxes socials amb finalitats d'investigació: ris...
 
CIBERSEG'16. Técnicas #OSINT
CIBERSEG'16. Técnicas #OSINTCIBERSEG'16. Técnicas #OSINT
CIBERSEG'16. Técnicas #OSINT
 
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
 
CIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones Android
CIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones AndroidCIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones Android
CIBERSEG '15 - Taller: Ingeniería inversa en aplicaciones Android
 
(ISC)2 Security Congress EMEA. You are being watched.
(ISC)2 Security Congress EMEA. You are being watched.(ISC)2 Security Congress EMEA. You are being watched.
(ISC)2 Security Congress EMEA. You are being watched.
 

Último

edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
ranierglez
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdfProjecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Festibity
 

Último (20)

edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdfProjecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
 

Creacion de shellcodes para Exploits en Linux/x86

  • 1. Creación de Shellcodes para Exploits en Linux/x86 Daniel Fdez. Bleda dfernandez@isecauditors.com Internet Security Auditors, S.L. HackMeeting III (Madrid, 5 octubre 2002)
  • 2. Índice (I) Parte TEÓRICA. Un poco de historia. Conceptos básicos: registros, memoria, ASM, etc. Tipos de exploits. Modo de actuación de cada tipo de exploit. Sistemas de protección “anti-exploits”. Métodos de evasión anti protectores de pila/heap. Programación de shellcodes para exploits. Métodos de evasión en shellcodes anti IDS.
  • 3. Índice (II) Parte PRÁCTICA. Funcionamiento básico de exploits: Stack. Heap (pointer/function pointer/VPTR overwrite). Format String. Casos de reales: Remote root con un b0f. Remote root con un exploit de formato (Posadis DNS, Washington University (wu-ftp) FTP).
  • 4. El primer Exploit 2 de noviembre de 1988, un gusano, el "Internet Worm", causa los mayores daños de la historia, hasta entonces... b0f en fingerd y replicación con sendmail. Desde entonces, se han explotado buffer overflows en todo tipo de aplicaciones y en todo tipo de sistemas operativos.
  • 5. La Memoría de un Proceso ret ret call func1 call func2 var *u1, u2 u1=malloc(...) var *v1, v2 v1=malloc(...) top memoryfunc2(argy1..argyn) STACK HEAP argx1..argxn argy1..argyn u1, v1 u2, v2 func1(argx1..argxn) ./programa bottom memory
  • 6. Llamadas al Sistema (syscalls) Un programa de usuario no puede acceder directamente al HW sino a través de una capa intermedia (HAL, Hardware Abstraction Level). Esta capa intermedia la proveen las syscalls. Las definiciones de las syscalls se encuentran en la librería (g)libc que ejecutará el kernel para interactuar con el hardware de la máquina. Usuario Kernel H/W [g]libc syscalls int 80h
  • 7. Descriptores estándar • Cualquier proceso tiene tres descriptores iniciales (identificados por un número) para recibir o emitir salidas del o al exterior: i. stdin (standar input): es la entrada estándar. ii. stdout (standar output): es la salida estándar. iii.stderr (standar error): es la salida de errores estándar. stdin(0) proceso stdout(1) stderr(2)
  • 8. Conceptos de ASM (I): Registros Registro Nombre Funciones *a* Acumulador Tipo syscall Valor de retorno Funciones I/O *b* Base Parametro 1º Valor de retorno *c* Contador Contador en bucles Parámetro 2º Valor de retorno *d* Datos I/O a puertos Parámetro 3º Aritméticas Syscalls esp Frame PointerTop frame actual de la pila ebp Stack PointerBase frame actual de la pil eip y edi Segmentos Paso de datos en el scode e*x (32b), *x (16b), *h (8b + sig), *l (8b – sig).
  • 9. Conceptos de ASM (II): Instrucciones Instrucción Función mov mover datos entre/de/a un registro/memoria inc incrementar un registro dec decrementar un registro add sumar algo a/desde un registro sub restar algo a/desde un registro xor 0 xor 0=0;0 xor 1=1;1 xor 0=1;1 xor 1 = 0; lea int ejecuta una interrupción: syscall(0x80) push añade un elemento en la pila pop extrae un elemento de la pila pasar un dato en mem a un registro (load effective address)
  • 10. La Pila Parámetros en llamadas a funciones. Variables locales. Valores de retorno. Permitir controlar el flujo de ejecución tras una llamada a función.
  • 11. La pila en una llamada a función int funcion(int x, int y, int z) { int i = 4; return (x + i); } int main() { funcion(0, 1, 2); return 0; } bottom of top of memory memory <---- i sfp ret 0 1 2 <---- [ ][ ][ ][ ][ ][ ] top of bottom of stack stack
  • 12. Explotando la pila(I): Cambiando el flujo de ejecución Void funcion(int a, int b, int c) { char buffer1[5]; char buffer2[10]; int *ret; ret = buffer1 + 12; (*ret) += 8; } int main() { int x; x = 0; funcion(1, 2, 3); x = 1; printf("%dn",x); } Si podemos modificar la dirección de retorno (ret) guardada de forma implicita por “call” podremos variar el flujo norma de ejecución. ¡x = 1 = 0 !
  • 13. Heap Espacio para variables que emplean memoria de forma dinámica. El espacio es reservado por la aplicación.
  • 14. Explotando el Heap (I): Generalidades Es más difícil de conseguir que el stack overflow. Basado en técnicas diversas: Sobreescritura de apuntadores a funciones. Sobreescritura de Vtables. Explotación de librerías malloc. Requiere condiciones concernientes a la organización de un proceso en la memoria.
  • 15. Explotando el Heap (II): Sobreescritura de punteros Requiere un orden estricto en la declaración de variables: Es difícil que se produzca esta condición. Requiere localizar la dirección de argv[1]. Es independiente del SO. ... static char buf[BUFSIZE]; static char *ptr; ... buf ptr buf ptr /tmp/tmpfile.tmp /root/.rhosts
  • 16. Explotando el Heap (II): Sobreescritura de punteros a funciones Requiere un orden estricto en la declaración de variables: Es difícil que se produzca esta condición. Permite ejecutar otra función o shellcode. ... static char buf[BUFSIZE]; static int (*funcptr)(const char *str); ... buf ptr buf ptr int funcptr(char *str) system(“/bin/sh”)
  • 17. Explotando el Heap (IV): Alterando VPTR Tables (C++) - 1 Explota el mecanismo dinámico de las llamadas a funciones virtuales en una clase. Pocas aplicaciones se desarrollan en C++, con lo que es complicado de explotar. Precondición: Necesita que se declare un buffer y una función virtual dentro de la clase a explotar.
  • 18. Explotando el Heap (V): Alterando VPTR Tables (C++) - 2 class BaseClass { private: char Buffer[100]; public: void SetBuffer(char *String) { strcpy(Buffer,String); } virtual void PrintBuffer() { printf("%sn",Buffer); } }; class MyClass1:public BaseClass { public: void PrintBuffer() { printf("MyClass1: "); BaseClass::PrintBuffer(); } }; B son los bytes Buffer Object[0]: BBBBBB....BBBBBBBVVVV V el byte de la VPTR a VTABLE_MyClass1 =+== I es información de la clase que +--------------------+ hereda de BaseClass (MyClass1) +--> IIIIIIIIIIIIIIIPPPP P es el apuntador a la fun. PrintBuffer VTABLE_MyClass1 +----(1)---<------------------+ S es la dir. de inicio del shcode | ==+= N bytes de alineamiento (NOPs) SSSS..SSSS..NNN..CCCCC..CCCCVVVV0 C codigo del shellcode | + V Puntero a la función virtual +----(2)--->-----+ 0 0x00h que finaliza el buffer
  • 19. Overflow de Enteros (I): Heap/Stack Bugs de tipo. Algunos valores o parámetros se emplean en variables de diferentes tamaños de forma incorrecta. Permite saltarse comprobaciones de límites en reservas de memoria, copias de buffers, etc. El overflow es una consecuencia del uso incorrecto de los tipos variables. unsigned short int 0 0 1 1 65534 65534 0 65535 1 65536
  • 20. Overflow de Enteros (II): Heap/Stack Bugs de signo. Algunos valores se emplean a veces con variables con signo y otras sin signo sin comprobaciones correctas. Enteros con signo usados en comparaciones. Enteros con signo usados en operaciones aritméticas. Enteros sin signo usado en comparaciones con enteros con signo. unsigned int int 0 0 1 1 4294967293 4294967293 4294967294 0 4294967295 -1 4294967296 -2
  • 21. Exploits de Format String (I) Emplea una técnica reciente (1999), pero explota vulnerabilidades que existían desde hace años (de 2 a 6 y hasta 8). Explota la posibilidad de poder pasar directamente a una funcion *printf un parámetro no parseado: printf(input). Aprovecha bugs de programación fáciles de encontrar. write-anything-anywhere.
  • 22. Exploits de Format String (II) Emplean la capacidad de poder desplazarse por la memoria definiendo longitudes de numeros en una cadena de formato (%Nx). Y la utilidad de una opción, %n, que devuelve la cantidad de bytes escritos previamente. Desplazandonos por la memoria y sabiendo la posición de memoria a escribir y descomponiéndola mediante %hn, podemos escribir word a word, esta posición.
  • 23. Shellcodes (I) Es un conjunto de instrucciones compiladas de ensamblador que realizan una función normalmente simple y con unas restricciones precisas debido a su uso. Toma el nombre a su primer objetivo: ejecutar una shell.
  • 24. Shellcodes (II): Funcionamiento básico La mayoría de veces no podemos saber donde se encuentra nuestro shellcode en memoría, debemos aproximar su posición. Para asegurarnos que ejecutaremos nuestro scode empleamos el efecto "tobogán": si no sabemos dónde está, intentaremos saltar hasta donde podamos hacer que se ejecute. shellcode NOP...NOP...NOP...NOP C Saltar hasta A, B o C permite ejecutar el shellcode que comienza en D, sin conocer su posición exacta en la memoriaD A B
  • 25. Shellcodes (III): Herramientas gdb: debug/trace. nasm: compilación de códido ensamblador. disasm: desemblado/análisis de scodes. strace: trace de llamadas al sistema. Un ejecutor de shellcodes. Un convertidor de scodes a binarios para análisis de shellcodes.
  • 26. Shellcodes (II): Limitaciones NULL byte: No pueden contener 00 (eos). Addressing problem: No se pueden emplear dirección de memoria hardcoded. Tamaño: No se suele disponer de buffers muy grandes. El shellcode ha de ser reducido.
  • 27. Shellcodes (IV): Métodos de evasión anti IDS Ofuscación de cadenas sensibles a la detección (p.e. “/bin/sh”). Shellcodes alfanúmericos (Raise (netsearch), rix (Phrack)). Shellcodes comprimidos.
  • 28. Sistemas de protección “Anti-exploits”: Introducción La mayoría de exploits son posibles gracias a funciones C no fiables (e.j strcpy, sprintf, ..). Dos mecanismos de protección: Libsafe, Grsecurity, StackGuard y StackShield.
  • 29. Sistemas de protección “Anti-exploits”: Libsafe (I) Librería que reescribe funciones sensibles de la librería libc (strcpy, strcat, sprintf, vsprintf, fscanf, scanf, sscanf,..). Lanza alertas en caso de detectar un posible intento de buffer overflow. Librería dinámica. Cargada en memoria antes que cualquier otra librería. Intercepta las llamadas a funciones peligrosas de libc y utiliza la suya en su lugar. Detecta violaciones en los límites de buffers Info: http://www.research.avayalabs.com/project/libsafe/
  • 30. Sistemas de protección “Anti-exploits”: Libsafe (II) char *strcpy (char *dest, const char *src) { char *temp = dest; while ((*dest = *src)!= '0') /*nothing*/ return tmp; } strcpy original: Fin de bucle controlado únicamente por el fin de cadena '0' !!! char *strcpy (char *dest, const char *src) { ... if ((len = strlen(src, max_size)) == max_size) /*overflow?*/ _libsafe_die(“Overflow caused by strcpy()”); memcpy(dest,src,len+1); /* libreria estandard de C */ return dest; } strcpy de Libsafe: max_size: distancia (#bytes) entre dest y el frame pointer de dest => tamaño máximo posible que puede tener dest.
  • 31. Sistemas de protección “Anti-exploits”: Libsafe (III) Beneficios Fácil de instalar. No se necesita recompilar el kernel Buena o Mejor performance. Strcat de libsaf es más rápido que el original. Inconvenientes Embedded Frame Pointer => gcc con -fomit-frame-pointer Podemos ejecutar exploits basados en sobreescritura de punteros a ficheros o funciones (sin sobrepasar el max_size)
  • 32. Sistemas de protección “Anti-exploits”: GrSecurity Conjunto de parches para el kernel. Ofrecen la posibilidad de hacer las areas de memoria stack y heap no ejecutable. Open Wall -> Stack PaX -> Head y Stack www.grsecurity.net
  • 33. Sistemas de protección “Anti-exploits”: Open Wall (I) arch/i386/kernel/traps.c Segmentation fault: Cuando sucede un evento de memoria inesperado, se procesa en la función do_general_protection. do_general_protection: Si estado de los registros no refleja ninguna de las situaciones previstas => Open Wall ofrece nuevas posibilidades de analisis. Si alguna de los analisis proporcionados por Open Wall detecta un intento de ejecutar instrucciones en la pila => Se lanza una alerta
  • 34. Sistemas de protección “Anti-exploits”: Open Wall (II) security_alert("return onto stack by " DEFAULTSECMSG, "returns onto stack", DEFAULTSECARGS); ... Current->thread.error_code = error_code; current->thread.trap_no = 13; force_sig(SIGSEGV, current); return; gp_in_vm86: handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code); return; gp_in_kernel: { unsigned long fixup; fixup = search_exception_table(regs->eip); if (fixup) { regs->eip = fixup; return; } die("general protection fault", regs, error_code); } } asmlinkage void do_general_protection(struct pt_regs * regs, long error_code) { #ifdef CONFIG_GRKERNSEC_STACK unsigned long addr; #ifdef CONFIG_GRKERNSEC_STACK_GCC unsigned char insn; int err, count; #endif #endif if (regs->eflags & VM_MASK) goto gp_in_vm86; if (!(regs->xcs & 3)) goto gp_in_kernel; #ifdef CONFIG_GRKERNSEC_STACK ..... /* * * Check if we are returning to the stack area, which is only likely to happen * * when attempting to exploit a buffer overflow. * */ if ((addr & 0xFF800000) == 0xBF800000 || (addr >= PAGE_OFFSET - _STK_LIM && addr < PAGE_OFFSET))
  • 35. Sistemas de protección “Anti-exploits”: PaX (I) Utiliza los mecanismos de paginación (PTE, DTLB, ITLB): Cuando se produce un fallo de página la CPU carga la nueva página utilizando el PTE, que contiene los permisos para cada página. Controla las páginas de memoria ejecutables mediante un sistema de estados y transiciones. Implementa nuevas funcionalidades en el mecanismo para el control de los fallos de página => arch/i386/mm/fault.c
  • 36. Sistemas de protección “Anti-exploits”: PaX (II) Inconvenientes de no permitir la ejecución de código en la pila o el heap: Algunas aplicaciones no funcionan: Servidores XFree86-4. Lenguajes como Java tiene VM que requieren un stack ejecutable.
  • 37. Sistemas de protección “Anti-exploits”: PaX (III) Return into libc: Evasión para PaX o Open Wall No ejecuta código en la pila o heap -> llamada a una función de la librería libc (system()). Ret = @función a llamar. Sólo necesitamos saber @función a llamar. Solución PaX: Cambiar la dirección de la función cada vez que se llama => mmap randomization => Fuerza Bruta.
  • 38. Sistemas de protección “Anti-exploits”: StackGuard Técnica de compilación. “Permite eliminar stack smashing attacks”. “canary” cerca de la dirección de retorno. Si canary ha sido alterando cuando la función retorno => intento de ataque => alerta. Canary Spoofing: Terminator (NULL, CR, LF, EOF), Random, etc.
  • 39. Sistemas de protección “Anti-exploits”: StackShield Utilidad que permite añadir protección en tiempo de compilación. Solo controlamos el código que compilamos nosotros. No podemos controlar binarios que instalamos por ejemplo mediante paquetes RPM. www.angelfire.com/sk/stackshield/
  • 40. Bibliografía (I): Stack Overflows prym: “finding and exploiting programs with buffer overflows”. http://destroy.net/machines/security/buffer.txt lefty: “Buffer overruns, whats the real story". http://reality.sgi.com/nate/machines/security/stack.nfo.txt kekabron: “Buffer Overflows (b0f’s)”. Netsearch Ezine #4 (0x11). http://www.netsearch-ezine.com klog: “The Frame Pointer Overwrite". Phrack #55 (0x08). http://www.phrack.org/show.php?p=55&a=8 Aleph1: “Smashing the Stack for Fun and Profit”. Phrack #49 (0x05). http://www.phrack.org/show.php?p=56&a=5
  • 41. Bibliografía (II): Heap Overflows Fayolle, Pierre-Alain; Glaume, Fayolle: “A Buffer Overflow Study. Attacks & Defenses". http://www.enseirb.fr/~glaume/bof/report.html Matt Conover & w00w00 Security Team: “w00w00 on Heap Overflow". http://www.w00w00.org/articles.html cafo: “Heaps Overflows (1/2)”. Netsearch Ezine #4 (0x14). http://www.netsearch-ezine.com rix: “Smashing C++ VPTRS". Phrack 56 (0x08). http://www.phrack.org/show.php?p=56&a=8 twitch: “Taking advantage of non-terminated adjacent Memory Spaces”. Phrack 56 (0x0e). http://www.phrack.org/show.php?p=56&a=14
  • 42. Bibliografía (III): String Format exploits gera & riq: "Advances in format string exploiting". Phrack 59 (0x07). http://www.phrack.org/show.php?p=59&a=7 scut/team teso: "Exploiting Format String Vulnerabilities". http://teso.scene.at/releases/formatstring-1.2.tar.gz Umesh Shankar: “Detecting Format String Vulnerabilities with Type Qualifiers”. http://qb0x.net/papers/FormatString/usenix01/usenix01.pdf RaiSe: “Bugs de Formato (1/2)”. NetSearch Ezine. http://www.netsearch-ezine.com The Itch: “Exploiting local format string holes on x86/ linux”. http://qb0x.net/papers/FormatString/fmtpaper.txt Frédéric Raynal: “Howto remotely and automatically exploit a format bug”. http://www.security-labs.org/cvRaynal.pdf
  • 43. Bibliografía (IV): Writing Shellcodes (I) Fayolle, Pierre-Alain; Glaume, Fayolle: “A Buffer Overflow Study. Attacks & Defenses". http://www.enseirb.fr/~glaume/bof/report.html Matt Conover & w00w00 Security Team: “w00w00 on Heap Overflow". http://www.w00w00.org/articles.html Umesh Shankar: “Detecting Format String Vulnerabilities with Type Qualifiers”. http://qb0x.net/papers/FormatString/usenix01/usenix01.pdf RaiSe: “Shellcodes en Linux/i386”. Netsearch Ezine #4 (0x04). http://www.netsearch-ezine.com RaiSe: “Shellcodes en Linux/i386 (2)”. Netsearch Ezine #5 (0x04). http://www.netsearch-ezine.com The Last Stage of Delirium Research Group: “UNIX Assembly Codes Development for Vulnerabilities Illustration Purposes”. Version 1.0.2. http://lsd-pl.net/papers.html#assembly
  • 44. Bibliografía (IV): Writing Shellcodes (II) Zillion: “Writing Shellcode”. https://uhf.ath.cx/papers/Writing_shellcode.htm Miyagi, Robin: “Linux Assembler Tutorial”. http://www.geocities.com/SiliconValley/Ridge/2544 “Linux System Call Table”. http://quaff.port5.com/syscall_list.html UNF && pr1: “Writing Linux/x86 shellcodes for dum dums”. http://www.u-n-f.com/papers/shellcode-pr10n.txt
  • 45. Bibliografía (V): Sistemas de protección/evasión. Bulba and Kil3r: “Bypassing StackGuard and StackShield”. Phrack 56 (0x05). http://www.phrack.org/show.php?p=56&a=5 “Bypassing PaX ASLR Protection”. Phrack 59 (0x09). http://www.phrack.org/show.php?p=59&a=9 Nergal: “The advanced return-into-lib(c) exploits (PaX case study)”. Phrack 58 (0x04). http://www.phrack.org/show.php?p=58&a=4 Cowan, Crispin; Wagle, Perry; Pu, Calton; Beattie, Steve; Walpole, Jonathan: “Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade” http://www.cse.ogi.edu/DISC/projects/immunix Fayolle, Pierre-Alain; Glaume, Fayolle: “A Buffer Overflow Study. Attacks & Defenses". http://www.enseirb.fr/~glaume/bof/report.html
  • 46. Change Log v 1.1: Añadidas transparencias (6, 7, 19, 20 y 24) . Correcciones. Gracias a Pablo Garaizar (txipi) de sindominio.net (transparencias 6, 7 y 24) v 1.0: Presentada en el Hackmeeting III (MadHack02).