Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
BlockGuard — BlockGuard هو وكيل لمنع فقدان البيانات (DLP) لنظام Windows يعترض ويتحكم في الوصول إلى الملفات على مستوى العملية. يضمن أن العمليات المصرح لها فقط — التي تم تحديدها بواسطة مسار الملف التنفيذي، التجزئة التشفيرية، توقيع Authenticode، ومستوى التكامل — يمكنها قراءة الملفات المحمية. | Kitploit
أدوات/GitHubGitHub/m2l33k/blockguard
المصادقة والترخيصأدوات دفاعيةأدوات التشفير/فك التشفيرتدقيق التكوينتسريب البياناتالاستجابة للحوادثتحليل السجلات
GitHubm2l33k/blockguard

BlockGuard

BlockGuard هو وكيل لمنع فقدان البيانات (DLP) لنظام Windows يعترض ويتحكم في الوصول إلى الملفات على مستوى العملية. يضمن أن العمليات المصرح لها فقط — التي تم تحديدها بواسطة مسار الملف التنفيذي، التجزئة التشفيرية، توقيع Authenticode، ومستوى التكامل — يمكنها قراءة الملفات المحمية.

عرض المستودع
منذ 5 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

BlockGuard — Trusty

.NET 9 Windows License DLP

🛡️ BlockGuard — وكيل أمان الوصول إلى الملفات بناءً على العمليات

BlockGuard هو وكيل منع فقدان البيانات (DLP) لنظام Windows يعترض ويتحكم في الوصول إلى الملفات على مستوى العملية. يضمن أن العمليات المصرح لها فقط — التي يتم التعرف عليها من خلال مسار الملف القابل للتنفيذ، التجزئة التشفيرية، توقيع Authenticode، ومستوى السلامة — هي التي يمكنها قراءة الملفات المحمية. يتم رفض جميع العمليات الأخرى افتراضيًا على مستوى نواة نظام التشغيل عبر ACLs الخاصة بـ NTFS.


📑 جدول المحتويات

  • الميزات
  • الهندسة المعمارية
  • واجهة الإدارة
  • المتطلبات الأساسية
  • بداية سريعة
  • الإعدادات
  • تشغيل الوكيل
  • التحقق من العمل
  • هيكل المشروع
  • كيف يعمل
  • استكشاف الأخطاء
  • اعتبارات الأمان
  • المساهمة

✨ الميزات


🏗️ الهندسة المعمارية

يستخدم 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) │ │ └───────────────────┴─────────────────────┴───────────────────────┘

root@kitploit:~
---

## 🖥️ واجهة إدارة المستخدم

يتضمن BlockGuard **تطبيق سطح مكتب WPF** لإدارة الملفات والمجلدات المحمية عبر واجهة مرئية — لا حاجة لتحرير `appsettings.json` يدويًا.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/12349/51a9b7894117382666d869cee59860a33698f666133bd23c6b6cd48b225d942c.png" alt="واجهة BlockGuard" width="640" />
</p>

### الميزات

- **لوحة البيانات** — نظرة عامة على حالة الحماية (إجمالي الملفات، المجلدات، حالة التشفير)
- **الملفات المحمية** — إضافة/إزالة الملفات والمجلدات لحمايتها من وصول الذكاء الاصطناعي عبر مربعات حوار مستعرض الملفات
- **سجل النشاط** — سجل فوري لجميع تغييرات التكوين
- **الإعدادات** — عرض مسار ملف التكوين ومعلومات الوكيل
- **حالة الوكيل** — مؤشر مباشر يوضح ما إذا كانت خدمة وكيل BlockGuard قيد التشغيل

### كيفية تشغيل الواجهة```powershell
# From the project root
dotnet run --project src/BlockGuard.UI

ملاحظة: تقوم الواجهة بقراءة وكتابة appsettings.json من مشروع Agent. بعد حفظ التغييرات، أعد تشغيل خدمة BlockGuard Agent لكي تدخل حيز التنفيذ.


📋 المتطلبات الأساسية

قبل تشغيل BlockGuard، تأكد من تثبيت ما يلي على جهاز Windows الخاص بك:

المتطلبالحد الأدنى للإصدارأمر التحقق

تثبيت .NET 9 SDK (إذا لم يكن مثبتًا)```powershell

Download from https://dotnet.microsoft.com/download/dotnet/9.0

Or use winget:

winget install Microsoft.DotNet.SDK.9

root@kitploit:~
---

## 🚀 بداية سريعة

### 1. استنساخ المستودع```powershell
git clone [email protected]:m2l33k/BlockGuard.git
cd BlockGuard

2. استعادة التبعيات```powershell

dotnet restore BlockGuard.sln

root@kitploit:~
### 3. بناء الحل```powershell
dotnet build BlockGuard.sln --configuration Release

يجب أن ترى:``` Build succeeded. 0 Warning(s) 0 Error(s)

root@kitploit:~
### 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
      }
    ]
  }
}

5. تشغيل (وضع التطوير)```powershell

Run as Administrator (required for ETW + ACL operations)

dotnet run --project src/BlockGuard.Agent

root@kitploit:~
---

## ⚙️ الإعدادات

جميع الإعدادات موجودة في `src/BlockGuard.Agent/appsettings.json` ضمن قسم `"BlockGuard"`.

### المسارات المحمية

مصفوفة من الملفات أو المجلدات المراد حمايتها. تحمي المجلدات جميع الملفات بشكل متكرر.```json
"ProtectedPaths": [
  "C:\\Secrets\\ai-model-keys",
  "C:\\Secrets\\api-credentials.json",
  "D:\\Confidential\\reports"
]

قواعد العملية المصرح بها

تحدد كل قاعدة المعايير التي يجب أن تطابقها عملية للحصول على الوصول. يجب مطابقة جميع الحقول غير الفارغة (منطق AND):

مثال: قاعدة قائمة على المسار (لعملية نموذج AI)```json { "RuleName": "AI-Model-Inference-Engine", "ExecutablePath": "C:\Program Files\MyAI\inference.exe", "ExpectedFileHash": null, "ExpectedSignerSubject": null, "MinimumIntegrityLevel": "Medium", "RequireSignature": false }

root@kitploit:~
**مثال: قاعدة تستند إلى التوقيع (لأي أداة إدارة موقعة)**```json
{
  "RuleName": "Signed-Management-Tool",
  "ExecutablePath": null,
  "ExpectedFileHash": null,
  "ExpectedSignerSubject": "CN=Contoso Security",
  "MinimumIntegrityLevel": "High",
  "RequireSignature": true
}

مثال: Hash-pinned rule (لأقصى حماية من العبث)```json { "RuleName": "Pinned-Data-Processor", "ExecutablePath": "C:\Tools\processor.exe", "ExpectedFileHash": "a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890", "ExpectedSignerSubject": null, "MinimumIntegrityLevel": "Medium", "RequireSignature": false }

root@kitploit:~
### خيارات أخرى

| الخيار | الافتراضي | الوصف |
|---|---|---|
| `IdentityCacheTtlSeconds` | `30` | المدة (بالثواني) التي تبقى فيها هوية العملية الموثقة في الذاكرة المؤقتة |
| `HandleTimeoutSeconds` | `60` | الحد الأقصى للمدة (بالثواني) لمنح ACL المؤقت |
| `AuditLogPath` | `C:\ProgramData\BlockGuard\Logs\audit.json` | مسار ملف سجل التدقيق بتنسيق JSON |
| `EnableDpapiEncryption` | `true` | تشفير الملفات المحمية في حالة السكون باستخدام DPAPI |
| `DpapiScope` | `LocalMachine` | نطاق DPAPI: `LocalMachine` أو `CurrentUser` |

---

## 🏃 تشغيل الوكيل

### الخيار أ: وضع التطوير (وحدة التحكم)

الأفضل للاختبار والتصحيح. قم بتشغيله من **PowerShell بصلاحيات مرتفعة (مسؤول)**:```powershell
dotnet run --project src/BlockGuard.Agent --configuration Release

سترى مخرجات وحدة التحكم مثل:``` [03:15:22 INF] [BlockGuard.Agent.BlockGuardService] ======================================== BlockGuard Security Agent Starting Protected Paths: 2 Authorized Rules: 2 PID: 12345

[03:15:22 INF] [BlockGuard.Monitoring.AclEnforcer] Locked down file 'C:\Secrets\api-credentials.json' [03:15:22 INF] [BlockGuard.Protection.DpapiWrapper] Encrypted file 'C:\Secrets\api-credentials.json' [03:15:22 INF] [BlockGuard.Monitoring.EtwFileTraceSession] ETW file trace session started successfully. [03:15:22 INF] [BlockGuard.Agent.BlockGuardService] BlockGuard is now actively protecting 2 path(s).

root@kitploit:~
اضغط `Ctrl+C` للإيقاف.

### الخيار ب: التثبيت كخدمة ويندوز (إنتاج)```powershell
# 1. Publish a self-contained build
dotnet publish src/BlockGuard.Agent -c Release -r win-x64 --self-contained -o C:\BlockGuard

# 2. Create the Windows Service
sc.exe create BlockGuard binPath= "C:\BlockGuard\BlockGuard.Agent.exe" start= auto obj= "NT AUTHORITY\SYSTEM" DisplayName= "BlockGuard Security Agent"

# 3. Set the service description
sc.exe description BlockGuard "Process-based file access security agent (DLP)"

# 4. Start the service
sc.exe start BlockGuard

إدارة الخدمة:```powershell

Check status

sc.exe query BlockGuard

Stop

sc.exe stop BlockGuard

Remove (uninstall)

sc.exe delete BlockGuard

root@kitploit:~
---

## ✅ التحقق من عمله

اتبع هذه الخطوات لتأكيد أن BlockGuard يحمي الملفات بشكل صحيح.

### الاختبار 1: التحقق من البناء```powershell
# From the project root directory
dotnet build BlockGuard.sln

# Expected: Build succeeded with 0 Error(s)

الاختبار 2: التحقق من بدء تشغيل الوكيل```powershell

Open an elevated (Administrator) PowerShell

dotnet run --project src/BlockGuard.Agent

root@kitploit:~
**✅ المخرجات المتوقعة:**
- رسالة `BlockGuard Security Agent Starting`
- لا توجد أخطاء `CRITICAL` أو `FATAL`
- `ETW file trace session started successfully`
- `BlockGuard is now actively protecting X path(s)`

**❌ إذا رأيت `ETW session — insufficient privileges`:**
- أنت لا تعمل كمسؤول. انقر بزر الماوس الأيمن على PowerShell → 'تشغيل كمسؤول'

### الاختبار 3: التحقق من قفل قوائم التحكم في الوصول (ACL)

بعد بدء الوكيل، تحقق من أن الملفات المحمية مقفلة:```powershell
# Create a test protected file
New-Item -Path "C:\Secrets" -ItemType Directory -Force
Set-Content -Path "C:\Secrets\api-credentials.json" -Value '{"api_key": "secret123"}'

# Start the agent (it will lock down the file)
dotnet run --project src/BlockGuard.Agent

# In ANOTHER non-admin terminal, try to read the file:
Get-Content "C:\Secrets\api-credentials.json"
# Expected: Access Denied error

الاختبار 4: التحقق من حالة ACL باستخدام icacls```powershell

icacls "C:\Secrets\api-credentials.json"

Expected output (only SYSTEM and Administrators):

C:\Secrets\api-credentials.json NT AUTHORITY\SYSTEM:(F)

BUILTIN\Administrators:(F)

No other users/groups should be listed

root@kitploit:~
### اختبار 5: فحص سجل التدقيق

بعد تشغيل الوكيل لفترة، تحقق من سجل التدقيق:```powershell
# View the last 10 audit entries
Get-Content "C:\ProgramData\BlockGuard\Logs\audit.json" | Select-Object -Last 10

