TACTICAS DE GUERRA EN EL IRC


1.- Introducción.
    2.- Principios.
      2.1.- Cómo funciona una red IRC.
      2.2.- Conseguir op sin que nadie te lo de.
      2.3.- Otras formas de conseguir op.
      2.4.- Bot de servicio.
   3.- Ataques.
      3.1.- Flood.
      3.2.- Nick collide. 
         3.2.1.- Split server collide.
         3.2.2.- Lag collide.
      3.3.- Nuke.
         3.3.1.- ICMP nuke.
         3.3.2.- OOB nuke.
      3.4.- Ping.
      3.5.- Ssping.
      3.6.- Teardrop.
      3.7.- Land.
      3.8.- Teardrop modificado.
   
      3.9.- Smurf.
      3.10.- Bonk (/Boink). 
      3.11.- Syndrop. 
      3.12.- Overdrop.
      3.13.- Nestea (/Nestea2). 
      3.14.- Trojans. 
      3.15.- Hanson. 
   4.- Spoofing.
  5.- Técnicas avanzadas.
       5.1.- Bouncing.
       5.2.- Wingate. 
       5.3.- DNS Inject.
       5.4.- Modem Disconnect.
       5.5.- Recursos compartidos. 
   6.- Defensa. 
   7.- Resources.
   8.- Feedback (FAQ). 
  

1.- Introducción.

 Todo lo que aquí se hable es extensible en general a cualquier red IRC. No obstante en algunos casos muy particulares me referiré a la red Undernet ("*.undernet.org"). Un uso abusivo de estas Tecnicas puede significar una k/g-line totalmente merecido. Yo no me hago responsable de un posible mal uso de esta informacion. Todo aqui escrito es con fines Educacionales asi que bla bla bla... SuCK!! Checate algunas tecnicas utiles y algunos terminos que es necesario que sepas.
 
 

2.- Principios.

 Muchas veces el objetivo de un ataque no es otra cosa que hacerse con un canal ("tomarlo"). Esto es relativamente fácil y hay diversas técnicas para ello. El objetivo es conseguir el op en el canal. Los medios: tu inteligencia y astucia... =O)
 

2.1.- Cómo funciona una red IRC.-

 El servidor de IRC propiamente dicho no es más que un programa corriendo en background (un daemon) en una máquina determinada (en Unix correría el "ircd"). Los usuarios se conectan a dicha máquina y acceden al servidor en forma de clientes.

 Una red IRC se compone de varios servidores corriendo en paralelo y enlazados entre ellos, de forma que se mantegan comunicados (puedan intercambiar mensajes entre ellos). Cuando un usuario se conecta a un servidor determinado, éste (el servidor) lo notifica a los demás servidores que forman parte de la red IRC. Igualmente, cualquier otra acción es notificada a todos los servidores, de forma que éstos actuan como una unidad. De esta forma el usuario se deja ver en todos los servidores aunque físicamente sólo esté conectado a uno. Esto permite tener muchos usuarios repartidos por diferentes servidores pero que virtualmente es como si estuvieran todos en uno sólo.

 La estructura de la red IRC es en forma de árbol (es decir, no puede haber bucles, o "caminos cerrados": partiendo de un nodo no se llegue por ningún camino otra vez a dicho nodo) aunque un tanto especial: cada nodo se ve a sí mismo como el nodo raiz de la red y tiene un grafo en forma de árbol que le indica el camino a seguir para alcanzar cada uno de los restantes nodos. En la "literatura" esto se conoce como "spanning tree", que podríamos traducir como "árbol de expansión". Esto quiere decir que en un momento determinado un nodo cualquiera tendrá almacenada información para alcanzar cada uno de los otros nodos de forma unívoca (tiene un único camino posible hacia cada nodo). Esa información sería el árbol que está usando el nodo en cuestión. Pero además este árbol puede ser distinto para el mismo nodo en un instante diferente, es decir, puede cambiar (digamos que el nodo va reconfigurándose). Esto tiene la ventaja de que permite adaptarse a posibles variaciones (eventuales) de la topología de la red (así, si un nodo cae, los restantes nodos lo detectarán y se reconfigurarán de forma que los caminos que antes pasaban por dicho nodo dejen de hacerlo: se tomarían caminos alternativos con lo cual la red seguiría funcionando correctamente a pesar de la caida del nodo). Un ejemplo de topología de red podría ser:
 
 

                           [ Server 15 ]  [ Server 13 ] [ Server 14]
                                 /                \         /
                                /                  \       /
        [ Server 11 ] ------ [ Server 1 ]       [ Server 12]
                              /        \          /
                             /          \        /
                  [ Server 2 ]          [ Server 3 ]
                    /       \                      \
                   /         \                      \
           [ Server 4 ]    [ Server 5 ]         [ Server 6 ]
            /    |    \                           /
           /     |     \                         /
          /      |      \____                   /
         /       |           \                 /
 [ Server 7 ] [ Server 8 ] [ Server 9 ]   [ Server 10 ]

                                  :
                               [ etc. ]
                                  :

 
 El paso de un nodo a otro adyacente se conoce como "hop" (salto). Así para alcanzar el nodo 5 partiendo de 4 tendremos que dar 2 saltos (hops): uno de 4 a 2 y otro de 2 a 5.

 Podemos visualizar el árbol que está usando el server al que estamos conectados usando el comando "/links". Este sacará un listado por pantalla de los servidores alcanzables desde el nuestro, de forma jerarquizada, es decir, respetando la estructura del árbol. Normalmente se indica entre paréntesis al lado de cada servidor el número de hops que habría que dar para alcanzar cada uno de los nodos partiendo del nuestro.

 Cuando se rompe uno de los eslabones (links) que unen 2 servidores el conjunto se divide en 2 subconjuntos, los cuales intentarán seguir funcionando normalmente aunque de forma aislada. Esto es, cada subconjunto permanece operativo y mantiene la comunicación entre los servers pertenecientes a dicho subconjunto. Pero por razones obvias los servidores de un subconjunto no ven a los del otro y viceversa. Esta situación se conoce como net-split.

 En una sesión normal de IRC esto lo veríamos:

[1:23] *** CoPS has quit IRC (chicago.ca.us.undernet.org atlanta.ga.us.undernet.org)

 Esto indica que se han spliteado los dos servidores indicados entre paréntesis y que a consecuencia de ello el usuario CoPS    ha salido "de nuestra red IRC" (lo que está ocurriendo es que se encuentra en el otro subconjunto de servidores: a todos los efectos es que como si se encontrara ya en otra red IRC).

 Cuando el enlace caido se recupera (se reestablece la comunicación entre los servers spliteados) se habla de net-merge. Esto se vería en la sesión anterior como un "join" por parte del usuario que estaba en el servidor spliteado (tanto el quit como el join anteriores son mecanismos del propio IRC, es decir, el usuario anterior no dio ninguna orden de quit ni de join, es transparente a dicho usuario y sucede automatico).

 Hay programas que detectan y avisan cuando se produce algún net-split o net-merge: son los denominados "link-lookers", y su utilidad es bastante obvia.

 Por ejemplo, si el enlace dibujado en rojo (enlace server 2 <-> server 5) cayera, el servidor 5 estaría aislado de la red. Los usuarios de dicho servidor dejarían de ver a todos los demás pertenecientes a servidores distintos, y al contrario. Se dice que el servidor 5 está spliteado. Es fácil reconocer a un servidor en esta situación: si entras en una red a través de un determinado servidor y te encuentras a muy poca gente es muy normal que se deba a que está spliteado de la red.

 Otra posibilidad es que el enlace azul (3 <-> 12) cayera. En este caso el servidor 12 se splitea de la red, pero también lo hacen los servidores 13 y 14 indirectamente, por conectarse a través del primero.

 Para una información completa del funcionamiento y estructura de una red IRC, y del protocolo subyacente ("Internet Relay Chat Protocol") investiga sobre el RFC1459.
 

