
ABYSS C2 — HiSilicon DVR Exploit Framework (CVE-2020-25078). Образовательная платформа для исследования безопасности Интернета вещей.
⚠️ ТОЛЬКО В ОБРАЗОВАТЕЛЬНЫХ / ДЕМОНСТРАЦИОННЫХ ЦЕЛЯХ
Это программное обеспечение предоставляется исключительно для образовательных целей и авторизованных исследований безопасности. Оно предназначено для демонстрации распространенных уязвимостей IoT и техник постэксплуатации в контролируемой, авторизованной среде.
ЗАПРЕЩАЕТСЯ использовать это программное обеспечение на:
- Любой системе или устройстве, которое вам не принадлежит
- Любой системе или устройстве, на которое у вас нет явного письменного разрешения на тестирование
- Любой производственной инфраструктуре без предварительного одобрения
Создатель не несет НИКАКОЙ ответственности за любое неправомерное использование, ущерб или незаконные действия, совершенные с помощью этого программного обеспечения. Используя это программное обеспечение, вы подтверждаете, что несете единоличную ответственность за соблюдение всех применимых законов и нормативных актов в вашей юрисдикции. Несанкционированный доступ к компьютерным системам является незаконным согласно таким законам, как Computer Fraud and Abuse Act (CFAA) и аналогичным нормативным актам по всему миру.
Этот проект существует для демонстрации:
- Как работает CVE-2020-25078 (раскрытие информации HiSilicon DVR)
- Слабые места безопасности устройств IoT и почему важны обновления прошивки
- Техники постэксплуатации, чтобы защитники понимали TTP атакующих
- Важность сегментации сети и гигиены учетных данных
Если вы не владеете устройством, не трогайте его.
ABYSS C2 — это полнофункциональный фреймворк Command & Control, написанный на Python/Flask с темной веб-панелью в реальном времени. Он демонстрирует полную цепочку атак на устройства IoT (в частности, DVR и IP-камеры на базе HiSilicon, затронутые CVE-2020-25078) — от разведки и получения целей до эксплуатации, постэксплуатации, закрепления, бокового перемещения и эксфильтрации данных.
CVE-2020-25078 — это уязвимость обхода пути / раскрытия информации в устройствах DVR/NVR на базе HiSilicon Hi3516/Hi3518/Hi3519. Неаутентифицированные злоумышленники могут получить доступ к конфигурационным файлам (/mnt/mtd/Config/Account*), содержащим учетные данные администратора в открытом виде, через обход каталогов в HTTP-сервере.
panel/ ├── server.py # Flask + SocketIO C2 web panel (~1200 lines, 50+ API routes) ├── database.py # SQLite ORM — 11 tables (cameras, vulns, creds, shells, DNS, ASN, etc.) ├── scanner.py # Multi-threaded TCP/HTTP vulnerability scanner ├── exploit.py # CVE-2020-25078 exploit — 37 vulnerable paths, 14 credential parsers ├── telnet_client.py # Raw telnet command execution against owned devices ├── brute.py # Multi-threaded brute force engine ├── web_exploit.py # Full website vulnerability scanner (CMS detection, exposed files, SQLi) ├── web_cves.py # CVE scanner — Log4Shell, Spring4Shell, Confluence, Ghostcat, etc. ├── web_bugs.py # Bug class scanner — SQLi, LFI, SSRF, XXE, CmdI, JWT, etc. ├── web_brute.py # Web brute force — forms, WordPress xmlrpc, Basic Auth, cred stuffing ├── network_exploit.py # Network service exploit scanner — SMB, RDP, VNC, databases, etc. ├── cred_spray.py # Multi-service credential spraying ├── recon_asn.py # ASN import, organization search, IP-to-ASN lookup ├── recon_dns.py # DNS recon — all record types, subdomain brute, zone transfer ├── recon_jarm.py # JARM TLS server fingerprinting ├── recon_waf.py # WAF detection and identification ├── recon_geoip.py # GeoIP lookup and bulk IP geolocation ├── portscan.py # TCP port scanner with banner grabbing, SYN option, multiple presets ├── persistence.py # SSH key injection, cron backdoors, full deployment ├── reverse_shell.py # Payload generator + multi-session listener ├── pivot_chain.py # Multi-hop command execution and TCP relay ├── socks_pivot.py # SOCKS5 proxy through compromised hosts ├── botnet.py # Bot grouping, fan-out commands, health checks, payload deployment ├── intel.py # Telegram/Discord webhooks, AbuseIPDB, screenshot capture ├── scheduler.py # APScheduler-based job scheduling ├── proxy_rotation.py # Proxy list rotation for stealth ├── stealth.py # Traffic obfuscation utilities ├── inject_key.py # SSH key injection variants ├── inject_ssh.py # SSH-based injection ├── launch.py # Simple launcher wrapper ├── auto_exploit.py # Automated exploitation routines ├── templates/ │ └── index.html # Dark-themed SPA — 8 tabs, real-time updates, terminal └── requirements.txt # Python dependencies
### Схема базы данных
База данных SQLite (`cameras.db`, создаётся автоматически при первом запуске) содержит 11 таблиц:
| Таблица | Назначение |
|---------|------------|
| `cameras` | Скомпрометированные устройства — IP, учётные данные, модель, прошивка, серийный номер, статус |
| `command_log` | Полный контрольный журнал каждой выполненной команды и её вывода |
| `scan_results` | История сканирования — какие IP были проверены и были ли они уязвимы |
| `web_vulns` | Обнаруженные веб-уязвимости (CVE, уровень опасности, доказательства) |
| `network_vulns` | Обнаруженные уязвимости сетевых служб |
| `shells` | Активные сессии обратных оболочек |
| `dns_records` | Результаты разведки DNS |
| `cred_vault` | Собранные учётные данные, сгруппированные по службам |
| `asn_targets` | Префиксы ASN и импортированные диапазоны IP |
| `web_targets` | Веб-цели с метаданными (статус, сервер, CMS, JARM, WAF) |
| `scan_jobs` | Отслеживание заданий — тип сканирования, цель, длительность, количество результатов |
| `scan_log` | Журнал активности на уровне модулей для аудита |
---
## Установка
### Предварительные требования
- Python 3.10 или новее
- pip
- Git (опционально)
### Шаг 1 — Клонировать или скачать```bash
git clone https://github.com/YOUR_USERNAME/abyss-c2.git
cd abyss-c2
python -m venv venv
venv\Scripts\activate
source venv/bin/activate
### Шаг 3 — Установка зависимостей```bash
pip install -r requirements.txt
Модули перебора ожидают словарь rockyou.txt в корне проекта. Из-за ограничений GitHub на размер файлов (100MB) он НЕ включён в этот репозиторий.```bash
cp /usr/share/wordlists/rockyou.txt.gz . gunzip rockyou.txt.gz
Если вам не нужен брутфорс, остальные модули работают без словника.
### Шаг 5 — Запуск```bash
python server.py
Откройте http://localhost:5000 в вашем браузере.
База данных создаётся автоматически при первом запуске — никакой настройки не требуется.
Когда вы впервые открываете панель, вы увидите:
Это ваш командный центр. Здесь вы можете:
Получать цели из поисковых систем:
Ручное сканирование:
192.168.1.0/24)После того как устройства скомпрометированы (появляются в таблице):
Массовые операции:
Режим сканирования веба (переключите кнопкой WEB):
Шесть модулей разведки:
Сканер CVE — Проверяет 20+ известных CVE: Log4Shell (CVE-2021-44228), Spring4Shell (CVE-2022-22965), Confluence (CVE-2022-26134), Ghostcat (CVE-2020-1938), Struts2 (CVE-2017-5638), Jenkins (CVE-2018-1000861), GitLab (CVE-2021-22205), Exchange ProxyShell/ProxyLogon, F5 BIG-IP (CVE-2022-1388), Citrix (CVE-2019-19781), MOVEit (CVE-2023-34362), Ivanti (CVE-2024-21887), vCenter (CVE-2021-21972), PHPUnit (CVE-2017-9841), GeoServer (CVE-2024-36401), Apache Solr (CVE-2019-17558), а также уязвимости плагинов WordPress.
Сканер классов ошибок — Тестирует: Слепые SQL-инъекции, внедрение команд, локальное включение файлов, подделку серверных запросов (SSRF), внешние XML-сущности (XXE), атаки на JWT, захват поддоменов, контрабанду HTTP-запросов, интроспекцию GraphQL, неправильную настройку CORS.
Web-брутфорс — Четыре режима:
Результаты отображаются в таблице Обнаруженные уязвимости ниже.
Сканер сетевых эксплойтов — Проверяет распространённые сетевые сервисы на известные уязвимости: SMB (EternalBlue, SMBGhost), RDP (BlueKeep), VNC (обход аутентификации), FTP (анонимный доступ), SNMP (стандартные community), Redis (без аутентификации), MongoDB (без аутентификации), Elasticsearch (без аутентификации), CouchDB (без аутентификации), MySQL/MSSQL/PostgreSQL (стандартные учётные данные), Memcached (без аутентификации), IPMI (обход аутентификации), Mirai-IoT стандартные.
Распыление учётных данных — Распыляет собранные или заданные вручную учётные данные на несколько сервисов: Telnet, SSH, FTP, HTTP Basic, WordPress, SMB, Redis, MySQL, MongoDB, VNC или ВСЕ сразу.
Результаты заполняют таблицу Сетевые уязвимости и Хранилище учётных данных.
Три действия развёртывания на скомпрометированных хостах:
/root/.ssh/authorized_keys (или несколько путей)Pivot Chain — Выполнение команд через несколько промежуточных хостов:``` hop1 → hop2 → hop3 → command
**SOCKS Pivot** — Запустить локальный SOCKS5-прокси, который направляет трафик через скомпрометированное устройство, позволяя вам использовать proxychains или любой совместимый с SOCKS инструмент для доступа к внутренней сети.
### Вкладка 6 — Обратные оболочки
- **Генератор пейлоадов** — Выберите тип оболочки (bash, python, perl, php, nc, ruby, node, lua и т.д.), установите LHOST/LPORT, нажмите GENERATE — пейлоад появится, нажмите, чтобы скопировать
- **Прослушиватель** — Запустите прослушиватель на любом порту, он автоматически управляет несколькими одновременными соединениями
- **Активные сессии** — Нажмите на любую сессию для взаимодействия, введите команды и нажмите SEND
- Таблица **Все оболочки** показывает каждый полученный обратный вызов обратной оболочки со статусом
### Вкладка 7 — Ботнет
Для управления большими группами скомпрометированных устройств:
- **Команда Fan-Out** — Выполнить команду на всех ботах (опционально фильтруется по тегу)
- **Проверка состояния** — Проверить все боты и сообщить статус онлайн/офлайн
- **Тег бота** — Назначить теги ботам для группировки (например, `eu`, `cameras`, `high-value`)
- **Развернуть пейлоад** — Отправить пейлоад всем ботам в группе по тегу
- **Сводка по ботам** — Показывает общее количество, количество онлайн и разбивку по тегам
### Вкладка 8 — Настройки
- **Telegram/Discord** — Настроить вебхук-уведомления о событиях (новое скомпрометированное устройство, завершение сканирования и т.д.)
- **AbuseIPDB** — Проверить репутацию IP
- **Снимок экрана** — Сделать HTTP-снимок экрана веб-интерфейса камеры
- **Планировщик** — Настроить повторяющиеся задачи (например, проверка состояния каждые 3600 секунд)
- **Журнал сканирования** — Полный журнал аудита всех операций модулей, фильтруется по типу модуля
---
## Справочник по API
Полный REST API доступен по адресу `http://localhost:5000/api/`. Ключевые конечные точки:
| Конечная точка | Метод | Описание |
|----------|--------|-------------|
| `/api/cameras` | GET | Список всех скомпрометированных устройств |
| `/api/cameras/<ip>` | GET | Получить детали устройства |
| `/api/stats` | GET | Статистика панели управления |
| `/api/scan/start` | POST | Запустить сканер (CIDR, цели, потоки) |
| `/api/scan/stop` | POST | Остановить сканер |
| `/api/scan/status` | GET | Состояние сканера (запущен/остановлен) + статистика |
| `/api/exploit/check` | POST | Проверить один IP на CVE-2020-25078 |
| `/api/fetch_targets` | POST | Получить из Shodan/FOFA/ZoomEye/Free |
| `/api/web_scan` | POST | Полное сканирование уязвимостей веб-сайта |
| `/api/web_cves/scan` | POST | Сканирование CVE по цели |
| `/api/web_bugs/scan` | POST | Сканирование классов ошибок по цели |
| `/api/web_brute` | POST | Веб-брутфорс |
| `/api/network/scan` | POST | Сканирование эксплойтов сети |
| `/api/cred_spray` | POST | Подбор учетных данных (распыление) |
| `/api/portscan` | POST | TCP-сканирование портов |
| `/api/recon/asn` | POST | Импорт/поиск ASN |
| `/api/recon/dns` | POST | DNS-разведка |
| `/api/recon/jarm` | POST | JARM-отпечаток |
| `/api/recon/waf` | POST | Обнаружение WAF |
| `/api/recon/geoip` | POST | GeoIP-поиск |
| `/api/persistence/deploy` | POST | Развернуть постоянство (ssh_key/cron/full) |
| `/api/revshell/generate` | POST | Сгенерировать пейлоад обратной оболочки |
| `/api/revshell/listen` | POST | Запустить прослушиватель обратной оболочки |
| `/api/revshell/stop` | POST | Остановить прослушиватель |
| `/api/botnet/bots` | GET | Список ботов + сводка по группам |
| `/api/botnet/fanout` | POST | Выполнить команду на всех ботах |
| `/api/botnet/health` | POST | Проверка состояния ботов |
| `/api/botnet/deploy` | POST | Развернуть пейлоад на ботах |
| `/api/socks/start` | POST | Запустить SOCKS5-прокси |
| `/api/socks/stop` | POST | Остановить SOCKS5-прокси |
| `/api/intel/config` | GET/POST | Получить/установить конфигурацию уведомлений |
| `/api/intel/screenshot` | POST | Сделать снимок экрана камеры |
| `/api/intel/notify` | POST | Отправить тестовое уведомление |
| `/api/scheduler/jobs` | GET | Список запланированных задач |
| `/api/scheduler/add` | POST | Добавить запланированную задачу |
| `/api/scheduler/remove` | POST | Удалить запланированную задачу |
| `/api/credentials` | GET | Хранилище учетных данных |
| `/api/web_vulns` | GET | Список веб-уязвимостей |
| `/api/network_vulns` | GET | Список сетевых уязвимостей |
| `/api/shells` | GET | Все сессии обратных оболочек |
| `/api/scan_log` | GET | Журнал аудита с фильтрами по модулю/цели |
| `/api/scan_jobs` | GET | История заданий сканирования |
Веб-сокет события (SocketIO):
- `scanner_event` — Ход сканирования в реальном времени (живой, уязвимый, захвачен, статус)
- `stats_update` — Изменение статистики панели управления
- `cameras_list` — Обновление таблицы камер
- `new_camera` — Новое скомпрометированное устройство
- `command_result` — Результат Telnet-команды
- `mass_result` / `mass_result_item` — Результаты массовой команды
- `brute_event` — Ход брутфорса
- `web_cve_event` / `web_cves_done` — Ход сканирования CVE
- `web_bug_event` / `web_bugs_done` — Ход сканирования ошибок
- `network_event` / `network_done` — Ход сетевого сканирования
- `spray_event` / `spray_done` — Ход распыления учетных данных
- `portscan_event` / `portscan_done` — Ход сканирования портов
- `persistence_result` — Результат развертывания постоянства
- `revshell_event` — Данные/соединения обратных оболочек
- `botnet_event` / `botnet_fanout_done` — Операции ботнета
---
## Технические детали
### Цепочка эксплойта CVE-2020-25078
1. **Проверка активности** — TCP-подключение к порту 80
2. **HTTP-отпечаток** — Проверка ответа на 15 известных сигнатур DVR (`AppName="Hipcam"`, `hi3516`, `WEB SERVICE` и т.д.)
3. **Обход пути** — Попытка 37 известных уязвимых путей (`/../../../../../../../../../mnt/mtd/Config/Account1` и т.д.)
4. **Извлечение учетных данных** — Разбор ответа с помощью 14 regex-шаблонов, охватывающих INI, XML, JSON, URL-закодированные, двоичные, base64, разделенные двоеточием и форматы, специфичные для DVR
5. **Фильтрация мусора** — Агрессивное удаление ложных срабатываний (HTML-теги, HTTP-заголовки, общие слова)
6. **Резервные значения по умолчанию** — Если устройство уязвимо, но учетные данные не извлечены, попробовать 22 известные пары учетных данных по умолчанию
### Архитектура сканера
- Пул потоков с настраиваемым количеством рабочих (по умолчанию 50)
- Распределение целей на основе очереди
- Отправка событий SocketIO в реальном времени в пользовательский интерфейс
- Потокобезопасная статистика с мьютексами
- Развертывание диапазона CIDR с исключением сетевых и широковещательных адресов
- Многопортовое сканирование (80, 8080, 443, 8443, 554, 8000, 81, 88, 8888, 37777)
---
## Отказ от ответственности
**ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ТОЛЬКО В ОБРАЗОВАТЕЛЬНЫХ И ДЕМОНСТРАЦИОННЫХ ЦЕЛЯХ.**
Этот проект предназначен для использования исключительно в авторизованных тестах безопасности, образовательных средах или на системах, которые вам принадлежат. Продемонстрированные здесь методы хорошо известны в индустрии кибербезопасности и документированы, чтобы помочь защитникам понять методологии атак.
**Используя это программное обеспечение, вы соглашаетесь с тем, что:**
1. Вы будете использовать его только на системах, которые вам принадлежат, или на которые у вас есть явное письменное разрешение на тестирование
2. Вы несете ответственность за соблюдение всех применимых местных, государственных, национальных и международных законов
3. Создатель(и) и участник(и) этого проекта **не несут абсолютно никакой ответственности** за любое:
- Несанкционированное или незаконное использование этого программного обеспечения
- Ущерб, причиненный использованием или неправильным использованием этого программного обеспечения
- Юридические последствия, возникшие в результате использования этого программного обеспечения
4. Это программное обеспечение не предоставляет никаких гарантий, явных или подразумеваемых
**Если вы не уверены, является ли ваше использование законным или авторизованным, НЕ ИСПОЛЬЗУЙТЕ это программное обеспечение.**
Существование этого проекта не является поощрением к незаконной деятельности. Он существует потому, что понимание атакующих техник необходимо для построения эффективной защиты.
---
## Лицензия
Этот проект предоставляется как есть в образовательных целях. Без гарантий. Без ответственности. Используйте на свой страх и риск.
---
*Помните: исследования в области безопасности существуют, чтобы сделать системы безопаснее, а не взламывать их. Используйте эти знания для защиты, а не для атак.*
| Модуль | Что делает |
|---|
| ASN Lookup | Импорт всех префиксов из ASN, поиск организаций, определение, к какому ASN принадлежит IP |
| DNS Recon | Полная переборка DNS — A, AAAA, MX, NS, TXT, SOA, CNAME записи + подбор поддоменов + попытки пересылки зоны AXFR |
| JARM Fingerprint | Снятие отпечатка TLS-сервера — идентифицирует реализацию TLS даже за балансировщиками нагрузки |
| WAF Detection | Определяет, какой WAF (Cloudflare, CloudFront, Imperva, Akamai и т.д.) стоит перед целью |
| GeoIP | Геолокация и определение провайдера для любого IP |
| Port Scan | Сканирование TCP-портов с 6 пресетами — Web, Top 100, Top 1000, Full, IoT, Databases — с захватом баннеров |