Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
kunglao-agent — Экспертный агент по обратной разработке: планирует собственный путь анализа, выводит каждый факт из необработанных данных и сходится под механическими воротами верификации — прошивки, протоколы, web/JS, риск-контроль, бинарники. | Kitploit
Инструменты/GitHubGitHub/amd2g2zz/kunglao-agent
Безопасность AndroidСтатический анализДинамический анализ (песочница)Анализ уязвимостейПентестинг мобильных приложенийОбратная инженерияВеб-безопасностьАнализ вредоносных программАнализ Бинарных ФайловОбратная Разработка с Помощью ИИАнализ Прошивок
269111 день назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
amd2g2zz/kunglao-agent

kunglao-agent

Экспертный агент по обратной разработке: планирует собственный путь анализа, выводит каждый факт из необработанных данных и сходится под механическими воротами верификации — прошивки, протоколы, web/JS, риск-контроль, бинарники.

РепозиторийСайт

kunglao-agent

kunglao-agent — это автономная система обратной разработки. Вы передаёте ей цель и вопросы, на которые нужны ответы; она самостоятельно работает над задачей часами или днями — планирует собственный путь, восстанавливается после сбоев воркеров, возобновляет работу после крашей — и сходится только тогда, когда каждый ответ выведен из сырых доказательств и прошёл механические проверочные шлюзы.

release-check python license PRs welcome

English · Simplified Chinese

В настоящее время он поставляется как плагин Claude Code — Claude Code это интерфейс, с которым вы общаетесь, а не то, чем является продукт. Продукт — это цикл: специализированные воркеры анализируют (сначала статически), независимый верификатор заново выводит каждый факт вслепую из сырых доказательств, а механические шлюзы решают, когда работа завершена. Результат — база фактов, где каждое утверждение привязано к байтам, независимо проверено и проиндексировано по доказательствам — доверие обеспечивается механизмами, а не соглашениями.

Почему kunglao-agent

  • Долгосрочная автономность по замыслу. Задачи выполняются без присмотра часами и днями: запланированный heartbeat поддерживает цикл живым, мёртвые воркеры согласовываются, а их утверждения возвращаются в очередь, краши возобновляются из состояния на диске, заблокированные утверждения самовосстанавливаются. Вы читаете вердикт, когда система сходится — вам не нужно следить за каждым шагом. См. Long-horizon autonomy.
  • Ответы, которым можно доверять. Ни один факт не получает статус PROVEN, пока независимый верификатор не выведет его заново вслепую из сырого артефакта; каждый факт ссылается на сырой артефакт, проиндексированный по sha256, через evidence/_index.json.
  • Полный спектр обратной разработки. Нативные бинарники Windows/Linux, Android APK, web/JS, анализ протоколов, эмуляция прошивок, контрмеры риск-контроля — одна система, а не инструмент для одной предметной области.
  • Экономика «сначала статика». Задача, которая закрывается статически, никогда не касается динамических инструментов; каждое повышение уровня объявляется, проходит через шлюзы и аудируется.
  • Он переиспользует знания, а не выводит их заново. Растущий каталог зарегистрированных инструментов анализа (крипто-декодеры, конвейеры дизассемблирования, запросы к графам) означает, что система обращается к проверенному инструментарию прежде, чем писать одноразовые скрипты — и каждый запуск оставляет после себя переиспользуемые факты, а не чат-транскрипт, который испаряется.
  • Он восстанавливается, а не умирает. Сбои воркеров, разрывы API и краши — это первоклассные события: цикл обнаруживает их, делает снимок уже произведённого и перенаправляет работу, чтобы продолжить с того места, где всё остановилось — а не с нуля.
  • Ваша среда, ваши правила. VMware, ssh, docker, adb или просто только статика — система управляет тем каналом выполнения, который у вас уже есть. Ничто не является деградированным режимом; задача, которой никогда не требуется выполнение, никогда не запрашивает VM.

Быстрый старт

kunglao-agent работает внутри Claude Code. От образца на диске до вердикта:

1. Установите плагин

Из любого каталога, в Claude Code:``` /plugin marketplace add amd2g2zz/kunglao-agent /plugin install kunglao-agent@kunglao-agent

root@kitploit:~
(Альтернатива: `claude --plugin-dir /path/to/kunglao-agent` для разработки.)

### 2. Инициализация рабочего пространства```
/kunglao-agent:init ~/cases/synth-dropper --type windows

