
Триаж уязвимостей с проверкой происхождения данных. Сопоставляет CVE с локально собранными корпусами (NVD/KEV/EPSS, ExploitDB, nmap script.db) и выдаёт команды верификации, классифицированные по тому, какое воздействие их выполнение оказывает на целевую систему.
Инструмент для триажа уязвимостей. Он берёт то, что уже нашло сканирование, определяет, какие CVE правдоподобно применимы, сообщает, насколько он в этом уверен и почему, и выдаёт команды для самостоятельной проверки.
Он ничего не сканирует и ничего не эксплуатирует.
git clone https://github.com/xGhst0/reconkg && cd reconkg && pip install -e . --break-system-packages && python -m reconkg.selfcheck
Последний шаг сообщает, что инструмент видит, а что нет: нашёл ли он script.db
от nmap, какие корпуса настроены и сколько реалистичных отпечатков
действительно дают зацепку. Запустите его первым. Из коробки ответ —
«девять написанных вручную CVE», и selfcheck прямо об этом сообщает,
не позволяя вам предполагать иное.
Девять встроенных записей — это демонстрационный набор. Для чего-то настоящего:
export NVD_API_KEY=... # free: https://nvd.nist.gov/developers/request-an-api-key
python -m reconkg.fetch --dest ~/.reconkg/feeds --all
python -m reconkg.builddb --feeds ~/.reconkg/feeds --out ~/.reconkg/vuln.db
export RECONKG_VULN_DB=~/.reconkg/vuln.db
export RECONKG_EXPLOIT_DB=~/.reconkg/exploits.db
export RECONKG_SCRIPT_DB=/usr/share/nmap/scripts/script.db
Без API-ключа NVD ограничивает до 5 запросов за 30 секунд, и полная загрузка занимает
около четырёх часов вместо двадцати пяти минут. Используются контрольные точки,
так что прерванная загрузка возобновляется. --since загружает только изменившееся.
Если переменная корпуса задана, а файл не открывается, reconkg отказывается запускаться. Молча отдавать девять записей, когда вы запросили 300 000, означало бы, что сканирование ничего не находит и выглядит так, будто оно сработало.
python -m reconkg.app # web UI on localhost
python -m reconkg.console # REPL
Интерфейс показывает граф знаний с указанием источника по клику, чтобы вы видели, почему CVE привязан к хосту, а не просто доверяли оценке, а также журнал, упорядоченный по приоритету триажа с учётом KEV и EPSS.
Каждая предлагаемая команда несёт категорию NSE, описывающую, что её выполнение делает с целью. Этот словарь принадлежит nmap, а не выдуман здесь.
Последняя строка — это граница. Если для зацепки существует рабочий эксплойт,
reconkg называет модуль или шаблон и указывает, где его найти. Он не собирает из
этого команду с уже подставленной целью. Подсказки Metasploit останавливаются на
show options — на шаге, где вы видите RHOSTS и подтверждаете, что это тот хост,
против которого вам разрешено действовать.
На собственной машине это разница в одно нажатие клавиши, а в том, чем является инструмент, — разница гораздо большая.
Безопасность классифицируется по каждой проверке, а не по инструменту. Это не придирчивость:
текущие CVE-шаблоны nuclei достигают детектирования путём эксплуатации — один из них
отправляет полезную нагрузку subprocess.run('cat /etc/passwd') через RCE в Langflow и
срабатывает на root:.*:0:0:. Любое предположение вида «nuclei детектирует, Metasploit
эксплуатирует» неверно с первого же шаблона, поэтому nuclei считается неклассифицированным
и находится за флажком согласия.
selfcheck выводит реальную частоту срабатывания, а не лестную.describe() помечает корпус устаревшим
по прошествии 30 дней и указывает, какой фид устарел.pip install -r requirements-dev.txt
python -m pytest tests/ -q # 1219 tests
python -m audit.mutation # mutation testing, 12 targets at 100%
python -m audit.scale_bench # corpus scale benchmark
docs/ содержит заметки по дизайну и обоснование решений выше. audit/AUDIT.md —
это журнал находок: 47 находок за десять состязательных раундов, включая анализ
одной формы бага, на которую приходится 13 из них, и честную оценку того, что
помогло и не помогло её предотвратить.
MIT — см. LICENSE.
reconkg не поставляется с данными об уязвимостях. Корпуса собираются на вашей машине из фидов, которые вы загружаете сами, поэтому их лицензии остаются вашей обязанностью соблюдать; индекс ExploitDB, в частности, распространяется под GPL-2.0-or-later и намеренно никогда здесь не перераспределяется.
Всё, что выдаёт reconkg, — это предложение для человека, который должен его выполнить.
Запуск проверок intrusive или vuln против системы, которая вам не принадлежит
или на тестирование которой у вас нет письменного разрешения, незаконен в большинстве
юрисдикций.
| Категория | Что делает reconkg |
|---|
safe, discovery, version | формируются, показываются по умолчанию |
intrusive, vuln, unclassified | формируются, показываются при установке флажка, с предупреждением об авторизации |
exploit, dos, fuzzer, brute | называются, но никогда не формируются |