
Зашифрованная исследовательская платформа командования и управления (C2) для обучения кибербезопасности, лабораторных работ red team и экспериментов по безопасной связи клиент-сервер.
BlackBerryC2 — это зашифрованная платформа для удаленного администрирования и C2, разработанная исключительно для образовательных целей, исследований в области безопасности и контролируемых лабораторных сред.

Проект демонстрирует, как построить пользовательский сервер управления и контроля с криптографией на уровне приложения, управлением сессиями и безопасной связью с клиентом без использования внешних TLS-стеков.
Этот проект НЕ является вредоносным ПО и НЕ предназначен для несанкционированного доступа.
BlackBerryC2:
Используйте только на системах и сетях, которыми вы владеете или на тестирование которых имеете явное разрешение.
Python-зависимости:
pip install cryptography prompt_toolkit zstandard
zstandardопционален, но рекомендуется для передачи файлов размером более 1 ГБ.
get -r, put -r)-b) — неблокирующие, отменяемые.partial + .resume)generate-payload)BlackBerryHTTPs_TLSProxyGUI)log)logs/last_start.jsonBlackBerryC2 v2.0 устанавливает безопасную связь следующим образом:
REQUEST_PUBKEY.secp256r1).HMAC_PRE_SHARED_SECRET).Каждая сессия поддерживает:
Все криптографические ключи генерируются во время выполнения и никогда не повторяются между перезапусками (если не установлен --persistente).
python3 BlackBerryC2_server.py
Конфигурация по умолчанию:
0.0.0.09949| Флаг | Описание |
|---|---|
-p / --persistente | Использовать постоянные ключи ECDHE из ecdhe-cert/ (запрашивает парольную фразу) |
-v | Отладка логирования |
-vv | Подробное (расслабленное) логирование |
-H <host> | Прослушиваемый хост (по умолчанию: 0.0.0.0) |
-P <port> | Прослушиваемый порт (по умолчанию: 9949) |
--no-secure | Принимать любого клиента ECDHE без проверки HMAC |
--hmac <secret> | Пользовательский предварительно общий секрет HMAC (hex или строка) |
--log-passphrase <pass> | Шифровать журнал сервера с помощью AES-256-GCM (PBKDF2 600k итераций) |
--logs | Интерактивный просмотрщик журналов — сервер не запускается |
--spa | Включить предварительную аутентификацию SPA / port-knocking |
--spa-mode <spa|knock> | spa = одиночный UDP-токен, knock = последовательность портов |
--spa-port <port> | UDP-порт для SPA-слушателя (по умолчанию: 7331) |
--knock-seq <ports> | Последовательность портов для режима knock (по умолчанию: 7001,7002,7003) |
--knock-timeout <sec> | Секунды для завершения последовательности knock (по умолчанию: 10) |
--spa-ttl <sec> | Секунды, в течение которых авторизованный IP остается действительным (по умолчанию: 60) |
--berrytransfer | Режим BerryTransfer: только передача файлов, без оболочки |
--transfer-root <dir> | Корневая директория для BerryTransfer (по умолчанию: ./berry_transfers) |
--auto-confirm | Автоматически подтверждать все GET-запросы в BerryTransfer (без запроса оператора) |
Примеры:
# Базовый запуск (запрашивает парольную фразу для журнала)
python3 BlackBerryC2_server.py
# Постоянные ключи ECDHE + подробный режим
python3 BlackBerryC2_server.py -p -vv
# Пользовательский порт, без проверки HMAC
python3 BlackBerryC2_server.py -P 8080 --no-secure
# Port-knocking на пользовательских портах
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 9001,9002,9003
# Режим BerryTransfer с авто-подтверждением
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm
# Просмотр/расшифровка журналов без запуска сервера
python3 BlackBerryC2_server.py --logs
| Команда | Описание |
|---|---|
list | Список активных сессий со статистикой и именем хоста |
select <ID> | Взаимодействие с клиентской сессией |
all <cmd> | Отправить команду всем подключенным клиентам |
report | Полный отчет о состоянии сервера (аптайм, сессии, передачи) |
set host <HOST> | Изменить прослушиваемый хост (перезапускает сервер) |
set port <PORT> | Изменить прослушиваемый порт (перезапускает сервер) |
sVbanner "<text>" | Изменить баннер службы |
generate-payload | Сгенерировать клиентскую полезную нагрузку |
fingerprint | Показать отпечаток серверного ключа ECDHE (SHA-256) |
ecdhe-keys | Показать текущую пару ключей ECDHE (PEM) |
kill <id|ip> | Завершить сессию по ID или IP |
block <IP> | Постоянно заблокировать IP |
unblock <IP> | Разблокировать IP (постоянный + временный) |
blocklist | Показать заблокированные IP (постоянные и временные) |
log | Интерактивный просмотрщик журналов (поддерживает зашифрованные журналы) |
report | Сводка состояния: аптайм, сессии, передачи |
banner | Повторно отобразить стартовый баннер |
clean | Удалить файлы журналов сервера |
v | Переключить отладку DEBUG |
vv | Переключить подробное логирование VERBOSE |
cd <dir> | Изменить рабочую директорию сервера |
E <cmd> | Выполнить команду через os.system локально |
<любая команда> | Выполнить локально на сервере |
exit | Остановить сервер и выйти |