kunglao-init создаёт рабочее пространство, записывает CLAUDE.md, проверяет инструментарий для вашего --type и создаёт .mcp.json. Он ЖЁСТКО отклоняет запуск, если отсутствует требуемый инструмент для вашего типа — рекомендации по исправлению приведены в блоке ошибки.

3. Укажите задачу и запустите анализ```

/kunglao-agent:analysis ~/cases/synth-dropper

Goal: confirm this dropper's persistence mechanism and network endpoints; every conclusion must be reproducible from raw evidence. Verification: key findings count only if an independent verifier re-derives them blind and reaches the same answer. Constraints: static-first; never execute the sample on the host.

root@kitploit:~
Сформулируйте задание так, чтобы независимый проверяющий мог оценить результат: **цель анализа** (что вам нужно узнать), **логика проверки** (что делает ответ заслуживающим доверия — например, «подпись должна воспроизводиться из тех же входных данных»), **ограничения** (например, «никакого выполнения на хосте»). Всё записывается в `task_spec.yaml`; оттуда цикл управляет собой сам. О том, как типичные запросы превращаются в корректно сформулированные утверждения, см. [Как поставить задачу](#how-to-state-the-task).

### 4. Прочитайте результат```
claim-register.yaml   # every claim terminal, with verifier sign-off
facts/F<NNN>.md       # byte-anchored, reproducible, frontmatter contract
evidence/_index.json  # every fact → raw artifact (sha256 + path)
runs/                 # session audit trail

Как формулировать задачу

Цикл выводит свой критерий завершения — оракул — механически из конечного состояния, которое вы задаёте. Расплывчатая формулировка даёт расплывчатый оракул, и анализ дрейфует в сторону того, что можно доказать, вместо того, что вам было нужно. Четыре формулировки охватывают большую часть этого дрейфа. Для каждой: что говорят пользователи, что это обычно означает, корректная формулировка и на что опирается оракул.

«我要纯算» — «только чистый алгоритм»

Обычно означает: офлайн-воспроизведение процедуры подписи/шифрования приложения — обвязка unidbg или переписанная реализация, работающая без устройства и без приложения во время выполнения. Не «проанализировать приложение»; приложение — лишь место, где живёт алгоритм.```

Sample: the v7.2 APK; behavior: the signer producing the sign header on api.example.com/v2/* requests. Criterion: a standalone reproduction (unidbg or rewrite) replays every captured (input → sign) pair byte-exact — including the withheld pairs — with no device or app at run time. Attach: captures/sign-pairs.jsonl — 20 input/output pairs captured from a live session; 10 of them withheld from the analysis.

root@kitploit:~
**Oracle anchors on:** byte-exact replay on every pair, including the withheld ones — and the reproduction running standalone.

### "我要解密" — "Я хочу расшифровать"

**Обычно означает одну из двух разных целей — уточните, какую:**

- **(a) расшифровать одно перехваченное тело** — разовый ответ об этих данных: "получить открытый текст этого перехваченного файла кэша."
- **(b) возможность расшифровки** — восстановление алгоритма + ключа, применимое к данным, которые вы перехватите завтра.

Корректно сформулированный вариант (a):```
> Sample: the v7.2 APK; behavior: the local config cache
>   files/.cfg/v2.dat is encrypted at rest.
> Criterion: produce the plaintext of the captured v2.dat and validate
>   it against what the app renders (field names and values match the
>   screenshot captured alongside).

Корректно сформированный (b):```

Sample: the v7.2 APK; behavior: request bodies on api.example.com/v2/* are encrypted with a static key. Criterion: identify the algorithm and the key, then run a canary round-trip — encrypt a known plaintext with the recovered key and match the ciphertext the device produced, byte for byte. Attach: captures/request-bodies.jsonl — ciphertext bodies captured from the device, with the requests that produced them.

root@kitploit:~
**Оракул опирается на:** (a) открытый текст, проходящий проверку на соответствие тому, что отображает приложение; (b) идентифицированные алгоритм и ключ, а также канарейка, проходящая круговой рейс байт-в-байт идентично шифротексту, созданному устройством. «Оно расшифровалось один раз» не удовлетворяет ни одному из этих условий.

### «帮我分析这个协议» — «проанализируй этот протокол для меня»

**Обычно означает:** восстановление формата передачи данных — кадрирование, семантика полей и кодек, который вы можете запустить.```
> Sample: the Android chat app; behavior: the TCP protocol on
>   gateway.example.com:443, as captured in gateway-session.pcap.
> Criterion: a codec that round-trips every captured frame byte-exact,
>   and decodes the held-out frame to fields matching the observed app
>   behavior.
> Attach: captures/gateway-session.pcap — 40 frames, plus 1 held-out
>   frame kept out of the analysis.

