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
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
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.
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.
Suscribirse a:
Entradas (Atom)

