blackwall/README_RU.md

18 KiB
Raw Blame History

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

The Blackwall
Адаптивный eBPF-файрвол с AI-ханипотом

The Blackwall — Я написал умный файрвол, потому что Cyberpunk 2077 сломал мне мозг

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

Сейчас строю enterprise AI-автоматизацию в Dokky
Открыт для Enterprise Consulting & Y-Combinator: xzcrpw1@gmail.com


Коротко: я играл в Cyberpunk 2077 и подумал: "А что, если бы Blackwall был настоящим?" Поэтому я написал адаптивный eBPF-файрвол с ИИ-ханипотом, который притворяется взломанным Linux-сервером.
~8 500 строк Rust. Ни одного unwrap(). Один человек.


Что это такое?

В лоре Cyberpunk 2077 Blackwall (Тёмный Заслон) — это цифровой барьер, построенный NetWatch, чтобы отделить цивилизованную Сеть от диких ИИ — цифровых сущностей настолько опасных, что один взгляд на них может сжечь тебе мозг через нейроинтерфейс.

Этот проект — моя версия. Не от диких ИИ (пока что), а от реальных угроз.

The Blackwall — это адаптивный сетевой файрвол, который:

  • Работает внутри ядра Linux через eBPF/XDP — обрабатывает пакеты на скорости линии еще до того, как они попадают в сетевой стек.
  • Выполняет JA4 TLS-фингерпринтинг — идентифицирует вредоносных клиентов по их ClientHello.
  • Не просто блокирует атакующих — он перенаправляет их в тарпит, фейковый Linux-сервер на базе LLM, который играет роль взломанного root@web-prod-03.
  • Имеет поведенческий движок, который отслеживает поведение каждого IP-адреса со временем — паттерны сканирования портов, интервалы beacon-соединений, аномалии энтропии.
  • Поддерживает распределенный режим — несколько узлов Blackwall обмениваются данными об угрозах peer-to-peer.
  • Записывает PCAP подозрительного трафика для форензики.
  • Включает Deception Mesh — поддельные SSH, HTTP (WordPress), MySQL и DNS-сервисы, чтобы заманивать и фингерпринтить атакующих.

Самая интересная часть

Когда злоумышленник подключается к тарпиту, он видит:


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, wget, даже rm -rf / — всё фейковое, всё логируется, всё создано, чтобы тратить время атакующего, пока мы изучаем его методы.

Представьте: злоумышленник тратит 30 минут, исследуя «взломанный сервер»... который на самом деле является ИИ, тянущим время, пока Blackwall молча записывает всё.

Это нетраннерство уровня V.


Архитектура — как работает ICE

Архитектура Blackwall

Поток сигналов угроз

На языке Cyberpunk:

  • XDP = первый слой ICE Тёмного Заслона — решения за миллисекунды.
  • Поведенческий движок = ИИ-наблюдение NetWatch.
  • Тарпит = демон за Заслоном, заманивающий нетраннеров в фейковую реальность.
  • Threat Feeds = разведка от фиксеров со всей Сети.
  • PCAP = брейнданс-записи вторжения.

Крейты воркспейса

Крейт Строки Назначение Аналог из Cyberpunk
common ~400 #[repr(C)] общие типы между ядром и юзерспейсом Контракт — о чем обе стороны договорились
blackwall-ebpf ~1 800 XDP/TC программы в ядре Сам ICE Тёмного Заслона
blackwall ~4 200 Юзерспейс-демон, поведенческий движок, ИИ Центр управления NetWatch
tarpit ~1 600 TCP-ханипот с LLM bash-симуляцией Демон, заманивающий нетраннеров
blackwall-controller ~250 Координатор распределенных сенсоров C&C сервер Арасаки
xtask ~100 Инструменты сборки Набор рипердока

Итого: ~8 500 строк Rust, 48 файлов, 123 теста, 0 unwrap() в продакшн-коде.


Ключевые фичи

1. Обработка пакетов на уровне ядра (XDP)

Пакеты анализируются в виртуальной машине eBPF до того, как они доберутся до TCP/IP-стека. Это решения за наносекунды. HashMap для блок-листов, LPM trie для CIDR-диапазонов, анализ энтропии для зашифрованного C2-трафика.

2. JA4 TLS-фингерпринтинг

Каждый TLS ClientHello парсится в ядре. Cipher suites, расширения, ALPN, SNI — хешируются в JA4-фингерпринт. Ботнеты используют одни и те же TLS-библиотеки, поэтому их фингерпринты идентичны. Один фингерпринт → блокируешь тысячи ботов.

3. Deep Packet Inspection (DPI) через Tail Calls

eBPF PROG_ARRAY tail calls разбивают обработку по протоколами:

  • HTTP: Анализ метода + URI (подозрительные пути типа /wp-admin, /phpmyadmin).
  • DNS: Длина запроса + количество лейблов (выявление DNS-туннелирования).
  • SSH: Анализ баннера (идентификация libssh, paramiko, dropbear).

4. ИИ-классификация угроз

Когда поведенческий движок не уверен — он спрашивает LLM. Локально через Ollama с моделями ≤3B параметров (Qwen3 1.7B, Llama 3.2 3B). Классифицирует трафик как benign, suspicious или malicious со структурированным JSON-выходом.

5. TCP-тарпит с LLM Bash-симуляцией

Атакующих перенаправляют на фейковый сервер. LLM симулирует bash — ls -la показывает файлы, cat /etc/shadow показывает хеши, mysql -u root подключает к «базе данных». Ответы стримятся со случайным джиттером (чанки по 1-15 байт, экспоненциальный backoff), чтобы тратить время злоумышленника.

6. Антифингерпринтинг

