Ataques y protecciones de canales de IRC
Analizando los puntos debiles que tienen las redes de IRC, en concreto los canales y la introducción de clones. Va dirigido a cualquier usuario de este tipo de chat y que administre algun canal cosa que es bastante habitual, sobre todo a canales con muchos usuarios. Por supuesto esta orientado a la defensa y protección de canales.
Para el que no sepa muy bien de que hablamos me refiero a redes de chat IRC (Internet Relay Chat). Por ejemplo el IRC-Hispano, es mi red habitual y sobre la que me baso para escribir este artículo. Cuando hablo de "clones" me refiero a usuarios falsos utilizados masivamente para abusar del sistema.
Este tipo de redes son muy complejas ya que trabajan con muchos usuarios online, por ejemplo el hispano tiene picos de 35.000 usuarios conectados. Los usuarios son comunicados gracias a unos 27 servidores conectados punto a punto entre sí sin jerarquía. Los usuarios se organizan en canales tematicos y en algunos casos hay 200 o incluso hasta 2000 personas he llegado a ver en un mismo canal. A partir de esta introducción enumerare las formas de atacar un canal entendiendo como ataque cualquier forma de entorpecer la actividad de charlar en un canal o comprometer su estabilidad.
Tipos de ataques: - Flood: En castellano inundación, consiste en hacer demasiadas acciones en un corto periodo de tiempo con el objetivo de entorpecer o incluso de tirar el sistema afectando a los clientes o a la red de servidores. Todos requieren que sea posible introducir clones en el canal excepto que el objetivo sea un usuario concreto. Tipos de flood: join/part: Es el ataque mas habitual consiste en meter y sacar un gran numero de clones muchas veces y en muy corto tiempo. msg: Consiste en mandar mensajes (comando /msg) masivos repetitivamente a un canal o un usuario. En el caso del canal es necesario que los clones esten dentro. notice y ctcp: Lo mismo que el anterior pero utilizando otro tipo de mensajes menos habituales (/notice y /ctcp).
- modos +RM: Esto es la solucion mas sencilla y bastante efectiva. Lo que hace es impedir la entrada al canal y enviar mensajes a los usuarios no registrados en la Base de Datos Distribuida (nunca he visto un ataque con nicks registrados, pero todo es posible). La pega que tiene es que en canales grandes no es aceptable la perdida de usuarios reales sin registrar ya que estos no podrán usar el canal. El comando es /mode < #canal> +RM
- banear los host de los clones: Los clones son lo que son gracias a la utilización de máquinas proxys que permiten ocultar la ip del atacante y saltar la limitación de usuarios por host. Esta forma de actuar consiste en expulsar y bloquear el acceso al canal de los clones baneando su host. Es una buena solución pero se tarda precioso tiempo en efectuarlo y si los clones son demasiados deja de ser una opción razonable. El comando es /mode < #canal> +b *!*@host.de.cada.clon
- controlar el flujo: Esta opcion creo que es la adecuada para canales muy grandes o de riesgo. Consiste en limitar (modo l) el numero de usuarios que pueden entrar en un canal añadiendo un margen para que puedan entrar unos pocos y actualizando esta condición cada cierto tiempo. Resumiendo controlar las entradas por segundo. Para ello propongo un sencillo alias para mIRC.
Pongamos un ejemplo: Un canal llamado #prueba con 200 usuarios online y alto riesgo de ataques (unos 30 clones). Con lo cual recomendaría dar un margen de 6 usuarios y actualizar el limite cada 10 segundos para que no moleste demasiado. Para ello ejecutar estos dos comandos:
/alias antijoin { mode $1 +l $calc($nick($1,0) + 6) }
/timerANTIJOIN 0 10 antijoin #prueba
Resaltado en negrita los dos parametros que hay que modificar. Para paralo se pone /timerANTIJOIN off. Esto es lo mas sencillo que he podido idear con lo cual esta muy incompleto, por ejemplo en caso de split (desconexion de servidores) hay que desactivarlo para que regresen los usuarios caidos y es muy mejorable. Más adelante publicare un script completo sobre este tema.
Esto es todo por ahora, más adelante escribire sobre esto porque este tema me gusta mucho.
[Contenido propio publicado originalmente en gonzo.teoriza.com]

