Bienvenido(a) a Grupo Linuxero del Bajío domingo, mayo 19 2019 @ 06:56 CEST

Eliminación de cuentas fantasmas

  • Autor:
  • Lecturas 1,325
GLIB

Este es un anuncio sobre la eliminación de algunas cuentas fantasmas que existían en el GLIB, es una continuación de la depuración de usuarios (ver esto)

Pues a pesar de la eliminación de cuentas que no cambiaron su contraseña, ocurrió que por un fallo en el GeekLog se colaron muchos bots, porque de repente el número de usuarios creció a más de 1000. Analizando estos "nuevos" usuarios se notaban cosa raras, sobre todo en las direcciones de correo que parecian ser ficticias y daban la puntada de ser bots.

Si bien Ceyusa ya había reparado el fallo, quedaban las cuentas dadas de alta, por lo que se me encomendó la tarea de liberar al GLIB de esas cuentas de más. A continuación narro cómo se hizo con fines educativos:

Primero había que analizar qué cuentas crearon los bots. La forma de trabajar de estos es la de colarse en los CMS y crean cuantas cuentas puedan, por lo que usan nombres de usuarios son un tanto aleatorios, pero bajo un dominio de correo en comùn, por lo que con un SQLazo podemos ver la cantidad de cuentas que el GLIB tiene registardo.


$ echo "SELECT email F_R_O_M users" | mysql geeklog -u root -p |  cut -f2 -d@ | sort | uniq -c | sort -rn
    227 hotmail.com
    143 strokersclub.net
    131 sweetsnet.com
    126 yamy.net
    125 dro4ers.net
    115 1stflirt.org
    104 koziavok.net
    103 lovesnake.net
     98 4watcher.com
     82 pornoscop.com
     80 gmail.com
     58 yahoo.com.mx
     44 yahoo.com

Fuera de las de HotMail, GMail y Yahoo (¿quién usa Hotmail exitiendo mejores?), los otros dominios son muy sospechosos y los marcamos en la lista negra.

Para facilitar el borrado usé (sí, adivinen ...) Perl con el módulo DBI. Debido a que hay que alterar 2 tablas que primeramente respaldamos.


#!/usr/bin/perl

use DBI;

my ( $dbh, $sth );
$dbh = DBI -> connect( "DBI:mysql:localhost, database=geeklog", "*******", "*******" );
$sth = $dbh -> prepare( "use geeklog" );
$sth -> execute;

my @uids = ();
my $getBadUsers = "SELECT uid F_R_O_M users WHERE email RLIKE "(strokersclub.net|sweetsnet.com|yamy.net|dro4ers.net|1stflirt.
org|koziavok.net|lovesnake.net|4watcher.com|pornoscop.com)"";
$sth = $dbh -> prepare( "$getBadUsers" );
$sth -> execute;
while( my $uid = $sth -> fetchrow_array )
{
        push( @uids, $uid );
        print "Seleccionado UID=$uidn";
}

foreach my $uid ( @uids )
{
        print "Borrando usuario con UID=$uidn";
        foreach my $table qw( users userinfo )
        {
                my $query = "DELETE F_R_O_M $table WHERE uid=$uid";
                $sth = $dbh -> prepare( "$query" );
                $sth -> execute;
        }
}
$sth -> finish;
$dbh -> disconnect;

Y con eso dimos cuenta de 1027 cuentas de bots, por lo que ahora GLIB tiene como 500 usuarios registrados. Pido disculpas si tu cuenta fue borrada, basta con que la des de alta de nuevo. Cualquier contratiempo me avisan.

LINXE

NOTA DEL EDITOR: debido al uso de mod_security, se bloquean todas las instrucciones SQL inyectadas por HTTP, así que modifiqué el FROM para darle la vuelta. Pese a eso creo que queda muy claro el código.