Oracle anchors on: кодек выполняет round-trip каждого захваченного кадра байт-в-байт, а отложенный кадр декодируется в поля, соответствующие наблюдаемому поведению приложения.

"这个 sign 在哪算的" — "где вычисляется этот sign?"

Обычно означает: место с доказательством. Указать точку в коде дёшево; ответ полезен только при наличии свидетельства, что эта точка и есть та самая точка.```

Sample: the v7.2 APK; behavior: the sign header attached to every request. Criterion: name the class/method (or native function) where sign is computed, and hook that point to reproduce the captured sign values from the same inputs. Attach: captures/sign-session.jsonl — captured sign values with their request inputs.

root@kitploit:~
**Оракул опирается на:** именованный класс/метод/нативную функцию, плюс хук в этой точке, воспроизводящий захваченные значения.

### Что у них общего

- **Назовите образец и поведение** — какой параметр, точку входа или поток — а не категорию. «我要纯算» — это категория; «подписант, формирующий заголовок `sign` на api.example.com/v2/*» — это цель.
- **Успех должен быть данными.** Приложите захваченные пары вход/выход; именно удержанные пары делают проверку честной — воспроизведение не может переобучиться на данных, которых оно не видело.
- **Оракул выводится из заявленного вами конечного состояния.** Расплывчатое утверждение — расплывчатая верификация, дрейфующий анализ.
- **Ограничения меняют план.** Только статика? Есть устройство? Какой канал? Скажите об этом сразу — это определяет маршрут до начала работы (см. [Bring your own environment](#bring-your-own-environment)).

## Подкоманды

| Команда | Когда использовать | Что делает |
|---|---|---|
| `/kunglao-agent:init <workspace> [--type windows\|linux\|android\|web\|macos] [--lane malware\|algorithm\|protocol\|web\|data\|app]` | начало работы, первым делом | создаёт каркас рабочего пространства, проверяет инструментарий для указанного типа, записывает `CLAUDE.md` и `.mcp.json`; ЖЁСТКО отклоняет с указанием исправлений, когда отсутствует необходимый инструмент |
| `/kunglao-agent:analysis <workspace>` (алиас `analyze`) | после init — укажите задачу и запустите | один раз собирает вашу цель / логику верификации / ограничения, затем запускает цикл сходимости: циклы dispatch / verify до отчёта |
| `/kunglao-agent:resume <workspace>` | после сбоя, перезагрузки или любого «где я остановился?» | read-only сводка по точке останова (состояние, открытые утверждения, активные воркеры, хронология сбоев) плюс следующее действие из конечного автомата |
| `/kunglao-agent:upgrade <workspace> [--dry-run]` | после обновления плагина, для старого рабочего пространства (или когда запрос на обновление сообщает, что штамп устарел) | мигрирует каркас рабочего пространства (хуки, шаблоны, словарь событий) к текущей версии плагина; `--dry-run` показывает предварительный просмотр; пользовательские данные (утверждения, факты, доказательства) никогда не затрагиваются — при побайтовом расхождении отказывает с RC=4 |
| `/kunglao-agent:help` | всё остальное | выводит список использования |

Типичный порядок: `init` создаёт рабочее пространство → `analysis` указывает задачу и запускает → (`resume`, если что-то пошло не так) → прочитайте отчёт при сходимости → `upgrade` старых рабочих пространств после обновлений плагина.

## Как выглядит запуск

*Форма работы — что вы вводите, что возвращается, куда смотреть.* Синтетический пример: небольшой Windows-дроппер попадает в `~/cases/synth-dropper`:```bash
/kunglao-agent:init ~/cases/synth-dropper --type windows   # probes Ghidra, VM reachability
/kunglao-agent:analysis ~/cases/synth-dropper
> "What does this binary do, and where does it phone home?"

Оттуда цикл запускается сам — маршрут адаптируется к тому, чем окажется образец. Можно отойти (см. Долгосрочная автономность). Когда он сойдётся, прочитайте результат ниже.

