Regístrate!
GONZO Mia Intimidades Chat Ocio Hosting Tarot Alarmas Hoteles Poesías

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

Comentar Autor: GONZO Comentarios: 6 Fecha: 25 November 2007
Categorías: IRC, Retos, Conocimientos

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.

Comentar Autor: GONZO Comentarios: 3 Fecha: 4 November 2006
Categorías: Internet, Descubrimientos, IRC

anticlonesx v1.3 addon para mIRC detener ataques de clones en IRC

Nueva versión de mi addon anticlonesx el que mejor funciona a la hora de defender un canal de ataques de clones. El addon es para mIRC y funciona bloqueando temporalmente un canal de IRC y de esta forma impidiendo el paso.

La nueva versión soluciona algunos bugs poco importantes, el código es más rápido y detecta más patrones de clones. Quizá notareis más falsos positivos, pero no saltará la proteccion ni si quiera durante un split porque deben saltar 3 falsos positivos seguidos y en menos de 3 segundos para que actue el bloqueo.

Instrucciones de instalación:

  1. Descargar o visualizar este archivo: anticlonesx.mrc (v1.3)
  2. Guardar como… de tal forma que el archivo quede colocado en el directorio raiz de tu mIRC. (ejemplo: c:\mIRC\anticlonesx.mrc)
  3. Ejecutar /load -rs anticlonesx.mrc
  4. Ya está. El anticlonesx quedará activado y sin necesidad de ningún control por parte del usuario.
Comentar Autor: GONZO Comentarios: 3 Fecha: 11 July 2006
Categorías: Proxys, IRC, Weblog, Proyectos, Recomendaciones

Proxy list, lista de proxys para conectar al IRC chat

209.63.57.11:80
86.105.241.240:3128
84.52.1.135:3128
81.92.99.5:3128
71.197.161.5:3128
69.19.14.10:3128
209.172.43.194:3128
69.248.89.131:4480
68.32.84.54:6588
201.14.77.26:6588
201.10.161.207:6588
71.197.204.237:7212
70.190.3.41:7212
59.144.162.90:8000
203.113.130.49:80
200.76.36.195:3128
202.58.86.3:80
203.162.168.163:80
203.150.27.133:8080
203.113.130.59:80
202.58.86.2:80
202.58.86.6:80
216.216.32.194:8080
193.166.153.15:80

Una de proxys de irc para… en realidad no se para qué las quereis, pero me lo pedis cada dia. Ya me contareis que tal van, estan actualizados, son de hace 120 segundos.

Comentar Autor: GONZO Comentarios: 87 Fecha: 3 April 2006
Categorías: Proxys, IRC

Anti-clones MC

mc matachinches

En mi tiempo de OPER del hispano pocas cosas me divertian más que glinear clones. Frecuentemente, (unas 8 veces al dia) saltaba la alarma de joins masivos y posible ataque con clones y con el caidas por flood y molestas para los usuarios, habia que parar el ataque para ganar.

Al principio se me ocurrió crear el anticlonesx que contrastando las coincidencias de patrones habituales con los nicks en el evento JOIN (al entrar a un canal) era capaz de detenerlos en el mismo instante en el que entraron. Cumplio su función y aún hoy sigue siendo útil, incluso sigue siendo un addon incluido en el script de opers.

Pero solo funcionaba con patrones conocidos, aunque lo mantenia muy actualizado no siempre era efectivo y sobre todo dejaba de ser lo optimo pues el ataque en realidad se producia, los clones entranban y despues eran baneados, había que mejorarlo.

Y llegó el MC, en realidad fue una mejora de un programa que ya tenian, el MataChinches (no recuerdo quien lo programó, creo que nunca fue oper) consistia en sacar los datos de un who y mostrarlos en una lista tipo ListBox y con el raton seleccionar y expulsar del chat (a partir de ahora glinear). Esta era la unica manera de glinear masivamente y defenderse de un ataque masivo. Curiosamente (y con parte de razón) el uso de este tipo de herramientas estaba totalmente prohibido, bajo pena de… vete a saber qué ;) Y digo con razón porque la verdad es que era un peligro, si mezclas descuidos, nervios y falta de conocimientos podrias expulsar a 400 usuarios facilmente (al final acabé poniendole un limite de max 100 glines para curarnos en salud)

No fueron pocas las discusiones sobre los “automatismos” que en verdad simplemente era una herramienta para facilitar el trabajo y poder contrarrestar los ataques que muchas veces quedaban impunes (y siguen quedando). El caso es que empezó siendo una herramienta mia exclusiva y secreta, que despues pasó a manos de mi confianza, luego a otras confianzas y más y al final resultó que lo tenian casi todos los opers y con ello el peligro se hacia notable. No niego que estuviesen capacitados para usarlo de forma segura pero no se, yo me confundi un par veces quizá el peligro era yo ;) Pero fue divertidisimo, al final acabé glineando más de 10.000 proxys en unos meses (me “prohibieron” glinear jejeje) y acabé conociendo a todos los que atacaban, muchos de ellos lo hacian por divertirse sin atacar realmente y pasamos ratos divertidos, cuantas veces me habran pedido este addon! seguro que les hará gracia, espero que comenteis algo por aqui.

