22 marzo 2011

Malditos Spammers

Los spamers están cada día más organizados y la verdad es que hay una verdadera mafia entorno a todo este mundillo. No es ninguna novedad esto que comento, pero la verdad es que es difícil llegar a interceptarlos dado que usan programas que se ‘autoeliminan’ una vez terminada su función.

La forma de trabajo de esta gente suele ser algo así:
  • Infectan equipos con troyanos, awares, virus y demás vainas (por los métodos habituales como fallos en navegadores, aceptación de activex no confiables por usuarios confiados, ejecución de programas que no son lo que parecen, etc).
  • Esos programas roban contraseñas almacenadas en los equipos, entre otras, las de acceso a servidores FTP, en el caso de que tengas una web (¡quién no tiene una web hoy en día!).
  • Teniendo el usuario FTP y el dominio, sólo queda hacer una conexión, subir un script y ejecutarlo vía web.
  • El script comienza a mandar mails a diestro y siniestro a una velocidad increíble.
  • Termina su trabajo y, en la mayoría de los casos, se autodestruye.
¡¡Cuánto daño se puede en tan sólo unos minutos!! La verdad es que los logs del sistema llegan a asustar cuando algo de esto sucede.

Consecuencias:
  • La IP de tu servidor empieza a aparecer en listas de spam, que muchas de ellas tardan 1 mes en borrarte tras enviarles la solicitud (siempre se puede tardar menos si pagas).
  • Los servidores más estrictos (como hotmail) te rechazan todos los correos hasta no estar ‘totalmente limpio’.
  • Tus clientes no pueden mandar correos y comienzan las quejas y problemas.
Soluciones:
  • Desactivar la ejecución de cgis, de perl y de PHP en aquellas cuentas que no sea estrictamente necesario.
  • Por supuesto, una buena configuración del servidor SMTP.
  • Obligar a tus clientes a cambiar las contraseñas cada X tiempo.
Haciendo limpieza en mi equipo me he encontrado con un backup que hice, hará aproximadamente un año, de unos scripts que intercepté en uno de mis servidores dedicados.

Tras abrirlo en una máquina virtual, sin acceso a Internet, podemos ver un menú (en ruso) que ofrece diferentes opciones:


Buscando información en Google acerca de DirectMailer llegamos a la página web del autor (http://www.yellsoft.net) donde venden este software por 200€ (o $240):


Usando el traductor de Google podemos ver que se trata claramente de un software orientado a envío de spam.

El autor lo describe como un software que permite envío anónimo de correos y, capaz de usar todos los recursos del hardware para realizar su fin. Además, una vez instalado, posee una interfaz gráfica para que, hasta el más lerdo pueda usarlo:





200 euros de programa para que luego me lo dejen gratis en mi servidor. ¡¡Qué detalle!!

Bueno, y ya que han sido tan amables de regalármelo, totalmente gratis, quería compartirlo con vosotros :)



El script principal (dm.cgi) está en Perl y podemos ver varias cosas interesantes:

my %c = (

 ver   => '1.6.8',
 rel   => 'u999999999999',
 path  => $ENV{'SCRIPT_FILENAME'},
 addr  => $ENV{'SERVER_ADDR'},
 name  => $ENV{'SERVER_NAME'},

 mailbase => './upload/mailbase.txt',
 from  => './upload/from.txt',
 replyto  => './upload/replyto.txt',
 subject  => './upload/subject.txt',
 letter  => './upload/letter.txt',
 attach  => './upload/attach.txt',
 proxy  => './upload/proxy.txt',

 dns   => '194.186.45.226',
 threads  => 200,
 timeout  => 5,

 charset  => 'koi',
 mailer  => 'outlook',
 priority => 'normal',

 proxyer  => 10,
 proxycn  => 1,
 proxywr  => 1,
 proxyrd  => 1,
 proxyup  => 30,

 ctime  => 3,
 local  => hostname || 'localhost',

Por un lado, tiene una serie de ficheros TXT de donde coge todos los datos que necesita:
  • mailbase.txt: es el listado de víctimas, es decir, todas las direcciones de mail a las que se va a spamear.
  • from.txt: contiene una o más direcciones de mail que aparecerán como remitente.
  • replyto.txt: donde se quiere recibir respuesta (normalmente coincide con from.txt y es alguna dirección inventada).
  • subject.txt: asunto(s) para los mails (ej: vendo viagra! Me la quitan de las manos, oiga!).
  • letter.txt: contiene la ruta al fichero con el cuerpo del mensaje.
  • attach.txt: yo no tengo ese fichero pero debe tratarse de un listado de adjuntos.
  • proxy.txt: tampoco lo tengo, pero debe ser un listado de proxys para poder spamear aún mejor.
Otra cosa que podemos ver es que usa su propio DNS y que arranca, nada menos, que 200 threads para mandar mails simultáneamente.

En los ficheros HTML que aparecen como cuerpo de mensaje podemos ver algunos mails, que seguro que a más de uno le suenan:

^Viagra BEST Viagra^











Aquí va otro:
***Best sex and love***

Si seguimos analizando el script vemos más cosas curiosas, como la capacidad de falsear la fecha del mail, IPs, etc:

$fakedate = $date if $c{'fakedate'} eq 'no';
 $fromname = $replyname = $toname = '' if $c{'exctname'} eq 'no';

 $header =~ s/%FAKENAME%/$fakename/;
 $header =~ s/%FAKEIP%/$fakeip/;
 $header =~ s/%HOST%/$host/;
 $header =~ s/%DATE%/$date/;
 $header =~ s/%FAKEDATE%/$fakedate/;
 $header =~ s/%MESSAGE_ID%/$messageid/;
 $header =~ s/%X_PRIORITYNUM%/$xprionum/;
 $header =~ s/%X_PRIORITYTXT%/$xpriotxt/;

 $header =~ s/%FROMNAME%/$fromname/;
 $header =~ s/%FROMADDR%/$fromaddr/;
 $header =~ s/%REPLY_TONAME%/$replyname/;
 $header =~ s/%REPLY_TOADDR%/$replyaddr/;
 $header =~ s/%TONAME%/$toname/;
 $header =~ s/%TOADDR%/$toaddr/;
 $header =~ s/%SUBJECT%/$subject/;

 $header =~ s/%BOUNDARY%/$boundary/g;
 $header =~ s/%CONTENT_TYPE%/$contenttype/;
 $header =~ s/%CHARSET%/$charset/;
 $header =~ s/%CONTENT_ENCODING%/$contentenc/;

Convierte en base64 los ficheros adjuntos, para mejorar el envío y obtener una mejor visualización:

if ($message =~ /$file/ && $contenttype eq 'text/html') {

    $newcid .= '_csseditor';
    $message =~ s/$file/cid:$newcid/g;

    $attach .= "Content-ID: <" . $newcid . ">\n";
    $attach .= "Content-transfer-encoding: base64\n"; }

   else {

    $attach .= "Content-transfer-encoding: base64\n";
    $attach .= "Content-Disposition: attachment; filename=";
    $attach .= '"' . $fname . '"' . "\n"; } }

  else {

   $attach .= $ctype . ";\n\t";
   $attach .= 'name="' . $fname . '"' . "\n";
   $attach .= "Content-Transfer-Encoding: base64\n";

   if ($message =~ /$file/ && $contenttype eq 'text/html') {

    $newcid .= '@' . $fakename;
    $message =~ s/$file/cid:$newcid/g;

    $attach .= "Content-ID: <" . $newcid . ">\n"; }

   else {

    $attach .= "Content-Disposition: attachment;\n\t";
    $attach .= 'filename="' . $fname . '"' . "\n"; } }

  $attach .= "\n$files{$file}"; }

Creación aleatoria de IPs y fechas, como dije antes:

sub ip
{
 my @ip; for (1..4) { push (@ip, int rand 256); } @_ = ('a'..'z');
 return (join ('.', @ip), join ('', @_[map { rand @_ } (0..((int rand 6) + 2))]));
}

sub date
{
 my $date = localtime (time - int rand shift);

 $date =~ s/^(\w+)\s+(\w+)\s+(\d+)\s+(\d+:\d+:\d+)\s+(\d+)$/$1, $3 $2 $5 $4/;

 my %month = (Jan=>'01',Feb=>'02',Mar=>'03',Apr=>'04',May=>'05',Jun=>'06',
 Jul=>'07',Aug=>'08',Sep=>'09',Oct=>'10',Nov=>'11',Dec=>'12');

 my $time = $5 . $month{$2} . (sprintf "%02d", $3) . join ('', split (':', $4));

 return ("$date " . &gmtdiff, $time);
}

Todo ello sumado a un buen control de envío, discriminando los que se han conseguido mandar, los incorrectos y los que, no hubo mucha suerte:

my ($mx, $err) = &getmx($domain);
  unless ($mx)
  {
   &chgsta(4=>1);
   &log("<$addr>\x01" . $err);
   &bad($line);
   next;
  }

  if ($mx =~ m!^\d$! && $mx == 1)
  {
   &chgsta(3=>1);
   &log("<$addr>\x01" . $err);
   &unlucky($line);
   next;
  }

  my ($sock, $resp, $proxy);

En la carpeta sys nos encontramos con una colección bien estructurada de ficheros MX, para una mejor resolución de dominios:


La verdad es que merece la pena echarle un ojo a este tipo de programas ya que te das cuenta de cómo se lo curran para vendernos viagra y otros menesteres. Y es por ello que os dejo una copia de los scripts por si queréis analizarlos. Los podéis bajar aquí: spam_scripts.tar.gz

Un saludo.

----------------------------------

Contribución por Pepelux

9 comments :

Sergio Arcos dijo...

Los spamers están cada día más organizados y la verdad es que hay una verdadera mafia entorno a todo este mundillo.

No lo tengo tan claro. El spam CREO que se ha visto reducido (http://www.spamcop.net/spamgraph.shtml?spamyear), más que nada por medidas como el filtro de spam de google. Muchas empresas han migrado sus dominios privados a usarse integrados a Gmail, usando ese filtro. Y sino, hay programas muy eficientes que detectan casi todo el spam. Y sobre mafias, por supuesto, pero se estan enfocando a C&C (botnets) y SNS (redes sociales).

Lo que esto no quita que este muy bien es el post-análisis de esa herramienta ;)

Pepelux dijo...

Es cierto, Sergio, que cada día se filtra más el spam, pero no es todo tan bonito como parece. Yo también tengo cuenta en gmail y me filtra prácticamente el 100%, pero detrás de todo eso hay gente que se encarga de mantener los filtros antispam.

Además, cuando tienes clientes que mandan mails a China, a Rusia, etc. hay que tener buena mano con los filtros, porque lo que ayuda a unos perjudica a otros :)

Saludos

Sursum Corda dijo...

No estoy tan deacuerdo en que esl SPAM se haya reducido drasticamente...

Es posible que si que haya bajado un poco, pero aún hay mucho, muchísimo SPAM, y cada día con alguna sofisticación más...

Si bien, desde mi punto de vista, habría que prestar también atención al SPAM que mandan los propios usuarios en cadenas, ppts...

Saludos.

mgesteiro dijo...

interesante análisis pepelux!

Leo Romero dijo...

Recordemos también que el sistema de Black-List están hechas para ser sobornadas, ya que pagando una suma de dinero te sacan de la Black-List...

Gmail y Hotmail tienen buenos filtros y estándares de autentificación de los mails. Pero existen varios servicios de email que no lo tienen, así que el spam sigue siendo un ataque efectivo y rentable, mientras existan servicios de correo que no bloqueen el spam y mientras puedas pagar para sacarte de la maldita Black-List...

Anónimo dijo...

Paneles de estos he visto a montones... La mayoría se venden codificados con IonCube o Dezender y llevan licencias de uso, de tal manera que aunque lo dejen en tu servidor no podrás ejecutarlo en otro. Eso si, si consigues el código te creas tu propia licencia. O tambiém puedes falsear la MAC del servidor para hacer que coincida con la licencia, pero eso ya depende de como lleven las licencias.

Por ejemplo, el último que encontré hace apenas un par de días:
http://windowsword.net/sp/

A ver si adivinais el usuario y password... facilito. :P

Yik dijo...

SPAM via WhatsApp...

Aunando un poco los POST por aquí publicados...
Se me ocurre que sería posible y gratis realizar SPAM a los teléfonos mediante WhatsApp...

Actualmente cuando te registras... Whatsapp comprueba para cada uno de tus contactos si está registrado o no... .pues bien... es tan sencillo como crear una lista de contactos desde el 600 000000 al 699 999999 y ya sabríamos quien lo usa... (esto igualmente se puede hacer desde el PC).

Por otro lado... es posible mandar mensaje/chat a cualquiera de tus contactos... por lo que si tienes todos lo usuarios de WhatsApp y además puedes mandarle lo que quieras... pues ya está... SPAM via Whatsapp..

Supongo que en Whatsapp (ya que todo pasa por ellos) limitarán el número de conversaciones... pero no sé si ya lo están haciendo o empezarán después del primer SPAM ;)

salu2

ZioneR dijo...

Recordemos también que el sistema de Black-List están hechas para ser sobornadas, ya que pagando una suma de dinero te sacan de la Black-List...

Gmail y Hotmail tienen buenos filtros y estándares de autentificación de los mails. Pero existen varios servicios de email que no lo tienen, así que el spam sigue siendo un ataque efectivo y rentable, mientras existan servicios de correo que no bloqueen el spam y mientras puedas pagar para sacarte de la maldita Black-List...

Pepelux dijo...

Es cierto, Sergio, que cada día se filtra más el spam, pero no es todo tan bonito como parece. Yo también tengo cuenta en gmail y me filtra prácticamente el 100%, pero detrás de todo eso hay gente que se encarga de mantener los filtros antispam.

Además, cuando tienes clientes que mandan mails a China, a Rusia, etc. hay que tener buena mano con los filtros, porque lo que ayuda a unos perjudica a otros :)

Saludos