الإخراج المتوقع (JSON lines):```json {"type":"operational","timestamp":"2026-03-05T02:30:00Z","eventType":"AgentStart","message":"BlockGuard security agent starting."} {"type":"access_decision","timestamp":"2026-03-05T02:30:05Z","verdict":"deny","reason":"No authorization rule matched this process identity.","file":"C:\Secrets\api-credentials.json","processId":5678}

root@kitploit:~
### الاختبار 6: التحقق من التقاط أحداث ETW

افتح محطة طرفية ثانية وحاول الوصول إلى ملف محمي أثناء تشغيل الوكيل:```powershell
# Terminal 1: Agent is running with console output
dotnet run --project src/BlockGuard.Agent

# Terminal 2: Try reading a protected file with notepad
notepad.exe "C:\Secrets\api-credentials.json"

في المحطة الطرفية 1، يجب أن ترى إدخال سجل مثل:``` [03:20:15 WRN] [AUDIT] DENIED access to 'C:\Secrets\api-credentials.json' by PID 9876 (C:\Windows\System32\notepad.exe). Reason: No authorization rule matched

root@kitploit:~
### اختبار 7: التحقق من منع الوصول غير المصرح به (نموذج الذكاء الاصطناعي)

عندما تحاول إحدى العمليات (مثل نموذج ذكاء اصطناعي غير مصرح به) قراءة مجلد أو ملف محمي، يقوم الوكيل فورًا برفض الوصول. سيتلقى الذكاء الاصطناعي خطأ **تم رفض الوصول** صارمًا، ويتم تسجيل المحاولة:

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/12349/d2a2e20c0fc60e8b3a5f614b0a53c6c7275b634e93b1ce0b9fe4440c38215fac.png" alt="تم رفض الوصول غير المصرح به" width="600" />
</p>

### اختبار 8: التحقق من تشفير DPAPI```powershell
# Check that the .enc file was created
Test-Path "C:\Secrets\api-credentials.json.enc"
# Expected: True

# Check that the original plaintext file was securely deleted
Test-Path "C:\Secrets\api-credentials.json"
# Expected: False (if EnableDpapiEncryption is true)

اختبار 9: كشف التلاعب

أثناء تشغيل الوكيل، أضف يدويًا إدخال ACL غير مصرح به:```powershell

In an elevated terminal, add a rogue permission

icacls "C:\Secrets\api-credentials.json.enc" /grant Users:R

Wait up to 60 seconds...

The agent should detect the tampering and log:

[CRT] ACL TAMPERING DETECTED on 'C:\Secrets\api-credentials.json.enc'! Re-applying lockdown.

root@kitploit:~
### اختبار 10: التحقق من دليل السجلات```powershell
# Check both log locations
Get-ChildItem "C:\ProgramData\BlockGuard\Logs\"

# Expected files:
# audit.json              (structured JSON audit log)
# blockguard-20260305.log (daily rolling application log)

قائمة التحقق السريع


