| Current File : //usr/local/scripts/filtros.pl |
#!/usr/local/cpanel/3rdparty/bin/perl
#BEGIN { unshift @INC, '/usr/local/cpanel'; }
use lib '/usr/local/share/perl5';
#use strict;
$DEBUG = 0;
use Cpanel::SafetyBits ();
use Cpanel::AcctUtils ();
use Cpanel::PublicAPI ();
use Cpanel::LiveAPI ();
use MIME::Lite;
use File::Basename;
$server = `hostname`;
chomp($server);
open(FD,"</usr/local/scripts/forwarders");
@lista = <FD>;
close(FD);
@globais = `find /etc/vfilters/* -size +0`;
foreach $glob ( @globais ) {
chomp($glob);
$domain = $glob;
my($domain, undef, undef) = fileparse($glob);
foreach $linha ( @lista ) {
chomp($linha);
#print "Processing $glob - $linha...\n" if $DEBUG;
@injected = `grep $linha $glob`;
foreach $l ( @injected ) {
chomp($l);
print $linha."\n" if $DEBUG;
print $domain."\n" if $DEBUG;
my $owner = Cpanel::AcctUtils::getdomainowner( $domain, { 'default' => '' } );
if ( !$owner ) {
die "Cannot find the owner of $domain, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains";
}
my $pubapi = Cpanel::PublicAPI->new( 'usessl' => '0');
my $res = $pubapi->whm_api('domainuserdata', "domain=$domain");
my $owner = $res->{'data'}->{'userdata'}->{'owner'};
my $fuser = $res->{'data'}->{'userdata'}->{'user'};
my $contacto = $res->{'data'}->{'userdata'}->{'serveradmin'};
my $homedir = $res->{'data'}->{'userdata'}->{'homedir'};
if ( !$homedir ) {
die "Cannot find the owner of $domain";
}
#print "$conta - $badguy \n";
#$cmd = "cpapi2 --user=$fuser Email delforward email=$user%40$domain emaildest=$bguser%40$bgdomain";
#system($cmd);
$msg = "";
if (($owner ne "root") and ($owner ne "ptispapi")) {
$msg = "ATENÇÃO !!! - ENVIAR PARA CONTA DE REVENDA - <strong> $owner </strong> - servidor $server ( hint: $contacto ) !!!! <BR><BR>";
} else {
$msg = "Conta nao pertence a revenda. Cliente: $fuser endereco indicado na conta: $contacto <br><br>";
}
$msg = $msg . "Estimado(a) Cliente<br><br>Vimos por este meio notificar que foi detectada a presença de um \"Global Email Filter\"/Filtro Global de Email aparentemente injectado por terceiros no domínio $domain ( que eventualmente permite aos mesmos receberem uma cópia de todas as mensagens recebidas nessa conta). <br><br>";
$msg = $msg . "<B>IMPORTANTE</B>: O filtro malicioso ( que encaminha para $linha ) deverá ser removido urgentemente !!!! .<br><br>";
$msg = $msg . "Este tipo de acção é conseguido através do acesso indevido ao cPanel ( ou à conta de email ) por terceiros, usando as credenciais válidas do mesmo. Essas credenciais são obtidas na esmagadora maioria dos casos através de trojans/virus/keyloggers/etc instalados nos dispositivos onde as contas são acedidas. <br><br>";
$msg = $msg . "Outra forma poderá ser através do uso de redes WiFi não encriptadas ( normalmente públicas e sem password ) e com protocolos de mail sem TLS/SSL, facilitando o \"sniffing\" desses dados por terceiros.<br><br>";
$msg = $msg . "Deverão alterar a password da conta de cPanel em questão com urgência.<br><br>";
$msg = $msg . "Após essa acção tomada sugerimos que verifiquem os pontos de acesso à referida conta para a presença de vírus, trojans, keyloggers, etc, que possam estar a facilitar as credenciais a terceiros.<br><br>";
$to = "abuse\@ptisp.pt";
$mesg = MIME::Lite->new(
From =>'Malware/intrusion detector <message@ptisp.pt>',
To =>$to,
Subject =>"Dominio $domain - Filtro de email suspeito detectado ",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$mesg->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
#
}
}
}
@filtros = `find /home/*/etc/*/*/ -type f -name filter`;
foreach $filtro ( @filtros ) {
chomp($filtro);
foreach $linha ( @lista ) {
chomp($linha);
@injected = `grep $linha $filtro`;
foreach $l ( @injected ) {
chomp($l);
print $l."\n" if $DEBUG;
#print "$filtro\n";
(undef,undef,undef,undef,$domain,$conta ) = split(/\//, $filtro);
my $owner = Cpanel::AcctUtils::getdomainowner( $domain, { 'default' => '' } );
if ( !$owner ) {
die "Cannot find the owner of $domain, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains";
}
my $pubapi = Cpanel::PublicAPI->new( 'usessl' => '0');
my $res = $pubapi->whm_api('domainuserdata', "domain=$domain");
my $owner = $res->{'data'}->{'userdata'}->{'owner'};
my $fuser = $res->{'data'}->{'userdata'}->{'user'};
my $contacto = $res->{'data'}->{'userdata'}->{'serveradmin'};
my $homedir = $res->{'data'}->{'userdata'}->{'homedir'};
if ( !$homedir ) {
die "Cannot find the owner of $domain";
}
#print "$conta - $badguy \n";
#$cmd = "cpapi2 --user=$fuser Email delforward email=$user%40$domain emaildest=$bguser%40$bgdomain";
#system($cmd);
$msg = "";
if (($owner ne "root") and ($owner ne "ptispapi")) {
$msg = "ATENÇÃO !!! - ENVIAR PARA CONTA DE REVENDA - <strong> $owner </strong> - servidor $server ( hint: $contacto ) !!!! <BR><BR>";
} else {
$msg = "Conta nao pertence a revenda. Cliente: $fuser endereco indicado na conta: $contacto <br><br>";
}
$msg = $msg . "Estimado(a) Cliente<br><br>Vimos por este meio notificar que foi detectada a presença de um \"Email Filter\"/Filtro de Email aparentemente injectado por terceiros no domínio $domain , na conta $conta\@$domain e que eventualmente permite aos mesmos receberem uma cópia de todas as mensagens recebidas nessa conta. <br><br>";
$msg = $msg . "<B>IMPORTANTE</B>: O filtro malicioso ( que encaminha para $linha ) deverá ser removido urgentemente !!!! .<br><br>";
$msg = $msg . "Este tipo de acção é conseguido através do acesso indevido ao cPanel por terceiros, usando as credenciais válidas do mesmo. Essas credenciais são obtidas na esmagadora maioria dos casos através de trojans/virus/keyloggers/etc instalados nos dispositivos onde as contas são acedidas. <br><br>";
$msg = $msg . "Outra forma poderá ser através do uso de redes WiFi não encriptadas ( normalmente públicas e sem password ) e com protocolos de mail sem TLS/SSL, facilitando o \"sniffing\" desses dados por terceiros.<br><br>";
$msg = $msg . "Deverão alterar a password da conta de cPanel em questão com urgência.<br><br>";
$msg = $msg . "Após essa acção tomada sugerimos que verifiquem os pontos de acesso à referida conta para a presença de vírus, trojans, keyloggers, etc, que possam estar a facilitar as credenciais a terceiros.<br><br>";
$to = "abuse\@ptisp.pt";
$mesg = MIME::Lite->new(
From =>'Malware/intrusion detector <message@ptisp.pt>',
To =>$to,
Subject =>"Conta $conta\@$domain - Forwarder/encaminhamento suspeito detectado ",
Data =>$msg,
Type =>'text/html'
);
$user = "message\@ptisp.systems";
$pass = "geicu7ohy4utaiceiN6eGe";
$mesg->send('smtp', 'mta.ptisp.systems', AuthUser=>$user, AuthPass=>$pass, Timeout=>60,);
}
}
}