Сценарии

Ещё два сквозных пути — выберите тот, что соответствует вашей цели (для обычного бинарника Windows PE / Linux ELF рабочий случай выше и есть этот путь).

Android APK — что вводит пользователь, что куда попадает```bash /kunglao-agent:init ~/cases/sample.apk --type android /kunglao-agent:analysis ~/cases/sample.apk > "Does this APK load code dynamically or fight debugging? If so, where is > the hidden logic and what does it do?" ``` - **Попадает в:** `bins/` (APK), `facts/` (граф классов, инвентаризация нативных `.so`), `evidence/` (захваты, дампы). - **Готово выглядит как:** каждый вопрос подкреплён воспроизводимыми доказательствами. - **Маршрут адаптируется.** Некоторые APK закрываются чистой статической работой с DEX; другим нужна отладка на устройстве — цикл решает исходя из того, чем на самом деле является образец.
Web / JS — распаковка → деобфускация → воспроизведение подписанных параметров```bash /kunglao-agent:init ~/cases/example-site.com --type web /kunglao-agent:analysis ~/cases/example-site.com > "how is the XHR request signed, and where does the nonce come from?" ``` - **Попадает в:** `evidence/` (захваты, деобфусцированный код), `facts/` (ключ подписи, вывод nonce). - **Примечание:** `web` — цель на стадии бета; планка инструментария намеренно низкая; недостающая возможность проявляется, когда цикл действительно в ней нуждается, а не при инициализации.

Что вы получаете

Реестр утверждений и база фактов, где доверие механическое, а не условное:

  • Проверенная сходимость — PROVEN требует точного подтверждения от независимого слепого верификатора; CONVERGED требует, чтобы каждый первичный вопрос был отвечен с побайтовым доказательством, ноль осиротевших утверждений, никакого простаивания.
  • Целостность доказательств — каждый факт прослеживается через evidence/_index.json до исходного артефакта (захват / трассировка / дамп / бинарник). Производные сводки исключены по замыслу.
  • Maker-checker — исполнитель (maker) записывает факты; верификатор redteam (checker) перевыводит их вслепую. Всегда разные агенты.

Ни одно утверждение не достигает PROVEN на слове своего автора: независимый верификатор должен перевывести его вслепую, и набор механических шлюзов должен быть пройден. Полный дизайн шлюзов описан в docs/design/loop-engineering.md.

После запуска файлы отвечают на разные вопросы:

