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

sábado, mayo 28, 2016

SNMPChat: Chatear en un canal encubierto sobre SNMP

En esta entrada quiero presentar una herramienta de mensajería instantánea llamada SNMPchat, la cual utiliza el protocolo SNMP (Simple NetWork Monitoring Protocolo) para intercambiar mensajes de texto entre dos personas. Recordemos que SNMP es un protocolo de monitorización  que se utiliza como parte de la estrategia en la administración de sistemas de todo tipo de elementos, que puede ir desde los routers de una organización, pasando por los servidores, firewalls, para llegar a administrar también los terminales móviles y una gran cantidad de dispositivo en entornos corporativos.

Figura 1: SNMPChat. Chatear en un canal encubierto sobre SNMP

Sobre el uso del protocolo SNMP en el mundo de la autidoría ya se publicaron por aquí muchos artículos que explican cómo sacarle partido al protocolo SNMP para obtener información de la red, los servidores, los dispositivos móviles e incluso los procesos que están corriendo y con qué parámetros fueron lanzados. Los tenéis aquí:
- Auditando Hosts Windows y *NIX* con SNMP (Parte I)
- Auditando Hosts Windows y *NIX* con SNMP (Parte II)
- Descubrir la red de una organización con consultas SNMP
- Shodan y agentes SNMP: Administrando el mundo
- Servidores Novell Netware con agentes SNMPv1 en Shodan
Pero aunque el uso de un protocolo de comunicación fue pensado para monitorear dispositivos y no para intercambiar mensajes de texto, el que esté tan extendido SNMP por los diferentes sistemas y dispositivos convierte a este protocolo en un medio perfecto para crear un canal encubierto (covert channel), ya que esta comunicación podría pasar desapercibida, y oculta en cualquier red. Al igual que cuando se usan técnicas de esteganografía en TCP o las de exfiltración de datos en ICMP, no sería raro ver tramas SNMP en una red, por lo que si no hay mecanismos de seguridad extra no se generaría ninguna alerta por el tráfico SNMP.

Chatear sobre SNMP con SNMPChat

SNMPchat está escrita en Python y fue diseñado sobre una arquitectura cliente-cliente poco convencional en redes de datos que dificulta aún más su detección. Es cliente-cliente ya que no utiliza sockets, es decir, no tiene servicios escuchando en la capa de transporte. Muchos se preguntaran en este momento, ¿bueno, entonces cómo funciona? … bien tanto para el envió como recepción de mensajes utiliza la librería Scapy de Python, la recepción y decodificación de los mensajes la hace a través de sniff, una función de scapy que permite que la tarjeta de red trabaje en modo promiscuo para escuchar el tráfico que esta recibe y gracias a la versatilidad de la función se puede filtrar solamente el tráfico que nos interesa, es decir el trafico SNMP.

Esta arquitectura no utiliza servidores intermedios como hacen los servicios de mensajería instantánea o IRC y se aprovecha de los paquetes SNMP para ocultar la información enviada. Pero se requiere que, si se quiere usar a través de Internet, en los dos extremos se configure en el firewall o router un NAT y una regla para permitir que el tráfico del puerto SNMP vaya hacia cada cliente. Para ello utiliza los mensajes tipo Get-Request de SNMP los cuales son utilizados normalmente para solicitar a través de los OID (Object ID) algún recurso de la MIB (Managment Information Base) en el dispositivo a monitorear. En este caso utilizaremos los OID para ocultar los mensajes de texto.

Figura 2: Mensaje en texto plano camuflado como OID

Los OID se utilizan para definir las ontologías en una comunicación entre dos servicios SNMP, de tal manera que conociendo el OID del objeto que se envía, cada extremo de la comunicación conoce automáticamente la estructura de los atributos. Para ello, tienen un formato del estilo: 1.3.6.1.2.1.1.1, que sirve para identificar de qué objetos extiende su estructura. Como en este caso no vamos a comunicar dos servidores SNMP, lo que hace SNMP  es convertir cada letra del mensaje de texto en su valor ASCII decimal correspondiente y acomodarlos en el OID, conservando el formato del valor y enviando el paquete.