2.2.- Conseguir op sin que nadie te lo de.-

 Cuando alguien entra a un canal donde no hay nadie (hace un /join #canal) el servidor supone que se trata de un nuevo canal y le da op a dicho usuario. Se dice que ha creado un canal. Vamos a aprovechar esto para conseguir el op en un canal ya existente. ¿Cómo? Fácil: solo hay que aprovechar un net-split. Los pasos serían los siguientes:

 - Esperar un split (lo podemos detectar con un link-looker).
 - Entrar (conectar) al servidor spliteado.
 - /join #canal (donde canal es el canal donde queremos conseguir op).
 - El server creará un nuevo canal y tendrás el op.
 - Esperar a que se deshaga el split.

 Si "hay suerte" (leer más abajo), al deshacerse el split conservaremos el op en los restantes servidores (el servidor spliteado se encarga de dar las órdenes correspondientes). Entonces se dice que hemos llevado a cabo un "net-hack". Los usuarios presentes en el canal en el que hemos llevado a cabo la acción verán algo como:

[1:41] *** chicago.ca.us.undernet.org sets mode: +o CoPS

(donde el servidor que nos da op es el que antes estaba spliteado).

 Esto no siempre funcionará porque hay aspectos que todavía no he comentado. A continuacion explicare el procedimiento y comentae algunos puntos negros. Supongo que has comprendido el procedimiento; es muy simple: aprovechar que el servidor spliteado no ve a los usuarios de otros servidores y por tanto al canal previamente creado. Esto presupone que no hay usuarios del servidor spliteado en el canal (en este caso no funcionaría) ya que al entrar nosotros por el server spliteado veríamos al canal como ya creado, con los usuarios de nuestro mismo servidor (a los otros los "esconde" el split) y por tanto el server no nos dará el op, como es habitual al entrar en cualquier canal ya existente.

 También hay que tener en cuenta que actualmente todos los servidores tienen protecciones anti-nethack. En este caso, al deshacerse el split, los restantes servidores te quitarán el op a tí en vez de ser al contrario (imponer tu op en los restantes servers), protegiendo al canal PERO ésto lo harán únicamente en caso de que ya hubiera ops en el canal antes de tu intento de net-hack (aunque hay veces en que el server se equivoca y mantiene tu op, quitándoselo a los demás). Es decir, que el net-hack funcionará sólo para canales donde no haya op ("opless channels"). Por esta razón, si queremos el op, necesitaremos tirar previamente a los ops (echarlos del canal, de forma que pierdan su op) para luego llevar a cabo el net-hack. ¿Cómo tirarlos? De esto nos encargaremos más adelante, sigue leyendo =OP
 

2.3.- Otras formas de conseguir op.-

 La otra alternativa para conseguir el op es que alguien te lo de, puede ser un op del canal o un irc-op de la red, aunque para esto último tendrás que dar una justificación convincente (como por ejemplo que "Nos acaban de tomar el canal" "alguien nos ha atacado" étc).

 Para la primera alternativa entra en juego tu "don de la palabra": trata de hacerte amigo de algún op para que éste te lo pase. En ese momento ya estás capacitado para quitarle el op a todos los demás ("mass-deop") y quedarte con el canal. Esto lo hacen automáticamente muchos scripts ("automatic-deop"): nada más darte el op el script automáticamente deopea a todos los ops (excepto a tí, claro).
 

2.4.- Bot de servicio.-

 Se trata de un "usuario" muy especial... un robot que se encarga entre otras cosas de proteger los canales. En la red hispana se llama Scytale (en CobraNet, por ejemplo, es KingCobra) y está dentro de muchos canales (registrados). Normalmente suele tener op, con lo cual el canal deja de ser opless y se evita el net-hack :-( Suele tener ircop-status [channel-service status] y además tiene otras funciones en las que no pienso entrar. Resumiendo: si hay bot, nuestro gozo a un pozo, sera imposible obtener op.
 
 

3.- Ataques.

 En esta sección entraremos en materia...   Nuestro objetivo: Tirar a alguien del server irc.
 

3.1.- Flood.-

 Los servidores IRC tienen que controlar el tráfico de entrada (el que proviene del exterior) para evitar su congestión. Una de las formas de conseguirlo es no permitir que un cliente le mande más de una determinada cantidad de información en un pequeño intervalo de tiempo; o lo que es lo mismo: la velocidad con que un cliente puede enviar datos al servidor está limitada.

 Cuando un cliente supera el límite preestablecido por el servidor, éste cierra la conexión con el cliente: lo echa del servidor porque no puede soportar tanto caudal de entrada. El servidor lo "explica" así:

[1:59] *** IceMan1 has quit IRC (Excess Flood)

 Un flood, en general, no es otra cosa que mandar mucha información en poco tiempo a alguien para intentar que se sature. Se puede floodear una dirección IP, ..., o lo que ahora nos concierne: un servidor de IRC.

 La manera de aprovechar el flood en nuestro favor consiste en mandar muchas peticiones de información a nuestra víctima, de forma que ésta, al contestar, supere el límite del servidor y éste lo desconecte. Por ejemplo, si le mandamos muchos /ctcp version's seguidos (requiriendo información sobre el programa cliente que está utilizando) la víctima floodeará al servidor cuando conteste porque mandará muchas veces (tantas como peticiones haya habido) el texto de respuesta al servidor (para que del servidor vaya al cliente que peticionó, (en este caso al atacante).

 En esto del flood juega un papel muy importante el número de peticiones que se reciben en un pequeño intervalo de tiempo. Cuantas más se reciban, más posibilidades hay de que el flood tenga éxito. Por ello no es ninguna tontería mandar peticiones desde varios puntos a la vez, y no desde uno sólo, es decir, varios usuarios (¡que podrían ser una misma persona!) de la red IRC manden peticiones a la víctima todos a la vez en un determinado momento. Si los usuarios (nicks) corresponden a una misma persona (una misma dirección IP) se habla de clones. Por tanto, una posible forma de ataque sería crear varios Clones y floodear a la vez desde todos ellos a la víctima.

 Pero los servidores también suelen estar preparados para evitar muchos clones (cada clone ocupa, por decirlo de alguna manera, una "linea" de entrada al servidor, y esto consume recursos del mismo). Suele haber un máximo permitido (en el Undernet es 1) denegándosele el acceso a la red a un segundo clon por servidor, o en caso de que lo consigueras te expulsaria del servidor ("matándolo") (el programa servidor revisa periódicamente las IP's conectadas y detecta cuando hay varios usuarios con una misma dirección IP):

*** Max has quit IRC (Killed Clones!)

 Se puede cambiar el número máximo de clones admisibles desde una determinada dirección IP o dominio añadiendo una I-Line al servidor IRC (en caso de no existir I-Line para esa dirección IP en particular se usa el máximo genérico definido). Esto lo debe hacer algún administrador de la red IRC y es lo que habitualmente se usa para dar acceso a entidades con muchos ordenadores accediendo a Internet desde una misma IP (como es el caso de la mayoría de cyber-cafés).

 ¿Cómo provocar un flood con más de 2 clones entonces? La respuesta es simple: en principio no se puede. ¿Entonces? Pues la solución es que varias personas distintas se pongan de acuerdo para atacar a la vez a la víctima. Cada persona podría tener a su vez varios clones. Por ejemplo, si A (atacante) quiere atacar a V (víctima), A se pone de acuerdo con B y C (otras 2 personas atacantes). A su vez supongamos que cada atacante tiene 2 clones: i.1 e i.2 (donde i=A,B,C). Entonces tendremos 6 usuarios (conexiones IRC) distintos atacando a V, que serían A.1, A.2, B.1, B.2, C.1 y C.2. Pero hay un problema: ¿cómo sincronizarse para atacar? ¿Cómo "ponerse de acuerdo" para mandar las peticiones en un determinado momento? Para esto existe lo que se denomina "floodnet" que, como habrá adivinado nuestro ávido lector, es una "red" (asociación) de gente cuyo único objetivo es floodear a alguien. La ventaja que tiene es que la sincronización entre los distintos componentes de la floodnet es automática (lo hacen los scripts) lo cual resuelve el problema anterior. También existe lo que se denomina "botnet" y que es análogo a la floodnet pero usando bots (no confundir con los "de servicio"; estos últimos los ponen los servers de la red irc y no los usuarios) los cuales serán lanzados desde alguna shell Unix (intérprete de comandos en una máquina Unix). Los bots suelen estar prohibidos y cuando se detectan, a lo menos, son expulsados:

1:32] *** UANL has quit IRC (Killed (You are not welcome to this network!))

 
 Hoy en día tanto los programas clientes de IRC como los scripts implementan protecciones anti-flood que dificultan enormemente el éxito de un ataque de tipo flood. Por ejemplo, cuando detectan varias peticiones seguidas mandan las respuestas espaciadas en el tiempo (con pausas) y no inmediatamente, con lo cual se evita el flood.

 También hay técnicas de flood bastante optimizadas (por ejemplo, usando una floodnet) aunque en general un ataque flood no suele ser demasiado eficiente y es más costoso lograr su éxito que con algunas de las técnicas que se describen a continuación.
 

3.2.- Nick collide.-

 Un "nick collide" ocurre cuando dos personas tienen un mismo nick. En principio esto no debería ser posible (el servidor no deja usar un nick que ya está en uso) pero hay dos situaciones en las que podría darse el caso y que se describen en los dos puntos siguientes.

 El resultado de un nick collide depende del servidor (ircd). En servidores antiguos (sin protección) el collide se resuelve matando a los dos usuarios con mismo nick (¡ambos!). En otros más inteligentes (con protección) el servidor guarda información acerca de los usuarios y puede saber que usuario tiene el nick con mayor antigüedad (i.e. quién se lo puso antes), matando únicamente al usuario con el nick más reciente (protegiendo al usuario más "Antiguo").
 

3.2.1.- Split server collide.-

 Se basa en aprovechar un net-split:

 - Esperar un split.
 - Entrar (conectar) al servidor spliteado.
 - Ponerse como nick el de la víctima.
 - Esperar a que se deshaga el split.

 Si todo va bien (el servidor no tiene protección), a la vuelta del split se detectará el collide y se matarán tanto al atacante como a la víctima. Lógicamente nuestro usuario atacante será un clone nuestro, con lo cual no pasa nada si es killeado.
 

3.2.2.- Lag collide.-

 Consiste en aprovechar el lag de un servidor, o lo que es lo mismo, el retraso en recibir los mensajes de otros servidores. Esta técnica es más efectiva que la anterior, pues funciona en servidores con protección.

 Los pasos serían los siguientes:

 - Meter un clone en el servidor lageado.
 - Esperar a que la víctima cambie de nick (esto lo detectamos desde otro servidor no lageado).
 - Cambiar rápidamente el nick de nuestro clone y ponerle el que se acaba de poner la víctima (el nuevo).
 - Esperar al lag .... y ZaZ!

 Lo que ocurre es que nuestra orden de cambiar el nick para nuestro clone llega antes al servidor (lageado) que la orden de cambio de nick de la víctima debido a que nuestra orden va directamente de nuestro cliente al servidor lageado mientras que la otra va a través de la red IRC (donde hemos supuesto que se introduce un lag notable). Esto hace que el servidor (lageado) tome a nuestro clone como "dueño" legítimo del nick y mande un kill al otro (la víctima). Esto ocurriría en caso de servidores protegidos; si es no protegido el resultado es que ambos mueren, resultado también aceptable, pues hemos acabado con nuestro objetivo.
 

3.3.- Nuke.-

 "Nuke" es la denominación genérica que se le suele dar a cualquier forma de ataque consistente en mandar paquetes arbitrarios a una determinada dirección IP Realmente el término "nuke" siempre se ha referido al primero de los dos tipos que comentaremos, aunque aquí se ha preferido tomar una definición más amplia de dicha palabra.
 

3.3.1.- ICMP nuke.-

 El más viejo de los nukes, usa un protocolo subyacente de IP, el ICMP ("Internet Control Message Protocol": parte integral del protocolo de Internet [IP] que resuelve errores y controla los mensajes), para romper una conexión cliente-servidor de IRC (tirar a alguien del server). Para entender cómo funciona hay que hablar un poco de protocolos; es aburrido pero no hay más remedio...

 Una conexión IRC (cliente-servidor, que es lo que nos interesa) utiliza el protocolo TCP (nivel 4 [transporte] en la torre OSI), el cual se apoya sobre IP (nivel 3 [red]). IP se encarga, entre otras cosas, de hacer el rutado de paquetes ("datagramas IP"), es decir, dado un destino ir enviando los paquetes por el camino apropiado hasta alcanzar el host destino. TCP no ve nada de esto, tan sólo el destino directamente (manda los segmentos TCP directamente al destino), porque IP lo oculta (hace que el rutado sea transparente a TCP). Lógicamente para que un protocolo de nivel superior funcione correctamente, también deberán hacerlo todos los que estén por debajo. En particular, para que nuestra conexión TCP (IRC) se mantenga "viva", IP debe funcionar perfectamente. Y aquí es donde interviene ICMP: se encarga de informar de posibles anomalías que se han producido en el nivel 3 (IP), como por ejemplo, "host unreachable", que significaría que no se ha podido alcanzar el host (el paquete IP ha ido dando saltos ["hops"] de un nodo a otro, hacia el destino, y ha llegado un momento en el que un determinado nodo intermedio no sabía qué hacer con él o ha expirado el tiempo de vida de dicho paquete). En este caso, el paquete que informa del error (ICMP) lo envía el nodo intermedio que se ha dado cuenta del error  hacia el "remitente" que lanzó el paquete original (que no se ha podido entregar a su destinatario). Los mensajes ICMP se situan dentro del campo de datos de un datagrama IP y se envían exactamente igual que si fueran datos IP (no son prioritarios). No es objetivo de este escrito tratar más a fondo este tema (para los interesados les aconsejo el libro "Internetworking with TCP/IP, vol I", de Douglas E. Comer, disponible en castellano ya en su tercera edición).

 Resumiendo: mediante ICMP informamos de que IP ha fallado, y por tanto, también los niveles superiores como TCP.

 Comprendiendo lo anterior ya se puede intuir en qué consiste el ICMP nuke: mandar mensajes ICMP falseados, engañando al destino, haciéndole creer que el otro extremo ha detectado un error y por tanto, provocando un "cierre" de la comunicación. Vamos a explicar un poco mejor ésto.

 En una conexión siempre tenemos dos extremos, lo que da dos posibilidades a la hora de engañar, según lo hagamos  a uno u otro. En el caso de una conexión IRC, podemos llevar a cabo dos formas de ataque:

 * Server nuking (nukear al server): los mensajes ICMP se mandan al servidor IRC, haciéndole creer que se ha producido un error al intentar comunicarse con el cliente. Como respuesta a este mensaje el server cierra la conexión que tenía con dicho cliente. El efecto producido es la "expulsión" del usuario por parte del servidor.

 * Client nuking (nukear al cliente): esta vez se envían los ICMP's al cliente; éste cree que el servidor no está disponible y cierra la conexión (el cliente). El servidor no sabe nada en principio, pero detecta el cierre de conexión por parte del cliente, dando el correspondiente error y cerrando también la conexión por su parte.

 En teoría las dos fomas de nuking son perfectamente válidas y eficientes, aunque hay que tener ciertas consideraciones en cuenta, como son:

- tanto servidor como cliente pueden tener protección anti-nuke y puede ser necesario atacar uno porque el otro esté protegido (ver más adelante).
- si atacas a un cliente, éste puede detectar quién le está atacando con un simple analizador de paquetes IP o tracer, y también podría responder con otro ataque de este o cualquier otro tipo (cuidado con quién te metes ;-)).
- si atacas al servidor, el cliente no tiene manera de saber quién le ha "atacado" porque los mensajes ICMP no le han llegado a él sino al servidor (ventaja); pero por otro lado, el servidor sí sabe quién ha hecho el ataque y puede resultar en una K/G-Line a dicho usuario por parte del servidor (el usuario podría ser baneado de toda la red de IRC).
- los inconvenientes de los dos puntos anteriores pueden ser solventados falseando la dirección origen de los mensajes ICMP que se envían. Esta técnica se conoce como "spoofing" (ver punto 4).

 Hay diversos tipos de error ICMP que se pueden utilizar a la hora de hacer un nuke. En cuanto a la información práctica de cómo utilizar un nuker (programa "nukeador"), debemos tener en cuenta que además de suministrarle el tipo de error que se desea producir, juegan un papel muy importante los puertos, tanto origen como destino, que se elijan.

 Una conexión IRC (TCP) queda definida unívocamente por los pares dirección IP origen-puerto origen y dirección IP destino-puerto destino. Estos datos son los que hay que suministrarles al programa nukeador. Puertos típicos del servidor de IRC (será el puerto destino en caso de server nuking o el fuente si se trata de un client nuking) son 6665-9,  4400-6, 7000 y 7777. En realidad cada servidor IRC tiene unos puertos oficialmente reconocidos (que son conocidos públicamente: los podemos leer en el motd ["mensaje del dia"] al entrar en el IRC) y otros que podríamos denominar como privados, y que se usan por ejemplo para las conexiones entre los distintos servidores que forman la red. Un usuario puede estar usando uno de estos puertos "fantasmas" (aunque el servidor también puede limitar el acceso a estos puertos) para esconderse de nukes, puesto que necesitamos conocer este dato para que el nuke sea efectivo.

 También necesitamos conocer el puerto del cliente, aunque esto es más difícil porque varía mucho (no son fijos como en el caso anterior) dependiendo del sistema operativo que esté corriendo dicho cliente, los puertos que ya tuviera ocupados antes de establecer la conexión IRC, étc. Lo normal es hacer un barrido de estos puertos empezando por el 1024 (hay puertos que por convenio siempre se asignan a determinadas tareas y no se pueden usar arbitrariamente con lo cual no necesitamos barrerlos) y acabando en 4000, por ejemplo, aunque podría ser necesario aumentar este número.

 Es también muy útil utilizar un "port-scan": programa que va probando los distintos puertos de una dirección IP (destino) dada e informa de la respuesta recibida para cada uno de  dichos puertos (así podemos saber, por ejemplo, qué puertos de un servidor están dedicados a aceptar conexiones IRC).

 A continuación transcribo mensajes típicos de salida de nuestras potenciales víctimas en una sesión típica de IRC:

*** ^Aliber^ has quit IRC (Read error to ^Aliber^ [mty-8-26,telmex.net.mx]: Connection reset by peer)
*** d0d0l0k0 has quit IRC (Read error to d0d0l0k0 [195.76.99.76]: EOF from client)
*** Ogro has quit IRC (Read error to Ogro [mty4-17.uninet.net.mx]: Protocol not available)
*** Karls has quit IRC (Read error to Karls [info760.jet.es]: Network is unreachable)
*** Iron_PWR has quit IRC (Read error to Iron_PWR [info760.jet.es]: Machine is not on the network)
*** CoPSBaBY has quit IRC (Read error to CoPSBaBY [mty-6-96.uninet.net.mx]: Connection refused)
*** Du]{e has quit IRC (Read error to Du]{e [ctv3011.ctv.es]: No route to host)

 La protección anti-nuke, a grosso modo, pasa por ignorar los mensajes ICMP que lleguen, aunque ésto ya está limitando el propio funcionamiento del protocolo IP, en el sentido de que ICMP es parte integrante de IP y no se debería inhibir (¿qué ocurriría si llega un mensaje "de verdad" y es ignorado?). Se puede llevar a cabo más o menos "finamente": por ejemplo descartar solo los ICMP's de un tipo y no todos los posibles. Se podría lograr con un firewall (software o hardware encargado de filtrar los paquetes provinientes de la red en base a una reglas previamente definidas) convenientemente configurado.

 Puedes bajar el codigo fuente en C para mandar ICMP nuke's:
pingflood.c
 

3.3.2.- OOB nuke.-

 También conocido como 'winnuke', ya que afecta sólo al sistema operativo Windows, en cualquiera de sus "sabores": 3.x, 95 y NT. Se basa en un bug que tiene este SO en la pila de protocolos por el cual el sistema se cuelga ("error de protección general...blah, blah...") cuando recibe un paquete con el flag OOB ("Out of band") activado. El ataque es sencillo: mandar un paquete de este tipo a un puerto (normalmente el 139) de nuestrá víctima (ésta debe estar corriendo Windows, lo cual es muy normal hoy en día). Existen programas ya hechos a los cuales simplemente le das la dirección IP de la víctima y el programa lo hace todo.

 La forma de protegerse es cerrar los puertos por los que nos puedan atacar (el 139 principalmente) o aplicar algún parche al SO para quitarnos el bug. Otra solución menos recomendable es la que llevan a cabo algunos ISPs (proveedores de Internet), y que consiste en filtrar todos los paquetes dirigidos al puerto 139 (inconveniente: nos están  dejando inoperativo ese puerto). Hoy en día es muy popular este bug y normalmente está ampliamente parcheado (aunque siempre habrá algún que otro despistado que no lo tenga instalado.

 Como hemos dicho, este ataque no sólo consigue echar a la víctima del server sino que además le deja colgado el ordenador (tendrá que hacer un reboot), lo que lo hace especialmente peligroso. La víctima saldrá del IRC con un mensaje de tipo ping-timeout como:

[19:56] *** Goku has quit IRC (Ping timeout for Goku[system.tech.arrakis.es])

Por último, el programa definitivo en C, que tiene la ventaja de que spoofea la dirección origen:
winbomber.c
 
 

3.4.- Ping.-

 Algunos los llama también "IP bombs" (bombas IP). Un ping es un tipo de mensaje ICMP que se usa para ver si una máquina se encuentra operativa y accesible. El procedimiento es enviarle un ping a la máquina; ésta lo recibe y contesta. Al recibir la contestación ya sabemos que la máquina vive. Si no se recibe en un plazo dado se considera como no accesible (la máquina podría estar apagada, o todos los "caminos" en la red hacia ella cortados). Además podemos obtener más datos como el grado de saturación de una máquina o red (midiendo el tiempo de respuesta de la máquina, es decir, el tiempo transcurrido desde que una máquina origen envía el ping hasta que recibe la contestación de la otra).

 La manera de usar esto de forma ofensiva consiste en mandar más pings a un usuario de los que su máquina pueda contestar, saturándole su conexión a Internet. Por tanto se debe de hacer desde un enlace más potente que el que pretendemos atacar.

 Lo típico es que la víctima esté en su casa y tenga un modem. Por tanto, necesitamos una conexión a internet más rápida que eso. Lo normal es atacar desde una máquina ubicada ya en la red (conectada mediante ATM, FDDI, ...). Por ejemplo, puedes usar la cuenta de la Universidad como car.bmu.uanl.mx La forma de hacerlo sería abriéndo un shell y tecleando:

  $  ping -s 32000 <direcc. IP>

(la sintaxis puede variar ligeramente según sistema operativo).

 Los paquetes que se envían al hacer ping son típicamente muy pequeños. Con el modificador -s estamos forzando un nuevo tamaño (32000 bytes es aceptable; también podemoss probar con 64000).

 Piensa: Un modem de 28.8 tardará unos 18 segs. en recibir 64 Kbytes (sin considerar compresión), mientras que desde nuestra shell lo hemos mandado en ¡¡décimas de segundo!! Si consideramos además que el comando ping manda más de un paquete (los que queramos) ... ¡ZaZ! Tendremos el modem de nuestra víctima trabajando a todo Vapor para nada y fastidiándole todo lo que esté haciendo. En particular, le estropeariamos su conexión al IRC: en el mejor de los casos la víctima tendrá un lag horroroso y en el peor caso cairia del servidor por "ping time-out".

 Desgraciadamente la solución para evitar este ataque no suele ser fácil ya que no se trata de un bug que se pueda parchear sino de la propia mecánica de los protocolos TCP/IP. Te aconsejo usar un Bouncer localizado en una máquina potente capaz de absorber el ataque.

 Aquí tienes un programa que mandan los paquetes Spoofeados:
pong.c
 

3.5.- Ssping.-

 Nos encontramos ante otro bug parecido al del OOB, que afecta a Win95 y NT (aunque no a todas las configuraciones), y cuya idea es que el "maravilloso" Windows "se Confunda" a la hora de reconstruir paquetes que le han llegado fragmentados y acaba con un cuelgue del ordenador. El ataque consiste en precisamente mandar esos paquetes fragmentados a la víctima.

 Un bug de este tipo es viejo conocido de los sistemas UNIX (el ataque se conocía como "ping of death"); pero la novedad es que ahora lo sufren los Windows. Aunque son cosas técnicamente diferentes, la forma de proceder a la hora de atacar es análoga a OOB: solo hay que saber la dirección IP de la víctima y ¡BoOoM!: le dejamos colgado el ordenador.

 La solución pasa por parchear el S.O. En particular, este bug parece que no afecta al Trumpet Winsock así que si lo usas estas protegido.

 A continuación tienes un programa que implementa el ataque con Spoofing incluido:
jolt.c
 

3.6.- Teardrop.-

 Este ataque nos recuerda al "ssping" ya que también está basado en un error al reensamblar paquetes fragmentados que le han llegado a la víctima. Esta vez la pila TCP/IP se confunde al intentar ensamblar paquetes fragmentados que se solapan entre sí (es decir, hay regiones de "datos" comunes en dos paquetes distintos) provocando el cuelgue del ordenador. A diferencia de "ssping" y "OOB" este bug afecta a multitud de S.O.'s, incluídos Linux, Win95 y NT.

 El programa que explota esta vulnerabilidad es el siguiente:
teardrop.c

3.7.- Land.-

 Consiste en mandar a un host y puerto especificado (víctima) un paquete Spoofeado con el bit syn (petición de conexión) activo y con dirección y puerto fuente los mismos a los cuales va dirigido el paquete (p.e. dirección y puerto de la víctima). Resumiendo, hacemos como si la máquina víctima quisiera realizar una conexión a ella misma. Esto provoca el cuelgue de la máquina víctima en la mayoría de los casos o en otros que la carga de la CPU alcance valores insospechados.

 Este bug afecta a una gran variedad de sistemas (routers incluídos). Una lista bastante completa (pero nunca al 100%) de sistemas afectados es la siguiente:

AIX 3                                   IS  vulnerable
AIX 3.2                                 NOT vulnerable
AIX 4                                   NOT vulnerable
AIX 4.1                                 NOT vulnerable
AIX 4.2.1                               NOT vulnerable
AmigaOS AmiTCP 4.0demo                  NOT vulnerable
AmigaOS AmiTCP 4.2 (Kickstart 3.0)      IS  vulnerable
AmigaOS Miami 2.0                       NOT vulnerable
AmigaOS Miami 2.1f                      NOT vulnerable
AmigaOS Miami 2.1p                      NOT vulnerable
AmigaOS Miami 2.92c                     NOT vulnerable
BeOS Preview Release 2 PowerMac         IS  vulnerable
BSDI 2.0                                IS  vulnerable
BSDI 2.1 (vanilla)                      IS  vulnerable
BSDI 2.1 (K210-021,K210-022,K210-024)   NOT vulnerable
BSDI 3.0                                NOT vulnerable
DG/UX R4.12                             NOT vulnerable
Digital UNIX 3.2c                       NOT vulnerable
Digital UNIX 4.0                        NOT vulnerable
Digital VMS ???                         IS  vulnerable
FreeBSD 2.1.6-RELEASE                   NOT vulnerable
FreeBSD 2.2.2-RELEASE                   NOT vulnerable
FreeBSD 2.2.5-RELEASE                   IS  vulnerable
FreeBSD 2.2.5-STABLE                    IS  vulnerable (fixed)
FreeBSD 3.0-CURRENT                     IS  vulnerable (fixed)
HP External JetDirect Print Servers     IS  vulnerable
HP-UX 9.03                              NOT vulnerable
HP-UX 10.01                             NOT vulnerable
HP-UX 10.20                             NOT vulnerable
IBM AS/400 OS7400 3.7                   IS  vulnerable (100% CPU)
IRIX 5.2                                IS  vulnerable
IRIX 5.3                                IS  vulnerable
IRIX 6.2                                NOT vulnerable
IRIX 6.3                                NOT vulnerable
IRIX 6.4                                NOT vulnerable
Linux 1.2.13                            NOT vulnerable
Linux 2.1.65                            NOT vulnerable
Linux 2.0.30                            NOT vulnerable
Linux 2.0.32                            NOT vulnerable
MacOS MacTCP                            IS  vulnerable
MacOS OpenTransport 1.1.1               NOT vulnerable
MacOS 7.1p6                             NOT vulnerable
MacOS 7.5.1                             NOT vulnerable
MacOS 7.6.1 OpenTransport 1.1.2         IS  vulnerable (not a compleate lockup)
MacOS 8.0                               IS  vulnerable (TCP/IP stack crashed)
MVS OS390 1.3                           NOT vulnerable
NetApp NFS server 4.1d                  IS  vulnerable
NetApp NFS server 4.3                   IS  vulnerable
NetBSD 1.1                              IS  vulnerable
NetBSD 1.2                              IS  vulnerable
NetBSD 1.2a                             IS  vulnerable
NetBSD 1.2.1                            IS  vulnerable (fixed)
NetBSD 1.3_ALPHA                        IS  vulnerable (fixed)
NeXTSTEP 3.0                            IS  vulnerable
NeXTSTEp 3.1                            IS  vulnerable
Novell 4.11                             IS  vulnerable (100% CPU for 30 secs)
OpenBSD 2.1                             (conflicting reports)
OpenBSD 2.2                             NOT vulnerable
OpenVMS 7.1 with UCX 4.1-7              IS  vulnerable
OS/2 3.0                                NOT vulnerable
OS/2 4.0                                NOT vulnerable
QNX 4.24                                IS  vulnerable
Rhapsody Developer Release              IS  vulnerable
SCO OpenServer 5.0.2 SMP                IS  vulnerable
SCO OpenServer 5.0.4                    IS  vulnerable (kills networking)
SCO Unixware 2.1.1                      IS  vulnerable
SCO Unixware 2.1.2                      IS  vulnerable
Salaris 2.4                             NOT vulnerable
Solaris 2.5.1                           NOT vulnerable
Solaris 2.5.2                           NOT vulnerable
Solaris 2.6                             NOT vulnerable
SunOS 4.1.3                             IS  vulnerable
SunOS 4.1.4                             IS  vulnerable
Ultrix ???                              NOT vulnerable
Windows 95 (vanilla)                    IS  vulnerable
Windows 95 + Winsock 2 + VIPUPD.EXE     IS  vulnerable
Windows NT (vanilla)                    IS  vulnerable
Windows NT + SP3                        IS  vulnerable
Windows NT + SP3 + simptcp-fix          IS  vulnerable

Some misc stuff:

3Com Accessbuilder 600/700              NOT vulnerable
3Com LinkSwitch 1000                    NOT vulnerable
3Com OfficeConnect 500                  NOT vulnerable
3Com SuperStack II Switch 1000          IS  vulnerable
Adtran TSU Rack                         NOT vulnerable
Apple LaserWriter                       IS  vulnerable
Ascend 4000 5.0Ap20                     NOT vulnerable
Ascend Pipeline 50 rev 5.0Ai16          NOT vulnerable
Ascend Pipeline 50 rev 5.0Ap13          NOT vulnerable
BayNetworks MARLIN 1000 OS (0).3.024(R) NOT vulnerable
BinTec BIANCA/BRICK-XS 4.6.1 router     IS  vulnerable
Cisco Classic IOS < 10.3, early 10.3, 11.0, 11.1, and 11.2 IS vulnerable
Cisco IOS/700                           IS  vulnerable
Cisco Catalyst                          IS  vulnerable
Digital VT1200                          IS  vulnerable
Farallon Netopia PN440                  NOT vulnerable
HP Envizex Terminal                     IS  vulnerable
LaserJet Printer                        NOT vulnerable
Livingston Office Router (ISDN)         IS  vulnerable
Livingston PM ComOS 3.3.3               NOT vulnerable
Livingston PM ComOS 3.5b17 + 3.7.2      NOT vulnerable
Livingston PM ComOS 3.7L                NOT vulnerable
Livingston PM ComOS 3.7.2               NOT vulnerable
Livingston Enterprise PM 3.4 2L         NOT vulnerable
Livingston T1/E1 OR                     IS  vulnerable
Milkyway Blackhole Firewall 3.0 (SunOS) IS  vulnerable
Milkyway Blackhole Firewall 3.02(SunOS) IS  vulnerable
NCD X Terminals, NCDWare v3.1.0         IS  vulnerable
NCD X Terminals, NCDWare v3.2.1         IS  vulnerable
Netopia PN440 v2.0.1                    IS  vulnerable
Proteon GT60                            NOT vulnerable
Proteon GT60Secure                      NOT vulnerable
Proteon GT70                            NOT vulnerable
Proteon GT70Secure                      NOT vulnerable
Proteon GTAM                            NOT vulnerable
Proteon GTX250                          NOT vulnerable
Proteon RBX250                          NOT vulnerable
Sonix Arpeggio                          NOT vulnerable
Sonix Arpeggio +                        NOT vulnerable
Sonix Arpeggio Lite                     NOT vulnerable
 

 Puedes comprobar la efectividad del ataque, Baja el Nuke aqui:
land.c
 
 

3.8.- Teardrop modificado.-

 Nos encontramos ante una variante del temido teardrop. Esta vez lo que se hace es mandar paquetes UDP fragmentados a puertos aleatorios de la máquina víctima. La peculiaridad es que esta vulnerabilidad sigue existiendo en máquinas Windows ¡ya parcheadas contra teardrop!

 Aquí esta el source para reproducir el ataque. Baja el Nuke aqui:
newtear.c


 

3.9.- Smurf.-

 Consiste en mandar paquetes ICMP de "echo request" (como los de un ping) con una falsa dirección de origen (la IP de la víctima) a una dirección de difusión ("broadcast"). De esta forma alcanzarán muchas máquinas,  cada una de las cuales enviará sus paquetes de respuesta a la dirección origen de la petición (cuyos datos estaban falseados y apuntaban a la víctima). El resultado es que la máquina víctima se ve inundada de paquetes IP, resultando en una saturación de su enlace (algo así como si le hubieran hecho un ping a lo grande).

 Desgraciadamente la víctima no puede hacer nada para evitarlo. La solución está en manos de los administradores de red, los cuales deben configurar adecuadamente sus routers para filtrar los paquetes ICMP de petición indeseados (broadcast) o bien configurar sus máquinas para que no respondan a dichos paquetes. Es decir, que lo que se parchea son las máquinas/redes que puedan actuar de intermediarias (inocentes) en el ataque y no la máquina víctima.

 De igual forma también se podría evitar el ataque si el router/firewall de salida del atacante (p.ej. el ISP al que pertenece) estuviera convenientemente configurado para evitar spoofing. Esto se haría filtrando todos los paquetes de salida que tuvieran una dirección source (origen) que no perteneciera a la red interna (desde la cual salimos).

 He aquí el programa que implementa el ataque:
smurf.c


 

3.10.- Bonk (/Boink).-

 La mecánica de este ataque es parecida a la del Teardrop. De hecho, se puede hablar de Teardrop a la inversa. Esta vez lo que se fuerza es a que el offset del fragmento sea mayor que la longitud de la cabecera. El intento de reensamblaje por parte de la víctima conlleva el cuelgue del ordenador. Afecta a Win95 (y quizás NT) incluso una vez parcheado contra Teardrop2.

 A continuación te doy el programa original que da nombre al ataque. Este ataca al puerto 55 de la víctima. Existe una variante, llamada "boink", que barre un rango de puertos, pero el fundamento es el mismo y no creo que merezca la pena plasmar aquí el fuente.
 
bonk.c
 

3.11.- Syndrop.-

 Tal y como reza el comentario del siguiente source este bug es una mezcla de otros dos: el basado en secuencias con el flag SYN y el Teardrop. Es decir, es una variante más del Teardrop.

 A continuacion te doy el source del Nuke:
syndrop.c
 

3.12.- Overdrop.-

 Afecta al kernel 2.0.33 de Linux y es más que nada molesto.

 Consiste en mandar paquetes incorrectos de forma que el kernel víctima produzca los correspondientes mensajes de error, que normalmente son logeados en fichero. Se consigue pues llenar el disco duro o la consola de la víctima con mensajes de este tipo.

Aquí tienes el source para llevar a cabo el ataque:
overdrop.c
 

3.13.- Nestea (/Nestea2).-

 Se trata de una nueva variante del Teardrop.

 Aqui tengo la versión 2 de Nestea que no es otra cosa que la primera pero con un poco más de estética (colores y demás):
nestea2.c
 

3.14.- Trojans.-

 Un "troyano" (o "trojan", en inglés) es un programa que "cuelan" en tu ordenador y que tiene otras funciones (normalmente perniciosas) en vez de o además de las funciones normales (para lo que se supone que sirve el programa). En este sentido, es análogo a un virus, solo que no se extiende por sí sólo (normalmente): hay que introducirlo "manualmente" a la víctima y forzarla o convencerla para que lo ejecute.

 En el caso del IRC lo que se hace usualmente es mandárselo a la víctima vía DCC. Cuando ésta ejecuta el programa se ve infectada o le ocurre algo pernicioso }:-).

 Para que se entienda el concepto: imaginad que yo creo un fichero llamado "sorpresa.bat" con lo siguiente:

  @echo off
  del c:\autoexec.bat
  del c:\config.sys
  echo Sorpresa...

 Ahora se lo envío a alguien y éste lo ejecuta. Entonces se le borrarían los ficheros de arranque };-)

 Esto que se ve tan simple se puede implementar de forma mucho más elaborada creando un  .exe de forma que en principio no podemos saber lo que hace el programa internamente hasta que lo ejecutamos.

 Solución: como normal general no acepteis ficheros ejecutables de extraños, o por lo menos, no los ejecuteis. Si os van a pasar algún programa extraño es aconsejable que os pasen el source para que se le pueda echar un vistazo al programa, asegurarnos de que no hace "cosas raras" y entonces compilarlo nosotros mismos. Esto último es lo más seguro.

3.14.1.- Mirc.ini.-

 Se trata del fichero de configuracion principal del cliente mIRC. Es muy potente porque permite scripting, o sea, crearte tus propios comandos a medida y automatizar tareas.

 Algunos graciosos se dedican a pasar por DCC una versión "modificada" (troyana) que circula por ahí y que entre otras cosas añade ciertos comandos para que remotamente un intruso pueda hacerte cosas en tu ordenador. Sólo funcionará si se consigue que el archivo troyano reemplace al archivo mirc.ini original, lo cual tampoco es fácil ya que tendríamos que tener configurado nuestro mIRC para que la zona de download apunte al directorio "raiz" de mIRC (de forma que el fichero recibido por DCC vaya al directorio donde se encuentran los ejecutables y ficheros de configuración de mIRC) y además aceptar el DCC (o tener activada la opción de "auto-get", o sea, de aceptar automáticamente los DCC's, cosa que no aconsejo en absoluto).

 Solución: no uses el "auto-get" ni aceptes ficheros de extraños o que no sepas bien lo que hacen.

3.14.2.- Dmsetup.exe.-

 Este es un troyano que últimamente ha circulado bastante y que no se realmente lo que hace porque no me he molestado en mirarlo (ni pienso hacerlo). Pero por lo que tengo entendido en concepto es algo similar al mirc.ini, o sea, permite acceso remoto a un intruso.

 Para buscar gente infectada creo que puedes escribir en el canal ".x." (o algo así) y los afectados por el troyano te responderán vía MSG de forma automática.
 

3.15.- Hanson.

 Afecta al cliente mIRC 5.3x con el puerto 113 (ident) abierto. Se consigue matar al programa cliente o ralentizar mucho el sistema (Windows 95/NT). La idea es mandar al puerto especificado cadenas más largas de las que admite el buffer interno de mIRC provocando un "crash" del programa.

hanson.c
 

4.- Spoofing.

 Esta técnica no es un ataque en sí pero permite mejorar y perfeccionar cualquier ataque (de los anteriores, por ejemplo). También puede ser la base de algún ataque, como ocurre con el IP Spoofing que los hackers suelen emplear (me desviaría del tema  de este escrito si siguiese escribiendo...).

 Se trata de "spoofear" (=falsear) la dirección IP de origen de los paquetes que se mandan a la víctima, de forma que ésta crea que el origen de dichos paquetes es otro (el que nosotros le indiquemos). De esta forma protegemos nuestro anonimato, y en general podemos llevar a cabo cualquier acción que se nos pueda ocurrir y que se derive de una falsa dirección source (origen). Por ejemplo, podemos nukear a alguien, con la dirección fuente de otro, haciendo creer a la víctima (si ésta tiene un analizador de paquetes o algo parecido) que es el otro el que le está atacando }:-).

 El spoofing es (o podría ser) una funcionalidad más del programa de ataque (del nuker, del ping, ...). Como consiste en manejar IP desde un muy bajo nivel en muchos casos se requieren privilegios especiales. Por ejemplo, en el caso de máquinas Unix, se necesita abrir "raw sockets" y ésto requiere de privilegios de superusuario (root).

 Para los interesados en el tema os remito a las siguientes direcciones:

* IP-spoofing Demystified Trust-Relationship Exploitation by daemon9 / route / infinity
http://www.fc.net/phrack/files/p48/p48-14.html

* IPSPOOF.C (Spoofing source)
http://www.ilf.net/Toast/files/unix/ipspoof.c

* This site contains both spoofing code, an analysis of that spoofing code and a good description of how to implement such attacks:
http://main.succeed.net/~coder/spoofit/spoofit.html
 
 

5.- Técnicas avanzadas.

 Aquí me propongo a describir con la mayor simplicidad posible algunas técnicas más o menos avanzadas (algunas son realmente difíciles de implementar y suelen ser usadas por hackers) para que por lo menos sepais de su existencia.
 

5.1.- Bouncing.-

 Consiste en usar una máquina (host) intermedia para mantener una comunicación TCP "virtual" entre dos máquinas (situadas una a cada lado). El esquema sería algo así como:
 

                    Host A   <--->   Bouncer  <---> Host B
                              (1)              (2)
 

 Todos los datos que A tiene para B son enviados al bouncer. Este se encarga de reenviarlos a su destino (B). De igual forma ocurre en el otro sentido. El bouncer actúa de elemento redireccionador en ambos sentidos.

 La máquina intermedia corre un programa especial (daemon) llamado "bouncer". A menudo nos referiremos también con el mismo término a la máquina intermedia (i.e. la que corre el soft especial), de la misma forma que se ha asumido al dibujar el esquema. Dicho programa usa dos puertos TCP previamente definidos, uno por cada conexión (A<->Bouncer, Bouncer<->B), y hace de pasarela entre ellos (tal y como se ha explicado). Por tanto, mantiene por separado dos conexiones TCP diferentes pero las "enlaza" de forma que en su conjunto parezca una única conexión TCP (de ahí lo de "virtual") entre A y B.

 La ventaja que ésto conlleva es que ocultamos nuestra identidad a los ojos de B, ya que éste solo ve la comunicación que mantiene con el host intermedio (2) (y no tiene por qué saber que se trata de un host haciendo de bouncer).

 A esta técnica se le puede dar diferentes usos, todos ellos basándonos en la principal ventaja descrita en el párrafo anterior. En lo que al IRC concierne es ampliamente usada para saltar bans o K/G-Lines. Lo vemos con un ejemplo. Supongamos que nosotros somos el host A y que no podemos entrar a ningún servidor (B) de una red IRC por estar baneados permanentemente. ¿Qué hacer? Pues hacemos uso de una shell en otro host (que va a ser el intermedio) y colocamos allí un bouncer. Al programa, que se quedará corriendo en segundo plano (background), le tenemos que dar dos datos: el puerto que estará permanentemente escuchando (por donde recibirá nuestra conexión) y el host y puerto destino (a donde intentará conectarse) correspondientes a B. Ahora, cuando queramos conectarnos al IRC lo hacemos al primero de los puertos predefinidos (correspondiente al host que alberga el bouncer). Automáticamente el bouncer redireccionará nuestra petición hacia B (el servidor IRC) y estaremos dentro (¡saltándonos el ban o lo que sea!) ya que hemos llegado a través de un host que no tenía ningún ban. A todos los efectos el servidor IRC cree que nuestro host es el bouncer. Así, al hacernos cualquier otro usuario un /whois ¡verá el hostname del bouncer! (ésto es otra ventaja ya que no nos pueden mandar ataques como OOB's o Sspings, por no saber nuestra verdadera dirección IP). Es una buena forma de garantizar nuestro anonimato =).

 He aquí un sencillo ejemplo de IRC bouncer:
ts2.c
 
 Hay que tener en cuenta que un bouncer es algo fácil de "robar":
1.- Exploramos la red IRC en busca de algún usuario que esté usando bouncer. Para ello basta con hacer /whois a distintos usuarios y fijarnos en el hostname que nos sale. Podemos asumir que presumiblemente se trata de un bouncer si es una IP fija (alguna máquina de una universidad, por ejemplo) y al hacer /finger @host no vemos ningún usuario conectado. Esto último no siempre se puede ver ya que muchos hosts deshabilitan este servicio por el potencial problema de seguridad que puede acarrear.
2.- Hacemos un PortScan a dicho host (se van mandando sucesivas peticiones de conexión TCP a los distintos puertos de la víctima, recorriendo el rango de puertos deseado, y a la vez escuchando las respuestas que nos llegan; sólo contestarán los puertos "activos" así que es una manera de ver los puertos abiertos que tiene una máquina).
3.- Normalmente un bouncer se coloca en los puertos no privilegiados (es decir, a partir del 1024), típicamente en el rango 1024 a 10000, por decir algo, aunque en realidad en principio no hay ninguna restricción en cuanto al número de puerto usado. Así que podemos seleccionar a ojo unos cuantos puertos que son candidatos posibles a bouncer :).
4.- Intentamos conectarnos a dichos puertos con nuestro cliente IRC habitual y vemos si alguno/s lo hace/n.
5.- Si conseguimos entrar al IRC por alguno de esos puertos ya tenemos bouncer =).

 Para evitar abusos como el anterior se suele usar algún tipo de autentificación en el bouncer, como podría ser poner password de entrada. Esta característica y alguna que otra más también interesante la soporta este otro programa de bouncer:
bnc.zip
 

5.2.- Wingate.-

 Wingate es un programa comúnmente usado para dar conectividad a Internet a varios ordenadores usando un único modem. (supongo que tendrá más funciones pero tampoco interesa para nuestros propósitos). Es un programa bastante peligroso por los problemas de seguridad que implica, al menos en versiones no muy modernas.

 Uno de los bugs que tiene es que permite acceso vía puerto 23 (telnet) sin pedir password y desde ahí se puede saltar a cualquier otra máquina. Es decir, podemos usar Wingate para hacer bouncing sin necesidad de preocuparnos de buscar o hackear una shell de por ahí.

 Por tanto, la cosa es tan fácil como encontrar algún host que corra Wingate (que los hay).

 También hay otro bug que te permite el acceso al HD del host corriendo Wingate aunque no será materia de este artículo al no tener nada que ver con el IRC. Busca en páginas de hack=O)

 Solución: aparte de usar siempre la última versión de Wingate, aconsejo mejor usar otras alternativas más eficientes, menos peligrosas y más baratas como puede ser un Linux corriendo IP-masquerade.
 

5.3.- DNS Inject.-

 Con esta técnica conseguimos spoofear nuestro hostname, es decir, que un servidor nos asocie el nombre de host que queramos (y no el que tiene realmente, que es único) (en realidad, puede haber más de uno, pero sólo uno es el real, lo que se conoce como "canonical name" mientras que los demás son simples "aliases").

 La explicación detallada es compleja y excede los objetivos de este documento. A título informativo paso a esbozar o perfilar lo que sería el Inject.

 Cada servidor (ya sea de IRC, ftp, étc) tiene asociado uno o más "servidores de nombres" (NS, del inglés: Name Server) que resuelven todas las peticiones de conexión que le llegan: para cada IP que peticiona conexión buscan y almacenan el hostname correspondiente para su posterior uso. El proceso sería el siguiente:

 - un usuario de la máquina A intenta conectarse a un puerto de la máquina B (el servidor IRC, ftp, ...).
 - B recibe la dirección IP desde la que peticionamos (la de A) y se la entrega a C (otro host: el NS) para que la resuelva.
 - C resuelve y devuelve su respuesta a B.
 - B se "cree" la respuesta y la cachea en memoria. Ahora tiene un par IP-hostname. A partir de este momento nosotros estamos identificados en el servidor con el hostname dado anteriormente por el NS.

 Como se puede intuir el truco está en forzar al NS a que de una respuesta falsa (siempre en favor nuestro). Digamos que modificamos los datos del NS para que responda a nuestra IP con el hostname que nosotros queremos y no con el que debería hacerlo realmente. Se dice que hemos "inyectado" (injectado, en inglés el NS.

 El cómo hacer esto último es lo complicado y sólo voy a decir que el truco se basa en la "resolución recursiva" de los NS (cuando un NS no sabe la respuesta a la petición que le ha llegado lanza una nueva petición a otro NS, que posiblemente sí sepa la respuesta, y así sucesivamente --> de ahí la "recursividad") y en tener finalmente un NS trucado que de respuestas falsas y que nosotros reprogramamos a nuestro gusto.

 La principal ventaja es una vez más el anonimato (aparte de poder juga en el IRC con una identidad del tipo root@nasa.gov por poner un ejemplo.
 

5.4.- Modem Disconnect.-

Este es un viejo ataque pero que sorprendentemente sigue siendo perfectamente util para colgar un modem (y por tanto, la conexion al ISP) en muchas ocasiones. Es bastante poderoso, así que por favor, no abuses de él.

 Para comprender su funcionamiento hay que explicar antes algo sobre modems. Vamos a ello.

 La mayoría de modems usan un juego de comandos conocido como "Hayes". A través de estos comandos se puede enviar cualquier orden interna al modem o incluso configurarlo. Un comando-ejemplo muy conocido es "ATDTxxxxxx", que le indica al modem que marque por tonos el número xxxxxx.

 El comando que nos será de utilidad ahora será "ATH0". La respuesta del modem a este comando es que rompe la conexión actual, o sea, "cuelga el teléfono". Si logramos que la víctima mande ese comando a su propio modem, éste desconectará. Esa es la idea.

 Para que el modem entienda que los datos que se le está mandando son comandos, éste debe estar en lo que se conoce como "modo de comandos". Sin embargo, nosotros vamos a intentar mandar el comando estando el modem ya conectado al ISP y funcionando, por lo que éste no está en principio aceptando comandos sino "datos". Tenemos que, de alguna forma, forzar a que el modem entre en el modo de comandos. Para ésto, basta con lanzar una secuencia de "códigos de escape". Esta secuencia o evento fuerza a que se conmute al modo de comandos, de forma que los datos que vengan a continuación el modem los entiende como comandos. El código de escape está definido en el registro S2 del modem y por defecto, es el 43 ("+"), de forma que la secuencia para entrar en modo de comandos es "+++". Detrás iría el comando a lanzar, que según lo visto, va a ser un "ATH0". Así y con todo, la cadena de caracteres completa que la víctima debe enviar a su modem queda como "+++ATH0", que es el nombre que usualmente se da al ataque.

 Visto ésto, queda por saber cómo podemos aprovecharnos de esta característica. ¿Cómo podemos lograr que la víctima mande esa cadena a su propio modem?

 Basándonos en que el protocolo PPP, que es el normalmente usado para conectar por modem a nuestro ISP, por defecto no comprime los paquetes IP que viajan sobre él, si la víctima manda un paquete IP de datos hacia el exterior que contenga la cadena "+++ATH0", lo que ocurrirá es que dicho paquete se encapsulará en una o varias tramas PPP, y dichas tramas se enviarán hacia el modem, para que éste las transmita por la linea telefónica, pasando la cadena "+++ATH0" de forma transparente a través del modem. Entonces el modem interpretará el "+++" como la secuencia de escape y ejecutará el comando "ATH0", que viene a continuación, que obliga al modem a desconectar.

 Desde el punto de vista del atacante, para forzar a que la víctima mande la cadena "+++ATH0", hay muchas maneras posibles. Veamos unos ejemplos.

* Ejemplo 1:

[maquina@atacante]$ telnet 192.168.1.1 21
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
220 foo FTP server (Version wu-2.4.2-academ[BETA-15](1) Fri Dec 12
20:41:
USER +++ATH0
^]
telnet> close
Connection closed.
[maquina@atacante]$ telnet 192.168.1.1 21
Trying 192.168.1.1...
telnet: Unable to connect to remote host: Network is unreachable
[maquina@atacante]$

 La explicación es simple. Hemos hecho un ftp via telnet. Cuando nos ha preguntado el usuario, le hemos dicho que era "+++ATH0". Acto seguido el servidor ftp, o sea, la víctima, debió responder con algo como "331 Password required for +++ATH0.". Vemos que la víctima ha mandado sin querer la temida cadena para que el modem cuelgue ;-).
 

* Ejemplo 2:

 Conectamos al puerto 25 ("sendmail") de la víctima y le mandamos:
HELO blah.com
VRFY +++ATH0

 La víctima mandaría la maléfica cadena en una respuesta como:
550 +++ATH0... User unknown
 

* Ejemplo 3:

[maquina@atacante]# ping -p 2b2b2b415448300d -c 5 xxx.xxx.xxx.xxx
PATTERN: 0x2b2b2b415448300d
PING xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx): 56 data bytes

--- xxx.xxx.xxx.xxx ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss
[maquina@atacante]#

 La opción "-p" permite especificar un "pattern" que servirá para rellenar el paquete de ping ("ICMP ECHO_REQUEST"). La víctima responderá con un "ICMP ECHO_REPLY", conteniendo el mismo pattern. El pattern está codificado en hexadecimal y se traduce como "+++ATH0<CR>". No todos los programas de ping soportan esta opción.

* Ejemplo 4:

 El mismo método anterior implementado en C:
gin.c

- - - - - -

 * Nota: en todos los casos, el atacante también envía la cadena "+++ATH0", por lo cual si éste es vulnerable, su modem caerá y el ataque se habrá vuelto contra el propio atacante.

 * Modems vulnerables: no todos los modems son vulnerables a este ataque. Los modems "buenos", o sea, que soportan "Hayes" estrictamente (la patente) no son vulnerables. Esto es porque la norma especifica que después de recibir la secuencia de escape y antes de ningún comando, debe pasar un intervalo de tiempo "vacío" de 1 seg. Lógicamente, en nuestro ataque va todo (secuencia + comando) seguido, sin pausa, por lo que el ataque no sería efectivo. Un ejemplo de modem no vulnerable es el US Robotics.

 Sin embargo, hay otros muchos modems que no siguen la patente; en particular, parece que todos aquellos que contienen el chipset Rockwell, que son bastante frecuentes hoy en día. Ejemplo: Diamond SupraExpress 56k.

 * En todo caso, una forma de protegerse es deshabilitar la entrada manual al modo de comandos. Esto se hace cambiando el código de escape (que por defecto es un 43 ["+"]), y poniendo un valor de 255. La mayoría de los modems reconocen un valor por encima de 127 como deshabilitador manual del modo de comandos, pero otros necesitan un valor superior. Para estar más seguros, usamos 255. El comando completo sería:

  ATS2=255