Пример факта:```yaml id: F061 status: VERIFIED-BY-W01-static-byte-recheck claim_id: C-401 provenance:

  • {role: sample, path: bins/}
  • {role: capture_log, path: runs/c329-inner-pe.bin} # via evidence/_index.json reproduce: python -c "import struct; ..." # runs against the cited artifact verifier_sign_off: {verifier: kunglao-redteam, verdict: CONFIRMED}
root@kitploit:~
## Долгосрочная автономность

Реальные задачи — это не двадцатиминутный чат. kunglao-agent остаётся на проблеме без человека, который ведёт каждый шаг:

- **Работает часами или днями без присмотра** — запланированный heartbeat поддерживает цикл между вашими визитами, а зависший цикл помечается флагом, а не тихо умирает.
- **Восстанавливается после сбоев** — мёртвые или застрявшие воркеры заменяются, а их вопросы возвращаются в очередь; заблокированная работа самовосстанавливается вместо простоя.
- **Переживает падения и перезагрузки** — `/kunglao-agent:resume <workspace>` восстанавливает состояние по данным на диске и называет следующее действие.
- **Помнит на диске, а не в чате** — заявки, факты, доказательства и полный журнал аудита живут в рабочем пространстве, так что любая сессия может подхватить задачу заново.

Вы даёте ему цель и вопросы; он работает над проблемой часами или днями, восстанавливается после сбоев, а вы читаете вердикт, когда он сходится.

## Как получить хорошие результаты

- **Подавайте ему цели, доступные статически.** Цикл в первую очередь статический: распакованный APK, необфусцированный бандл или нестрипленный бинарник сходится гораздо быстрее, чем тот, что вынуждает к динамической работе.
- **Настройте динамическую часть заранее.** Если ваши основные вопросы потребуют выполнения, сначала выберите канал (см. [Bring your own environment](#bring-your-own-environment)) — init HARD-отклоняет динамическую задачу на `local`.
- **Как отличить «работает» от «застрял»** — свежие записи в `runs/` означают, что цикл жив; мёртвый heartbeat или одно и то же решение, повторяющееся без новых фактов, означают, что нет — `/kunglao-agent:resume <workspace>` диагностирует и называет следующий шаг.

## Инструментарий по цели

Выбранный при init `--type` фиксирует, какие инструменты уровня HARD должны быть установлены. Подсказки свёрнуты — разверните свою цель. **Все типы требуют двух MCP-серверов:** `ghidra` (`claude mcp add ghidra -- <path>/bridge-mcp-ghidra.exe`) и `sequential-thinking` (`claude mcp add sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking`).

<details>
<summary><strong>windows (PE32+ x86-64)</strong> — нативные бинарники Windows</summary>

| Уровень | Инструмент | Установка |
|---|---|---|
| HARD | `pefile` (Python) | `pip install pefile` |
| HARD | `die` (Detect It Easy) | env `KUNGLAO_DIE` или в PATH — [ntinfo.com](https://ntinfo.com) |
| HARD | `floss` (FLARE FLOSS) | согласно [flare-floss docs](https://github.com/mandiant/flare-floss) |
| HARD | Ghidra или IDA | один из них; см. [Internals](#internals) |
| HARD (T2/T3) | VMware + vmr-shell, или канал ssh/docker | см. [Bring your own environment](#bring-your-own-environment) |
| HARD (T2/T3) | `frida-server` (переименованный, нестандартный порт) | бинарник на стороне устройства/VM, порт по умолчанию 1337 |

Динамика Windows T3 также использует MCP `x64dbg`; `volatility` (форензика памяти) и IDA-Pro MCP опциональны — см. манифест MCP в разделе [Internals](#internals).

</details>

<details>
<summary><strong>linux (ELF)</strong> — нативные бинарники Linux / прошивки / образы памяти</summary>

| Уровень | Инструмент | Установка |
|---|---|---|
| HARD | `file`, `readelf`, `objdump` | пакет `binutils` |
| HARD | Ghidra или IDA | один из них |
| HARD (T2/T3) | VMware + vmr-shell, или плоскость управления ssh/docker | см. [Bring your own environment](#bring-your-own-environment) |
| HARD (T2/T3) | `frida-server` (переименованный, нестандартный порт) | бинарник на стороне устройства, порт 1337 |
| WARN | `gdbserver` (в PATH на хосте), `strace`, `ltrace` | опциональные дополнения |

`ssh-mcp` включает плоскость управления ssh для удалённых / облачных / docker-хостов.

</details>

<details>
<summary><strong>android (APK / DEX / нативный .so)</strong> — самый сложный тип цели, больше всего элементов HARD</summary>

| Уровень | Инструмент | Установка |
|---|---|---|
| HARD | `aapt` или `aapt2` (или запасной `unzip`) | Android SDK build-tools |
| HARD | `jadx` (декомпилятор DEX → Java) | [skylot/jadx](https://github.com/skylot/jadx) |
| HARD | `apktool` (декодирование/пересборка ресурсов APK) | [iBotPeaches/Apktool](https://github.com/iBotPeaches/Apktool) |
| HARD | `gitnexus` (граф после декомпиляции) | `npm i -g gitnexus` |
| HARD | Ghidra или IDA | только если APK содержит нативные `.so` |
| HARD | `adb` + **рутованное устройство** с `ro.debuggable=1` | platform-tools + кастомный frida на устройстве |
| HARD | `frida-server` (переименованный, нестандартный порт 1337) | бинарник на стороне устройства |
| HARD | `android_server` (удалённая отладка IDA) | бинарник на стороне устройства, порт 23946 |
| WARN | `apkid` | `pip install apkid` |
| WARN | `baksmali` | из [smali releases](https://github.com/baksmali/smali/releases) |

</details>

<details>
<summary><strong>web &amp; macos (beta)</strong> — минимальные инструментарии, без элементов HARD по замыслу</summary>

| Уровень | Инструмент | Установка |
|---|---|---|
| WARN | MCP `camoufox-reverse` (web) | антидетект Firefox для хуков / трассировки / перехвата сети |
| WARN | `docker` (канал web по умолчанию) | Docker Desktop, или явно задайте `KUNGLAO_CHANNEL=ssh` |
| WARN | `lipo`, `otool`, `nm`, `codesign`, `xattr` (macOS) | Xcode Command Line Tools |
| WARN | MCP `ghidra` (macOS) | рекомендуется — см. манифест в разделе [Internals](#internals) |

Обе цели находятся в стадии беты: отсутствующие возможности всплывают, когда цикл действительно в них нуждается, а не при init. Динамическая работа на macOS использует канал `ssh` (к хосту Mac); для опционального пути отладки в браузере через x64dbg установите инструментарий Windows выше.

</details>

Единый источник манифеста для всего вышеперечисленного — проверяйте его в любой момент: `python scripts/mcp_probe.py <ws> --type <windows|linux|android|web|macos>` (exit 1 = HARD отсутствует).

## Bring your own environment

Динамическая отладка требует плоскости управления выполнением, которой может управлять агент. `KUNGLAO_CHANNEL` выбирает один из пяти первоклассных каналов — используйте то, что уже есть в вашей среде; ни один из них не является урезанным режимом:

| Канал | Чем управляет | Предварительные требования |
|---|---|---|
| `vmr` (по умолчанию) | VMware VM, **любая гостевая ОС** — рабочие процессы snapshot/revert — его незаменимая ценность | навык vmr-shell; `KUNGLAO_VM_HOST` + порты 9876/1337 |
| `ssh` | Любой хост, доступный по ssh: bare metal, облачная VM, Mac, удалённый docker-хост | аутентификация по ключу — проба выполняет реальный BatchMode `ssh ... true` |
| `docker` | Локальный или удалённый docker-демон — `docker exec` эквивалентен любому пути управления | `docker version` зелёный; опционально `KUNGLAO_DOCKER_CONTAINER` |
| `adb` | Эмулятор Android или реальное устройство | `adb devices` показывает его; `adb forward tcp:1337 tcp:1337` для frida |
| `local` | **Только статический анализ на хосте** | нет — см. красную линию |

> **Красная линия `local`:** local предназначен только для **статической** работы — никогда не выполняйте, не отлаживайте и не внедряйте образец на хосте. Любое динамическое требование переключает `KUNGLAO_CHANNEL` на `vmr`/`ssh`/`docker`/`adb`; init HARD-отклоняет динамическую задачу на `local`.

Пробы каналов выполняются только для динамических задач (задачи только со статикой их пропускают). Выполнение через канал `ssh` идёт через плоскость управления **ssh-mcp** (`npm i -g ssh-mcp`); обычный CLI ssh — запасной вариант. Для удалённого docker через ssh задайте `KUNGLAO_DOCKER_CONTAINER`.

## Конфигурация

Четыре переменные покрывают большинство конфигураций:

| Переменная | По умолчанию | Значение |
|---|---|---|
| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | не задана | должна оставаться незаданной или `0` — истинные значения направляют диспетчеризацию через канал teammate и отклоняются |
| `KUNGLAO_CHANNEL` | `vmr` | плоскость управления динамическим выполнением: `vmr` \| `ssh` \| `docker` \| `adb` \| `local` — см. [Bring your own environment](#bring-your-own-environment) |
| `KUNGLAO_VM_HOST` | не задана | VM/хост для динамического анализа (vmr-shell :9876, Frida :1337) |
| `GHIDRA_HOME` | не задана | корень установки Ghidra (должен содержать `support/analyzeHeadless.bat`) |

Требуются редко: `KUNGLAO_DOCKER_CONTAINER` (цель выполнения docker для каналов `ssh`/`docker`), `KUNGLAO_FRIDA_PORT` (по умолчанию 1337), `KUNGLAO_DIE` (путь к DIE, с откатом к PATH), `KUNGLAO_CLAUDE_JSON` (переопределение для тестов реестра MCP уровня пользователя).

## Безопасность

- Образцы никогда не выполняются на хосте — это обеспечивает хук `block_malware_exec`; динамическая работа выполняется только в VM/контейнере/устройстве и требует авторизации на каждую сессию.
- Иерархия достоверности: сырой артефакт > локальный инструмент > песочница > threat intel (CTI — это опровергаемая гипотеза, а не истина).
- Maker-checker: воркер никогда не верифицирует сам себя; верификатор никогда не читает вывод мейкера.
- Бинарники, настройки и хуки никогда не коммитятся; секреты исключены из рабочих пространств и репозитория.

## Разработка

Вклад приветствуется. Рабочий процесс: ветка от `dev`, одна ветка на изменение, PR обратно в `dev`.```bash
git worktree add .worktrees/<name> -b <name> dev
uv sync --locked
uv run python -m pytest -q
gh pr create --base dev

