Blogs Teoriza
Acceder · Crear usuario
Anunciarse
Canal Personal   GONZO · Mia

Categoría IRC

Captcha para validar usuarios en chat IRC

El punto débil de una red IRC es que hoy en dia conectar a ellas es trivial. El problema viene cuando se conectan usuarios masivamente con programas automáticos para atacar la red, propagar virus o hacer campañas de spam.

Con la evolución de internet los problemas han ido evolucionando y hoy en dia es casi imposible controlar las conexiones por IP ya hay miles de máquinas infectadas por troyanos o que dan servicios que pueden ser utilizados publicamente de forma descontrolada. La solución que propongo es una implementación de los conocidos sistemas de validación por imagenes o capcha que ya abundan por toda la red.

Consisten en mostrar en los formularios una imagen con un numero, este ha de ser visualizado e introducido en un campo, el numero esta desfigurado de tal forma que sea muy difuso para que lo entienda un programa OCR y natural para un humano. La idea es la misma pero en IRC, es decir dibujando los numeros en ASCII de la forma mas aleatoria y complicada posible pero siempre siendo entendible por cualquier humano.

Las formas de aplicar el sistema capcha son variadas, pero la más inovadora que se me ocurre es hacer validar on connect a todos los usuarios sin registrar. De esta forma para conectar a la red tendria que validar o registrar el nick (más faciles de gestionar) limpiando la red de ataques, virus y spamers. El resultado es algo así:

Hola, si eres humano teclea este numero por favor. ############################# ############################# ############################# ############################# ############################# ############################# #############################

He liberado el código de este programa aquí.

 

43 GONZO
18-03-2005

mIRC scripting, mi comienzo en programación.

A principios del 2001, ya con suficientes nociones de internet y IRC, con apenas 15 años, descubro la programación que trae el famoso programa cliente mIRC. Para mi, el lenguaje de programación tenia las cualidades ideales para comenzar. Los programas no necesitaban compilarse para que funcionasen: simplemente con un botón abres el editor de texto, modificas el código y listo.

Otra ventaja es lo fácil y estructurado del lenguaje, la verdad es que me encanta, aunque como lenguaje se queda corto en potencia. Pero para hacer programillas sencillos y funcionales en redes de chat es el mejor.

Me pareció tan interesante y entretenido que comencé a buscar tutoriales e información, después de haber intentado intuir como funcionaba, pero no logré hacer nada: era programación y debía conocer el lenguaje. Recuerdo que los manuales con los que aprendí son los de la queridísima web ChevalierIRC.com.

En su sección scripting tiene unos 7 manuales, cada manual es un tema empezando desde los comandos básicos y acabando por control de sockets y ventanas. Leyendo y haciendo programillas para comprobar lo aprendido en un par de meses ya controlaba bastante. Hice programas para facilitarme las tareas en el IRC, protecciones y ese tipo de cosas.

Después cada idea y cada comienzo era lo más parecido a empezar un proyecto, con unos objetivos finales, una serie de versiones, pruebas y manuales pulidos hasta lograr la idea inicial. Poco despues comencé el proyecto InfoneR que publicaré más adelante.

11 GONZO
03-06-2004

Pol el Pueblo Virtual

 

Actualización 2008: Estamos desarrollando de nuevo POL 3.0 vía web, entra aquí: http://www.virtualpol.com

Abril, 2004. Uno de tantos días por internet, un tal Cheme llega hasta mí para preguntarme si tenía información sobre los mensajes globals; necesitaba saber datos técnicos de impacto de visitas, consecuencias y demás temas, y como he preparado varios para el Certamen del canal Literatura le informé gustosamente sobre todo lo que me preguntó.

 

Me contó que el hispano iba a promover su iniciativa, un Pueblo Virtual. Me quedé un rato pensando a lo que podía referirse con "Pueblo Virtual". Me imaginé un montón de cosas muy interesantes, le dije que era una gran idea aún sin conocer de qué iba el tema.

La idea consiste en crear un sistema político y social tan complejo (relativamente) como la vida misma. Para ello disponen de su web oficial VirtuaLPoL.com (dominio actualmente caducado) que incluye desde la Constitución aprobada por el parlamento, periódicos, código penal y muchas cosas más...