Тарпит рандомизирует TCP window sizes, TTL-значения и добавляет случайную начальную задержку — чтобы атакующие не могли определить, что это ханипот, через p0f или Nmap OS detection.

7. Защита от Prompt Injection

Атакующие, которые поняли, что говорят с ИИ, могут попытаться "ignore previous instructions". Система детектит 25+ паттернов инъекций и отвечает bash: ignore: command not found.

8. Распределенная разведка угроз

Несколько узлов Blackwall обмениваются списками заблокированных IP, JA4-наблюдениями и поведенческими вердиктами через кастомный бинарный протокол. Один узел обнаруживает сканер → все узлы блокируют его мгновенно.

9. Поведенческая state machine

Каждый IP получает поведенческий профиль: частота соединений, разнообразие портов, распределение энтропии, анализ таймингов (детекция beaconing через целочисленный коэффициент вариации). Прогрессия фаз: New → Suspicious → Malicious → Blocked (или → Trusted).


Технологический стек

Уровень Технология
Программы ядра eBPF/XDP через aya-rs (чистый Rust, без C, без libbpf)
Юзерспейс-демон Tokio (только current_thread)
IPC RingBuf zero-copy (7.5% overhead против 35% PerfEventArray)
Конкурентные мапы papaya (lock-free read-heavy HashMap)
ИИ-инференс Ollama + GGUF Q5_K_M квантизация
Конфигурация TOML
Логирование tracing структурированное логирование
Сборка Кастомный xtask + nightly Rust + bpfel-unknown-none таргет

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

Требования

  • Linux kernel 5.15+ с BTF (или WSL2 с кастомным ядром).
  • Rust nightly + компонент rust-src.
  • bpf-linker (cargo install bpf-linker).
  • Ollama (для ИИ-функций).

Сборка

# eBPF-программы (нужен nightly)
cargo xtask build-ebpf

# Юзерспейс
cargo build --release -p blackwall

# Ханипот
cargo build --release -p tarpit

# Линтер + тесты
cargo clippy --workspace -- -D warnings
cargo test --workspace

Запуск

# Демон (нужен root/CAP_BPF)
sudo RUST_LOG=info ./target/release/blackwall config.toml

# Тарпит
RUST_LOG=info ./target/release/tarpit

# Распределенный контроллер
./target/release/blackwall-controller 10.0.0.2:9471 10.0.0.3:9471

Конфигурация

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

[tarpit]
enabled = true
port = 9999

[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"

[feeds]
enabled = true
refresh_interval_secs = 3600

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

[distributed]
enabled = false
mode = "standalone"
bind_port = 9471

Визуальные результаты

Визуальные результаты Blackwall


Связь с Cyberpunk

Во вселенной Cyberpunk 2077 Blackwall построили после DataKrash 2022 года — когда вирус R.A.B.I.D.S. Рейча Бартмосса уничтожил старую Сеть. NetWatch построил Тёмный Заслон как барьер, чтобы сдержать диких ИИ, эволюционировавших в руинах.

Некоторые персонажи — такие как Альт Каннингем — существуют за Тёмным Заслоном, превращенные во что-то большее, чем человек, и меньшее, чем живое существо.

Этот проект берет эту концепцию и делает ее реальной (ну, почти):

Cyberpunk 2077 The Blackwall (Этот проект)
Тёмный Заслон eBPF/XDP файрвол на уровне ядра
ICE XDP fast-path DROP + энтропия + JA4
Атаки нетраннеров Сканирование портов, брутфорс, C2 beaconing
Демоны за Заслоном LLM-тарпит, который притворяется настоящим сервером
Наблюдение NetWatch Поведенческий движок + state machine на IP
Дикие ИИ Ботнеты и автоматические сканеры
Записи Брейнданса PCAP-форензика
Разведка фиксеров Threat feeds (Firehol, abuse.ch)
C&C Арасаки Распределенный контроллер

Статистика проекта

Язык:          100% Rust (без C, без Python, без shell-скриптов в продакшене)
Строки кода:   ~8 500
Файлы:         48
Тесты:         123
unwrap():      0 (в продакшн-коде)
Зависимости:   12 (проверенные, без лишнего)
eBPF стек:     всегда ≤ 512 байт
Clippy:        никаких предупреждений (-D warnings)

Философия разработки

"Сколько бы раз я ни видел Найт-Сити... он всегда захватывает дух."

  1. Никаких зависимостей, где это возможно. Если алгоритм занимает меньше 500 строк — пишешь сам. Никакого reqwest (50+ транзитивных зависимостей), никакого clap (излишне для 2 аргументов CLI).
  2. Контракт на первом месте. Крейт common определяет все общие типы. eBPF и юзерспейс никогда не спорят о структуре памяти.
  3. Никаких шорткатов в eBPF. Каждый доступ ctx.data() имеет bounds check. Не потому что верификатор требует, а потому что каждый байт из пакетов атакующего — это враждебный ввод.
  4. Тарпит никогда не выдает себя. Системный промпт LLM никогда не упоминает "ханипот". Prompt injection ожидается и заблокирован.
  5. Наблюдаемый, но не болтливый. Структурированное tracing с уровнями. Никаких println! в продакшене.

Дисклеймер

Это исследовательский проект в сфере безопасности. Создан для вашей собственной инфраструктуры, в оборонительных целях. Не используйте для атак на других. Не развертывайте тарпит на продакшн-серверах, не понимая последствий.

Я не аффилирован с CD Projekt Red. Я просто сыграл в их игру, и она сломала мне мозг лучшим из возможных способов.


Лицензия

BSL 1.1 — потому что Сеть нуждается и в свободе, и в устойчивом развитии.


Хотите, чтобы это развивалось дальше? — Поставьте звезду!

"Проснись, самурай. Нам еще сеть защищать."