Como ya se explicó, en el otro extremo el receptor realizara el sniffing del tráfico y decodificaraá el mensaje que llego en la OID. Esta es una prueba de concepto que muestra cómo meter datos en los paquetes SNMP sin llamar mucho la atención, los datos van en texto claro y su valor ASCII, así que para garantizar mayor confidencialidad los mensajes deberían ir cifrados extremo a extremo. Aquí tenéis un vídeo que muestra cómo sería la experiencia del sistema.


Figura 3: Configuración y uso de SNMPChat

Al ser un canal encubierto, el riego es generar un tráfico grande entre dos servidores y llamar la atención de los sistemas de monitorización por la cantidad de paquetes enviados, así que, para evitar cifrados de gran peso - que cada uno decide qué quiere utilizar - tal vez sería interesante volver a poner en práctica los sistemas de cifrado clásicos, menos robustos frente a ataques de criptoanálisis, pero menos ruidos en cuanto al número de paquetes que sería necesario enviar.

Configuración y uso de SNMPChat

SNMPchat utiliza la comunidad SNMP para autenticar los mensajes, por lo tanto, esta debe ser configurada igual en los dos extremos, de igual forma que el puerto UDP. La herramienta funciona en Kali Linux perfectamente y no es necesario instalar ninguna dependencia o librería adicional. En las siguiente imagen siguiente se ve la ayudar de la herramienta.

Figura 4: Ayuda de SNMPChat

Es obligatorio para que funcione especificar la dirección IP local (-l) y la dirección IP destino (-d), mientras que la comunidad SNMP (-c) como el puerto (-p) vienen con valores por defecto, Sin embargo se pueden especificar unos diferentes, y si quieres cifrar los mensajes con AES - incorporado por defecto en la herramienta - lo puedes hacer con la opción (-e) para pasarle la key que debe usarse para el cifrado. Luego de especificar los argumentos, la herramienta solicitara ingresar tu nombre para la comunicación y a chatear sobre SNMP se dijo:

Figura 5: Ingreso de nombre para comenzar la conversación

Si quieres abandonar basta con que teclees "q" y de esta forma el otro extremo quedara notificado de que cerraste la sesión. En la siguiente imagen se ve el interfaz de comunicación usando SNMPChat.

Figura 6: Conversación con SNMPChat

El script lo pueden descargar de mi repositorio en Github,y espero que les sirva para poder avanzar en las técnicas de canales encubiertos, esteganografía, estegonanálisis o, simplemente, para chatear un rato.

Saludos desde Colombia.

Autor: Juan Esteban Valencia Pantoja

martes, septiembre 11, 2012

Novell Netware 5 en Shodan con agentes SNMPv1

Cuando escribí el artículo de Analizando hosts *NIX* y Windows con agentes SNMP dejé fuera de la lista de equipos de pruebas los servidores Novell Netware porque no era capaz de conectarme a ellos. De hecho, como en Shodan aparecían valores Null, pensé que no se podía conectar a ellos.

Figura 1: Buscando servidores Novell con agentes SNMP

Sin embargo, revisando los detalles me di cuenta de que estaba intentando conectarme con SNMPv2, lo que pensaba que, como en los casos anteriores, me funcionaria. Como no fue así, por esas cosas que te llevan a revisar todos los detalles para no dejarte hilos sueltos, decidí volver otra vez a ellos este fin de semana, y configurar las consultas al agente SNMP en versión 1.

Figura 2: Configurando las conexiones SNMP en Versión 1

La sorpresa fue que funcionó, y de maravilla, con lo que se puede acceder a la información de las particiones, los interfaces de red, el software en ejecución o el software instalado, entre otra mucha información, de todos ellos.

Figura 3: Software instalado en servidor Novell Netware obtenido vía SNMPv1

En la lista no aparecían los parámetros de llamada de los programas, pero como algunos datos aparecían en formato hexadecimal pensé que podrían estar allí.

Figura 4: Nombres de programas en valores hexadecimales

Tras pasarlos por un conversor HEX to ASCII descubrí que no aparecían en ellos nada más - o nada menos - que el nombre y la versión del programa en ejecución o instalado en el sistema.

Figura 5: Conversion de valores hexadecimales a ASCII

Así que, si quieres conectarte a los agentes SNMP de los antiguos, pero aún en uso, servidores Novell Netware, configura las consultas en versión SNMPv1.

Saludos Malignos!

