Pasé los primeros primaveras de mi carrera en TI trabajando para un socio de Cisco que se especializaba en sistemas telefónicos de Cisco. Mi trabajo no estaba relacionado directamente con los sistemas telefónicos, pero por lo normal estaba en un campo adyacente como ruta/conmutador y seguridad. Sin incautación, pude ver mi parte de las redes que usaban los sistemas telefónicos de Cisco.
Hoy, trabajo como probador de penetración. En empleo de diseñar y solucionar problemas de redes, ahora tengo la oportunidad de entrar en ellas para probar su fuerza. Por lo normal, la primera tarea de un Prueba de penetración interna es intentar obtener llegada a una cuenta con pocos privilegios. Legado que la pandemia nos hizo cambiar a trabajar desde casa, muchos de nuestros ataques comunes de intermediarios (MitM) se neutralizaron oportuno a la desidia de clientes adyacentes.
En esta publicación, voy a analizar las configuraciones erróneas comunes que he conocido en entornos que implementaron teléfonos Cisco. La explotación de estos problemas generalmente da como resultado el compromiso exitoso de los sistemas telefónicos y permite un punto de apoyo original internamente del entorno de Active Directory. TrustedSec ha valiente una utensilio SeeYouCM-Ladrón eso hace que explotar este error global sea trivial.
Un cliente hizo un seguimiento luego de una prueba de penetración interna y dijo que había descubierto credenciales de texto sin formato internamente de algunas de las configuraciones de su teléfono Cisco. Querían asimilar si alguna vez habíamos conocido esto ayer. Mientras revisaba sus hallazgos, me di cuenta de que las credenciales de texto sin formato almacenadas en la configuración del teléfono estaban configuradas para el servicio SSH del teléfono. Esta configuración se usa si un administrador desea conectarse a un teléfono, lo cual no es una característica requerida o de uso global. Se me ocurrió que este campo de nombre de usufructuario y contraseña fue completado por error por la persona que agregó el teléfono. Este individuo no solo cometió el mismo error, sino que resulta que es un error muy global en normal.
Por lo normal, las credenciales de SSH que identificamos en los archivos de configuración del teléfono no son contraseñas de Active Directory, sino credenciales de autenticación válidas para la interfaz web de Cisco Unified Communications Manager (CUCM). Desde CUCM, podemos realizar un ataque de paso de autenticación y capturar las credenciales de Active Directory configuradas para el protocolo LDAP. Ocasionalmente, las cuentas que descubre en las configuraciones son credenciales de dominio. A veces, las credenciales son incluso miembros del montón de administradores de dominio. Esta publicación lo guiará paso a paso y lo explicará.
1.2 Tutorial de hackeo manual
El primer paso es encontrar un teléfono Cisco en la red. Un truco que me gusta usar es monitorear los paquetes del Protocolo de descubrimiento de Cisco (CDP) que pasan por el cable. En el interior de estos paquetes, puede encontrar información sobre la VLAN de voz. Una vez que identificamos cuál es la VLAN de voz, podemos configurar nuestra interfaz de red para comunicarnos en esa VLAN conexo con cualquier dispositivo en ella. Esto casi siempre me permite identificar rápida y silenciosamente la red de un teléfono.
tcpdump -nnvi eno1 -s 1500 -c 1 'ether(20:2) == 0x2000'

Por ejemplo, si usa VLAN 19, en Ubuntu puede crear una subinterfaz usando los siguientes comandos.
modprobe 8021q vconfig add eno1.19 19 ifconfig eno1.19 up
Aquí, creo la subinterfaz y uso volcado tcp para identificar el tráfico ARP.

Posteriormente de identificar la subred del teléfono, una rápida Nmap El escaneo del puerto 80 indicará qué sistemas están activos. Una vez que identifica la interfaz web de un teléfono, puede obtener información valiosa del teléfono, incluida la ubicación del servidor CUCM. Encima, puede identificar el nombre de archivo del archivo de configuración del teléfono agregando .cnf.xml.sgn al nombre de host del teléfono, que siempre es SEP

Ahora puedo descargar manualmente los archivos de configuración del teléfono tal como lo hace el teléfono al partir usando TFTP. A diferencia de FTP, el servicio TFTP no permite listas de directorios. Por lo tanto, es importante identificar el nombre de configuración de un teléfono válido. En algunos casos raros, hay un archivo etiquetado ConfigFileCacheList.txt. Si este archivo existe, contendrá todos los nombres de archivo ubicados en el directorio TFTP. Este archivo no siempre existe en el CUCM y todavía no estoy seguro de por qué.
Encima, el servidor CUCM tiene un servicio HTTP en el puerto TCP/6970 que comparte el mismo directorio raíz. Legado que el protocolo HTTP es mucho más realizable de interactuar mediante programación, esta interfaz funciona perfectamente para automatizar el descubrimiento y la descarga de configuraciones.
Más información sobre ConfigFileCacheList.txt y el servicio HTTP se puede encontrar en la ulterior dirección de Cisco: https://www.cisco.com/c/en/us/support/docs/unified-communications/unified-communications-manager-callmanager/200408-Retrieve-Phone-Configuration-File-from-T.html

Una vez que se descargan todas las configuraciones, analizo cada una en rastreo de contraseñas de texto sin formato. Posteriormente de descubrir las contraseñas de texto sin formato, lo primero que hago es intentar iniciar sesión en la interfaz web de CUCM.


Una vez que tengo llegada a la interfaz web de CUCM, voy a la configuración de autenticación LDAP y actualizo uno de los servidores para que sea mi dirección IP y hago clic en cuidar.

Mediante el uso RespondedorPuedo capturar la contraseña de texto sin formato para la cuenta de servicio de Active Directory preconfigurada. Ahora tenemos un punto de apoyo internamente de Active Directory.

Desarrollé una utensilio llamamiento SeeYouCM-Thief que detecta automáticamente cualquier nombre de usufructuario o contraseña de texto sin formato en configuraciones de teléfonos Cisco almacenadas en un CUCM.
python3 thief.py -p <phone ip>
Utilizando el -pag parámetro, puedo especificar la dirección IP de un teléfono. La página web del teléfono se extrae para identificar la dirección IP de CUCM. Si el ConfigFileCacheList.txt existe en el CUCM, luego se analizan todos los nombres de archivo y cada configuración se descarga automáticamente.

Si el ConfigFileCacheList.txt no existe, se mostrará un mensaje de error. ¡No te preocupes, esto no es el fin del mundo! El script todavía se configuró para enumerar teléfonos que usan DNS inverso y navegación forzada contra una subred.
1.4 Conclusión
Acertadamente, ¿ahora qué? ¿Cómo puedes evitar que haga este ataque? Los sistemas CUCM modernos admiten una forma de compendiar las configuraciones del teléfono. Esta característica detendría efectivamente esta ruta de ataque. Coincidencia, en mi experiencia, que esta característica no está ampliamente implementada. Mis recomendaciones personales son:
- Realice una puesta al día masiva de todos los teléfonos y use un Honeycred o una cuenta de usufructuario falsa que se use para monitorear.
- Configure su SIEM para monitorear a cualquier persona que intente usar esa cuenta.
- Supervise el uso de la cuenta de servicio configurada para el proceso LDAP en CUCM.
- Utilice una cuenta dedicada y asegúrese de que la cuenta no contenga privilegios administrativos en AD.
SeeYouCM-Thief se puede encontrar en github en la ulterior URL: https://github.com/trustedsec/SeeYouCM-Thief