Me encantó tanto la idea que propuse hacer un Bot para el canal. Era lo que le faltaba al Pueblo, un sistema automatizado y en tiempo real con el que conseguir información. Consiste en un programa que conectado al IRC ofrece una serie de información y hace determinadas acciones interactuando con comandos de texto. Me decidí a hacerlo, programando en scripting de mIRC, el cual a estas alturas domino perfectamente, (pocas cosas puedo decir tan seguro) y actualmente el programa ya tiene 1058 lineas de código y sistemas de cargos, dinero, cuentas bancarias, votaciones, partidos y más sistemas que contaré más adelante...

En principio el bot es de mi propiedad, aunque es para los miembros de la Junta, de la que soy miembro. Esta Junta está formada por los creadores del Pueblo y nos encargamos de su mantenimiento pero sin interferir de ningún modo con el mundo. Por seguridad me reservo de publicar íntegras las 1060 lineas de código del VirtuaLPoL, al menos de momento. Pero aprovecharé mi flamante WebLog para publicar fragmentos peliagudos, como por ejemplo el código encargado de contar cada voto o el sistema de bases de datos o incluso algún día lo publicaré completamente.

La primera decisión antes de empezar a programar el VirtuaLPoL era decidir el lenguaje y la plataforma. Las dos opciones que teniamos era una conbinación de los lenguajes PHP y MySQL y alojado en un hosting web. Las ventajas era muchas y los resultados muy buenos pero mi falta de conocimientos del lenguaje y la dificultad de implementar lenguaje web PHP al protocolo de redes de chat IRC nos hizo elegir la otra posibilidad, scripting de mIRC mantenido por alguien de la Junta.

VirtuaLPoL necesita un sistema de bases de datos en las que almacenar la información de cada ciudadano, las cuentas bancarias, partidos políticos y demás. En scripting de mIRC no existe ningún sistema para ello, en cambio me tuve que inventar una forma de guardar organizadamente toda la informacion. Lo conseguí creando varios archivos de texto Ciudadanos.ini, Partidos.ini, etc... En cada archivo cada línea representa una fila y en cada fila hay campos separados por el carácter ":". Luego, se sacan o ingresan los campos a base de bucles haciendo búsquedas y demás temas complejos de programación, pero así funciona basicamente. De esta forma está resuelto el primer reto del bot VirtuaLPoL.

Como excepción he decidido publicar el fragmento del código que se encarga de validar y guardar el voto de las votaciones. El comando es VOTAR elección. Debo advertir que el fragmento es complejo y hay que dar por hecho que antes de llegar ahí el bot hace las comprobaciones necesarias certificando el nick como ciudadano de pol y dando a la variable %línea el número de línea que tiene ese nick en la base de datos. El código lo encontraras ampliando este texto pulsando en "Leer mas...".

Suerte a los curiosos! Podéis preguntarme lo que os apetezca comentándolo en este artículo. Un saludo a todos. Próximamente, más.

; Comando VOTAR eleccion
if ($1 == votar) {
; Si hay alguna eleccion
if ($2 != $null) {
; Si el campo de votacion no vale 1, 1 significa que ya se ha votado
if ($gettok($read -l $+ %linea ciudadanos.ini,7,58) != 1) {
; Comienza el bucle que busca la eleccion entre las elecciones de la votacion actual
set %s 0
:s.re
inc %s 1
if ($gettok(%elecciones, %s ,32) == $2) {
; Si existe esa eleccion
set %eleccion. $+ %s $gettok(%elecciones, %s ,32) $calc($gettok(%eleccion,2,32) + 1)
inc %num.votaciones 1
; Guarda log.
write -l $+ $calc($lines(votoslog.ini) +1) votoslog.ini $fulldate --- $address($nick,0) --- $nick vota a $2
; Te marca con un 1 como ya votado
write -l $+ %linea ciudadanos.ini $gettok($read -l $+ %linea ciudadanos.ini,1-6,58) $+ :1: $+ $gettok($read -l $+ %linea ciudadanos.ini,8-10,58) $+ :
; Envia confirmacion correcta de voto
.timerVOT 1 1 msg $nick 2,0 Has votado a $2 $+ . Gracias
goto final
}
; Si hace el bucle mas veces del numero de votos que hay
if (%num.elecciones == %s) {
; La eleccion obviamente no existe
.timerCBB 1 1 msg $nick 2,0 La eleccion no existe.
goto final
}
; Semilla que genera el bucle
goto s.re
}
; Cuando tu valor es 1 osea ya has votado
.timerWER 1 1 msg $nick 2,0Ya has votado una vez :)
; Fin
goto final
}
}

 