martes, agosto 21, 2012

Analizando hosts Windows y *NIX* con SNMP (2 de 2)

Buscando en Shodan agentes SNMP en sistemas Linux y UNIX el número de equipos que aparecen también es alto. Al igual que en la parte anterior de este artículo, se pueden consultar tablas SNMP de forma pública que muestra mucha información.

Figura 9: Agentes SNMP en equipos Linux indexados en Shodan

En la información del sistema, se puede ver como el agente SNMP se encuentra en este equipo ejecutándose en un Linux. En los sistemas Linux estos datos se configura en el fichero snmp.conf, donde se pueden encontrar configurados los valores de sysContactSysLocation y SysName, con datos interesantes del equipo.

Figura 10: Información del sistema

La estructura de ficheros que tiene el equipo Linux en que está ejecutándose el agente SNMP se puede consultar en la tabla hrFSTable, tal y como si estuviéramos consultado la información desde una terminal.

Figura 11: Información SNMP de hrFSTable

Consultando la tabla hrStorageTable se puede obtener la estructura de almacenamiento que tiene este sistema Linux, donde aparecen las rutas de los puntos de montaje, incluida la de la memoria que utiliza ell sistema.

Figura 12: Información SNMP de hrStorageTable

Dependiendo de lo complejo que sea la plataforma, los datos revelarán más o menos información del equipo. La misma consulta hrStorageTable en este servidor Solaris muestra muchos más datos, por ejemplo.

Figura 13: hrStorageTable de un servidor Solaris

También se puede consultar la tabla de dispositivos conectados al sistema. En esta imagen os pongo una de las tablas que más gracia me ha hecho, por la manera en que describe la existencia del co-procesador matemático y el microprocesador.

Figura 14: Información SNMP de hrDeviceTable

Desde el punto de vista de seguridad, aunque todos los datos que hemos visto hasta el momento tienen su importancia, quizá los más relevantes son los que se pueden obtener de las tablas hrSWRunTable y hrSWInstalledTable.

La primera de las tablas muestra todos los procesos en ejecución en un determinado instante. Os dejo una captura parcial de todos los procesos que están corriendo en un sistema Linux con un agente SNMP público. Como se puede ver, es posible acceder a todos los procesos en ejecución, sin importar qué usuario los lanzó, con lo que se puede sacar más info de la que podría obtenerse conectado a una terminal del SO con un usuario poco privilegiado.

Figura 15: Información de los programas en ejecución en hrSWRunTable

Entre esa información, como puede observarse, es posible ver los parámetros de arranque de los daemons, con lo que es posible descubrir, por ejemplo la ruta de instalación de MySQL o los usuarios con los que son arrancados determinados servicios. Esto se puede refrescar constantemente, y se podría obtener la lista de los comandos que ejecuta un usuario en cada momento.

Figura 16: Cadena de arranque de MySQL con usuario y rutas

La última imagen que os dejo es sobre el software instalado en un servidor Solaris, consultado en la tabla hrSWInsatalledTable. La información, para preparar un ataque dirigido a ese servidor es muy jugosa.

Figura 17: Software instalado en un Solaris consultado en la tabla hrSWInstalledTable

Al final, la información que es pública a través de agentes SNMP puede ser muy útil en un proceso de auditoría de seguridad, por lo que si tienes desplegados agentes en los servidores o equipos de tu red, es recomendable que compruebes la seguridad de los mismos. Si quieres saber más sobre hacking con buscadores y Shodan, puedes leer el libro de Enrique Rando "Hacking con Buscadores: Google, Bing y Shodan"

Saludos Malignos!

***************************************************************************************************
Analizando hosts Windows y *NIX* con SNMP (1 de 2) 
***************************************************************************************************

lunes, agosto 20, 2012

Analizando hosts Windows y *NIX* con SNMP (1 de 2)

En esta tercera entrega sobre Shodan y SNMP [Administrando el mundo con agentes SNMP y Descubrir la red de una empresa con consultas SNMP] estuve jugando un poco con los agentes que se instalan en los hosts. Estos pueden ser sistemas empotrados, servidores e incluso teléfonos móviles, lo que puede permitir extraer información del sistema detallada del equipo y el software instalado en ellos.

