Pruebas de agotamiento DHCP y tabla de direcciones MAC en ASA 5505  

Fecha: 16 de noviembre del 2016 Clase: CCNA Security

 

Escenario

 

 

En este escenario se intenta realizar una DoS en un ASA 5505 mediante inyección de paquetes DHCP,

y flooding mediante la saturación de la tabla de direcciones MAC del switch interno.

 

Fuente: www.cisco.com

 

 

1.- Pruebas de DHCP

 

1.1.- Verificación preliminar:

 

ciscoasa# sh runn | incl dhcpd

dhcpd auto_config outside

dhcpd address 192.168.1.5-192.168.1.132 inside (pool DHCP generado por default)

dhcpd enable inside

ciscoasa#

 

Si quisieramos aumentar el rango de direcciones ofrecidas no es posible:

 

ciscoasa(config)# dhcpd address 192.168.1.5-192.168.1.205 inside

Warning, DHCP pool range is limited to 128 addresses, set address range as: 192.168.1.5-192.168.1.132

ciscoasa(config)#

 

ciscoasa# sh dhcpd bind

 

IP address       Client Identifier        Lease expiration        Type

 

    192.168.1.5    001b.387e.f171            3164 seconds    Automatic (equipo con herramientas de captura)

    192.168.1.6    0024.815c.7510            2375 seconds    Automatic(equipo con herramientas de DoS)

ciscoasa#

 

1.2.- Disparamos el ataque DHCP:

 

1.3.- Verificamos en el equipo de capturas:

                Al ser tráfico DHCP, el handshacking inicial es broadcast, por lo que llegará a todos los dispositivos en la VLAN.

 

Observamos que el tráfico comienza a fluctuar, las sesiones SSH y de consola se interrumpen.

 

1.4.- Verificación en el ASA:

                ciscoasa#sh dhcpd bind

 