7 GONZO
03-06-2004

Visualizar códigos en mIRC sin riesgo

Un truquillo util para cuando te enseñan un código sospechoso de ser maligno por ejemplo oculto con $encode() o $chr() una forma segura de visualizarlo en un /echo y ver realmente que hace sin temor a que se pueda ejecutar. Cargar este alias y luego para usarlo /analiza.

alias analiza {
var %c $$?="Codigo a analizar"
$iif($chr(124) !isin %c,.timerA 1 0 echo 2 %c, echo 4 Contiene $chr(124) Separa los comandos.)
}
3 GONZO
04-07-2005

Liberando Software: captcha para IRC, para comprobar humanos con mIRC

En Marzo de 2005, en mi época de IRC. Enredando en este tipo de chat (hoy en declive) perdía el tiempo aprendiendo a programar un lenguaje de puertas cerradas llamado scripting de mIRC (es similar a C, sin compilación, solo ejecutable en mIRC, que por cierto es emulable en Linux con Wine).

Una de tantas aventuras fue la idea de crear un captcha en IRC, obviamente en texto plano. Entonces los captchas eran algo desconocido, empezaban a usarse en las webs, en cambio hoy te los puedes encontrar hasta para comentar.

Un captcha es una prueba que hace el servidor a un usuario para determinar si es un humano o no. Esto es fundamental en IRC por ejemplo para frenar y defender una red de ataques de clones (tan frecuente como el spam).

Mi captcha conseguía renderizar un numero aleatorio a una especie de gráfico con caracteres. Ademas lo ofusca con diversas tecnicas como fuentes de numeros distintos que varían aleatoriamente.

Aquí una muestra:

Hola, si eres humano teclea este número por favor. ############################# ############################# ############################# ############################# ############################# ############################# #############################
Esta tecnica es muy segura, en mi opinion es casi imposible que se consiga hacer un anti-captcha que se salte esta tecnica... porque con un minimo esfuerzo se pueden añadir nuevas fuentes de numeros (se podrían hacer infinitos numeros distintos, para entender esto ver fuentes.ini). Simplemente añadiendo una nueva fuente obligaria al que intente cazar este sistema a analizar de 0 los captchas para detectar todos los nuevos numeros y reprogramarlo. Un infierno...

Además se puede complicar más añadiendo cuadrados aleatorios en medio del numero, lo cual dificultaria su lectura un poco pero aumentaría exponencialmente su seguridad.

Me habría encantado implementarlo en el IRC-Hispano, pero pasaron de mi idea. La verdad es que hubiese sido divertido asegurar una red entera liberandola de bots de spam y clones de ataque, pero me di cuenta de que a esta gente le interesa que hayan clones, porque inflan sus estadísticas y así sus anunciantes les pagan más.

Como ando muy agradecido e involucrado con el Software Libre, voy a liberar este programa a todo el mundo que quiera echarle un vistazo, probarlo, utilizarlo, mejorarlo, rehacerlo... lo que queráis siempre que se respete razonablemente mi autoría.

Archivos (3):

  • captcha-IRC.mrc 1.0 [3kb] - El código fuente, crea un evento y el alias /validar.
  • fuentes.ini [2kb] - Las fuentes de números con distinto tamaño y forma, se pueden añadir cuanto se quiera.
  • validaciones.ini [0kb] - Log (vacio) para guardar quien consigue pasar el captcha y quien no, a partir de esto se pueden crear muchas aplicaciones.
Cómo instalarlo y usarlo en mIRC:
  1. Descargar los 3 archivos de arriba (abriendo uno a uno haciendo: Guardar como...)
  2. Guardarlos en el raíz de tu mIRC (ejemplo: c:/mIRC/)
  3. Ejecutar en mIRC: /load -rs captcha-IRC.mrc
  4. Ya está. Lo puedes probar con el comando /validar NICK esto enviará a ese nick una consulta captcha, notificará su acierto o error y lo registrará en validaciones.ini.