Para encontrarlos, basta con seleccionar búsquedas en Shodan por el puerto 161 (SNMP) y buscar una cadena con el nombre del sistema operativo. Después, configurar el cliente SNMP - yo usé MIB Browser - para realizar las consultas con la versión SNMPv2, que no está autenticada y es pública, y conectarse al sistema para lanzar queries SNMP que extraigan información del host. 

Figura 1: Consultas SNMP relativas al hosts

Encontrar agentes SNMP instalados en sistemas Microsoft Windows es mucho más común de lo que se puede pensar. El problema es que muchas empresas tienen sistemas Microsoft con agentes SNMP desplegados que soportan consultas SNMPv2 públicas, y cuando estos equipos se conectan a Internet sin un firewall por delante desde otra ubicación que no es la red de la empresa quedan expuestos. 

El siguiente ejemplo muestra un Windows 2000 en un sistema Huawei, que tiene como curiosidad que en la información SNMP del sistema se puede leer el número de teléfono de la compañía. La información del equipos es un sub-árbol que cuelga de System.

Figura 2: Equipo con Windows NT 5.0

Eligiendo la versión del sistema concreta, también salen Windows 6.0 - Windows Vista o Windows Server 2008 - y Windows 6.1 - Windows 7 o Windows Server 2008 R2 -. En el siguiente ejemplo se puede ver un Windows 7, ya que en el nombre aparece el nombre de la máquina terminado con -PC.

Figura 3 - Equipo con Windows 7

Me ha llamado más atención encontrar equipos Windows CE de terminales móviles, administrados probablemente por SNMP usando algún System Center, en los que se puede extraer mucha info. En la imagen siguiente, accediendo a la información del sistema aparece el nombre del terminal.

Figura 4: Equipo con WIndows CE 5.0

De estos sistemas, consultado las tablas de información de host se pueden sacar cosas bastante curiosas, como por ejemplo el almacenamiento del sistema en la tabla hrDiskStorageTable.

Figura 5: Información de almacenamiento de un Windows CE

También es posible consultar los dispositivos conectados al terminal del teléfono en la tabla hrDeviceTable.

Figura 6: Información en hrDeviceTable

Si el equipo es más potente, se pueden obtener muchos más datos, como por ejemplo este servidor Intel con VMWare, en el que aparecen todos los microprocesadores y sus velocidades.

Figura 7: Información de hrDeviceTable de un servidor Intel con VMWare

Lo más curioso es que entre las tablas que pueden ser consultadas están las relativas al software que está en ejecución en un sistema, dentro de la tabla SNMP hrSWRunTable.

Figura 8: Procesos en ejecución en un Windows CE

En la siguiente parte de este artículo os mostraré más datos de lo que se puede consultar con SNMP en  algunos otros sistemas Linux y UNIX que también salen cosas muy peculiares.

Saludos Malignos!

***************************************************************************************************
Analizando hosts Windows y *NIX* con SNMP (1 de 2) 
***************************************************************************************************

martes, agosto 14, 2012

Descubrir la red de una empresa con consultas SNMP

El sábado por la tarde, tras finalizar mis charlas, se produjo el momento que más me gusta de Defcon y al que le dediqué un dibujo de No Lusers: El de tomar cervezas en el bar del hotel de la conferencia con los asistentes al evento, que siempre es diverso e interesante.

Allí nos juntamos un nutrido grupo de gente, entre los que se encontraban Dani Mende - creador de Loki - y John Matherly - creador de Shodan -. Entre cerveza y cerveza, haciendo un aparte los tres, John explicaba a Dani que España es el segundo país del mundo que más usa Shodan, y yo le contaba que hasta hemos publicado un libro de hacking con buscadores con una parte dedicada a Shodan. Al mismo tiempo, hablamos de la conferencia Troopers, que organiza la empresa donde trabaja Dani Mende (ENRW) en la ciudad de Heidelberg.

John es Suizo, y aunque está afincado en la Costa Oeste de los Estados Unidos, pensé que sería bueno repetir reunión en Alemania, así que, como soy un liante, le dije a John que tenía que animarse a dar alguna conferencia explicando los detalles de Shodan. John no suele dar charlas, porque dice que no se siente cómodo, pero... al final quedamos en que estaría muy divertido darla juntos allí, así que había que pensar algún tema divertido.

