Hacking de Infraestructura: Protocolo IRC

Hoy vamos a hablar sobre uno de los grandes protocolos del pasado: el Internet Relay Chat, protoclo de mensajería instantánea. Aunque quienes tengan cierta edad conocerán de sobra este protocolo, yo no lo utilicé hasta que tuve que realizar mi propio servidor IRC en una práctica de la universidad, implementando cada comando en C. Muchas horas leyendo el manual RFC 1459…

Este protocolo corre en el puero 194 (TCP) y es un sistema cliente servidor. El usuario descarga en su ordenador el cliente, y se conecta al servidor que desee, donde podrá chatear con otros clientes en distintas salas de chat, llamados canales.

Muchos servidores de IRC solo requieren de un nick para conectarse, mientras que otros necesitan usuario y contraseña.

Hay operadores de canal, modos, comandos…

Cómo Utilizar Un ClienteIRC

Ejemplos de clientes IRC son X-Chat, HexChat, mIRC, WeeChat…

Por ejemplo vamos a mostrar HexChat. Lo podemos descargar desde su página web.

Hacking de Infraestructura: Protocolo IRC

 

Indicamos un nombre de usuario y el servidor al que nos queremos unir. Por ejemplo, vamos a unirnos a DALnet. 

Hacking de Infraestructura: Protocolo IRC

Una vez en un servidor, existen varios canales. Podemos verlos con el comando /list:

Hacking de Infraestructura: Protocolo IRC

Por ejemplo, unámonos al canal #hackland con el comando /join #hackland. Y ya podríamos empezar a hablar. 

IRC tiene una gran historia en el mundo del hacking. Ha sido muy utilizado en el mundo hacktivista, siendo el canal principal de comunicación de muchos grupos de hackers.

IRC y la Comunidad Hacker

El protocolo IRC se creó en 1988 y se popularizó rápidamente entre los llamados «piratas informáticos» que traficaban con software pirata en un mundo donde las leyes no tenían cabida en Internet. 

Estos hackers utilizaban servidores FTP (tanto privados como robados) a modo de servidores clandestinos para intercambio de archivos. También empleaban una forma primitiva de envio DCC (Direct Client Connection) que luego daría paso a los famosos servicios P2P como Ares o Emule.

Los inicios del hacking en IRC conforman el punto de vista romántico del hacker que buscaba superar todos los límites de la tecnología, motivados por el deseo de aprender.

Sin embargo, no se tenía ese punto de vista que se tiene hoy de comunidad hacker, sino que se fomentaba mucho la rivalidad entre hackers que competían para conseguir fama.

Esta rivalidad tomaba forma de «guerras» en las que un hacker intentaba tomar el control de los canales IRC de los rivales, o en las que se realizaban ataques DoS contra los servidores IRC.

Hay que tener en cuenta que hablamos de una época en la que Internet estaba en sus inicios y nadie tenía en cuenta la seguridad a la hora de diseñar servicios. Todos se conectaban por la línea telefónica y cualquiera podía ver la dirección IP de otro usuario del IRC.

LulzSec IRC leak: the full record | Technology | theguardian.com

De esa forma surgieron ataques como los ataques Nuke, que no eran más que un DoS basado en el envío de cientos de paquetes ICMP corruptos enviados mediante una modificación de la herramienta ping. Estos ataques podían llegar a causar el famoso pantallazo azul. También se empezaron a producir los ataques de DNS Spoofing para obtener un servidor IRC con nombres de dominio graciosos. Aquí puedes ver por ejemplo un manual que creó un usuario sobre «tácticas de la guerra IRC» en el que se muestran distintos tipos de ataques.

Estas guerras fueron escalando hasta el punto de instalar bots de protección en los canales IRC, bouncers para esconder la dirección IP, por no hablar de todos los troyanos que circulaban por los servidores IRC.

