Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

26
1 Rooted CON 2014 6-7-8 Marzo // 6-7-8 March W{ireless| onderful} eXfiltration Protocol Andrés Tarascó - @atarasco

description

 

Transcript of Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

Page 1: 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

Page 2: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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?

Page 3: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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,…

Page 4: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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.

Page 5: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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.

Page 6: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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

Page 7: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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

Page 8: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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.

Page 9: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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.

Page 10: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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)

Page 11: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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)

Page 12: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

12Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

WXP: Resumen (II)

Page 13: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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);

Page 14: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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)

Page 15: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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

Page 16: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

16Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

WXP: Establecimiento de la conexión

Page 17: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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.

Page 18: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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

Page 19: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

19Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

WXP: Transmisión (III)

Page 20: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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

Page 21: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

21Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

WXP: control de flujo con histéresis (II)

Page 22: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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.

Page 23: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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

Page 24: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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.

Page 25: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

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

Page 26: Andrés Tarasco – Ataques dirigidos con APTs Wi-Fi [Rooted CON 2014]

26Rooted CON 2014 6-7-8 Marzo // 6-7-8 March

THE END

WXP @github

Agradecimientos:– @Tarlogic, especialmente a @BatchDrake– @RootedCon