Como tenemos pendiente esto, quise darme este fin de semana un paseo por Shodan a ver cómo había evolucionado el proyecto un poco más en detalle y enredar por allí. Tras jugar un rato, me acordé del artículo de administrando el mundo con agentes SNMP y me animé a jugar un rato con los agentes SNMP de dispositivos CISCO.

Encontrar estos dispositivos en Shodan es una pasada de sencillo. Basta con buscar el banner de los dispositivos CISCO que te interesen, filtrar por el puerto 161, y ya tienes una buena cantidad de agentes SNMP esperando tus consultas, y la gran mayoría sin requerir ninguna password a cambio del trabajo. En la imagen me han salido 1411 equipos, pero dependiendo del banner que uses puedes encontrar muchas más.

Figura 1: Buscando agentes SNMP en dispositivos Cisco a través de Shodan

Para conectarme a ellos, utilicé un sencillo visor de consultas SNMP que se llama MIB Browser, y me puse a ver si podía llegar a la información de las redes en las que estaba conectado el dispositivo, y lo que es mejor, a ver si podía pintarse la red interna de una empresa que publicara esto, ya sabéis, por si se puede integrar a FOCA en el futuro de manera automatizada.

Tras seleccionar SNMPv2 sin autenticación en las opciones, solo hay que conectarse a alguno de los que aparecen en Shodan y conectarse utilizando MIB Browser - disponible para Windows y Mac OS X -, se puede obtener mucha información jugosa de el entorno donde está conectada esa máquina. En el árbol de la izquierda están las estructuras de datos que se pueden consultar con SNMP.

Los atributos que tienen el icono de una tabla son datos en formato de tabla, que pueden ser descargados masivamente con una opción del botón derecho "Table View". El resto de iconos representa el tipo de dato que se almacena en ese atributo y, seleccionando en cada elemento, en el recuadro inferior izquierdo se puede acceder a la descripción del contenido más detallada.

Figura 2: Consultando el atributo atPhysAddress de AtTable

En la Figura 2 se puede observar el atributo Physical Address de la Address Translation Table que recoge la dirección MAC y la dirección IP que este sistema ha almacenado. Es una especie de tabla caché ARP que permite, como se puede ver en este caso, descubrir los segmentos de la red interna, los equipos conectados y sus direcciones físicas. Con una sencilla consulta haces un escaneo a la red interna sin tirar un ping.

Para conocer más sobre el equipo, y el entorno donde está conectado y así dibujar más claramente la estructura de la red, se pueden analizar los interfaces que tiene el sistema, la marca y el modelo - que se obtienen en la información de sistema -, la tabla de enrutamiento y cualquier tabla de mapeo de direcciones físicas a lógicas. Todos estos datos pueden ser consultados por SNMP.

Figura 3: Tabla de interfaces obtenida por SNMP de un router CISCO

La siguiente captura muestra la tabla de enrutamiento de un sistema. Con ella se puede saber cuáles son las redes conectadas directamente a los interfaces del equipo, las rutas descubiertas usando protocolos de enrutamiento -  en este caso este sistema descubre rutas vía OSPF internamente y vía BGP entre sistemas autónomos - además de los nodos de conexión entre redes, lo que permiten hacer un dibujo más detallado de la red global.

Figura 4: Tabla de enrutamiento obtenida con una consulta SNMP

La tabla IPNetToMedia, también muestra información similar a la Address Translation Table, en este caso traduciendo de dirección IP a dirección física, con lo que se obtienen de nuevo mapeos entre MAC-IP conocidos por el sistema.

Figura 5: Tabla InetToMedia consultada por SNMP a un sistema CISCO en Internet

Por último, aunque la lista de datos que se pueden obtener son muy grandes, he obtenido la tabla de conexiones de un equipo, lo que deja ver qué otros puertos están abiertos en los sistemas, lo que desvelaría servicios en ejecución.

Figura 6: Tabla de conexiones del sistema

Como podéis ver, información muy valiosa disponible en muchos miles de direcciones IP publicadas en Internet. Si ienes en tu red agentes SNMP, asegúrate de no dejarlos públicos, deshabilitar SNMPv1 y SNMPv2, y revisar a ver si si están indexados en Shodan.

Saludos Malignos!

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares