RareGaZz16:(r16_10):21/10/1999 << Back To RareGaZz16


---- { R16_10 } -------------------------------------------------------------- -------- { IRC POR TELNET (2º. PARTE) } -------------------------------------- --- { Senpai } En respuesta a todos los emails que me habeis enviado pidiendome mas informacion sobre el articulo anterior, os escribo este. Espero que os guste. Cuando os conectais al servidor de irc, os conectais como clientes, pero que es un cliente en irc?, que es un operador de irc? que es un servidor de irc? Las respuestan parecen evidentes, pero siempre conviene aclarar los conceptos basicos para entendernos todos. Servidor: Los servidores son el sistema nervioso del irc, y proveen de un puerto (o varios) al cual se pueden conectar los clientes, y de otros puertos para conectar servidores entre si, formando una red. Cliente: Es cualquier cosa que se conecte a un servidor, y que no sea un servidor. Los clientes se distinguen de otros por el nick; ademas todos los servidores de la red tienen que saber el nombre del host donde esta el cliente (en otras palabras la ip), su nombre de usuario en ese host, y el servidor al que esta conectado. Operador de un canal: Pues eso el que tiene la arroba (@). Los operadores de un canal tienen cierto poder sobre este, para mantener el control sobre el canal, para ello tambien disponen de unos comandos como el KICK, TOPIC, ... Operador de irc (ircop): Son una clase especial de clientes, y su funcion es la de hacer tareas de mantenimiento de la red. Para hacer estas tareas, disponen de comandos que solo un operador puede ejecutar (como el KILL, SQUIT, ...). Ya que estoy escribiendo sobre los operadores, voy a curiosear un poco en los comandos que solo un operador puede ejecutar, por ejemplo: OPER <usuario> <password> Este comando se usa para conseguir los privilegios de operador. Si se da el nombre de usuario y el password correctos, el servidor pone el modo +o (operador) al nick del cliente. Mmmm.. parece tentador, voy a cotillear un poco: oper :pulsar.irc-hispano.org 461 senpai OPER :Not enough parameters oper senpai ppppp :pulsar.irc-hispano.org 491 senpai :No O-lines for your host O-lines? y eso que es?! Bueno pues supongo que para poder ser ircop, tu host debe estar dado de alta en el servidor. Protocolo usado en el irc. La comunicacion entre el cliente y el servidor se realiza mediante el protocolo TCP/IP, lo cual nos da conexiones bastante seguras y en teoria dificiles de "spoofear"... y en la practica tambien :). Para muestra un boton: Estos son los paquete capturados con el TCPDUMP, aqui se realiza una operacion de tipo KICK #canal nick. La operacion no tuvo exito pues no tenia el status de operador, pero para verlo como ejemplo del protocolo TCP es valida. 62.82.34.8.1025 > 194.179.106.120.6667: P 1456147214:1456147239(25) ack 1307410323 win 31856 <nop,nop,timestamp 82547 114817822> (DF) [tos 0x10] Aqui envio el comando KICK #canal nick 194.179.106.120.6667 > 62.82.34.8.1025: . ack 25 win 31920 <nop,nop,timestamp 114822385 82547> (DF) 194.179.106.120.6667 > 62.82.34.8.1025: P 1:76(75) ack 25 win 31920 <nop,nop, timestamp 114822388 82547> (DF) Estos dos paquetes son la respuesta del servidor al comando. 62.82.34.8.1025 > 194.179.106.120.6667: . ack 76 win 31856 <nop,nop,timestamp 82576 114822388> (DF) [tos 0x10] Envia un asentimiento como que ha recibido la respuesta. Ahora un poco de explicacion: Lo que veis como ip1:puerto > ip2:puerto son: ip1: host origen e ip2 host destino, con sus respectivos puertos. ack numero: Numero de asentimiento. win numero: numero de bytes que pueden enviarse sin tener que recibir acuse de recibo (ack). Un numero de 0 indica que el receptor no puede recibir mas bytes por el momento. (DF): Flag Dont Fragment, indica que el paquete no se puede fragmentar en el camino de origen al destino. Otro ejemplo: Aqui se envia el comando: MODE +o #canal nick 62.82.195.177.1025 > 194.179.106.120.6667: P 4097088631:4097088658(27) ack 3996150179 win 32120 <nop,nop,timestamp 36617 137014433> (DF) [tos 0x10] Se envia el comando. 194.179.106.120.6667 > 62.82.195.177.1025: P 1:74(73) ack 27 win 31968 <nop, nop,timestamp 137018474 36617> (DF) El servidor envia la respuesta. 62.82.195.177.1025 > 194.179.106.120.6667: . ack 74 win 32120 <nop,nop, timestamp 36640 137018474> (DF) [tos 0x10] El cliente envia el asentimiento. Con estos dos ejemplos podemos ver claramente una cosa: El servidor ejecuta el comando al recibirlo y envia la respuesta, con lo cual si quisieramos hacer spoofin sobre un cliente ya conectado, "solo" tendriamos que adivinar el puerto del servidor al que se conecta el cliente, el puerto que usa el cliente para conectarse, y el numero de secuencia del paquete que tenemos que enviar. Como se puede observar adivinar todas esas cosas parece dificil, pero no lo es tanto si tenemos en cuenta que la mayoria de la gente se conecta al puerto 6667 del servidor, que las conexiones en los clientes se suelen situar a partir del puerto 1025 y no demasiados puertos mas arriba (normalmente la gente se sule conectar al irc nada mas realizar la conexion con internet). Lo realmente dificil es adivinar el numero de secuencia a enviar. En la actualidad tengo en desarrollo un pequeño programa que envia paquetes TCP con ordenes para irc al puerto que queramos spoofeando al cliente. Cuando sea un poco mas funcional lo subire a la lista. Si alguien tiene alguna idea sobre todo esto que me escriba a senpai@cyberdude.com, con cualquier sugerencia o lo que sea. Si habeis encontrado algun fallo en el articulo tambien me gustaria que me lo dijerais antes de empezar a ponerme verde. Para mas informacion leeros la RFC1459.