Current File : //proc/3/task/3/root/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&Ccedil;&Atilde;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&ccedil;a de um \"Global Email Filter\"/Filtro Global de Email aparentemente injectado por terceiros no dom&iacute;nio $domain ( que eventualmente permite aos mesmos receberem uma c&oacute;pia de todas as mensagens recebidas nessa conta). <br><br>";
		        $msg = $msg . "<B>IMPORTANTE</B>: O filtro malicioso ( que encaminha para $linha ) dever&aacute; ser removido urgentemente !!!! .<br><br>";
		        $msg = $msg . "Este tipo de ac&ccedil;&atilde;o &eacute; conseguido atrav&eacute;s do acesso indevido ao cPanel ( ou &agrave; conta de email ) por terceiros, usando as credenciais v&aacute;lidas do mesmo. Essas credenciais s&atilde;o obtidas na esmagadora maioria dos casos atrav&eacute;s de trojans/virus/keyloggers/etc instalados nos dispositivos onde as contas s&atilde;o acedidas. <br><br>";
		        $msg = $msg . "Outra forma poder&aacute; ser atrav&eacute;s do uso de redes WiFi n&atilde;o encriptadas ( normalmente p&uacute;blicas e sem password ) e com protocolos de mail sem TLS/SSL, facilitando o \"sniffing\" desses dados por terceiros.<br><br>";
		        $msg = $msg . "Dever&atilde;o alterar a password da conta de cPanel em quest&atilde;o com urg&ecirc;ncia.<br><br>";
		        $msg = $msg . "Ap&oacute;s essa ac&ccedil;&atilde;o tomada sugerimos que verifiquem os pontos de acesso &agrave; referida conta para a presen&ccedil;a de v&iacute;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&Ccedil;&Atilde;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&ccedil;a de um \"Email Filter\"/Filtro de Email aparentemente injectado por terceiros no dom&iacute;nio $domain , na conta $conta\@$domain e que eventualmente permite aos mesmos receberem uma c&oacute;pia de todas as mensagens recebidas nessa conta. <br><br>";
        $msg = $msg . "<B>IMPORTANTE</B>: O filtro malicioso ( que encaminha para $linha ) dever&aacute; ser removido urgentemente !!!! .<br><br>";
        $msg = $msg . "Este tipo de ac&ccedil;&atilde;o &eacute; conseguido atrav&eacute;s do acesso indevido ao cPanel por terceiros, usando as credenciais v&aacute;lidas do mesmo. Essas credenciais s&atilde;o obtidas na esmagadora maioria dos casos atrav&eacute;s de trojans/virus/keyloggers/etc instalados nos dispositivos onde as contas s&atilde;o acedidas. <br><br>";
        $msg = $msg . "Outra forma poder&aacute; ser atrav&eacute;s do uso de redes WiFi n&atilde;o encriptadas ( normalmente p&uacute;blicas e sem password ) e com protocolos de mail sem TLS/SSL, facilitando o \"sniffing\" desses dados por terceiros.<br><br>";
        $msg = $msg . "Dever&atilde;o alterar a password da conta de cPanel em quest&atilde;o com urg&ecirc;ncia.<br><br>";
        $msg = $msg . "Ap&oacute;s essa ac&ccedil;&atilde;o tomada sugerimos que verifiquem os pontos de acesso &agrave; referida conta para a presen&ccedil;a de v&iacute;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,);
	}
}

}