Авторитетная точка входа для полного набора тестов — python -m pytest -q (см. .github/workflows/release-check.yml).

Документация по проектированию находится в docs/ и specs/. См. License.

Внутреннее устройство

MCP supply (полный манифест)

Единый источник истины: scripts/mcp_probe.py; kunglao-init создаёт каркас рабочего пространства .mcp.json, если он отсутствует (--no-mcp пропускает; существующий файл никогда не перезаписывается). Проверка: python scripts/mcp_probe.py <ws> --type <windows|linux|android|web|macos> — код выхода 1 = HARD отсутствует, 2 = только WARN отсутствует.

Структура рабочего пространства

Одно рабочее пространство на одно исследование образца:

``` / ├── bins/ # the sample (gitignored) ├── task_spec.yaml # primary_questions / scope / constraints / success_criteria ├── claim-register.yaml # claims C-NN with status (OPEN/PROVEN/STAMP/...) ├── claim_deps.yaml # claim DAG ├── facts/ # byte-anchored facts F-NNN.md + _INDEX.md ├── evidence/ # raw artifacts + _index.json (eid → path + sha256) ├── runs/ # worker-status, plans, ledgers, .heartbeat.json ├── blockers/ # failure-attribution records per claim └── CLAUDE.md # workspace rules, generated by kunglao-init ``` Хуки kunglao подключаются на уровне рабочей области; ваш глобальный `~/.claude/settings.json` никогда не изменяется.