📁 هيكل المشروع```

BlockGuard/ ├── BlockGuard.sln # Solution file ├── README.md # This file ├── architecture_overview.md # Detailed architecture documentation ├── assets/ │ ├── Untitled.jpg # Project logo (Trusty mascot) │ └── blockguard_ui_mockup_*.png # UI mockup screenshot │ ├── src/ │ ├── BlockGuard.Core/ # Shared models, interfaces, configuration │ │ ├── Configuration/ │ │ │ └── BlockGuardOptions.cs # Strongly-typed config (paths, rules, timeouts) │ │ ├── Interfaces/ │ │ │ ├── IAclEnforcer.cs # ACL management contract │ │ │ ├── IAuditLogger.cs # Audit logging contract │ │ │ ├── IDpapiWrapper.cs # DPAPI encryption contract │ │ │ ├── IFileAccessMonitor.cs # ETW monitoring contract │ │ │ ├── IPolicyEvaluator.cs # Policy evaluation contract │ │ │ └── IProcessIdentityValidator.cs # Process identity contract │ │ └── Models/ │ │ ├── AccessDecision.cs # Verdict + reason + matched rule │ │ ├── FileAccessEvent.cs # ETW event: file, PID, operation │ │ └── ProcessIdentity.cs # Hash, signature, SID, integrity │ │ │ ├── BlockGuard.Monitoring/ # Layer 1: Monitoring & Interception │ │ ├── EtwFileTraceSession.cs # Real-time kernel file ETW consumer │ │ └── AclEnforcer.cs # NTFS ACL lockdown + temp grants │ │ │ ├── BlockGuard.Policy/ # Layer 2: Policy & Identity Engine │ │ ├── ProcessIdentityValidator.cs # 6-layer P/Invoke validation │ │ ├── PolicyEvaluator.cs # AND-logic rule matching │ │ └── IdentityCache.cs # Thread-safe LRU cache (TTL) │ │ │ ├── BlockGuard.Protection/ # Layer 3: Decryption & Handle Manager │ │ ├── DpapiWrapper.cs # DPAPI encrypt/decrypt + secure delete │ │ └── AuditLogger.cs # Structured JSON audit logging │ │ │ ├── BlockGuard.Agent/ # Windows Service entry point │ │ ├── Program.cs # DI container, Serilog, hosting │ │ ├── BlockGuardService.cs # Main orchestrator (5-phase startup) │ │ └── appsettings.json # Configuration file │ │ │ └── BlockGuard.UI/ # WPF Desktop Management Interface │ ├── App.xaml / App.xaml.cs # Application resources & dark theme │ ├── MainWindow.xaml / .cs # Main window with sidebar navigation │ ├── ViewModels/ │ │ └── MainViewModel.cs # MVVM ViewModel (commands, config I/O) │ └── Services/ │ └── ConfigurationService.cs # Reads/writes appsettings.json

root@kitploit:~
---

## 🔬 كيف يعمل

### تسلسل بدء التشغيل (5 مراحل)```
Phase 1: ACL Lockdown
  └─ Strip all permissions from protected files
  └─ Grant access only to SYSTEM + Administrators
  └─ Disable ACL inheritance

Phase 2: DPAPI Encryption (optional)
  └─ Encrypt each protected file at rest
  └─ Securely delete plaintext (overwrite with random data)
  └─ Store ciphertext as .enc files

Phase 3: Event Subscription
  └─ Register handler for file access events

Phase 4: ETW Monitoring
  └─ Start kernel-level file trace session
  └─ Filter events by protected paths
  └─ Emit FileAccessEvent for each match

Phase 5: Integrity Check Loop
  └─ Every 60 seconds, verify ACLs are intact
  └─ Auto-remediate if tampering detected

تدفق طلب الوصول```

┌─────────────┐ ┌───────────────┐ ┌──────────────────┐ │ Process │ │ ETW Kernel │ │ Policy │ │ reads file │────▶│ File Provider │────▶│ Evaluator │ └─────────────┘ └───────────────┘ └──────────────────┘ │ ┌────────┴────────┐ ▼ ▼ ┌──────────┐ ┌──────────┐ │ ALLOW │ │ DENY │ │ │ │ │ │ Grant │ │ ACL is │ │ temp ACL │ │ already │ │ (60s) │ │ blocking │ └──────────┘ └──────────┘ │ │ ▼ ▼ ┌────────────────────────────┐ │ Audit Logger (JSON) │ └────────────────────────────┘

root@kitploit:~
### التحقق من العمليات (6 فحوصات)

عندما تصل عملية إلى ملف محمي، يتحقق BlockGuard منها من خلال:

1. **مسار الملف التنفيذي** — يحل المسار الكامل ويقوم بتوحيده (يمنع اجتياز المسار)
2. **تجزئة SHA-256** — يحسب تجزئة الملف الثنائي على القرص (يكشف استبدال الملف)
3. **توقيع Authenticode** — يتحقق من سلسلة التوقيع الرقمي (يكشف الملفات الثنائية غير الموقعة أو المعدلة)
4. **SID مالك العملية** — يستعلم عن الرمز المميز لتحديد الحساب الجاري
5. **مستوى التكامل** — يقرأ التصنيف الإلزامي (غير موثوق/منخفض/متوسط/عالي/النظام)
6. **معرّف العملية الأصلية** — يتتبع سلسلة إنشاء العملية (يكشف الحقن)

جميع الفحوصات **تفشل-مغلقة**: إذا فشلت أي خطوة تحقق، يتم **رفض** الوصول.

---

## 🛠️ استكشاف الأخطاء وإصلاحها

### "جلسة ETW — صلاحيات غير كافية"

**السبب:** الوكيل لا يعمل بصلاحيات المسؤول/النظام.

**الحل:**```powershell
# Right-click PowerShell → "Run as Administrator"
dotnet run --project src/BlockGuard.Agent

