
BlockGuard ist ein Windows Data Loss Prevention (DLP)-Agent, der Dateizugriffe auf Prozessebene abfängt und kontrolliert. Es stellt sicher, dass nur autorisierte Prozesse – identifiziert durch ausführbaren Pfad, kryptografischen Hash, Authenticode-Signatur und Integritätsstufe – geschützte Dateien lesen können.
BlockGuard ist ein Windows Data Loss Prevention (DLP)-Agent, der den Dateizugriff auf Prozessebene abfängt und steuert. Er stellt sicher, dass nur autorisierte Prozesse – identifiziert durch ausführbaren Pfad, kryptografischen Hash, Authenticode-Signatur und Integritätsstufe – geschützte Dateien lesen können. Allen anderen Prozessen wird der Zugriff standardmäßig verweigert auf Betriebssystem-Kernel-Ebene über NTFS-ACLs.
BlockGuard verwendet eine dreischichtige modulare Architektur:``` ┌─────────────────────────────────────────────────────────────────┐ │ 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) │ │ └───────────────────┴─────────────────────┴───────────────────────┘
---
## 🖥️ Benutzeroberfläche zur Verwaltung
BlockGuard enthält eine **WPF-Desktopanwendung** zur Verwaltung geschützter Dateien und Ordner über eine visuelle Oberfläche — ohne dass `appsettings.json` manuell bearbeitet werden muss.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/12349/51a9b7894117382666d869cee59860a33698f666133bd23c6b6cd48b225d942c.png" alt="BlockGuard UI" width="640" />
</p>
### Funktionen
- **Dashboard** — Übersicht über den Schutzstatus (Gesamtanzahl Dateien, Ordner, Verschlüsselungszustand)
- **Geschützte Dateien** — Hinzufügen/Entfernen von Dateien und Ordnern, die vor KI-Zugriff geschützt werden sollen, über Dateibrowser-Dialoge
- **Aktivitätsprotokoll** — Echtzeitprotokoll aller Konfigurationsänderungen
- **Einstellungen** — Anzeigen des Konfigurationsdateipfads und der Agenteninformationen
- **Agentenstatus** — Live-Anzeige, ob der BlockGuard-Agentendienst ausgeführt wird
### So starten Sie die Benutzeroberfläche```powershell
# From the project root
dotnet run --project src/BlockGuard.UI
Hinweis: Die Benutzeroberfläche liest und schreibt
appsettings.jsonaus dem Agent-Projekt. Speichern Sie die Änderungen, starten Sie dann den BlockGuard Agent-Dienst neu, damit sie wirksam werden.
Stellen Sie vor der Ausführung von BlockGuard sicher, dass Folgendes auf Ihrem Windows-Rechner installiert ist:
| Anforderung | Mindestversion |
|---|
winget install Microsoft.DotNet.SDK.9
---
## 🚀 Schnellstart
### 1. Repository klonen```powershell
git clone [email protected]:m2l33k/BlockGuard.git
cd BlockGuard
dotnet restore BlockGuard.sln
### 3. Lösung erstellen```powershell
dotnet build BlockGuard.sln --configuration Release
Sie sollten sehen:``` Build succeeded. 0 Warning(s) 0 Error(s)
### 4. Konfigurieren der geschützten Pfade und Regeln
Bearbeiten Sie `src/BlockGuard.Agent/appsettings.json`, um **welche Dateien geschützt werden sollen** und **welche Prozesse autorisiert sind** zu definieren:```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
---
## ⚙️ Konfiguration
Die gesamte Konfiguration befindet sich in `src/BlockGuard.Agent/appsettings.json` im Abschnitt `"BlockGuard"`.
### Geschützte Pfade
Ein Array von Dateien oder Verzeichnissen, die geschützt werden sollen. Verzeichnisse schützen alle darin enthaltenen Dateien rekursiv.```json
"ProtectedPaths": [
"C:\\Secrets\\ai-model-keys",
"C:\\Secrets\\api-credentials.json",
"D:\\Confidential\\reports"
]
Jede Regel definiert die Kriterien, die ein Prozess erfüllen muss, um Zugriff zu erhalten. Alle nicht-null Felder müssen übereinstimmen (UND-Logik):
Beispiel: Pfadbasierte Regel (für einen KI-Modellprozess)```json { "RuleName": "AI-Model-Inference-Engine", "ExecutablePath": "C:\Program Files\MyAI\inference.exe", "ExpectedFileHash": null, "ExpectedSignerSubject": null, "MinimumIntegrityLevel": "Medium", "RequireSignature": false }
**Beispiel: Signaturbasierte Regel (für jedes signierte Verwaltungstool)**```json
{
"RuleName": "Signed-Management-Tool",
"ExecutablePath": null,
"ExpectedFileHash": null,
"ExpectedSignerSubject": "CN=Contoso Security",
"MinimumIntegrityLevel": "High",
"RequireSignature": true
}
Beispiel: Hash-gepinnte Regel (für maximalen Manipulationsschutz)```json { "RuleName": "Pinned-Data-Processor", "ExecutablePath": "C:\Tools\processor.exe", "ExpectedFileHash": "a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890", "ExpectedSignerSubject": null, "MinimumIntegrityLevel": "Medium", "RequireSignature": false }
### Weitere Optionen
| Option | Standard | Beschreibung |
|---|---|---|
| `IdentityCacheTtlSeconds` | `30` | Wie lange (Sekunden) eine validierte Prozessidentität im Cache bleibt |
| `HandleTimeoutSeconds` | `60` | Maximale Dauer (Sekunden) einer temporären ACL-Erteilung |
| `AuditLogPath` | `C:\ProgramData\BlockGuard\Logs\audit.json` | Pfad für die JSON-Überwachungsprotokolldatei |
| `EnableDpapiEncryption` | `true` | Verschlüsseln geschützter Dateien im Ruhezustand mit DPAPI |
| `DpapiScope` | `LocalMachine` | DPAPI-Bereich: `LocalMachine` oder `CurrentUser` |
---
## 🏃 Ausführen des Agents
### Option A: Entwicklungsmodus (Konsole)
Am besten zum Testen und Debuggen. Führen Sie von einer **erhöhten (Administrator-)PowerShell** aus:```powershell
dotnet run --project src/BlockGuard.Agent --configuration Release
[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).
Drücken Sie `Ctrl+C` zum Beenden.
### Option B: Als Windows-Dienst installieren (Produktion)```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
Dienst verwalten:```powershell
sc.exe query BlockGuard
sc.exe stop BlockGuard
sc.exe delete BlockGuard
---
## ✅ Überprüfen der Funktionsweise
Befolgen Sie diese Schritte, um zu bestätigen, dass BlockGuard Dateien korrekt schützt.
### Test 1: Build-Überprüfung```powershell
# From the project root directory
dotnet build BlockGuard.sln
# Expected: Build succeeded with 0 Error(s)
dotnet run --project src/BlockGuard.Agent
**✅ Erwartete Ausgabe:**
- Meldung `BlockGuard Security Agent Starting`
- Keine `CRITICAL`- oder `FATAL`-Fehler
- `ETW file trace session started successfully`
- `BlockGuard is now actively protecting X path(s)`
**❌ Falls Sie `ETW session — insufficient privileges` sehen:**
- Sie führen PowerShell NICHT als Administrator aus. Rechtsklick auf PowerShell → "Als Administrator ausführen"
### Test 3: ACL-Sperre überprüfen
Starten Sie den Agenten und überprüfen Sie, ob geschützte Dateien gesperrt sind:```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
icacls "C:\Secrets\api-credentials.json"
### Test 5: Prüfung des Audit-Logs
Nachdem der Agent eine Weile gelaufen ist, überprüfen Sie das Audit-Log:```powershell
# View the last 10 audit entries
Get-Content "C:\ProgramData\BlockGuard\Logs\audit.json" | Select-Object -Last 10
Erwartete Ausgabe (JSON-Zeilen):```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}
### Test 6: ETW-Ereigniserfassung verifizieren
Öffnen Sie ein zweites Terminal und versuchen Sie, auf eine geschützte Datei zuzugreifen, während der Agent läuft:```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"
In Terminal 1 sollten Sie einen Logeintrag wie den folgenden sehen:``` [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
### Test 7: Überprüfen, dass unbefugter Zugriff blockiert wird (KI-Modell)
Wenn ein Prozess (wie ein unbefugtes KI-Modell) versucht, einen geschützten Ordner oder eine geschützte Datei zu lesen, verweigert der Agent sofort den Zugriff. Das KI-Modell erhält einen strikten **Zugriff verweigert**-Fehler, und der Versuch wird protokolliert:
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/12349/d2a2e20c0fc60e8b3a5f614b0a53c6c7275b634e93b1ce0b9fe4440c38215fac.png" alt="Unauthorized Access Denied" width="600" />
</p>
### Test 8: Überprüfen der DPAPI-Verschlüsselung```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)
Während der Agent läuft, fügen Sie manuell einen nicht autorisierten ACL-Eintrag hinzu:```powershell
icacls "C:\Secrets\api-credentials.json.enc" /grant Users:R
### Test 10: Logs-Verzeichnis überprüfen```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
---
## 🔬 Wie es funktioniert
### Startsequenz (5 Phasen)```
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) │ └────────────────────────────┘
### Prozessvalidierung (6 Prüfungen)
Wenn ein Prozess auf eine geschützte Datei zugreift, validiert BlockGuard diesen durch:
1. **Executable Path** — Löst den vollständigen Pfad auf und kanonisiert ihn (verhindert Path Traversal)
2. **SHA-256 Hash** — Berechnet den Hash der Binärdatei auf der Festplatte (erkennt Dateiaustausch)
3. **Authenticode Signature** — Validiert die digitale Signaturkette (erkennt unsignierte/manipulierte Binärdateien)
4. **Process Owner SID** — Fragt das Token ab, um das ausgeführte Konto zu identifizieren
5. **Integrity Level** — Liest das obligatorische Label (Untrusted/Low/Medium/High/System)
6. **Parent Process ID** — Verfolgt die Prozesserstellungskette (erkennt Injection)
Alle Prüfungen sind **fail-closed**: falls ein Validierungsschritt fehlschlägt, wird der Zugriff **VERWEIGERT**.
---
## 🛠️ Fehlerbehebung
### "ETW session – unzureichende Berechtigungen"
**Ursache:** Der Agent läuft nicht mit Administrator/SYSTEM-Berechtigungen.
**Behebung:**```powershell
# Right-click PowerShell → "Run as Administrator"
dotnet run --project src/BlockGuard.Agent
Ursache: Der Agent kann Dateiberechtigungen ohne erhöhte Rechte nicht ändern.
Lösung: Wie oben – als Administrator ausführen.
Ursache: Die Pfade in appsettings.json existieren auf Ihrem Rechner nicht.
Lösung: Erstellen Sie zuerst die Verzeichnisse und Dateien:```powershell New-Item -Path "C:\Secrets\ai-model-keys" -ItemType Directory -Force Set-Content -Path "C:\Secrets\api-credentials.json" -Value '{"key":"value"}'
### Build-Fehler nach dem Klonen
**Behebung:** NuGet-Pakete wiederherstellen:```powershell
dotnet restore BlockGuard.sln
dotnet build BlockGuard.sln
Ursache: Eine vorherige Agent-Instanz ist abgestürzt und hat eine Zombie-ETW-Sitzung hinterlassen. Diese wird automatisch bereinigt — es ist eine WARNUNG, kein Fehler.
Ursache: Wahrscheinlich ein Konfigurationsfehler. Überprüfen Sie die Log-Datei:```powershell Get-Content "C:\ProgramData\BlockGuard\Logs\blockguard-*.log" | Select-Object -Last 50
---
## 🔒 Sicherheitsüberlegungen
### Was dieser Agent tun kann
- ✅ Verhindern, dass nicht autorisierte Prozesse geschützte Dateien **lesen** – durch ACL-Durchsetzung
- ✅ Erkennen und **protokollieren** aller Dateizugriffsversuche in Echtzeit über ETW
- ✅ Verschlüsseln von Dateien **im Ruhezustand** mittels DPAPI
- ✅ Erkennen und **automatische Behebung** von ACL-Manipulationen
### Was dieser Agent nicht tun kann
- ❌ **Dateilesevorgänge blockieren** — Dies ist ein User-Mode-Agent; echte Blockierung während des Vorgangs erfordert einen Kernel-Minifilter-Treiber
- ❌ **Kernel-Level-Angriffe stoppen** — Ein böswilliger Kernel-Treiber kann NTFS-ACLs umgehen
- ❌ **Administratoren am Überschreiben hindern** — Admin-Konten können ACLs entfernen (durch Manipulationserkennung gemildert)
### Empfehlungen für die Produktion
1. **Als `NT AUTHORITY\SYSTEM` ausführen** — Verwenden Sie einen Windows-Dienst, keine Konsolenanwendung
2. **Signieren Sie die Agent-Binärdatei** mit einem Authenticode-Zertifikat, um Selbstmanipulation zu verhindern
3. **Aktivieren Sie BitLocker** auf dem Volume für die Vollverschlüsselung (ergänzt DPAPI)
4. **Leiten Sie Audit-Protokolle an ein SIEM weiter** für die zentrale Überwachung
5. **Aktivieren Sie Secure Boot + Treibersignaturerzwingung**, um Kernel-Level-Umgehungen zu verhindern
---
## 🤝 Mitwirken
1. Repository forken
2. Erstellen Sie einen Feature-Branch: `git checkout -b feature/my-feature`
3. Comitten Sie Ihre Änderungen: `git commit -m "Add my feature"`
4. Pushen Sie den Branch: `git push origin feature/my-feature`
5. Öffnen Sie einen Pull Request
### Code-Stil
- Befolgen Sie die C#-Namenskonventionen (PascalCase für öffentliche Member)
- Fügen Sie allen öffentlichen APIs XML-Dokumentationskommentare hinzu
- Jede Validierung muss **fail-closed** sein (bei Fehler verweigern)
- Entsorgen Sie alle nativen Handles explizit in `finally`-Blöcken
- Löschen Sie vertrauliche Speicherpuffer nach der Verwendung
---
## 📄 Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Details finden Sie in der [LIZENZ](https://github.com/m2l33k/blockguard/blob/main/LICENSE).
---
<p align="center">
<b>Erstellt mit Sicherheit-im-Vordergrund-Prinzipien für den Windows-Dateischutz.</b>
<br/>
<sub>BlockGuard – denn Ihre Daten verdienen eine Wache, nicht nur ein Schloss.</sub>
</p>
| Funktion | Beschreibung |
|---|
| Standardmäßig verweigerte ACLs | Geschützte Dateien werden beim Agentenstart gesperrt – nur SYSTEM und Administratoren behalten Zugriff |
| Echtzeit-ETW-Überwachung | Kernel-Level-Datei-I/O-Ereignisse werden über die Ereignisablaufverfolgung für Windows erfasst |
| 6-schichtige Prozessvalidierung | Ausführbarer Pfad, SHA-256-Hash, Authenticode-Signatur, Besitzer-SID, Integritätsstufe, Elternprozesskette |
| DPAPI-Dateiverschlüsselung | Geschützte Dateien werden im Ruhezustand mit der Windows Data Protection API verschlüsselt |
| Automatisch widerrufender temporärer Zugriff | Autorisierte Prozesse erhalten zeitlich begrenzte ACL-Gewährungen, die automatisch verfallen |
| Manipulationserkennung | Regelmäßige Integritätsprüfungen erkennen und beheben ACL-Änderungen automatisch |
| Strukturierte Prüfprotokollierung | JSON-Prüfpfad aller Zugriffsversuche (SIEM-ready) |
| Windows-Dienst | Läuft als Hintergrund-Windows-Dienst unter NT AUTHORITY\SYSTEM |
| Prüfbefehl |
|---|
| Windows OS | Windows 10 / Server 2019 | winver |
| .NET SDK | 9.0 | dotnet --version |
| Administratorrechte | Erforderlich | Terminal als Administrator ausführen |
| Feld | Typ | Beschreibung |
|---|
RuleName | string | Menschenlesbarer Name für diese Regel (wird in Prüfprotokollen verwendet) |
ExecutablePath | string? | Vollständiger Pfad zur autorisierten ausführbaren Datei (Groß-/Kleinschreibung wird ignoriert) |
ExpectedFileHash | string? | SHA-256-Hash der ausführbaren Datei (Manipulationserkennung) |
ExpectedSignerSubject | string? | Authenticode-Zertifikatsantragsteller (z. B. "CN=Contoso") |
MinimumIntegrityLevel | string | Minimale Windows-Integritätsstufe: Untrusted, Low, Medium, High, System |
RequireSignature | bool | Wenn true, muss die ausführbare Datei eine gültige Authenticode-Signatur besitzen |
| # | Test | Überprüfung | Erwartetes Ergebnis |
|---|
| 1 | Build | dotnet build BlockGuard.sln | 0 Fehler |
| 2 | Agent startet | dotnet run --project src/BlockGuard.Agent (als Administrator) | Startbanner, keine KRITISCHEN Fehler |
| 3 | ACL-Sperre | icacls <geschützte-datei> | Nur SYSTEM + Administratoren |
| 4 | Unberechtigter Zugriff blockiert | Geschützte Datei von einem Nicht-Administrator-Terminal lesen | Zugriff verweigert |
| 5 | ETW-Erfassung | Geschützte Datei lesen während der Agent läuft | VERWEIGERT-Logzeile in der Konsole |
| 6 | Prüfprotokoll | Get-Content C:\ProgramData\BlockGuard\Logs\audit.json | JSON-Einträge mit Entscheidung |
| 7 | DPAPI-Verschlüsselung | Test-Path <datei>.enc | .enc-Datei existiert |
| 8 | Manipulationserkennung | icacls <datei> /grant Users:R dann 60s warten | Automatische Wiederherstellung protokolliert |