Alberto Cita - Skype Sin Levita. Un análisis de seguridad y privacidad [Rooted CON 2014]
Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]
-
Upload
rootedcon -
Category
Technology
-
view
432 -
download
0
description
Transcript of Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]
1Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
W{ireless|onderful}
eXfiltration Protocol
Andrés Tarascó - @atarasco
2Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
¿Qué es un APT?
Es un malware, algo especial:– Dirigido a personas, grupos u organismos.– Puede hacer uso de 0days.– Indetectable por AV.– Intenta pasar desapercibido mucho tiempo
¿Porqué un APT?– Infiltración, acceso remoto, canales
encubiertos, silenciosos, ¿Indetectables?
3Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
¿Quién usa APTs?
Mafias / Criminales.– Infiltración y robo de información confidencial.
Gobiernos– Ejercito y agencias de 3 siglas.
Empresas– Espionaje industrial.
Stuxnet, duku, flame, red october, careto, Icefog, Gauss,…
4Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Uso de APTs en pentest
Selección de objetivos.
Análisis de canales de infección
Evaluación de medias preventivas.
Evaluación de mecanismos de filtrado.
Descubrimiento de puntos de entrada
Descubrimiento de puntos de salida.
5Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Canales de propagación
Pasivo– Memorias USB , Infección de ficheros
Activo– Exploiting
• Java/adobe/browser/0days
– Email y documentos adjuntos• PDF/ Macros / ..
– Descubrimiento de red y dispositivos.
6Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Capacidades de un APT básico
Comunicación.– Directa (conexión TCP / UDP)– HTTP (con auto descubrimiento de gateway)
• Exfiltración en cabeceras HTTP o en el cuerpo• Adquisición de credenciales de acceso
– DNS• Transferencia de zona o registros CNAME,TXT,…
Cifrado– SSL / TLS / CBC / propietario
7Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Limitaciones en toma de control
El equipo infectado no puede ser accedido.– Entorno securizado– Filtrado por listas blancas de navegación.– Resolución DNS restringida.– No dispone de una conexión de red activa.
Necesidad de buscar canales alternativos
8Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
¿Alternativas? ;-)
Cámara: ¿Código morse?
Sonido: Badbios? ;)
Bluetooth: Distancia reducida.
¿Qué tal WiFi?– Disponible en la mayoría de los dispositivos– 10 Km en condiciones ideales.
9Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Fundamentos de un APT WiFi
Cómo funciona un APT WiFi por Hardware– Keelog, teclado modificado,…
Exfiltración por software:– Agente APT:
• Probe request: Pregunta la disponibilidad de redes• Disponibilidad de la API (ejemplo WLANAPI) – Asincrona • Viable tanto sin conexión como conectados a una red
segura.
– Servidor C&C del APT:• Probe response: Publica un SSID• Software en modo monitor con capacidad de inyección.
10Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Fundamentos de un APT WiFi
Probe Request -------- ¿Estas ahí?
Si ----------------- Probe Response
Probe Request -------- ¿ Qué hago?
Dame una shell----------------- Probe Response
Probe Request -------- Enviando stdout/stderr
Enviando stdin----------------- Probe Response
La información se envía en IE (Information Elements)
11Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: Resumen
Protocolo de transporte orientado a conexión
API: conectar-escuchar, leer-escribir y cerrar
Proceso de comunicación
Three-way-handshake
Gestión de conexiones asíncronas.
Seis tipos de PDU (packet data unit)
12Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: Resumen (II)
13Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: API
int wxp_init (wxp_addr_t, const p_wxp_backend_t, void *);
p_wxp_state_t wxp_connect (wxp_addr_t);
p_wxp_state_t wxp_listen (wxp_addr_t);
int wxp_read (p_wxp_state_t, void *, size_t);
int wxp_write (p_wxp_state_t, const void *, size_t);
int wxp_close (p_wxp_state_t);
14Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: PDU
Todos los campos están en el orden de la red (big-endian)
15Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: PDU (II)
Session ID: número aleatorio negociado entre cliente y servidor.
PDU-TYPE: tipo de paquete de exfiltración.– WXP_TYPE_SYN, WXP_TYPE_SYNACK, WXP_TYPE_ACK,
WXP_TYPE_DATA, WXP_TYPE_REPEAT, WXP_TYPE_RST
Scramble: Diferencia paquetes duplicados
Seq: Número de secuencia
Count: Número de ACKs y REPEATs enviados.
New sessid: ID de sesión ofrecido por el servidor.
Checksum: suma de comprobación
16Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: Establecimiento de la conexión
17Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: Transmisión
INPUT: Paquetes listos para ser leídos por wxp_read.
OUTPUT: Paquetes listos para ser enviados al covert channel.
INCOMING: Paquetes recibidos por el covert channel que han llegado fuera de orden.
OUTCOMING: Paquetes que se han enviado al covert channel pero no han sido confirmados todavía.
ACK: Números de secuencia de paquetes recibidos.
18Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: Transmisión (II)
Temporizador de notificaciones de recepción.– WXP_TYPE_ACK – Notificación por rangos descartada.
Temporizador de paquetes perdidos– WXP_TYPE_LOST
Gestión de colas de recepción.– INCOMING <-> INPUT
19Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: Transmisión (III)
20Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: control de flujo con histéresis
Para no saturar el canal, se debe ajustar la velocidad de envío con la velocidad de confirmación.
Control de flujo con histéresis: si hay más de Nlock paquetes pendientes de confirmar por el extremo remoto, wxp_write se bloquea hasta que se confirmen al menos Nunlock, con Nlock > Nunlock
21Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: control de flujo con histéresis (II)
22Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: cierre de conexión.
El cierre de sesión se inicia enviando un paquete de tipo WXP_TYPE_RST.
Dicho paquete puede llegar fuera de orden, por lo que el receptor lo ignora hasta que llegan todos los paquetes intermedios. Cuando llega, lo confirma (ACK) y le responde con otro RST.
El proceso que inicia el cierre espera a la confirmación del RST remoto antes de cerrar, con cierto timeout (así se asegura que se envían todos los paquetes pendientes).
Si se supera dicho timeout, se cierra igualmente.
23Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
WXP: complejidad del código.Las primeras pruebas se hicieron sobre UDP, pero…– Ponerlo encima de exfiltración wifi mediante probe requests,
un método extraordinariamente lento para comunicarse.
Código aún experimental.– Pero es completamente funcional
Gran número de controles para situaciones anómalas.– Paquetes perdidos– Paquetes desordenados– Paquetes persistentes– Cache de redes WLAN API
Depuración tediosa– Errores del driver de Airpcap.– Conexión de debugger a cliente/servidor
24Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Detalles de WXP
Velocidad relativamente baja– 1k/s
Detección de WXP: Anomalías– Tasa elevada de Probe Requests / Probe
Responses– Sólo lo vamos a ver si monitorizamos la red– Interferencias– Saturación del canal de comunicaciones.
25Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
Mejoras
Agente WXP– Monitor mode driver ( Acrylic WiFi NDIS )– Raw packets injection (Acrylic NDIS v2.0)
Atacante C&C :– Agregación de canales WiFi– Portar a linux / ddwrt/..
General:– Qos– Agrupación de PDUs
26Rooted CON 2014 6-7-8 Marzo // 6-7-8 March
THE END
WXP @github
Agradecimientos:– @Tarlogic, especialmente a @BatchDrake– @RootedCon