Y bueno, en definitiva el MC llegó a lo que se ve en la imagen, compacto y funcional, cumplio su cometido y fue mantenido “privado” pero a estas alturas me creo que los nuevos opers ya lo tendrán y como que es hora de publicarlo y ya está, el código no lo publico sencillamente porque hace falta +k para usarlo (por los who masivos) además aún tiene utilidad y se puede mantener actualizado para los nuevos patrones.

Comentar Autor: GONZO Comentarios: 20 Fecha: 26 August 2005
Categorías: IRC, Interesante, Proyectos

anti-spam y patrones en IRC

Hace un par de meses IRC-Hispano añadió un nuevo tipo de clones que pululan por la red. En concreto entran a canales grandes, a veces se acumulan un par de ellos y normalmente son expulsados por parecer spamers. Y no es que hagan spam pues precisamente su funcion es la contraria la cual claramente se puede comprobar si pruebas a hacerle spam en query a alguno de estos clones. Como novedad estos tienen un patrón definitivo, lo llamo asi porque su nick, identd y realname es tan variable y tan aleatorio que es imposible de localizar por medio de /who. Tanto es así que son confundidos habitualmente como spamers y son expulsados.

Para no confundirlos con spamers se puede listar su IPvirtual mediante el comando /who y si sale una lista de tamaño considerable (más de 50…) y tiene clones que son webchats pues claramente son del IRC-Hispano en la lucha anti-spam. Al ejecutar por ejemplo /who *AL9aZa.AYa6b7.virtual x saldrá algo asi:

/who *AL9aZa.AYa6b7.virtual x
VSoy!GS|UF5oUu@AL9aZa.AYa6b7.virtual ICgo-O8NhpO4
sUgG7N!fxnSiUMQkj@AL9aZa.AYa6b7.virtual 5DqT
W0n-SGP3LpSY-!SaDw84q@AL9aZa.AYa6b7.virtual qXpJq6o
IU6Y1FLHtfK!N1Aia@AL9aZa.AYa6b7.virtual mi|JEM10S|
kzIQCboY!bLsc4LkaL@AL9aZa.AYa6b7.virtual rsBIgo
j0vClFg7!SFGFk3B6@AL9aZa.AYa6b7.virtual jt5n3k
pvPiNoT!CQXyxEeP@AL9aZa.AYa6b7.virtual CLN-E1ie
i5xmB046!4CmJvlH@AL9aZa.AYa6b7.virtual HQRD|-UIu

Comentar Autor: GONZO Comentarios: 15 Fecha: 20 July 2005
Categorías: IRC, Interesante

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.)
}
Comentar Autor: GONZO Comentarios: 3 Fecha: 4 July 2005
Categorías: IRC, Conocimientos

Trabajar con datos en Scripting mIRC

Una carencia del lenguaje Scripting de mIRC es el trabajo con bases de datos. Si haces un bot de un juego más o menos complejo necesitarás almacenar datos de cada jugador con puntuaciones o configuraciones, o un bot que se encarge de recopilar datos para estadisticas por ejemplo, en cualquier caso necesitarás un sistema para almacenar los datos y trabajar con ellos de la forma más rápida posible.

Entre las opciones que a uno se le puede ocurrir estan trabajar con variables pero es mala idea, porque es posible que se borren en un mal cierre y a la hora de hacer copias de seguridad no es nada facil, aunque la velocidad sea optima no se puede usar. Otra opcion es guardar los datos en texto plano y mediante bucles, /write y $read() buscar y sacar la información, esta formula usé para programar la primera versión del VirtuaLPoL fue una solución válida pero su rendimiento era lamentable, además el coste de programación se desorbitó hasta tener más de 1300 lineas de código. Otra opción es añadir .dll especiales para el efecto como la dll para conectar a bases de datos SQL, pero no me gusta añadir addons ni dll al mIRC.

La solución más fácil que propongo es trabajar con archivos .ini Son archivos cuya estructura permite guardar y extraer datos incluso sacar totales de items y similar. Su estructura es la siguiente:

[seccion]
item1=contenido del item1
item2=contenido del item2


Hasta aquí bien, usando /writeini y $readini() trabajas con los datos, ahorrando bucles y de forma muy eficiente. Pero surge un problema, al trabajar con nicks te das cuenta que estos tienen caracteres que el item no acepta entonces es imposible trajar bien con inis, pues la clave es el item y si trabajas con nicks y sus datos es necesario que el item sea el nick. La solución que propongo a este problema es codificar el nick con $encode($lower(ELNICK),m) de esta forma el nick [Prueba^_ se convertirá en W3BydWViYV5f que es aceptado como item. Ahora solo es añadir ese código cada vez que se tenga referenciar el item y problema resuelto. En el contenido puedes usar separadores (yo siempre uso “:” y “.”) y con $gettok() gestionar los datos de cada item.

Comentar Autor: GONZO Comentarios: 0 Fecha: 3 July 2005
Categorías: IRC, Conocimientos

Categoría IRC Internet Relay Chat y Scripting de mIRC