IP address       Client Identifier        Lease expiration        Type

 

  192.168.1.5          fe33.3670.2d6f              53 seconds    Automatic

  192.168.1.6          32c1.6d75.646e             53 seconds    Automatic

  192.168.1.7          d71b.f328.3529              40 seconds    Automatic

  192.168.1.8          7258.6f77.fe76              41 seconds    Automatic

  192.168.1.9          c35a.fb46.83b2              41 seconds    Automatic

  192.168.1.10        1169.8243.caee             41 seconds    Automatic

   ---resumido---

  192.168.1.130      321f.a40a.d830              41 seconds    Automatic

  192.168.1.131      ce6d.9018.5a73             41 seconds    Automatic

  192.168.1.132      9309.5b23.1e36             41 seconds    Automatic (pool completo, si un cliente genuino solicitara

ciscoasa#                                                                                                              una IP quedaría afuera del pool sin servicio)

 

ciscoasa# sh cpu

CPU utilization for 5 seconds = 89%; 1 minute: 57%; 5 minutes: 41%

ciscoasa#

 

Posiblemente el procesador queda forzado al máximo debido a que debe buscar dentro de la tabla DHCP una

IP disponible en la tabla llena cada vez que debe realizar una oferta, al tener una alta demanda de solicitudes,

la búsqueda se realiza cada vez, demandando ciclos de CPU.

 

 

ciscoasa#sh switch mac-address-table | incl Total

Total Entries: 8225

ciscoasa#

 

Podemos observar el máximo de direcciones MAC aprendidas, esto se debe a que Yersinia para

poder solicitar direcciones diferentes cada vez, debe generarlas desde una MAC diferente, de lo

contrario obtendría siempre la misma IP “bindeada” (asociada) a dicha MAC.

 

Esta condición también genera flooding en la VLAN correspondiente.

 

2.- Pruebas de CAM overflow

 

2.1.- Disparamos el ataque

 

 

 

2.2.- Verificación en la PC de capturas

 

La herramienta macof dispara flloding de tráfico pero no genera una DoS por saturación.

 

 

 

 

2.3.- Verificación en el ASA

 

ciscoasa# sh switch mac-address-table

Legend: Age - entry expiration time in seconds

 

   Mac Address  | VLAN |       Type       | Age | Port

-------------------------------------------------------

 001b.387e.f171   | 0001 |     dynamic           | 287 | Et0/5

 30e4.db69.bc2c  | 0001 |     static                  |  -  | In0/1

 0ae5.1e6c.2f44   | 0001 |     dynamic           |  0  | In0/3

 1a2b.9e0f.dbce  | 0001 |     dynamic           |  0  | In0/3

 881b.cccc.9a8b   | 0001 |     dynamic           |  0  |  In0/3

 ---resumido---

 ffff.ffff.ffff          | 0001 | static broadcast  |  -  | In0/1,Et0/0-7

 30e4.db69.bc2c | 0002 |     static                   |  -  | In0/1

 ffff.ffff.ffff          | 0002 | static broadcast  |  -  | In0/1,Et0/0-7

Total Entries: 8225 (luego de que la consola se interrumpe y se recupera)

 

ciscoasa#

 

3.1.- Contramedidas

 

No se pudieron encontrar contramedidas para el ataque DHCP ni limitaciones de MAC para el ASA 5505,

generalmente en un ambiente mediano-grande esta protección se ofrece en el switch de acceso mediante

la función port-security con la limitación de 1 dirección MAC por puerto (o la cantidad necesaria).

En el ASA esta funcionalidad no es posible.

 

ciscoasa# conf t

ciscoasa(config)# s? (buscamos “switch algo”)

 

configure mode commands/options: (nada)

  same-security-traffic    service        service-policy    setup

  sla                      smtp-server    smtps             snmp

  snmp-map                 snmp-server    ssh               ssl

  sunrpc-server            sysopt

 

exec mode commands/options: (nada)

  session    show    shun    ssh

*s=show

ciscoasa(config)# mac?

 

configure mode commands/options:

  mac-list (permite generar una ACL de direcciones MAC pero sólo para AAA 802.1x, no para este caso)

ciscoasa(config)# int eth0/3

ciscoasa(config-if)# switchport ? (buscamos comandos parecidos a portsecurity de IOS)

 

interface mode commands/options:

  access         Set access mode characteristics of the interface

  mode          Set trunking mode of the interface

  monitor      Monitor another interface

  protected  Configure an interface to be a protected port (previene la comunicación entre puertos protegidos

  trunk           Set trunking characteristics of the interface        dentro de la misma VLAN)

ciscoasa(config-if)#

 

Por lo tanto, con este equipo y un par de dispositivos conectados a el estamos vulnerables a este tipo de ataque.

 

4.- Pruebas de DoS DHCP en un server configurado en un Cisco 1941:

 

Repetimos las pruebas utilizando un Cisco 1941 con IOS 15 para verificar si esta vulnerabilidad existe.

 

4.1.- Limpiamos el pool DHCP

 

Cisco1941#clear ip dhcp bind *

 

4.2.- Verificamos

 

Cisco1941#sh ip dhcp bind

Cisco1941#

 

4.3.- Lanzamos el ataque

 

Cisco1941#sh proc | incl cpu   CPU

CPU utilization for five seconds: 99%/51%; one minute: 61%; five minutes: 30%

Cisco1941#

 

Cisco1941#sh ip dhcp bind    

Bindings from all pools not associated with VRF:

IP address          Client-ID/     Lease expiration        Type

    Hardware address/

    User name

--- la IP .1 es la del propio router ---

192.168.72.2          90b6.b827.82f2           Nov 15 2016 09:39 PM    Automatic

--- resumido, ofrece todas las direcciones disponibles en la subred ---

192.168.72.252      4294.7b0f.6274           Nov 15 2016 09:39 PM    Automatic

192.168.72.254      1540.0b22.01d2          Nov 15 2016 09:39 PM    Automatic

Cisco1941#

 

4.4.- Detenemos el ataque

 

Cisco1941#sh proc | incl CPU  

CPU utilization for five seconds: 99%/51%; one minute: 45%; five minutes: 42%

Cisco1941#sh proc | incl CPU

CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 16%

Cisco1941#

 

En este caso, la recomendación también es la limitación de direcciones MAC por puerto en los switchs de acceso.

 

 

(2016) Sensei, this is a tsunami packets ?

Rosario, Argentina