Лицензия

Двойное лицензирование: AGPL-3.0 для личного, академического и внутреннего использования (бесплатно — см. LICENSE); коммерческая лицензия требуется для закрытого исходного кода или коммерческого использования в формате SaaS — см. LICENSE-commercial.md.

Скачать инструмент
ИнструментЗачемУстановка
Claude Codeгде работает kunglao-agentсогласно документации Anthropic
Python 3.10+ (Python 2 не поддерживается)плагин несёт закреплённое окружение через uv; вы его не трогаетесистемный или управляемый uv
uvрезолвер заблокированного окруженияpip install uv или astral.sh/uv
Ghidra или IDAодин набор для статического анализа и декомпиляциисм. Toolchain by target
ВопросГде
Готово ли это?код выхода цикла — CONVERGED (0) означает, что каждый первичный вопрос имеет проверенный ответ; статус по каждому утверждению в claim-register.yaml
Что найдено?facts/F<NNN>.md — один привязанный к байтам факт на файл, сопоставленный с утверждениями через claim-register.yaml
Как это воспроизвести?evidence/_index.json — факт → исходный артефакт (путь + sha256); каждый факт несёт команду reproduce:
Что именно произошло?runs/ — потактовый журнал и статус исполнителя
MCP-серверУровеньОбластьНазначениеРегистрация
ghidraHARDобязательный, все типыдекомпиляция / статический анализclaude mcp add ghidra -- <path>/bridge-mcp-ghidra.exe
sequential-thinkingHARDобязательный, все типыструктурированное рассуждениеclaude mcp add sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking
x64dbgHARDWindows T3 динамическийдинамическая отладка (удалённая VM)claude mcp add x64dbg -- x64dbg-automate-mcp
volatilityWARNWindows T3криминалистика памятиclaude mcp add volatility -- python <path>/volatility_mcp_server.py
ida-pro-vmWARNпри выборе IDAудалённый анализ IDAclaude mcp add --transport http ida-pro-vm <ida-mcp-url>
gitnexusHARDпостроение графа Androidграф знаний после декомпиляцииclaude mcp add gitnexus -- gitnexus mcp
virustotalWARNCTIthreat intel (гипотезы об атрибуции семейства)claude mcp add virustotal -- npx -y @burtthecoder/mcp-virustotal
ssh-mcpWARNканалплоскость управления выполнением sshclaude mcp add ssh-mcp -- ssh-mcp
camoufox-reverseWARNweb (бета)реверс JS в браузере (хуки / трассировка / захват сети)claude mcp add camoufox-reverse -- python -m camoufox_reverse_mcp