"لا يمكن تعديل ACL — الوكيل يفتقر إلى الصلاحيات المطلوبة"

السبب: لا يمكن للوكيل تغيير أذونات الملف دون صلاحيات مرتفعة.

الإصلاح: نفس ما سبق — قم بالتشغيل كمسؤول.

"المسار المحمي غير موجود. يتم تخطيه."

السبب: المسارات في appsettings.json غير موجودة على جهازك.

الإصلاح: قم بإنشاء المجلدات والملفات أولاً:```powershell New-Item -Path "C:\Secrets\ai-model-keys" -ItemType Directory -Force Set-Content -Path "C:\Secrets\api-credentials.json" -Value '{"key":"value"}'

root@kitploit:~
### أخطاء البناء بعد الاستنساخ

**الحل:** استعادة حزم NuGet:```powershell
dotnet restore BlockGuard.sln
dotnet build BlockGuard.sln

"جلسة ETW يتيمة تم التخلص منها"

السبب: تعطلت مثيل سابق للوكيل وتركت جلسة ETW زومبي. يتم تنظيفها تلقائيًا — إنها تحذير، وليس خطأ.

الوكيل يتوقف مباشرة بعد البدء

السبب: من المحتمل خطأ في التهيئة. تحقق من ملف السجل: nessus.rc```powershell Get-Content "C:\ProgramData\BlockGuard\Logs\blockguard-*.log" | Select-Object -Last 50

root@kitploit:~
---

## 🔒 اعتبارات الأمان

### ما يمكن لهذا الوكيل فعله
- ✅ منع العمليات غير المصرح بها من **قراءة** الملفات المحمية عبر تطبيق ACL
- ✅ كشف و**تدقيق** جميع محاولات الوصول إلى الملفات في الوقت الفعلي عبر ETW
- ✅ تشفير الملفات **أثناء التخزين** باستخدام DPAPI
- ✅ كشف و**إصلاح تلقائي** للتلاعب بـ ACL

### ما لا يمكن لهذا الوكيل فعله
- ❌ **حظر قراءات الملفات أثناء التنفيذ** — هذا وكيل وضع المستخدم؛ الحظر الحقيقي أثناء التنفيذ يتطلب برنامج تشغيل kernel minifilter
- ❌ **إيقاف هجمات مستوى النواة** — يمكن لبرنامج تشغيل ضار للنواة تجاوز NTFS ACLs
- ❌ **منع المسؤولين من التجاوز** — يمكن لحسابات المسؤول إزالة ACLs (يتم تخفيف ذلك عن طريق كشف التلاعب)

### توصيات للإنتاج

1. **التشغيل كـ `NT AUTHORITY\SYSTEM`** — استخدم خدمة Windows، وليس تطبيق وحدة تحكم
2. **توقيع الملف الثنائي للوكيل** بشهادة Authenticode لمنع التلاعب الذاتي
3. **تفعيل BitLocker** على وحدة التخزين للتشفير الكامل للقرص (يكمل DPAPI)
4. **إعادة توجيه سجلات التدقيق إلى SIEM** للمراقبة المركزية
5. **تفعيل Secure Boot + Driver Signature Enforcement** لمنع الاختراق على مستوى النواة

---

## 🤝 المساهمة

1. انسخ المستودع (Fork)
2. أنشئ فرع ميزة: `git checkout -b feature/my-feature`
3. قم بتثبيت تغييراتك: `git commit -m "Add my feature"`
4. ادفع إلى الفرع: `git push origin feature/my-feature`
5. افتح طلب سحب (Pull Request)

### أسلوب الكود
- اتبع اصطلاحات التسمية في C# (PascalCase للأعضاء العامة)
- أضف تعليقات توثيق XML لجميع واجهات برمجة التطبيقات العامة
- كل عملية تحقق يجب أن **تفشل مغلقة** (رفض عند الخطأ)
- تخلص صراحة من جميع المقابض الأصلية في كتل `finally`
- امسح مخازن الذاكرة الحساسة بعد الاستخدام

---

## 📄 الترخيص

هذا المشروع مرخص بموجب رخصة MIT. انظر [LICENSE](https://github.com/m2l33k/blockguard/blob/HEAD/LICENSE) للتفاصيل.

---

<p align="center">
  <b>بني على مبادئ الأمان أولاً لحماية ملفات Windows.</b>
  <br/>
  <sub>BlockGuard — لأن بياناتك تستحق حارسًا، وليس مجرد قفل.</sub>
</p>
تنزيل الأداة
الميزةالوصف
ACLs افتراضية بالرفضالملفات المحمية مقفلة عند بدء تشغيل الوكيل — يحتفظ SYSTEM والمسؤولون فقط بالوصول
مراقبة ETW في الوقت الفعليالتقاط أحداث I/O للملفات على مستوى النواة عبر Event Tracing for Windows
التحقق من العملية بـ6 طبقاتمسار الملف القابل للتنفيذ، تجزئة SHA-256، توقيع Authenticode، SID المالك، مستوى السلامة، سلسلة العملية الأم
تشفير الملفات عبر DPAPIالملفات المحمية مشفرة أثناء التخزين باستخدام Windows Data Protection API
الإلغاء التلقائي للوصول المؤقتالعمليات المصرح لها تحصل على منح ACL محددة زمنيًا تنتهي تلقائيًا
كشف التلاعبفحوصات سلامة دورية تكتشف وتصحح تلقائيًا أي تعديلات على ACL
سجل تدقيق منظمسجل تدقيق بتنسيق JSON لجميع محاولات الوصول (جاهز للتكامل مع SIEM)
خدمة ويندوزتعمل كخدمة خلفية لنظام Windows تحت حساب NT AUTHORITY\SYSTEM
نظام WindowsWindows 10 / Server 2019winver
.NET SDK9.0dotnet --version
صلاحيات المسؤولمطلوبةتشغيل الطرفية كمسؤول
الحقلالنوعالوصف
RuleNamestringاسم قابل للقراءة البشرية لهذه القاعدة (مستخدم في سجلات التدقيق)
ExecutablePathstring?المسار الكامل للملف التنفيذي المصرح به (غير حساس لحالة الأحرف)
ExpectedFileHashstring?تجزئة SHA-256 للملف التنفيذي (كشف العبث)
ExpectedSignerSubjectstring?موضوع شهادة Authenticode (مثال: "CN=Contoso")
MinimumIntegrityLevelstringالحد الأدنى لمستوى سلامة Windows: Untrusted, Low, Medium, High, System
RequireSignatureboolإذا كان true، يجب أن يحتوي الملف التنفيذي على توقيع Authenticode صالح
#الاختباركيفية التحققالنتيجة المتوقعة
1البناءdotnet build BlockGuard.sln0 خطأ
2بدء الوكيلdotnet run --project src/BlockGuard.Agent (بصلاحية المسؤول)شعار بدء التشغيل، لا أخطاء حرجة
3قفل ACLicacls <protected-file>فقط SYSTEM + المسؤولين
4منع الوصول غير المصرح بهقراءة الملف المحمي من طرفية غير مسؤولتم رفض الوصول
5التقاط ETWقراءة الملف المحمي أثناء تشغيل الوكيلإدخال سجل DENIED في وحدة التحكم
6سجل المراجعةGet-Content C:\ProgramData\BlockGuard\Logs\audit.jsonإدخالات JSON مع الحكم
7تشفير DPAPITest-Path <file>.encملف .enc موجود
8اكتشاف العبثicacls <file> /grant Users:R ثم الانتظار 60 ثانيةتم تسجيل الإصلاح التلقائي