Para desinstalar: /unload captcha.IRC.mrc

4 GONZO
25-11-2007

Troyanos pillados en acción dando datos de conexión en canales de IRC

Investigando viejos fantasmas el pasado con mi MC (script mIRC que versioné del matachinches que utilizaban algunos opers del hispano) extraigo una pequeña muestra de que la inseguridad en Internet es permanente y constante.

Al grano. Un año atrás, mientras perdía el tiempo operando en el IRC-Hispano, iba mejorando cada detalle de mi "MC" que era una gran revolución para tener el control de la red frente a ataques de clones, por muy diversos que sean. Investigando me encontré con un patrón de bots, que en un principio pensé que eran clones para atacar (eran mi objetivo) pero estos eran distintos.

Consultando y probando descubrí que no hacian nada salvo estar conectados 24h, y intermitentemente entran y salen a unos canales aparentemente aleatorios pero que pude comprobar que tenian una lista común interna de unos 10. Cada vez que entraban a un o de estos canales dejaban un mensaje... sorpresa!

> Optix_Pro_v1.32_Server_Online:_{Ip_address:_[192-168-0-2]} {Computer_Name:_PUESTO1} {Current_User_Name:_Maquina1} {Identification_name:_Katabatic} {Installed_Trojan_Port:_3410} {Installed_Trojan_Password:_400400} {Windows_Version:_Windows_XP_5.1_2600_Service_Pack_2} {Webcam:_No} > Optix_Pro_v1.3_Server_Online:_{Ip_address:_[192-168-1-5]} {Computer_Name:_CASA-2F5VM1VE5T} {Current_User_Name:_antonio} {Identification_name:_Ahí_lo_llevas} {Installed_Trojan_Port:_3410} {Windows_Version:_Windows_XP_5.1_2600_Service_Pack_1} {Webcam:_Yes} > Optix_Pro_v1.3_Server_Online:_{Ip_address:_[192-168-0-128]} {Computer_Name:_PORTATIL} {Current_User_Name:_ROVIRA} {Identification_name:_Ahí_lo_llevas} {Installed_Trojan_Port:_3410} {Windows_Version:_Windows_XP_5.1_2600_Service_Pack_2} {Webcam:_No} > Optix_Pro_v1.3_Server_Online:_{Ip_address:_[192-168-1-65]} {Computer_Name:_CASA}{Current_User_Name:_aa} {Identification_name:_Ahí_lo_llevas} {Installed_Trojan_Port:_3410} {Windows_Version:_Windows_XP_5.1_2600_Service_Pack_2} {Webcam:_No}
Captura:

troyanos irc gonzo mc optix (ampliar)

Emm, está claro: son Troyanos.

El bicho parece llamarse Optix ¿? y estos canales de IRC son el medio utilizado para reportar al atacante los datos para poder acceder a estas máquinas. La dirección IP, el puerto y información extra para identificar cada máquina como el nombre del equipo, nombre de usuario, versión del Windows... y la guinda del pastel: ¿Webcam? Yes

Recuerdo que, cuando era mi menester, vigilaba estos raros y desconocidos canales en espera del supuesto atacante en busca de recolectar sus fechorías. Recuerdo pillar a más de uno anecdóticamente, pero resulta que ninguno sabia nada de los troyanos y que entró en estos canales aleatorios por casualidad. Claro.

4 GONZO
04-11-2006
◄ Página anterior
Blogs Teoriza
Ocio Tecnología Cuidarse Informática Contactos Cultura Vacaciones Interesante Místico Personal
Ocio Alarmas Intimidades Hosting Chat Poesías Hoteles CompraVenta Tarot GONZO
Juegos Tecnología Salud Adsl Messenger Mundo Viajes Videos Videncia Mia
CineTV Inventos Internet Música EnCrucero Polémicas
Deportes Virtual Seguridad ComoHacer Turismo Legalidad
Motor Ubuntu Actualidad
Hardware
Enlaces: MovilZona

Creative Commons License
Blogs Teoriza™ · Red de Blogs · · Aviso Legal · 2003-2010