
nightcrawler — Updated!
Локальный ИИ-ассистент для red team на телефоне
Nightcrawler
Автономный агент для пентеста, который полностью работает на смартфоне. Оставьте телефон в сети, уйдите, и он обнаружит хосты, просканирует сервисы, найдёт уязвимости и сформирует отчёт о пентесте — всё без подключения к облаку.
░█▄░█ █ █▀▀ █░█ ▀█▀ █▀▀ █▀█ ▄▀█ █░█░█ █░░ █▀▀ █▀█
░█░▀█ █ █▄█ █▀█ ░█░ █▄▄ █▀▄ █▀█ ▀▄▀▄▀ █▄▄ ██▄ █▀▄ v0.1.0
AUTONOMOUS MOBILE PENTEST AGENT
OnePlus 8 · NetHunter · LFM2.5-1.2B · OpenCL GPU
Что это такое?
Тестирование на проникновение (пентест) — это практика проверки безопасности компьютерной сети путём имитации атаки — с явного разрешения владельца сети. Профессиональных пентестеров нанимают, чтобы найти уязвимости до того, как это сделают реальные злоумышленники.
Nightcrawler автоматизирует этот процесс на телефоне. Он использует небольшую ИИ-модель (LFM2.5-1.2B-Instruct-Heretic, 1,2 миллиарда параметров), работающую локально на GPU телефона, чтобы решать, что делать дальше — какой хост исследовать, какой инструмент использовать, что искать. Никакого подключения к интернету или облачных API не требуется.
Демо
▶️ Посмотрите Nightcrawler в действии на Instagram
Как это работает
- Взлом WiFi (опционально) — Если устройство оставлено без WiFi, оно может автономно взламывать сети WPA2 с помощью внешнего USB WiFi-адаптера
- Разведка — Обнаруживает устройства в сети с помощью скрытных сканирований
- Перечисление — Исследует обнаруженные сервисы (веб-серверы, файловые ресурсы, SSH, DNS и т.д.)
- Эксплуатация — Проверяет известные уязвимости и учётные данные по умолчанию
- Формирование отчёта — Создаёт структурированный отчёт о пентесте с находками и рекомендациями по устранению
Агент действует как терпеливый человек-пентестер — он ротируется между хостами, выполняет одно небольшое действие за ход и постепенно накапливает знания в течение часов. Это делает его гораздо более сложным для обнаружения, чем традиционные сканеры уязвимостей, которые «бомбардируют» все хосты одновременно.
Ключевые понятия
| Термин | Что означает |
|---|---|
| Drop box | Устройство, оставленное в целевой сети для автономного тестирования |
| Scope (Область) | Набор сетей/хостов, которые вам разрешено тестировать |
| Правила взаимодействия (ROE) | Юридический документ, определяющий, что вам разрешено делать |
| Стелс | Методы, позволяющие избежать обнаружения сетевым мониторингом (IDS/IPS) |
| MCP | Model Context Protocol — стандартный интерфейс для использования инструментов ИИ |
| C2 | Command and Control — веб-панель для мониторинга и управления агентом |
Архитектура
┌──────────────────────────────────────────────────────────┐
│ PHONE (OnePlus 8) │
│ │
│ ┌─────────────┐ ┌──────────────────┐ │
│ │ LFM2.5 │ │ Agent Loop │ │
│ │ 1.2B model │◄───►│ (main.py) │ │
│ │ on GPU │ │ Decides what │ │
│ │ (:8080) │ │ to do next │ │
│ └─────────────┘ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ Scope Proxy │ ← Safety layer │
│ │ Validates every │ Blocks out- │
│ │ command before │ of-scope │
│ │ execution │ actions │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ Kali MCP Server │ ← Runs the │
│ │ nmap, curl, │ actual │
│ │ smbclient, ... │ commands │
│ └──────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Web Dashboard │ │ SQLite DB │ │
│ │ (:8888) │ │ Hosts, vulns, │ │
│ │ Monitor & steer │ │ creds, commands │ │
│ └──────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────┘
Полное описание системного дизайна см. в docs/ARCHITECTURE.md.
Возможности
- Полностью автономный — без участия человека во время работы
- 100% локальный инференс — ИИ работает на GPU телефона, облако не требуется
- Ограничение области (scope) — двухуровневая защита предотвращает действия вне области
- Стелс в приоритете — медленные скорости сканирования, ротация хостов, маскирующий трафик, только nmap -T2
- 27 плейбуков эксплуатации — многошаговые цепочки атак, выполняемые автоматически
- База CVE на 24 956 записей — сопоставление уязвимостей с учётом версий
- Веб-панель — мониторинг в реальном времени, управление хостами, элементы управления C2
- Режим взлома WiFi — автономный взлом WPA2 с USB-адаптером (вдохновлено Pwnagotchi)
- Пассивное обнаружение — фоновый захват широковещательного трафика mDNS/NBNS/DHCP/ARP
- Мультисеть — данные изолированы по сетям, переживает смену DHCP благодаря хостам с ключом по MAC
- Самовосстановление — обнаружение мусорных данных, сброс контекста, сторожевые таймеры, обнаружение зависаний
- Захват для обучения — логирует успешные взаимодействия для будущей тонкой настройки модели
- Генерация отчётов — загружаемый отчёт о пентесте с уязвимостями, цепочками эксплуатации и рекомендациями по устранению
Полный справочник возможностей см. в docs/FEATURES.md.
Оборудование
Требуемое
- Android-телефон с Kali NetHunter (протестировано на OnePlus 8, Snapdragon 865)
- Root-доступ через Magisk
- 12 ГБ+ ОЗУ (модель использует ~1,3 ГБ, Android ~4 ГБ, остальное — для инструментов)
Опционально
- USB WiFi-адаптер для автономного режима взлома WiFi (рекомендуется Ralink RT3572)
- Кастомное ядро с MAC80211 для режима монитора (руководство по сборке)
- NVIDIA AGX для выгрузки на более крупную модель через Tailscale
Производительность GPU
Весь инференс через OpenCL на GPU Adreno 650:
| Модель | Квантование | Скорость промпта | Скорость генерации |
|---|---|---|---|
| LFM2.5-1.2B-Instruct-Heretic (продакшн) | Q8_0 | 115 ток/с | 13 ток/с |
| Qwen3.5-0.8B | Q8_0 | 30,5 ток/с | 6,3 ток/с |
| Qwen3.5-4B | Q4_0 | 10,1 ток/с | 2,0 ток/с |
Примечание: Android ограничивает GPU при питании от батареи (замедление в 6 раз). Nightcrawler включает демон управления GPU, который принудительно задаёт максимальную производительность и автоматически снижает её при заряде ≤15%.
Быстрый старт
# 1. Установка (внутри chroot Kali NetHunter)
bash INSTALL.sh
# 2. Дождитесь запуска llama-server (~5 минут после загрузки)
curl -s http://127.0.0.1:8080/health # Должен вернуть {"status":"ok"}
# 3. Запустите все сервисы
bash scripts/run-36h.sh
# 4. Откройте веб-панель (с любого устройства в вашей сети Tailscale)
# https://<your-tailscale-hostname>:8888
Пробный запуск (без выполнения реальных команд)
NC_DRY_RUN=1 python3 main.py
При этом используется имитационный Kali-сервер, чтобы вы могли протестировать цикл агента без выполнения реальных сетевых команд.