y se podría introducir en la cadena de inicialización del modem (configurable normalmente en propiedades del modem o en la utilidad de dial-up), de forma que se "ejecute" siempre antes de marcar hacia nuestro ISP.

 * También es posible parchear remotamente un host dado usando la misma técnica del "ping -p" vista para atacar:

 ping -c 1 -p 2b2b2b415453323d32353526574f310d host

(el pattern usado equivale a: "+++ATS2=255&WO1").

 De forma análoga, podemos mandar otros comandos remotos, provocando, por ejemplo, que el modem de la víctima marque a donde nosotros queramos, étc. ¡Muy peligroso!

5.5.- Recursos compartidos.-

 El protocolo Netbios permite compartir recursos (impresoras, discos duros, étc) de un ordenador con otros conectados al primero a través de la red. De esta forma, podemos acceder remotamente a los recursos de una máquina dada: leer ficheros, modificarlos, escribirlos, enviar algún documento a una impresora remota... El abanico de posibilidades es amplio.

 Los problemas vienen cuando este servicio está disponible "públicamente" sin contraseña de acceso: nuestro disco duro estará "abierto al público" }:-). Cualquier hacker podrá leer ficheros nuestros, borrarlos, introducir troyanos... en fín, nada bueno.

 Un gran fallo de Windows 95 (corregido en versiones posteriores, creo que a partir del OSR2) es que los recursos no tienen password por defecto con lo cual si activamos Netbios, ya sea para utilizarlo o por descuido, y se nos olvida proteger los recursos con password tendremos un gran agujero de seguridad en nuestra máquina. Esto no ocurre así en Windows 98 ni Windows NT.

 A pesar de que este problema es ampliamente conocido todavía se ve por el IRC a mucha gente con su disco duro compartido (¡pobres... y ellos sin saberlo!).

 Los pasos para ver si una máquina (IP) dada comparte recursos y para utilizarlos son, *desde Windows NT*, los siguientes:

1.- Asegurarnos de que tenemos el soporte Netbios instalado.
2.- Desde el shell (command.com, ndos, 4dos, étc) hacer:

  c:\> nbtstat -A 195.69.69.69

Notas:

- la IP dada se supone que es la de la víctima
- es importante poner -A y no -a
- no vale un hostname, sólo dirección IP.

3.- Para que tengamos posibilidades deberá salir algo como lo siguiente:

        NetBIOS Remote Machine Name Table
    Nombre               Tipo         Estado
 ---------------------------------------------
 SKORPIO        <03>  UNIQUE      Registrado
 ADMINISTRADOR  <03>  UNIQUE      Registrado
 SKORPIO        <00>  UNIQUE      Registrado
 INSULTOZ       <00>  GROUP       Registrado
 SKORPIO        <20>  UNIQUE      Registrado
 Dirección MAC = 00-00-00-00-00-00

 Debe haber al menos una entrada de tipo <20> para que tengamos algo que hacer =OP

4.- Menú Inicio -> Ejecutar. Introducimos en el cuadro de diálogo:
     \\195.69.69.69

5.- Ahora puede que nos aparezca otro cuadro de diálogo solicitándonos contraseña (en cuyo caso en principio no tenemos nada que hacer... aunque podríamos intentar passwords comunes como el nombre o nick de la persona, étc) o bien directamente se abrirá una nueva ventana donde se muestran los recursos compartidos. Oprimiendo sobre el que queramos tendremos acceso a él.

 La solución a este grave problema de seguridad es tan simple como proteger los recursos con contraseña o simplemente no activar el servicio Netbios si no se va a necesitar. También podemos bloquear los puertos que ofrecen este servicio (en especial el 139) mediante firewall.

 

7.- Resources.

 Este apartado está dedicado, brevemente, a los distintos programas disponibles y útiles a nuestra causa.

 Por ahora no voy a subir ningún programa a este servidor ya que puedes encontrar *TODO* tipo de programas de IRC-War (icmp-nukers, bouncers, flooders, link-lookers, port-listeners, port-bombers, port-scanners, étc) en:
