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