🌐 Язык: 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](assets/architecture.svg) ![Поток сигналов угроз](assets/signal-flow.svg) На языке 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 (для ИИ-функций). ### Сборка ```bash # eBPF-программы (нужен nightly) cargo xtask build-ebpf # Юзерспейс cargo build --release -p blackwall # Ханипот cargo build --release -p tarpit # Линтер + тесты cargo clippy --workspace -- -D warnings cargo test --workspace ```` ### Запуск ```bash # Демон (нужен 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 ``` ### Конфигурация ```toml [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](assets/results-overview.svg) ----- ## Связь с 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 — потому что Сеть нуждается и в свободе, и в устойчивом развитии. -----

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

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