Pruebas de protocolo CAPWAP
Fecha: 14 de junio del 2016 Clase: investigación particular
Actualizado: 26 de junio (asociación de un cliente al AP)
Escenario
En un entorno WLAN corporativo, generalmente multi SSID, el tráfico de cada SSID se vincula o “bridgea” con
una VLAN en particular, etiquetando esta mediante un trunk 802.1q en el segmento entre el AP y el switch.
En este escenario utilizamos un access point Cisco 2700 y un switch Catalyst 3850 que también trabaja como
Wireless Lan Controller (WLC) al tener uno embebido.
Para esta implementación, el segmento entre el AP y el WLC utiliza una VLAN de management de WiFi local y
el protocolo CAPWAP para tunelizar el tráfico de diferentes VLANs/SSID dentro de esta VLAN de management.
Muchas veces uno configura, lo prueba y se olvida del tema, lo que se intenta descubrir es como se diferencia
o etiqueta el tráfico de cada VLAN dentro de este túnel.
Escenario con un solo AP y un solo SSID:
En este caso no sería necesario etiquetar o identificar tráfico ya que se utiliza un solo segmento.
Escenario con dos AP y dos SSID:
Este caso al utilizar dos AP diferentes es similar al anterior.
Escenario con un solo AP y dos SSID con un WLC externo:
En este caso el tráfico de cada SSID se etiqueta mediante 802.1q en los segmentos AP-SW y SW-WLC.
Escenario con un solo AP, dos SSID y WLC embebido en el switch:
Aquí el tráfico de cada SSID se tuneliza en un único segmento que pertenece a la VLAN de management WiFi.
Los equipos de pruebas fueron gentileza de empresas ACME.
Tunneling de CAPWAP (Control
And Provisioning of Wireless Access Points):
CAPWAP, que se basa en LWAPP - un protocolo estándar- que permite a un controlador WLC gestionar una
colección de puntos de acceso inalámbricos.
Ambos protocolos consisten en DOS túneles, uno de mensajes de control (Control messages) que intercambia
información usada para configurar el LAP y gestiona su operación. Estos mensajes están autenticados y cifrados,
por lo que el AP está controlado por el WLC de forma segura, y otro de datos (Data), que son paquetes desde
y para clientes inalámbricos asociados con el LAP. Estos datos son encapsulados dentro del protocolo LWAPP o
CAPWAP pero no está cifrado o protegido de cualquier otra forma entre el LAP y el WLC.
Configuración necesaria en el switch:
Layer 2:
vlan 115
name
AP_Management
vlan 116
name
WLAN_test
vlan 116
name
WLAN_test_2
interface GigabitEthernet1/0/15
description Conexion AP de pruebas
switchport access vlan 115
switchport mode access
spanning-tree portfast
Layer 3 (gateways de
cada VLAN):
interface Vlan115
description AP Management
ip
address 10.89.115.15 255.255.255.0
interface Vlan116
description WLAN-test
ip
address 10.89.116.15 255.255.255.0
interface Vlan117
description WLAN-test
ip
address 10.89.117.15 255.255.255.0
Layers 3/7 (DHCP de cada VLAN):
ip dhcp pool AP_Management
network
10.89.115.0 255.255.255.0
default-router 10.89.115.15
ip dhcp pool WLAN_test
network
10.89.116.0 255.255.255.0
default-router 10.89.116.15
ip dhcp pool WLAN_test_2
network 10.89.117.0 255.255.255.0
default-router 10.89.117.15
Lista de acceso de permisos y tráfico interesante (para capturas):
ip access-list extended WLAN_test
permit
ip any any
Configuración WLAN:
(1 es el ID de WLAN)
|
wlan WLAN_test 1 WLAN_test
client
association limit 100
client vlan 116 (asocia esta VLAN con la WLAN)
ip access-group WLAN_test
ip dhcp
required
ip dhcp
server 10.89.64.15
radio
dot11g
no
security wpa akm dot1x
security
wpa akm psk set-key ascii 0 Pr3sh4redKey
security
wpa wpa2 ciphers tkip
session-timeout 1800
no shutdown (2 es el ID de WLAN)
|
wlan WLAN_test_2 2 WLAN_test_2
client
association limit 100
client
vlan 117 (asocia esta VLAN con la WLAN)
ip
access-group WLAN_test
ip dhcp
required
ip dhcp
server 10.89.64.15
radio
dot11g
no
security wpa akm dot1x
security
wpa akm psk set-key ascii 0 Pr3sh4redKey
security
wpa wpa2 ciphers tkip
session-timeout 1800
no shutdown
Configuración en la GUI del WLC:
Verificación inicial:
Verificación del PoE del AP:
3850-CPD#sh
power inline
Module
Available Used Remaining
(Watts) (Watts) (Watts)
------
--------- -------- ---------
1
405.0 16.8 388.2
Interface
Admin Oper Power Device Class Max
(Watts)
---------------------- ------ ----------
------- ---------------------- ----- ----
Gi1/0/1
auto off 0.0 n/a n/a 30.0
---resumido---
Gi1/0/14
auto off 0.0 n/a n/a 30.0
Gi1/0/15 auto
on 16.8 AIR-CAP2702I-A-K9 4
30.0
---resumido---
3850-CPD#
Verificación del AP mediante CDP:
3850-CPD#sh
cdp neighbor
Capability Codes: R - Router, T - Trans Bridge,
B - Source Route Bridge
S - Switch, H - Host, I -
IGMP, r - Repeater, P - Phone,
D - Remote, C - CVTA, M -
Two-port Mac Relay
Device ID Local Intrfce Holdtme
Capability Platform Port ID
AP00f2.8b52.c268 Gig 1/0/15 164 T B I AIR-CAP27 Gig 0
Total cdp entries displayed : 1
3850-CPD#
Verificación del AP en el WLC:
3850-CPD#sh
ap summary
Number of APs: 1
Global AP User Name: Not configured
Global AP Dot1x User Name: Not configured
AP Name AP Model Ethernet MAC Radio MAC State
-----------------------------------------------------------------------------------------------------------
AP00f2.8b52.c268 2702I 00f2.8b52.c268 00f2.8be9.9570 Registered
3850-CPD#
Verificación del cliente en el AP:
3850-CPD#sh
wireless client ap dot11 24ghz
MAC Address AP Name Status WLAN Authenticated
--------------------------------------------------------------------------------------------------
4480.eb8b.05b3
AP00f2.8b52.c268 Associated 1
Yes
3850-CPD#
Verificación del tráfico en las VLANs
asociadas al AP:
3850-CPD#sh
mac address-table
Mac Address Table
-------------------------------------------
Vlan
Mac Address Type Ports
---- ----------- -------- -----
---resumido---
64 001b.387e.f171 DYNAMIC Gi1/0/2 (red cableada)
64 38ed.1882.68eb STATIC
Vl64
115 00f2.8b52.c268 DYNAMIC Gi1/0/15 (MAC del radio 2.4
del AP)
115 38ed.1882.68da STATIC
Vl115
116
38ed.1882.68d0 STATIC Vl116 (gateway de la VLAN)
116
4480.eb8b.05b3 DYNAMIC Ca0 (cliente WLAN en la VLAN 116/SSID
WLAN_test)
117
38ed.1882.68c2 STATIC Vl117 (gateway de la VLAN)
Total Mac Addresses for this criterion: 37
3850-CPD#
Verificación de la interface virtual del AP en el WLC:
3850-CPD#sh
int capwap0
Capwap0 is up, line protocol is up (connected)
Hardware is Capwap
MTU
1449 bytes, BW 10000000 Kbit/sec, DLY 0 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation UNKNOWN, loopback not set
Keepalive set (10 sec)
Carrier
delay is 0 msec
Auto-duplex, Auto-speed, media type is unknown
input
flow-control is off, output flow-control is unsupported
Tunnel
iifid 71471554340323333, Tunnel MTU 1449
Tunnel
source 10.89.115.15:5247, destination 10.89.115.100:11304
Tunnel
type DATA, Tunnel encapsulation 802.11
Tunnel
multicast mode UNICAST
Last
input 00:00:00, output never, output hang never
Last
clearing of "show interface" counters never
Input
queue: 0/900/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output
queue: 0/0 (size/max)
5
minute input rate 4000 bits/sec, 5 packets/sec
5
minute output rate 0 bits/sec, 0 packets/sec
1652
packets input, 69384 bytes, 0 no buffer
Received 0 broadcasts (0 multicasts)
0
runts, 0 giants, 0 throttles
0
input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
51
packets output, 9499 bytes, 0 underruns
0
output errors, 0 collisions, 0 interface resets
0
unknown protocol drops
0
output buffer failures, 0 output buffers swapped out
3850-CPD#
Captura de tráfico en el switch/WLC:
A diferencia del monitor session de un switch Catalyst convencional, aquí se utiliza una captura similar al
Cisco ASA, en la cual se debe especificar interface y tráfico interesante a capturar. La captura se redirige
a un archivo en memoria flash y luego se descarga mediante TFTP para su estudio con Wireshark.
3850-CPD#monitor
capture WLC file location flash:captura.pcap
3850-CPD#monitor
capture WLC interface gi1/0/15 both
3850-CPD#monitor
capture WLC access-list WLAN_test
3850-CPD#monitor
capture WLC start
3850-CPD#
*Jun 14 06:26:00.751: %BUFCAP-6-ENABLE: Capture
Point WLC enabled.
3850-CPD#monitor
capture WLC stop
3850-CPD#
*Jun 14 06:26:27.292: %BUFCAP-6-DISABLE:
Capture Point WLC disabled.
3850-CPD#copy
flash tftp
Source filename []?captura.pcap
Address or name of remote host []? 10.89.64.123
Destination filename [captura.pcap]? (enter)
!!
217374 bytes copied in 2.130 secs (102054
bytes/sec)
3850-CPD#
Análisis forense del tráfico capturado:
La IP 10.89.116.1 es un smartphone en la WLAN y la IP 10.89.116.15 es el gateway de la VLAN correspondiente y
a la cual se le realizaron los ping.
Se puede apreciar que en la capa 3 de la captura el tráfico se encuentra dentro de la VLAN 115, y lo que muestra
Wireshark en pantalla es el tráfico real (VLAN 116) encapsulado dentro del tunel CAPWAP.
Detalle de la trama #1 con el SSID WLAN_test_1:
Frame 1: 120 bytes on wire (960 bits), 120
bytes captured (960 bits)
Encapsulation type: Ethernet (1)
Arrival Time: Jun 14, 2016 03:26:03.063992000 Hora estándar de Argentina
Frame
Length: 120 bytes (960 bits)
Capture Length: 120 bytes (960 bits)
Ethernet II, Src: CiscoInc_52:c2:68 (00:f2:8b:52:c2:68), Dst: CiscoInc_82:68:da (38:ed:18:82:68:da) (layer 2: AP - WLC)
Destination: CiscoInc_82:68:da (38:ed:18:82:68:da)(dirección de la interface VLAN 115 del WLC)
Address: CiscoInc_82:68:da (38:ed:18:82:68:da)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory
default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: CiscoInc_52:c2:68 (00:f2:8b:52:c2:68) (dirección de la interface en VLAN 115 del AP)
Address: CiscoInc_52:c2:68 (00:f2:8b:52:c2:68)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory
default)
.... ...0 .... .... .... .... = IG bit:
Individual address (unicast)
Type: IPv4 (0x0800) (indica que el payload (carga que lleva) es un paquete IP)
Internet Protocol
Version 4, Src:
10.89.115.100, Dst: 10.89.115.15 (layer 3: AP - WLC)
0100
.... = Version: 4
....
0101 = Header Length: 20 bytes
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport
(0)
Total
Length: 106
Identification: 0x7222 (29218)
Flags: 0x02 (Don't Fragment)
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
Fragment offset: 0
Time to live: 64
Protocol: UDP (17) (indica que el payload (carga que lleva) es un segmento UDP)
Header checksum: 0xcd3b [validation disabled]
[Good: False]
[Bad: False]
Source: 10.89.115.100
Destination: 10.89.115.15
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]
User Datagram Protocol, Src Port: 11304 (11304), Dst Port: 5247 (5247) (layer 4: AP - WLC)
Source Port: 11304
Destination Port: 5247 (puerto de datos de CAPWAP)
Length: 86
Checksum: 0x0000 (none)
[Good Checksum: False]
[Bad Checksum: False]
[Stream index: 0]
Control And
Provisioning of Wireless Access Points - Data (header CAPWAP, no hay referencia a VLAN-id)
Preamble
0000 .... = Version: 0
.... 0000 = Type: CAPWAP Header (0)
Header
0010 0... .... .... .... .... = Header Length: 4 (16)
.... .000 00.. .... .... .... = Radio ID: 0 (radio de 2.4 GHz del
AP)
....
.... ..00 001. .... .... = Wireless Binding ID: IEEE 802.11 (1) (indica que es una radio 802.11
.... .... .... ...1 0010 0000 = Header Flags: 0x000120 www.ietf.org/rfc/rfc5415.txt)
.... .... .... ...1 .... .... = Payload Type: Native frame format
.... .... .... .... 0... .... = Fragment: Don't Fragment
.... .... .... .... .0.. .... = Last Fragment: More fragments follow
.... .... .... .... ..1. .... = Wireless header: Wireless Specific Information
is present
.... .... .... .... ...0 .... = Radio MAC header: No Radio MAC Address
.... .... .... .... .... 0... = Keep-Alive: No Keep-Alive
.... .... .... .... .... .000 = Reserved: 0x000000
Fragment ID: 0
0000 0000 0000 0... = Fragment Offset: 0
.... .... .... .000 = Reserved: 0
Wireless length: 4
Wireless data: d4360000
Wireless data ieee80211 Frame Info: d4360000
Wireless data ieee80211 RSSI (dBm): -44
Wireless data ieee80211 SNR (dB): 54
Wireless data ieee80211 Data Rate (Mbps): 0 (0.0 Mb/s)
Padding for 4 Byte Alignement: 000000
IEEE 802.11 QoS Data, Flags: .......T (layer 2: PC – gateway, pueden verse las 4 direcciones MAC de una trama
802.11
Type/Subtype: QoS Data (0x0028)
no hay referencia a VLAN-id)
Frame
Control Field: 0x8830(Swapped)
.... ..00 = Version: 0
....
10.. = Type: Data frame (2)
1000 .... = Subtype: 8
Flags: 0x88
.... ..00 = DS status: Not leaving DS or network is operating in AD-HOC
mode (To DS: 0 From DS: 0) (0x00)
.... .0.. = More Fragments: This is the last fragment
.... 1... = Retry: Frame is being retransmitted
...0 .... = PWR MGT: STA will stay up
..0. .... = More Data: No data buffered
.0.. .... = Protected flag: Data is not protected
1... .... = Order flag: Strictly ordered
.000
0000 0011 0000 = Duration: 48 microseconds
Receiver address: CiscoInc_e9:95:70
(00:f2:8b:e9:95:70) (dirección
MAC del AP)
Destination address:
CiscoInc_82:68:d0 (38:ed:18:82:68:d0) (gateway de la VLAN 116)
Transmitter
address: Motorola_8b:05:b3 (44:80:eb:8b:05:b3) (equipo de pruebas)
Source
address: Motorola_8b:05:b3 (44:80:eb:8b:05:b3) (misma MAC, no hubo repetidor WLAN)
BSS Id: CiscoInc_e9:95:70
(00:f2:8b:e9:95:70) (dirección MAC del AP)
STA address: Motorola_8b:05:b3 (44:80:eb:8b:05:b3) (station address)
.... .... .... 0010 = Fragment number: 2
0000 0000 1001 .... = Sequence number: 9
Qos Control: 0x0000 (paquete sin prioridad QoS, no se analiza en este documento)
.... .... .... 0000 = TID: 0
[.... .... .... .000 = Priority: Best Effort (Best Effort) (0)]
.... .... ...0 .... = QoS bit 4: Bits 8-15 of QoS Control field are TXOP
Duration Requested
.... .... .00. .... = Ack Policy: Normal Ack (0x0000)
.... .... 0... .... = Payload Type: MSDU
0000 0000 .... .... = TXOP Duration Requested: 0 (no TXOP requested)
Logical-Link Control
DSAP:
SNAP (0xaa)
1010 101. = SAP: SNAP
.... ...0 = IG Bit: Individual
SSAP:
SNAP (0xaa)
1010 101. = SAP: SNAP
.... ...0 = CR Bit: Command
Control field: U, func=UI (0x03)
000. 00.. = Command: Unnumbered Information (0x00)
.... ..11 = Frame type: Unnumbered frame (0x03)
Organization Code: Encapsulated Ethernet (0x000000)
Type: IPv4 (0x0800) (indica que el payload (carga que lleva) es un paquete IP)
Internet Protocol
Version 4, Src:
10.89.116.1, Dst: 10.89.116.15 (layer 3: PC de pruebas – gateway)
0100
.... = Version: 4
.... 0101
= Header Length: 20 bytes
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport
(0)
Total
Length: 28
Identification: 0x0000 (0)
Flags: 0x02 (Don't Fragment)
0... .... = Reserved bit: Not set
.1.. .... = Don't fragment: Set
..0. .... = More fragments: Not set
Fragment offset: 0
Time to live: 64
Protocol: ICMP (1) (indica que el payload (carga que lleva) es un paquete ICMP)
Header checksum: 0x3e1f [validation disabled]
[Good: False]
[Bad: False]
Source: 10.89.116.1
Destination: 10.89.116.15
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]
Internet Control
Message Protocol (ping: echo request)
Type:
8 (Echo (ping) request)
Code:
0
Checksum: 0xe154 [correct]
Identifier (BE): 5802 (0x16aa)
Identifier (LE): 43542 (0xaa16)
Sequence number (BE): 1 (0x0001)
Sequence number (LE): 256 (0x0100)
[Response frame: 2]
Captura de trama con el SSID WLAN_test_2:
Frame 1: 120 bytes on wire (960 bits), 120
bytes captured (960 bits)
Ethernet II, Src: CiscoInc_52:c2:68 (00:f2:8b:52:c2:68), Dst: CiscoInc_82:68:da
(38:ed:18:82:68:da) (igual que en captura SSID
WLAN_test_1)
Internet Protocol Version 4, Src: 10.89.115.100, Dst: 10.89.115.15 (igual que en captura SSID WLAN_test_1)
User Datagram Protocol, Src Port: 11304 (11304), Dst Port:
5247 (5247) (igual que en captura SSID WLAN_test_1)
Control And
Provisioning of Wireless Access Points - Data (igual que en captura SSID WLAN_test_1)
IEEE 802.11 QoS Data,
Flags: .......T
Type/Subtype: QoS Data (0x0028)
Frame
Control Field: 0x883c(Swapped)
.... ..00 = Version: 0
.... 10.. = Type: Data frame (2)
1000 .... = Subtype: 8
Flags: 0x88
.... ..00 = DS status: Not leaving DS or network is operating in AD-HOC
mode (To DS: 0 From DS: 0) (0x00)
.... .0.. = More Fragments: This is the last fragment
.... 1... = Retry: Frame is being retransmitted
...0 .... = PWR MGT: STA will stay up
..0. .... = More Data: No data buffered
.0.. .... = Protected flag: Data is not protected
1... .... = Order flag: Strictly ordered
.000
0000 0011 1100 = Duration: 60 microseconds
Receiver address: CiscoInc_e9:95:70 (00:f2:8b:e9:95:70) (igual que en captura SSID WLAN_test_1)
Destination address: CiscoInc_82:68:c2 (38:ed:18:82:68:c2)(gateway de la VLAN 117, única diferencia
Transmitter address: Motorola_8b:05:b3 (44:80:eb:8b:05:b3) encontrada entre los diferentes SSID)
Source address: Motorola_8b:05:b3 (44:80:eb:8b:05:b3) (igual que en captura SSID WLAN_test_1)
BSS Id: CiscoInc_e9:95:70 (00:f2:8b:e9:95:70) (igual que en captura SSID WLAN_test_1)
STA address: Motorola_8b:05:b3 (44:80:eb:8b:05:b3) (igual que en captura SSID WLAN_test_1)
.... .... .... 0010 = Fragment number: 2
1001 0000 0000 .... = Sequence number: 2304
Qos Control: 0x0000 (igual que en captura SSID WLAN_test_1)
Logical-Link Control
(igual que en captura SSID WLAN_test_1)
Internet Protocol Version 4, Src: 10.89.117.1, Dst: 10.89.117.15 (cambia sólo el direccionamiento IP)
Internet Control
Message Protocol (irrelevante)
Type:
8 (Echo (ping) request)
Code:
0
Checksum: 0xa8e3 [correct]
Identifier (BE): 20251 (0x4f1b)
Identifier (LE): 6991 (0x1b4f)
Sequence number (BE): 1 (0x0001)
Sequence number (LE): 256 (0x0100)
[Response frame: 2]
Este documento queda abierto a investigación para determinar con certeza como se diferencia el tráfico entre ambas
VLANs o SSIDs dentro del segmento AP-SW/WLC y que realmente corresponde a la VLAN 115.
Hasta el momento no se encontró documentación fehaciente a este etiquetado de tráfico y se asume que la única
diferencia entre ambas VLANs/SSIDs es la MAC de destino de cada VLAN, también, en caso de tratarse de tráfico entre
dos hosts WLAN de una misma VLAN/SSID, se presume que se diferenciará por la MAC de destino dentro de la tabla de
VLAN del switch/WLC.
Asociación de un cliente al AP:
Una vez publicado el laboratorio, recibí una sugerencia de realizar una captura de la asociación de un cliente WLAN al AP
para obtener parámetros en el intercambio cliente-AP-WLC-AP-cliente, asumí que los datos del intercambio AP-WLC-AP
estarían encriptados, pero necesitaba verificarlo, de lo contrario son sólo especulaciones.
La sugerencia indicaba revisar la RFC correspondiente https://tools.ietf.org/html/rfc5415 en la sección 4.6.8 (add station)
donde se indican parámetros de VLAN (única sección de la RFC donde se menciona) pero no pude encontrar nada sólido
como para determinar la discriminación de tráfico entre las diferentes VLANs. Gracias igual, todo aporte es oro.
Feedback o aportes sobre CAPWAP por favor a: ernesto@vilarrasa.com.ar gracias !
(2016) Sensei, telepathy it also uses 802.11 ?
Rosario, Argentina