From Kernel Sp ce
To User HeavenJaime Sánchez
@segofensiva
WHO AM I§ Ingeniero Informá,ca de Sistemas y Execu,ve MBA
§ Soy un apasionado de la seguridad informá,ca, con más de 10 años de experiencia profesional.
§ Comencé, como muchos otros, en la edad de oro del Phreak español
§ Mi alma sigue siendo Old School, aunque desconozco cuando la vendí para trabajar en Seguridad Copora,va ;)
§ Estoy tratando de retomar mis andaduras, con el inicio de un nuevo blog www.seguridadofensiva.com
§ Contacto: [email protected]
2
§ Trabajo actualmente en un SOC (Security Opera,ons Center)
3
§ Evolución de los ataques informá,cos durante el 2012§ Incremento del Espionaje Industrial, HackBvismo y Ciberguerra§ Ataques a grandes empresas como Facebook, Apple, TwiHer, New York Times§ Intereses económicos y polí,cos, como APT1, Stuxnet etc.
5
6
RECONOCIMIENTO
EXPLORACIÓN
COMPROMISODEL SISTEMA
METODOLOGÍA DEUNA INTRUSIÓN
MANTENIMIENTODEL ACCESO
BORRADO DE HUELLAS
IN A NUTSHELL
7
Aplicaciones
DisposiBvos
DisposiBvos
Kernel
Ring 0
Ring 1
Ring 2
Ring 3
MásPrivilegiado
MenosPrivilegiado
§ Diferentes nivels de acceso a recursos
§ Forzado por hardware en la CPU, ofreciendo diferentes modos a nivel de hardware o microcódigo
§ Organización en una jerarquía de más privilegiado (ring0) a menos privilegiado (número de anillo más alto)
§ El anillo 0 es el nivel con la mayoría de los privilegios e interactua directamente con el hardware ^sico, como la CPU y memoria
§ El anillo 0 posee el nivel más bajo de protección, se espera que nunca se cuelgue. En ese caso, todo el sistema caerá con él.
ARQUITECTURA
8
v KERNEL SPACE: área protegida donde el kernel ejecuta y presta sus servicios: * Creación de procesos, asignación de ,empos de
atención y sincronización * Asignación de la atención de la CPU a los procesos que lo
requieran * Administración del espacio en el sistema de archivos:
acceso, protección, comunicación, E/S y periféricos. * Ges,ón del hardware: memoria, procesasor y formas de
almacenamiento
v USER SPACE: espacio reservado para aplicaciones del usuario: * Cada proceso normalmente ejecuta su memoria virtual, y a menos que se solicite de forma explícita, no se puede acceder a la memoria de otros procesos. * Comienza cuando el kernel monta roocs. El primer programa en ser ejecutado por defecto es /sbin/init
KERNEL vs USER SPACE
9
WTF !?
KERNEL vs USER SPACE
Applica,on Code
C Library
System Interface
Generic Services
Device Drivers
Your Program
Linux Kernel
Hardware
User Space
Kernel Space
11
12
How imet your
packet
13
14
IPTables§ Necilter permite interceptar y manipular paquetes de red, permi,endo el manejo en diferentes estados de procesamiento.
§ El componente más popular construído sobre Necilter es iptables, una herramienta de firewall que permite:
• Filtrar paquetes• Realizar traducciones de direcciones de red (NAT)• Mantener registros de LOG• Soporte para IPv4 e IPv6• Stateless / Statefull packet filtering
§ El nombre de iptables se u,liza de forma errónea para referirse a toda la infraestructura ofrecida por el proyecto Necilter.
§ El proyecto ofrece otros subsistemas independientes de iptables, tales como el connec,on tracking system, que permite encolar paquetes para que sean tratados desde el espacio de usuario.
15
FUNCIONAMIENTO§ Sencillez para la escritura de reglas
§ Sencillez para crear nuevas reglas, con frases básicas del ,po:1. "Quiero autorizar el acceso a mi servidor web a través de mi firewall"2. "Quiero autorizar a los usuarios de la LAN a conectarse a la web a través de mi firewall"
3. "Acepto que gente pueda conectarse al servidor ssh a través firewall".4. "Quiero que desde mi firewall se permita hacer ping a todo Internet."
§ Así que una manera sencilla de clasificar los paquetes que ges,ona un servidor de seguridad se va a dividir el flujo en tres partes:1. paquetes dirigidos al servidor de seguridad (tercer caso)2. paquetes que pasan por el firewall (los casos primero y segundo)3. paquetes emi,dos por el servidor (cuarto caso)
§ §Hay tres cadenas básicas:
• INPUT: entrada• OUTPUT: salida• FORWARD: reenvío 16
FUNCIONAMIENTO§ Para los paquetes salientes que tenemos dos cadenas:
• Paquetes que llegan desde el firewall: la cadena OUTPUT• Paquetes que pasan por el firewall: la cadena FORWARD
§ Existe tres tablas incorporadas, cada una de las cuales ,ene cadenas predefinidas:• filter table: responsable del filtrado. Todos los paquetes pasan a través de la tabla de filtros. Con,ene las siguientes cadenas predefinidas:
INPUT / OUTPUT / FORWARD
• net table: responsable de configurar las reglas de reescritura de direcciones o de puertos de los paquetes. El primer paquete en cualquier conexión pasa por esta tabla:
PREROUTING / POSTROUTING / OUTPUT
• mangle table: responsable de ajustar las opciones de los paquetes. Todos los paquetes pasan por esta tabla. Con,ene todas las cadenas predefinidas posibles:
PREROUTING / INPUT / FORWARD / OUTPUT / POSTROUTING17
DESTINOS DE REGLAS
• RETURN: el paquete deja de circular por la cadena en cuya regla se ejecutó el des,no RETURN.
§ Otras extensiones:• REJECT: mismo efecto que DROP, pero envía un mensaje de error a quien lo envió originalmente: tcp-‐reset para conexiones tcp denegadas, icmp-‐port-‐unreachable para sesiones UDP denegadas etc.• LOG / ULOG: log de los paquetes o mul,difusión a un socket• DNAT / SNAT: reescritura de des,no/origen para traducción NAT• MASQUERADE: forma especial de SNAT para direcciones IP dinámicas
§ Existen los siguientes des,nos ya incorporados:• ACCEPT: necilter acepta el paquete• DROP: necilter descarta el paquete sin ningún otro ,po de procesamiento• QUEUE: este des,no hace que el paquete sea enviado a una cola en el espacio de usuario. Una aplicación puede usar la biblioteca libipq (parte del proyecto necilter) para alterar el paquete. Si no existe ninguna aplicación que lea la cola, este des,no equivale a DROP.
IMPORTANTE
18
13
NFQUEUE§ NFQUEUE permite delegar la decisión de los paquetes en el espacio de usuario
§ Es necesario disponer de un sosware que esté a la escucha en la cola que queramos u,lizar, que obtenenga los paquetes del kernel y devuelva un veredicto con cada uno
§ La cola es una lista enlazada, cuyos elementos son el paquete y metadatos, que posee las siguientes caracterís,cas:
§ Longitud Fija§ Los elementos se almacenan e indexan con un entero§ Un paquete es liberado cuando se devuelve el veredicto desde el espacio de usuario a un determinado índice§ Cuando la cola se llena, no es posible encolar más paquetes
§ Implicaciones:§ Podemos devolver los veredictos en el orden que queramos§ Es posible leer múl,ples pauqetes antes de devolver el veredicto. Si devolvemos los veredictos de forma lenta, la cola se llenará y el comenzaremos a ,rar los paquetes nuevos que lleguen a nosotros
20
EJEMPLOS
21
SNIFFER BÁSICO TCP
22
CAPTURAR TRAFICO HTTP
23
Block DNS TunnelingFake TracerouteSSH Fake Source
24
FAKE SSH SOURCE
25
Atacante
Servidor SSH
Router
www.rootedcon.es
$ _
-‐ Ocultaremos nuestra direción IP de origen y podremos modificarla con cualquier otro valor que necesitemos en nuestra máquina comprome,da Servidor SSH.
-‐ Ú,l para saltarte filtros o para no llamar la atención del administrador.
26
PORT KNOCKING
El Port Knocking es una técnica para establecer una conexión a un ordenador de la red que no ,ene puertos abiertos.
Antes de que una conexión se establezca, los puertos se abren mediante una secuencia, que es una serie de intentos de conexión para puertos cerrados.
Imágenes: www.portknocking.com
BLACK OPS OF DNS
§ El DNS Tunneling permite crear un tunel IP sobre el protocolo DNS, para conseguir salir a Internet en un entorno donde al unico servicio que podemos acceder es un DNS que nos resuelve direcciones de Internet.
§ Dos formas de encapsular datos en DNS:§ Base64 para registros TXT (~220 bytes/paquete)§ Base32 para registros CNAME (~110 bytes/paquete)
27
TRACEROUTE FUN
28
DETECCIÓN REMOTADEL SISTEMA OPERATIVO
29
Técnicas de detección de Sistema opera,vo
Pasivo Ac,vo
Análisis de Tráfico Captura Pe,ciones TCP/IP
30
31
32
TÉCNICAS CLÁSICAS
33
§ Aunque cada día es más sencillo buscar un target con una versión específica.
34
NMAP
§ Nos centraremos en el resultado interesante para el reconocimiento remoto del sistema opera,vo, como: -‐ Device Type -‐ Network Distance -‐ Running -‐ TCP Sequence Predic,on -‐ OS Details -‐ IP ID Sequence Genera,on -‐ Up,me Guess
35
36
37
38
MÉTODOS UTILIZADOS POR NMAP
§ El método u,lizado por nmap envía 15 pruebas TCP, UDP e ICMP, tanto a puertos abiertos del sistema, como a cerrados. Estas pruebas están especialmente diseñadas para explorar ambigüedades respecto a los estándares del RFC y escucha las respuestas.
§ SEQUENCE GENERATION (SEQ, OPS, WIN y T1): se envían 6 pruebas TCP a un puerto que haya comprobado que esté abierto. Estos paquetes varían en las opciones TCP y el valor de ventana:
§ Paquete 1: WS(10),NOP,MSS(1460),TS(Tval:0xFFFFFFFF. Tsecr:0), SACK y W(1)§ Paquete 2: MSS(1400), WS(0),SACK, TS(Tval:0xFFFFFFFF. Tsecr:0),EOL y W(63)§ Paquete 3: TS(Tval:0xFFFFFFFF. Tsecr:0),NOP,NOP,WS(5),NOP,MSS(640) y W(4)§ Paquete 4: SACK, TS(Tval:0xFFFFFFFF. Tsecr:0),WS(10),EOL y W(4)§ Paquete 5: MSS(536),SACK, TS(Tval:0xFFFFFFFF. Tsecr:0), WS(10),EOL y W(16)§ Paquete 6: MSS(265),SACK, TS(Tval:0xFFFFFFFF. Tsecr:0) y W(512)
§ ICMP ECHO (IE): se realiza el envío de dos paquetes ICMP ECHO.
§ TCP explicit congesBon noBficaBon (ECN): Se realiza el envío a un puerto abierto, con los flags ECN CWN y ECE ac,vados, WS(10), NOP, MSS(1460),SACK,NOP,NOP y W3)
39
§ TCP T2-‐T7: cada prueba se genera realizando el envío de un paquete TCP. Salvo uno de ellos, las opciones en este caso corresponden a WS(10), NOP, MSS(265), TS (Tval: 0xFFFFFFFF, Tsecr:0).
§ T2: sin flags, IP DF y W(128) a un puerto abierto§ T3: SYN, FIN, URG, PSH y W(256) a un puerto abierto§ T4: ACK con IP DF y W(1024) a un puerto abierto§ T5: SYN con W(31337) a un puerto cerrado§ T6: ACK con IP DF y W(32768) a un puerto cerrado§ T7: FIN, PSH, URG con W(65535) a un puerto cerrado
§ UDP: se trata de un paquete UDP enviado a un puerto cerrado. El payload del paquete consisten en el carácter ‘C’ (0x43) repeBdo 300 veces. Si el puerto está cerrado y no hay un firewall entre medias, se espera recibir un paquete ICMP port unreachable de respuesta.
40
§ Lanzamos el nmap para detectar sistema opera,vo con la opción –packet-‐trace:
§ Comprobamos si somos capaz de detectar el escaneo:
41
ANÁLISIS DE LAS RESPUESTAS
42
Destacaremos:§ TCP ISN greatest common divisor (GDC)§ TCP IP ID sequence genera,on alg (TI)§ TCP ,mestamp op,on alg (TS)§ TCP Op,ons (O, O1-‐O6)§ TCP ini,al Window Size (W, W1-‐W6)§ Responsiveness (R)§ IP don’t fragment bit (DF)§ IP ini,al ,me-‐to-‐live guess (TG)
Fingerprint Linux 2.6.17 - 2.6.24Class Linux | Linux | 2.6.X | general purposeSEQ(SP=A5-D5%GCD=1-6%ISR=A7-D7%TI=Z%II=I%TS=U)OPS(O1=M400C%O2=M400C%O3=M400C%O4=M400C%O5=M400C%O6=M400C)WIN(W1=8018%W2=8018%W3=8018%W4=8018%W5=8018%W6=8018)ECN(R=Y%DF=Y%T=3B-45%TG=40%W=8018%O=M400C%CC=N%Q=)T1(R=Y%DF=Y%T=3B-45%TG=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=3B-45%TG=40%W=8018%S=O%A=S+%F=AS%O=M400C%RD=0%Q=)T4(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(DF=N%T=3B-45%TG=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(DFI=N%T=3B-45%TG=40%CD=S)
Aunque hay muchas más:§ TCP ISN counter rate (ISR)§ ICMP IP ID sequence genera,on alg (II)§ Shared IP ID sequence Boolean (SS)§ Don’t Fragment ICMP (DFI)§ Explicit conges,on no,fica,on (C)§ TCP miscellaneous quirks (Q)§ TCP sequence number (S)§ etc.
43
FUCK YEAH!
44
45
FUCK YEAH!
FORMAS DE PROTEGERSE§ Existen una serie de herramientas an,guas que permizan defenderse y falsear las respuestas de los escaneos de la herramienta nmap. Algunas de ellas son:
• IP Personality: se trata de un módulo de necilter solamente disponible para la versión 2.4 del Kernel de Linux, que permite variar ciertos parámetros del comportamiento de la pila TCP/IP y modificar la ‘personalidad’ de nuestro equipo.
• Stealth Patch: parche disponible para el kernel 2.2.x
• Fingerprint Fucker: módulo de kernel para versiones 2.2.x que permite variar el comportamiento de las respuestas de nuestro equipo. Se trata también de un módulo de kernel. Sólo responde a ciertas pruebas an,guas de nmap (T1, T2 y T7).
• IPLog: es un logger que permite detectar escaneos (XMAS, FIN, SYN…). Permite engañar a nmap a través de la opción ‘-‐z’.
• Blackhole: opción existente en el kernel *BSD que permite manejar el comportamiento de las respuestas del equipo cuando alguien se conecta a puertos TCP/UDP cerrados. 46
47
48
p0f
49
-‐ Los modos p0f nos permite para realizar el análisis del sistema opera,vo son:§ SYN Mode§ SYN+ACK Mode§ RST+ Mode
-‐ Escaneo pasivo -‐ No se envía tráfico por la red -‐ No detectable
FORMATO DE FIRMAS
50
8192:32:1:48:M*,N,N,S:.:Windows:98Sistema Opera,vo -‐ Familia -‐ Versión
Quirks -‐ Datos en paquetes SYN -‐ Opciones después del EOL -‐ Campo IP ID a cero -‐ ACK dis,nto de cero -‐ Flags no habituales -‐ Decodificación de opciones errónea
Opciones TCP y con su orden -‐ N: NOP -‐ E: EOL -‐ Wnnn: WS -‐ Mnnn: MSS -‐ S: SACK -‐ T / T0: Timestamp -‐ ?n
Window Size -‐ * Cualquier valor -‐ %nnn Valor múl,plo de nnn -‐ Sxx Múl,plo de MSS -‐ Txx Múl,plo de MTU -‐ xxx Valor concreto
TTL Inicial
Bit DF (0/1)
Tamaño
SOURCEFIRE
La tecnología Sourcefire FireSight está incorporada en la úl,ma generación de sensores de Sourcefire, proporcionando inteligencia a
red y contexto, a través de un motor de detección inteligente que permite, entre otras funciones, obtener información del sistema opera,vo de las máquinas de nuestra red.
51Fichero: rna_fingerprints.oucile
¿ PREGUNTAS ?
52
Long story short:SYN ACK FIN
53
Gracias