http://www.warforge.com/dos/index.html.

 Puedes encontrar muchísimos scripts para mIRC y una sección interesante sobre el bot Eggdrop en:  http://www.xcalibre.com.

 Los últimos exploits y programas que explotan los bugs más recientes aparecen en:
http://www.rootshell.com.

 Más información técnica sobre IRC (ataques, defensas y mucho más) -todo en español- y con multitud de links en:
http://www.argo.es/~jcea/irc.

8.- Feedback (FAQ).

 En este apartado incluiré las preguntas más frecuentes que me habeis formulado via e-mail algunos de vosotros, para que no se vuelvan a repetir. No pienso contestar mails de forma particular así que no espereis respuesta sino a la próxima versión del documento. Ni qué decir tiene que antes de preguntar leas esta sección; lo mismo alguien tuvo tu duda antes que tú ;-).

1.- ¿Qué script de guerra me aconsejas?

R.- Un script es simplemente algo para simplificar/automatizar tareas. Ningún script es realmente imprescindible tanto para atacar como para defenderse, aunque como digo, en algunos casos sí que puede facilitar la tarea. En este sentido no deberíamos preocuparnos tanto por el script que usamos, sino más bien de tener nuestro sistema correctamente parcheado y protegido y de estar al dia en programas/utils de guerra. Hoy en día (casi) todos los scripts cumplen perfectamente en cuanto a defensa se refiere. Para el ataque un script es tanto mejor cuanto más utilidades (=programas) traiga.

2.- ¿Cómo puedo compilar los programas que se listan en el artículo en mi Windows?

R.- Simple: NO puedes. Estos programas están escritos para entornos UNIX, así que solo podrás compilarlos y correrlos en sistemas operativos de esa familia (como por ejemplo, Linux). No obstante, en algunos casos hay versiones disponibles para otros sistemas operativos. Por ejemplo, cuando el ataque OOB se puso de moda surgieron diversas utilidades que lo implementaban desde Win95.

3.- ¿Y dónde puedo encontrar dichas utilidades?

R.- En la sección de "resources" hay una URL que es muy buena y donde podrás encontrar de todo. Otra opción es utilizar algún buscador y localizar alguna página de IRC-War. Los programas típicos se encuentran en la mayoría de estas páginas, o ebn la seccion de guerra de Pagina personal de CoPS. También puedes buscar webs de H/P/C/V; normalmente todo el material underground se encuentra localizado en diversos puntos de la Red centrados ampliamente en esa temática. Quiero decir que donde hay cosas de Hacking suele haber también cosas de IRC-War, Phreaking, Virus, Cracking... en fin, todos esos temas que tanto nos atraen suelen estas relacionados.

4.- ¿Cómo detectar a alguien que me haga un nuke?

R.- Todos los paquetes que llegan a tu ordenador por el interface de red pueden ser logeados o "visualizados" con la herramienta correspondiente. Sin embargo, hay que tener en cuenta que estos paquetes pueden venir falseados (spoofeados) con lo cual la información que obtengamos no siempre es verídica. De hecho, esto es lo que ocurre con la mayoría de los últimos ataques, en los cuales siempre se usa spoof.

 No obstante, un icmp-nuke normal no suele venir spoofeado y se puede detectar fácilmente (obviamente me estoy refiriendo a un client nuke; si el paquete no te llegara a tí sino al servidor tú no te enterarías de nada). Cualquier programa analizador de paquetes puede valernos. Valgan como ejemplo:
- las propias funciones de logeo que implementa "de casa" el dialer y pila TCP/IP "Trumpet Winsock" (para los que conecten de esta forma, sin usar el dialup de Windows).
- idem para cualquier programa firewall, como el "Conseal".
- "tcpdump" o "sniff-it" para UNIX.
- "ICMP Watch" para Windows.

5.- ¿Puedo evitar los (client) icmp-nukes?

R.- Sí, solo tienes que filtrar los mensajes ICMP que te envíen. Esto lo puedes hacer con cualquier software firewall. En Win95 es bastante usado el Conseal.

6.- En la red xxxxxx hay un tío que siempre me está molestando y no deja de atacarme. ¿Puedes ayudarme?
 
R.- Si he escrito este documento es para ayudar a la gente y sobre todo, para que lo lea. :-P Así que usa la información que aquí se encuentra e intenta sacarle provecho por tí mismo en vez de pedir ayuda a terceros. No tengo tiempo para centrarme en casos particulares, a lo mejor ni siquiera conozco la red xxxxxx. Si tienes alguna duda contacta conmigo y si lo considero conveniente aparecerá solucionada en esta misma sección en la siguiente revisión del documento.

7.- ¿Cómo puedo garantizar mi anonimato en IRC? Actualmente he recibido e-mails con amenazas e insultos de gente de los canales que frecuento, ¿cómo puedo evitarlo?

R.- Una de las ventajas del IRC es precisamente que guarda el anonimato. Todos los datos que el servidor IRC tiene y puede ofrecer sobre un usuario dado son los que previamente uno ha introducido en su cliente IRC, a excepción de la dirección IP desde donde nos conectemos. Por tanto, podemos introducir datos falsos: nombre falso, dirección de correo falsa, étc. Lo único que en principio no se puede esconder es tu dirección IP, que la toma el servidor en el momento de hacer tu conexión TCP al servidor de IRC. Sin embargo, hasta esta última se puede esconder usando algunas de las técnicas descritas en este documento, como el bouncing o el DNS Inject, lo que nos haría completamente anónimos.

8.- El otro día entré en un canal y me dijeron que tenía el puerto 139 abierto... que podían resetearme... ¿Cómo lo puedo cerrar?

R.- Puedes tener el puerto 139 abierto sin que "te puedan resetear": es cuestión de tener el parche contra OOB instalado en tu sistema. De hecho, es un parche obligado. Además no solo es vulnerable el puerto 139. No obstante, si lo quieres cerrar, solo tienes que desinstalar el soporte Netbios (en la configuración de red). Sólo necesitas tener soporte TCP/IP para conectarte a Internet; todo lo demás sobra. Cuantos más servicios ofrezca una máquina más insegura y propensa a ser hackeada será. Hay que procurar abrir únicamente los servicios que realmente nos hagan falta.
 
9.- A un amigo le entraron en su Windows y le empezaron a borrar carpetas. ¿Cómo lo hicieron?

R.- Tendría archivos o unidades compartidas sin password. Windows 95, por defecto, no pone password a los recursos compartidos, lo que es un grave problema de seguridad. Si usas recursos compartidos, ¡no olvides poner un password! Y si no los usas pues ¡no los tengas activados! Para esto último basta con desactivar Netbios (una razón más para tener cerrado el puerto 139). De lo contrario, cualquiera podrá entrar en tu HD: leer lo que quiera, borrar ficheros, modificarlos... ¡Muy peligroso!

10.- ¿Se puede mandar  ataques como land o jolt, o spoofear desde Windows?

R.- La pila TCP/IP que trae Windows tiene ciertas limitaciones que impiden, por ejemplo, el spoof. Sin embargo, hay un programa en fase de pruebas que puede spoofear y mandar muchos de estos ataques desde Windows. Lo hace implementando su propia pila TCP/IP y no usando las funcionas de Winsock normales. Por ahora solo he visto una versión beta que solo funciona en Win95 aunque no la he probado. No pienso dar más detalles hasta que se llegue a algo estable así que no me preguntéis sobre el tema. No contestaré.

11.- Me gustaría saber más sobre los K/G-Lines: en qué consisten, lo que tienes que hacer para que no te hagan uno...

R.- Simplemente es como un ban pero aplicado a hosts o dominios enteros. Es decir, si tu dirección IP o el dominio al que pertenece tienen alguna de estas lines no podrás conectarte a la red IRC, no te dejará. La diferencia entre un K-Line y un G-Line es que ésta última es global, o sea, que se aplica a todos los servidores de la red IRC y por tanto no habrá forma, en principio, de entrar a esa red IRC. Un K-Line se aplica a un servidor en particular de la red; es decir, que se nos deniega el acceso a la red IRC a través de ese servidor, lo que no implica que no se pueda entrar por cualquier otro. También es posible que una misma K-Line esté activa en distintos servidores a la vez (o incluso en todos, lo cual sería equivalente a una G-Line).

Estas lines se suelen poner como respuesta a abusos por parte de uno mismo o de algún otro usuario perteneciente a tu dominio. Para evitarlo, lo único que hay que hacer es portarse bien o al menos ser suficiente bueno y que no te pillen mientras haces cosas malas };-).

12.- ¿Qué es una I-Line?

R.- Es una entrada en el fichero de configuración del ircd que permite variar el número de clones admisibles desde una determinada dirección IP o dominio. La añade un administrador del servidor IRC para por ejemplo permitir la entrada al IRC desde cybercafés (donde normalmente todos los ordenadores se ven como una misma dirección IP) o máquinas multiusuario (universidades, étc).

13.- ¿Qué es un script Perl?

R- Perl es un lenguaje de programación interpretado. Un script (a secas) es algo que automatiza tareas, una especie de programa (así tenemos scripts de IRC, de shell [Unix], étc). Un script Perl es un script de Unix que en vez de usar una shell para su ejecución usa el propio programa de Perl. En definitiva, se trata de un programa escrito para Perl.

14.- Do you have an English translation of this page?

A.- Not at this moment, I hope it will be available soon though. I'm looking for somebody to translate this doc since I'm very busy for doing it by myself.
 
 



El Lado Obscuro. CoPSKiCkS TeaM.
CoPS 1995 - 2001

1