## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CYBRDUDE-CVE-2026-1731-SCANNER
# CVE-2026-1731 — Пассивный сканер уязвимостей BeyondTrust RS/PRA
root@kitploit:~
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ CVE-2026-1731 ║
║ BeyondTrust RS/PRA Passive Vulnerability Scanner ║
║ ║
╠═══════════════════════════════════════════════════════════════╣
║ PASSIVE SCANNER — EDUCATIONAL & AUTHORIZED USE ONLY ║
║ ║
║ Performs passive fingerprinting via standard HTTP GET. ║
║ No exploit payloads sent. No WebSocket connections. ║
║ Only use against systems you own or are authorized to test. ║
║ ║
║ Methods: BRDF version extraction, /check_health, ║
║ static asset sizing, /get_mech_list API, ║
║ HTML analysis, copyright year, /nw probe ║
║ ║
║ Author: NetGuard 24/7 LLC ║
║ Web: https://netguard24-7.com ║
╚═══════════════════════════════════════════════════════════════╝
**Пассивный** сканер уязвимостей для CVE-2026-1731 — критической (CVSS 9.9) уязвимости удалённого выполнения кода без аутентификации в BeyondTrust Remote Support (RS) и Privileged Remote Access (PRA).
Этот инструмент выявляет уязвимые экземпляры BeyondTrust, используя **только стандартные HTTP GET-запросы**. Эксплуатационные полезные нагрузки не отправляются. WebSocket-соединения не устанавливаются. Аутентификация не выполняется.
Обновление: 16.02.2026 **Применение горячего исправления BT26-02-RS или BT26-02-PRA приведёт к тому, что обнаруженные экземпляры BeyondTrust ниже RS (v21.3 — 25.3.1) или PRA (v22.1 — 24.X) будут отображаться как уязвимые, поскольку горячее исправление не приводит к увеличению версии. Таким образом, экземпляры, исправленные горячим патчем (BT26-02-RS или BT26-02-PRA), будут отображаться как уязвимые. После обновления базовой версии экземпляр будет отображаться как неуязвимый». По данным вендора, официальное исправление включено в`Remote Support 25.3.2 и выше` | `Privileged Remote Access 25.1 и выше`**
**Автор:** NetGuard 24/7 LLC
* * *
## ⚠️ Правовое уведомление
> **Этот инструмент предоставляется ТОЛЬКО в ОБРАЗОВАТЕЛЬНЫХ и АВТОРИЗОВАННЫХ ОБОРОНИТЕЛЬНЫХ целях.**
>
> Вы можете использовать этот инструмент **ТОЛЬКО** против систем, которыми владеете или на тестирование которых имеете **явное письменное разрешение**. Несанкционированное сканирование систем, которыми вы не владеете, может нарушать применимое законодательство, включая Закон о компьютерном мошенничестве и злоупотреблениях (CFAA) и аналогичные законы в других юрисдикциях.
>
> Авторы **не несут ответственности** за неправомерное использование этого инструмента. Используя данное программное обеспечение, вы соглашаетесь использовать его ответственно и в соответствии со всеми применимыми законами и нормативными актами.
* * *
## Обзор уязвимости
Поле| Детали
---|---
**CVE**| CVE-2026-1731
**CVSS**| 9.9 (критическая)
**Консультация**| BT26-02
**Тип**| Удалённое выполнение кода без аутентификации
**Вектор**| WebSocket-конечная точка `/nw` — инъекция арифметического вычисления Bash
**Затронуты**| RS ≤ 25.3.1, PRA ≤ 24.3.4
**Исправлено**| RS 25.3.2+, PRA 25.1.1+
**Эксплуатация**| Активна в дикой природе с 12 февраля 2026 г.
CVE-2026-1731 — вариант CVE-2024-12356 (уязвимость, использованная китайским APT для взлома Казначейства США). Обе нацелены на одну и ту же WebSocket-конечную точку `/nw` и лежащий в основе Bash-скрипт `thin-scc-wrapper`. Патч BT24-10 для CVE-2024-12356 добавил числовую проверку корректности, но не предотвратил арифметическое вычисление Bash параметра `remoteVersion` — что и эксплуатирует CVE-2026-1731.
* * *
## Как это работает
Этот сканер использует **8 методов пассивного снятия отпечатков** — проверенных на реальных экземплярах BeyondTrust — для определения версии продукта и статуса уязвимости без отправки какого-либо эксплуатационного трафика.
### Методы обнаружения
№| Метод| Конечная точка| Что извлекается| Уверенность
---|---|---|---|---
1| **Извлечение версии BRDF**| `GET /get_rdf?comp=sdcust&locale_code=en-us`| Точная версия продукта из бинарного заголовка (например, `24.1.4`)| **ТОЧНАЯ**
2| **Ответ /check_health**| `GET /check_health`| `"Health Check: Succeeded"` = до 25.x / `"Status: Primary"` = 25.x+| ВЫСОКАЯ
3| **Размер статических ресурсов**| `HEAD /js/login.js`| Размер файла: ~36K-39K = до 25.x / ~12K = 25.x+| ВЫСОКАЯ
4| **API /get_mech_list**| `GET /get_mech_list?version=3`| Название компании + поле `thin_rep_enabled` (только 25.x+)| ВЫСОКАЯ
5| **HTML-структура**| `GET /login`| XHTML 1.1 + BOMGAR = до 25.x / HTML5 = 25.x+| СРЕДНЯЯ
6| **Год авторского права**| нижний колонтитул `GET /login`| `2002-2024` = до 25.x / `2002-2025` = 25.x| СРЕДНЯЯ
7| **Информация портала**| `GET /get_portal_info`| Значение X-Ns-Company (индикатор разведки злоумышленника)| —
8| **WebSocket-проба**| `GET /nw` (только HTTP)| Подтверждает доступность поверхности атаки| —
**Метод 1 (BRDF)** — та же техника, что используется в Metasploit и плагине Nessus 213456. Когда BRDF возвращает точную версию, уверенность — **ТОЧНАЯ**. Некоторые экземпляры 25.x удаляют версию из BRDF — в таких случаях методы 2-6 оцениваются и сопоставляются для вывода диапазона версий.
### Что этот инструмент НЕ делает
* ❌ Не отправляет WebSocket-запросы на обновление
* ❌ Не передаёт сформированные полезные нагрузки на `/nw`
* ❌ Не предпринимает попыток эксплуатации
* ❌ Не выполняет аутентификацию или подбор паролей
* ❌ Не изменяет данные на целевых системах
* ❌ Не устанавливает постоянные или сохраняющие состояние соединения
* * *
## Быстрый старт
### Требования
* Python 3.8+
* Нет внешних зависимостей (только стандартная библиотека)
### Установка
root@kitploit:~
git clone https://github.com/YOUR_USERNAME/cve-2026-1731-scanner.git
cd cve-2026-1731-scanner
chmod +x cve_2026_1731_scanner.py
### Сканирование одной цели
root@kitploit:~
python3 cve_2026_1731_scanner.py -t support.example.com -v
### Массовое сканирование из файла
root@kitploit:~
# Создайте список целей (по одному хосту в строке)
cat > targets.txt << 'EOF'
support.example.com
pra.example.com
192.168.1.50
10.0.0.100:8443
remote-support.beyondtrustcloud.com
EOF
# Запустите сканирование
python3 cve_2026_1731_scanner.py -f targets.txt --threads 20 -o results.csv --json results.json -v
### Полное использование
root@kitploit:~
usage: cve_2026_1731_scanner.py [-h] (-t TARGET | -f FILE) [-o OUTPUT]
[--json JSON_OUTPUT] [--threads THREADS] [-v]
options:
-t, --target TARGET Один целевой хост или IP-адрес
-f, --file FILE Файл с целями (по одной в строке)
-o, --output OUTPUT Экспорт результатов в CSV-файл
--json JSON_OUTPUT Экспорт результатов в JSON-файл
--threads THREADS Параллельные потоки (по умолчанию: 10)
-v, --verbose Подробный вывод по каждой цели
### Формат входных данных
Файл целей принимает гибкий ввод — одна запись в строке:
root@kitploit:~
# Комментарии поддерживаются (строки, начинающиеся с #)
192.168.1.1
10.0.0.5
support.example.com
support.example.com:8443
https://support.example.com
http://support.example.com # автоматически обновляется до HTTPS
support.example.com/login # пути удаляются автоматически
* * *
## Понимание вывода
### Уровни риска
Уровень| Значение
---|---
**КРИТИЧЕСКИЙ**| Точная версия подтверждена как уязвимая через BRDF, или несколько сигналов с высокой уверенностью указывают на версию до 25.x
**ВЫСОКИЙ**| Вероятно уязвим, но с меньшим количеством подтверждающих сигналов; рекомендуется ручная проверка
**СРЕДНИЙ**| Предположительно 25.x+ (RS всё ещё может быть уязвим до 25.3.1); проверьте патч BT26-02
**НИЗКИЙ/ИНФО**| SaaS-экземпляр (автоматически исправлен), подтверждённая исправленная версия или подтверждённая безопасность
### Уверенность в версии
Уверенность| Источник| Значение
---|---|---
**ТОЧНАЯ**| BRDF `/get_rdf`| Точная строка версии, извлечённая из бинарного файла (например, `24.1.4`)
**ВЫСОКАЯ**| Мультисигнальная (3+)| 3 или более независимых сигнала совпадают без противоречий
**СРЕДНЯЯ**| Мультисигнальная (2+)| Большинство сигналов совпадают, но с некоторой неоднозначностью
**НИЗКАЯ**| Безрезультатно| Противоречивые или недостаточные сигналы
### Коды выхода (интеграция CI/CD)
Код| Значение
---|---
`0`| Критических или высокорисковых результатов не обнаружено
`1`| Обнаружены результаты с высоким риском
`2`| Обнаружены критические результаты
root@kitploit:~
# Пример: интеграция с конвейером CI/CD
python3 cve_2026_1731_scanner.py -f targets.txt -o results.csv
if [ $? -eq 2 ]; then
echo "КРИТИЧЕСКИ: обнаружены уязвимые экземпляры BeyondTrust!"
# запустить оповещение / вызвать дежурного / открыть тикет
fi
* * *
## Пример вывода
root@kitploit:~
[*] Сканирование https://support.example.com...
Статус: УЯЗВИМ [КРИТИЧЕСКИЙ]
Версия: 24.1.4 (через BRDF /get_rdf, уверенность: ТОЧНАЯ)
Компания: examplecorp
Продукт: Remote Support
Сигналы: health=old, login.js=36458B, html=modern, ©2024
/nw: ДОСТУПНА
* * *
## Экспорт в CSV и JSON
### Поля CSV
Поле| Описание
---|---
`target`| Сканируемый URL
`is_beyondtrust`| Обнаружен ли BeyondTrust
`product_type`| Remote Support или Privileged Remote Access
`product_version`| Точная версия (если извлечена из BRDF)
`version_source`| Как была определена версия
`version_confidence`| ТОЧНАЯ, ВЫСОКАЯ, СРЕДНЯЯ или НИЗКАЯ
`company_name`| Значение X-Ns-Company (используется при эксплуатации)
`copyright_year`| Из нижнего колонтитула страницы входа
`health_check_type`| `old` (до 25.x) или `new` (25.x+)
`login_js_size`| Размер файла /js/login.js
`thin_rep_enabled`| Присутствует только в 25.x+
`html_generation`| `legacy` (XHTML) или `modern` (HTML5)
`is_saas`| SaaS-экземпляр (.beyondtrustcloud.com)
`ws_endpoint_reachable`| Отвечает ли /nw
`vulnerability_status`| Результат оценки
`risk_level`| КРИТИЧЕСКИЙ, ВЫСОКИЙ, СРЕДНИЙ, НИЗКИЙ или ИНФО
`details`| Понятные человеку детали оценки
* * *
## Устранение уязвимости
Если сканер выявил уязвимые экземпляры:
1. **Немедленно примените патч BT26-02** — доступен от BeyondTrust для всех поддерживаемых версий RS/PRA
2. **Обновитесь до исправленных версий** : RS 25.3.2+ или PRA 25.1.1+
3. **Если используется RS < 21.3 или PRA < 22.1**: требуется полное обновление продукта перед применением патча
4. **Сетевые меры контроля** : ограничьте доступ к WebSocket-конечной точке `/nw`, если немедленное исправление невозможно
5. **Поиск признаков компрометации** : проверьте журналы на WebSocket-соединения с `/nw` с необычными значениями `remoteVersion`, содержащими `$()` или обратные кавычки
6. **SaaS-экземпляры** : были автоматически исправлены 2 февраля 2026 г. — проверьте в своём портале BeyondTrust
### Ссылки
* Консультация BT26-02
* NVD: CVE-2026-1731
* Анализ Rapid7
* Модуль Metasploit (CVE-2024-12356)
* * *
## Участие в разработке
Приветствуются pull request'ы. Если вы обнаружите дополнительные методы пассивного снятия отпечатков или сигналы корреляции версий, пожалуйста, откройте issue или PR.
* * *
## Лицензия
Лицензия MIT — см. LICENSE для подробностей.
* * *
## Автор
**NetGuard 24/7 LLC** https://netguard24-7.com