Fue un protocolo tan utilizado por esta comunidad, que cuando surgen las primeras Botnets, empleaban IRC como sistema de Command & Control

Arquitectura

La estructura de red es en forma de árbol:

Hacking de Infraestructura: Protocolo IRC

Esto supone que debe existir una confianza implícita entre servidores, un servidor maligno puede hacer un gran daño en la estructura, y cualquier cambio de la estructura supone tener que separar y rejuntar otras partes de la red.

Ataque a una versión de IRC vulnerable

Aprovecharé este protocolo para mostrar los riesgos que se producen en las empresas, en entornos donde lo que prima es entregar el producto cuanto antes y cumplir antes de la fecha límite. Normalmente los desarrolladores, así como los QA, tienden a acortar el proceso a la hora de hacer pruebas. 

Por ejemplo, si se desarrolla una página de ventas en la que para comprar un artículo, hay que relizar ciertos pasos (escoger el articulo, cantidad, rellenar datos personales, métodos de pago y procesar la compra). Al desarrollador le resultará muy tedioso tener que realizar todos los pasos previos cada vez que quiera comprobar como se procesa la compra, cosa que tendrá que hacer cientos de veces hasta que todo funcione como se espera.

Para acortar el proceso, un desarrollador puede tender a crear backdoors, en el caso anterior podría crear un botón provisional en el primer paso que cuando lo pulse lleve directamente al último paso, que es el que le interesa probar.

El problema llega cuando por presión de entregar a tiempo en plazos muy justos o por despiste del desarrollador, ese backdoor pasa a producci´ón.

Veamos un ejemplo práctico de esto con un de las versiones de UnrealIRC.

Podemos comprobar que en este servidor hay un servicio IRC en el puerto 8067. Lo normal sería conectarnos con un cliente IRC como mostré anteriormente, sin embargo vamos a ver cómo hacerlo conectándonos directamente utilizando ncat o telnet. 

Vemos un mensaje de error puesto que no puede resolver nuestro hostname:

Lo que tenemos que hacer es editar el archivo /etc /hosts añadiendo el nombre de dominio de la ip, en este caso irked.htb:

Podemos mirar cómo se hacen las conexiones de IRC en el RFC 1459.

Para iniciar una conexión, tenemos que mandar:

  1. Pass message –  PASS username
  2. Nick message – NICK username
  3. User message – USER username host server : realname

Aqui podemos ver la respuesta que nos da el servidor:

Obtenemos datos como que está corriendo la version Unreal3.2.8.1

Buscando en google podemos encontrar rápidamente un artículo que describe un backdoor en esta versión:

https://lwn.net/Articles/392201/

En este artículo podemos ver que si el buffer lee una cadena que comience con «AB» ejecutará lo siguiente que ponga, consiguiendo un RCE.

Podemos probar a ejecutar un ping para ver si se ejecuta el comando. Cuando hacemos esta prueba es muy importante que utilicemos el -c 1 para que mande un solo ping y pare:

Para ver si se ejecuta nos ponemos a esnifar el tráfico con tcpdump:

Efectivamente se ha ejecutado, por lo que es sencillo obtener una reverse shell:

De esta forma nos hemos aprovechado un backdoor que existía en la propia aplicación para obtener acceso al servidor.

Aunque ya queda muy poca gente que siga utilizando este protocolo, aún hay pequeños nichos que siguen utilizándolo. Mismamente en una de las certificaciones más famosas del mundo del hacking, el OSCP (puedes ver mi experiencia y consejos para aprobar esta certificación en este post), te dan acceso a un servidor IRC para que puedas realizar preguntas o comunicarte con otros compañeros.

De hecho, hasta hace unos años era posible unirse a «clases de hacking» impartidas por la comunidad hacktivista Anonymous en el chat OnionIRC.

Si te ha gustado el artículo, te recomiendo que visites el resto de artículos de hacking de infraestructura.

Lethani.

4.1/5 - (36 votos)

Deja un comentario