
BlockGuard — это агент предотвращения потери данных (DLP) для Windows, который перехватывает и контролирует доступ к файлам на уровне процессов. Он гарантирует, что только авторизованные процессы, идентифицированные по пути к исполняемому файлу, криптографическому хешу, подписи Authenticode и уровню целостности, могут читать защищённые файлы.
BlockGuard — это агент предотвращения потери данных (DLP) для Windows, который перехватывает и контролирует доступ к файлам на уровне процессов. Он гарантирует, что только авторизованные процессы — идентифицированные по пути исполняемого файла, криптографическому хэшу, подписи Authenticode и уровню целостности — могут читать защищённые файлы. Всем остальным процессам по умолчанию запрещён доступ на уровне ядра ОС через ACL NTFS.
| Функция | Описание |
|---|---|
| ACL с запретом по умолчанию | Защищённые файлы блокируются при запуске агента — доступ имеют только SYSTEM и администраторы |
| Мониторинг ETW в реальном времени | События ввода-вывода на уровне ядра, захваченные через Event Tracing for Windows |
| Проверка процессов по 6 уровням | Путь исполняемого файла, хэш SHA-256, подпись Authenticode, SID владельца, уровень целостности, цепочка родительских процессов |
| Шифрование файлов с помощью DPAPI | Защищённые файлы шифруются на диске с помощью Windows Data Protection API |
| Автоматический отзыв временного доступа | Авторизованные процессы получают временные разрешения ACL с ограниченным сроком действия, которые истекают автоматически |
| Обнаружение вмешательства | Периодические проверки целостности обнаруживают и автоматически исправляют изменения ACL |
| Структурированное аудирование | Журнал аудита всех попыток доступа в формате JSON (готов для интеграции с SIEM) |
| Служба Windows | Работает как фоновая служба Windows под учётной записью NT AUTHORITY\SYSTEM |
BlockGuard использует трёхуровневую модульную архитектуру:``` ┌─────────────────────────────────────────────────────────────────┐ │ BlockGuard.Agent (Windows Service) │ │ Orchestrates all layers │ ├───────────────────┬─────────────────────┬───────────────────────┤ │ Layer 1 │ Layer 2 │ Layer 3 │ │ MONITORING │ POLICY & IDENTITY │ PROTECTION │ │ │ │ │ │ • ETW Kernel │ • Process Identity │ • DPAPI Encryption │ │ File Trace │ Validator (6 │ • Structured Audit │ │ • ACL Enforcer │ checks) │ Logger (JSON) │ │ (deny-by- │ • Policy Evaluator │ │ │ default) │ (AND-logic │ │ │ │ rules) │ │ │ │ • Identity Cache │ │ │ │ (LRU + TTL) │ │ └───────────────────┴─────────────────────┴───────────────────────┘
---
## 🖥️ Интерфейс управления UI
BlockGuard включает **WPF-приложение** для управления защищёнными файлами и папками через визуальный интерфейс — не нужно вручную редактировать `appsettings.json`.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/12349/51a9b7894117382666d869cee59860a33698f666133bd23c6b6cd48b225d942c.png" alt="BlockGuard UI" width="640" />
</p>
### Возможности
- **Панель управления** — Обзор статуса защиты (всего файлов, папок, состояние шифрования)
- **Защищённые файлы** — Добавление/удаление файлов и папок для защиты от доступа ИИ с помощью диалогов выбора файлов
- **Журнал действий** — Журнал всех изменений конфигурации в реальном времени
- **Настройки** — Просмотр пути к файлу конфигурации и информации об агенте
- **Статус агента** — Индикатор в реальном времени, показывающий, запущена ли служба агента BlockGuard
### Как запустить интерфейс```powershell
# From the project root
dotnet run --project src/BlockGuard.UI
Примечание: Интерфейс считывает и записывает
appsettings.jsonиз проекта Agent. После сохранения изменений перезапустите службу BlockGuard Agent, чтобы они вступили в силу.
Перед запуском BlockGuard убедитесь, что на вашем компьютере с Windows установлено следующее:
| Требование | Минимальная версия | Команда проверки |
|---|---|---|
| ОС Windows | Windows 10 / Server 2019 | winver |
| .NET SDK | 9.0 | dotnet --version |
| Права администратора | Обязательно | Запустите терминал от имени администратора |
winget install Microsoft.DotNet.SDK.9
---
## 🚀 Быстрый старт
### 1. Клонирование репозитория```powershell
git clone [email protected]:m2l33k/BlockGuard.git
cd BlockGuard
dotnet restore BlockGuard.sln
### 3. Соберите решение```powershell
dotnet build BlockGuard.sln --configuration Release
Вы должны увидеть:``` Build succeeded. 0 Warning(s) 0 Error(s)
### 4. Настройка защищенных путей и правил
Измените `src/BlockGuard.Agent/appsettings.json`, чтобы определить **какие файлы защищать** и **какие процессы авторизованы**:```json
{
"BlockGuard": {
"ProtectedPaths": [
"C:\\Secrets\\ai-model-keys",
"C:\\Secrets\\api-credentials.json"
],
"AuthorizedProcesses": [
{
"RuleName": "AI-Model-Inference-Engine",
"ExecutablePath": "C:\\Program Files\\MyAI\\inference.exe",
"MinimumIntegrityLevel": "Medium",
"RequireSignature": false
}
]
}
}
dotnet run --project src/BlockGuard.Agent
---
## ⚙️ Конфигурация
Вся конфигурация находится в `src/BlockGuard.Agent/appsettings.json` в разделе `"BlockGuard"`.
### Защищённые пути
Массив файлов или каталогов для защиты. Каталоги защищают все файлы рекурсивно.```json
"ProtectedPaths": [
"C:\\Secrets\\ai-model-keys",
"C:\\Secrets\\api-credentials.json",
"D:\\Confidential\\reports"
]
Каждое правило определяет критерии, которым должен соответствовать процесс для получения доступа. Все непустые поля должны совпадать (логика И):