Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
BlockGuard — BlockGuard è un agente di Windows Data Loss Prevention (DLP) che intercetta e controlla l'accesso ai file a livello di processo. Garantisce che solo processi autorizzati — identificati dal percorso eseguibile, dall'hash crittografico, dalla firma Authenticode e dal livello di integrità — possano leggere i file protetti. | Kitploit
Strumenti/GitHubGitHub/m2l33k/blockguard
Autenticazione e AutorizzazioneStrumenti DifensiviStrumenti di Crittografia/DecrittografiaAudit di ConfigurazioneEsfiltrazione DatiRisposta agli IncidentiAnalisi dei Log
GitHubm2l33k/blockguard

BlockGuard

Vedi Repository
5 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

BlockGuard è un agente di Windows Data Loss Prevention (DLP) che intercetta e controlla l'accesso ai file a livello di processo. Garantisce che solo processi autorizzati — identificati dal percorso eseguibile, dall'hash crittografico, dalla firma Authenticode e dal livello di integrità — possano leggere i file protetti.

Condividi

BlockGuard — Trusty

.NET 9 Windows License DLP

🛡️ BlockGuard — Agente di sicurezza per l'accesso ai file basato sui processi

BlockGuard è un agente Windows di prevenzione della perdita di dati (DLP) che intercetta e controlla l'accesso ai file a livello di processo. Garantisce che solo processi autorizzati — identificati dal percorso eseguibile, hash crittografico, firma Authenticode e livello di integrità — possano leggere i file protetti. Tutti gli altri processi vengono negati per impostazione predefinita a livello del kernel del sistema operativo tramite ACL NTFS.


📑 Indice

  • Funzionalità
  • Architettura
  • Interfaccia di gestione UI
  • Prerequisiti
  • Avvio rapido
  • Configurazione
  • Esecuzione dell'agente
  • Verifica del funzionamento
  • Struttura del progetto
  • Come funziona
  • Risoluzione dei problemi
  • Considerazioni sulla sicurezza
  • Contributi

  • ✨ Funzionalità

    FunzionalitàDescrizione
    ACL di negazione predefinitaI file protetti vengono bloccati all'avvio dell'agente — solo SYSTEM e gli amministratori mantengono l'accesso
    Monitoraggio ETW in tempo realeEventi di I/O file a livello kernel catturati tramite Event Tracing for Windows
    Validazione del processo a 6 livelliPercorso eseguibile, hash SHA-256, firma Authenticode, SID del proprietario, livello di integrità, catena del processo padre
    Crittografia file DPAPIFile protetti crittografati a riposo tramite Windows Data Protection API
    Revoca automatica dell'accesso temporaneoI processi autorizzati ricevono concessioni ACL con scadenza temporale che scadono automaticamente
    Rilevamento di manomissioniControlli periodici di integrità rilevano e correggono automaticamente le modifiche ACL
    Registrazione audit strutturataTraccia di audit JSON di tutti i tentativi di accesso (pronta per SIEM)
    Servizio WindowsViene eseguito come servizio Windows in background sotto NT AUTHORITY\SYSTEM

    🏗️ Architettura

    BlockGuard utilizza un'architettura modulare a tre livelli:``` ┌─────────────────────────────────────────────────────────────────┐ │ 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:~
    ---
    
    ## 🖥️ Interfaccia di Gestione UI
    
    BlockGuard include un'**applicazione desktop WPF** per gestire file e cartelle protetti attraverso un'interfaccia visiva — nessuna necessità di modificare `appsettings.json` manualmente.
    
    <p align="center">
      <img src="https://assets.kitploit.com/production/public/readmes/12349/51a9b7894117382666d869cee59860a33698f666133bd23c6b6cd48b225d942c.png" alt="BlockGuard UI" width="640" />
    </p>
    
    ### Caratteristiche
    
    - **Dashboard** — Panoramica dello stato di protezione (file totali, cartelle, stato di crittografia)
    - **File Protetti** — Aggiungi/rimuovi file e cartelle da proteggere dall'accesso AI tramite finestre di dialogo del browser file
    - **Registro Attività** — Registro in tempo reale di tutte le modifiche alla configurazione
    - **Impostazioni** — Visualizza il percorso del file di configurazione e le informazioni sull'agente
    - **Stato Agente** — Indicatore live che mostra se il servizio agente BlockGuard è in esecuzione
    
    ### Come Avviare l'UI```powershell
    # From the project root
    dotnet run --project src/BlockGuard.UI
    

    Nota: L'interfaccia legge e scrive appsettings.json dal progetto Agent. Dopo aver salvato le modifiche, riavvia il servizio BlockGuard Agent affinché vengano applicate.


    📋 Prerequisiti

    Prima di eseguire BlockGuard, assicurati che siano installati i seguenti componenti sul tuo computer Windows:

    RequisitoVersione MinimaComando di Verifica
    Sistema operativo WindowsWindows 10 / Server 2019winver
    .NET SDK9.0dotnet --version
    Privilegi di amministratoreRichiestiRun terminal as Admin

    Installa .NET 9 SDK (se non installato)```powershell

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

    Or use winget:

    winget install Microsoft.DotNet.SDK.9

    root@kitploit:~
    ---
    
    ## 🚀 Avvio Rapido
    
    ### 1. Clona il Repository```powershell
    git clone [email protected]:m2l33k/BlockGuard.git
    cd BlockGuard
    

    2. Ripristina le dipendenze```powershell

    dotnet restore BlockGuard.sln

    root@kitploit:~
    ### 3. Costruisci la Soluzione```powershell
    dotnet build BlockGuard.sln --configuration Release
    

    Dovresti vedere:``` Build succeeded. 0 Warning(s) 0 Error(s)

    root@kitploit:~
    ### 4. Configura i percorsi protetti e le regole
    
    Modifica `src/BlockGuard.Agent/appsettings.json` per definire **quali file proteggere** e **quali processi sono autorizzati**:```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. Esegui (Modalità di sviluppo)```powershell

    Run as Administrator (required for ETW + ACL operations)

    dotnet run --project src/BlockGuard.Agent

    root@kitploit:~
    ## ⚙️ Configurazione
    
    Tutta la configurazione risiede in `src/BlockGuard.Agent/appsettings.json` nella sezione `"BlockGuard"`.
    
    ### Percorsi protetti
    
    Un array di file o directory da proteggere. Le directory proteggono tutti i file in modo ricorsivo.```json
    "ProtectedPaths": [
      "C:\\Secrets\\ai-model-keys",
      "C:\\Secrets\\api-credentials.json",
      "D:\\Confidential\\reports"
    ]
    

    Regole per processi autorizzati

    Ogni regola definisce i criteri che un processo deve soddisfare per ottenere l'accesso. Tutti i campi non nulli devono corrispondere (logica AND):

    CampoTipoDescrizione
    RuleNamestringNome leggibile per questa regola (usato nei log di audit)
    ExecutablePathstring?Percorso completo dell'eseguibile autorizzato (senza distinzione tra maiuscole e minuscole)
    ExpectedFileHashstring?Hash SHA-256 dell'eseguibile (rilevamento manomissioni)
    ExpectedSignerSubjectstring?Oggetto del certificato Authenticode (es., "CN=Contoso")
    MinimumIntegrityLevelstringLivello di integrità minimo di Windows: Untrusted, Low, Medium, High, System
    RequireSignatureboolSe true, l'eseguibile deve avere una firma Authenticode valida

    Esempio: regola basata sul percorso (per un processo di intelligenza artificiale)```json { "RuleName": "AI-Model-Inference-Engine", "ExecutablePath": "C:\Program Files\MyAI\inference.exe", "ExpectedFileHash": null, "ExpectedSignerSubject": null, "MinimumIntegrityLevel": "Medium", "RequireSignature": false }

    root@kitploit:~
    **Esempio: Regola basata su firma (per qualsiasi strumento di gestione firmato)**```json
    {
      "RuleName": "Signed-Management-Tool",
      "ExecutablePath": null,
      "ExpectedFileHash": null,
      "ExpectedSignerSubject": "CN=Contoso Security",
      "MinimumIntegrityLevel": "High",
      "RequireSignature": true
    }
    

    Esempio: Regola con hash fissato (per la massima protezione dalla manomissione)```json { "RuleName": "Pinned-Data-Processor", "ExecutablePath": "C:\Tools\processor.exe", "ExpectedFileHash": "a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890", "ExpectedSignerSubject": null, "MinimumIntegrityLevel": "Medium", "RequireSignature": false }

    root@kitploit:~
    ### Altre Opzioni
    
    | Opzione | Predefinito | Descrizione |
    |---|---|---|
    | `IdentityCacheTtlSeconds` | `30` | Per quanto tempo (in secondi) un'identità di processo convalidata rimane nella cache |
    | `HandleTimeoutSeconds` | `60` | Durata massima (in secondi) di una concessione ACL temporanea |
    | `AuditLogPath` | `C:\ProgramData\BlockGuard\Logs\audit.json` | Percorso del file di log di controllo JSON |
    | `EnableDpapiEncryption` | `true` | Cripta i file protetti a riposo con DPAPI |
    | `DpapiScope` | `LocalMachine` | Ambito DPAPI: `LocalMachine` o `CurrentUser` |
    
    ---
    
    ## 🏃 Esecuzione dell'Agente
    
    ### Opzione A: Modalità di sviluppo (Console)
    
    Ideale per test e debug. Esegui da una **PowerShell con privilegi elevati (Amministratore)**:```powershell
    dotnet run --project src/BlockGuard.Agent --configuration Release
    

    Vedrai un output della console come:``` [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:~
    Premere `Ctrl+C` per fermare.
    
    ### Opzione B: Installare come servizio Windows (Produzione)```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
    

    Gestisci il servizio:```powershell

    Check status

    sc.exe query BlockGuard

    Stop

    sc.exe stop BlockGuard

    Remove (uninstall)

    sc.exe delete BlockGuard

    root@kitploit:~
    ---
    
    ## ✅ Verifica del funzionamento
    
    Segui questi passaggi per confermare che BlockGuard stia proteggendo correttamente i file.
    
    ### Test 1: Verifica della build```powershell
    # From the project root directory
    dotnet build BlockGuard.sln
    
    # Expected: Build succeeded with 0 Error(s)
    

    Test 2: Verifica l'avvio dell'Agente```powershell

    Open an elevated (Administrator) PowerShell

    dotnet run --project src/BlockGuard.Agent

    root@kitploit:~
    **✅ Risultato atteso:**
    - Messaggio `BlockGuard Security Agent Starting`
    - Nessun errore `CRITICAL` o `FATAL`
    - `ETW file trace session started successfully`
    - `BlockGuard is now actively protecting X path(s)`
    
    **❌ Se vedi `ETW session — insufficient privileges`:**
    - Non stai eseguendo come Amministratore. Fai clic destro su PowerShell → "Esegui come amministratore"
    
    ### Test 3: Verifica del blocco ACL
    
    Dopo l'avvio dell'agente, verifica che i file protetti siano bloccati:```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
    

    Test 4: Verifica stato ACL con 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:~
    ### Test 5: Ispezione del Log di Audit
    
    Dopo che l'agente ha eseguito per un po', controlla il log di audit:```powershell
    # View the last 10 audit entries
    Get-Content "C:\ProgramData\BlockGuard\Logs\audit.json" | Select-Object -Last 10
    

    Output previsto (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:~
    ### Test 6: Verifica della cattura di eventi ETW
    
    Apri un secondo terminale e prova ad accedere a un file protetto mentre l'agente è in esecuzione:```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"
    

    Nel Terminale 1, dovresti vedere una voce di log come:``` [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:~
    ### Test 7: Verificare l'Accesso Non Autorizzato Bloccato (Modello AI)
    
    Quando un processo (come un modello AI non autorizzato) tenta di leggere una cartella o un file protetto, l'agente nega immediatamente l'accesso. L'AI riceverà un errore rigoroso di **Accesso Negato** e il tentativo viene registrato:
    
    <p align="center">
      <img src="https://assets.kitploit.com/production/public/readmes/12349/d2a2e20c0fc60e8b3a5f614b0a53c6c7275b634e93b1ce0b9fe4440c38215fac.png" alt="Accesso Non Autorizzato Negato" width="600" />
    </p>
    
    ### Test 8: Verificare la Crittografia 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)
    

    Test 9: Rilevamento di Manomissione

    Mentre l'agente è in esecuzione, aggiungi manualmente una voce ACL non autorizzata:```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:~
    ### Test 10: Verifica Directory dei Log```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)
    

    Lista di Verifica Rapida

    #TestCome VerificareRisultato Atteso
    1Compilazionedotnet build BlockGuard.sln0 errori
    2Avvio agentedotnet run --project src/BlockGuard.Agent (come Amministratore)Banner di avvio, nessun errore CRITICO
    3Blocco ACLicacls <protected-file>Solo SYSTEM + Amministratori
    4Accesso non autorizzato bloccatoLeggere file protetto da terminale non amministratoreAccesso Negato
    5Cattura ETWLeggere file protetto mentre l'agente è in esecuzioneVoce di log NEGATO nella console
    6Registro auditGet-Content C:\ProgramData\BlockGuard\Logs\audit.jsonVoci JSON con verdetto
    7Crittografia DPAPITest-Path <file>.encIl file .enc esiste
    8Rilevamento manomissioniicacls <file> /grant Users:R quindi attendi 60 secondiRimedio automatico registrato

    📁 Struttura del Progetto```

    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:~
    ---
    
    ## 🔬 Come Funziona
    
    ### Sequenza di Avvio (5 Fasi)```
    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
    

    Flusso di richiesta di accesso```

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

    root@kitploit:~
    ### Convalida del Processo (6 Controlli)
    
    Quando un processo accede a un file protetto, BlockGuard lo convalida tramite:
    
    1. **Percorso Eseguibile** — Risolve e canonicalizza il percorso completo (previene il path traversal)
    2. **Hash SHA-256** — Calcola l'hash del binario su disco (rileva la sostituzione del file)
    3. **Firma Authenticode** — Convalida la catena della firma digitale (rileva binari non firmati/alterati)
    4. **SID del Proprietario del Processo** — Interroga il token per identificare l'account in esecuzione
    5. **Livello di Integrità** — Legge l'etichetta obbligatoria (Non attendibile/Basso/Medio/Alto/Sistema)
    6. **ID del Processo Padre** — Traccia la catena di creazione del processo (rileva l'iniezione)
    
    Tutti i controlli sono **fail-closed**: se un qualsiasi passo di convalida fallisce, l'accesso è **NEGATO**.
    
    ---
    
    ## 🛠️ Risoluzione dei problemi
    
    ### "Sessione ETW — privilegi insufficienti"
    
    **Causa:** L'agente non è in esecuzione con privilegi di Amministratore/SYSTEM.
    
    **Rimedio:**```powershell
    # Right-click PowerShell → "Run as Administrator"
    dotnet run --project src/BlockGuard.Agent
    

    "Impossibile modificare l'ACL — all'agente mancano i privilegi necessari"

    Causa: L'agente non può modificare i permessi dei file senza privilegi elevati.

    Correzione: Come sopra — esegui come Amministratore.

    "Il percorso protetto non esiste. Saltato."

    Causa: I percorsi in appsettings.json non esistono sulla tua macchina.

    Correzione: Crea prima le directory e i file:```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:~
    ### Errori di compilazione dopo la clonazione
    
    **Soluzione:** Ripristina i pacchetti NuGet:```powershell
    dotnet restore BlockGuard.sln
    dotnet build BlockGuard.sln
    

    "Sessione ETW orfana eliminata"

    Causa: Una precedente istanza dell'agente è andata in crash e ha lasciato una sessione ETW zombie. Viene pulita automaticamente — è un WARNING, non un errore.

    L'agente si ferma immediatamente dopo l'avvio

    Causa: Probabilmente un errore di configurazione. Controlla il file di log:```powershell Get-Content "C:\ProgramData\BlockGuard\Logs\blockguard-*.log" | Select-Object -Last 50

    root@kitploit:~
    ---
    
    ## 🔒 Considerazioni sulla Sicurezza
    
    ### Cosa Questo Agente Può Fare
    - ✅ Impedisce ai processi non autorizzati di **leggere** file protetti tramite l'applicazione delle ACL
    - ✅ Rileva e **controlla** tutti i tentativi di accesso ai file in tempo reale tramite ETW
    - ✅ Crittografa i file **a riposo** utilizzando DPAPI
    - ✅ Rileva e **corregge automaticamente** la manomissione delle ACL
    
    ### Cosa Questo Agente Non Può Fare
    - ❌ **Bloccare le letture dei file in volo** — Questo è un agente in modalità utente; il blocco in volo reale richiede un driver minifilter del kernel
    - ❌ **Fermare attacchi a livello kernel** — Un driver kernel dannoso può bypassare le ACL NTFS
    - ❌ **Impedire agli Amministratori di sovrascrivere** — Gli account amministratore possono rimuovere le ACL (mitigato dal rilevamento di manomissioni)
    
    ### Raccomandazioni per la Produzione
    
    1. **Esegui come `NT AUTHORITY\SYSTEM`** — Usa un servizio Windows, non un'app console
    2. **Firma il binario dell'agente** con un certificato Authenticode per prevenire l'auto-manomissione
    3. **Abilita BitLocker** sul volume per la crittografia completa del disco (complementa DPAPI)
    4. **Inoltra i log di audit a un SIEM** per il monitoraggio centralizzato
    5. **Abilita Secure Boot + Applicazione della firma dei driver** per prevenire bypass a livello kernel
    
    ---
    
    ## 🤝 Contribuire
    
    1. Fai il fork del repository
    2. Crea un branch di feature: `git checkout -b feature/my-feature`
    3. Esegui il commit delle modifiche: `git commit -m "Add my feature"`
    4. Carica sul branch: `git push origin feature/my-feature`
    5. Apri una Pull Request
    
    ### Stile del Codice
    - Segui le convenzioni di denominazione C# (PascalCase per i membri pubblici)
    - Aggiungi commenti di documentazione XML a tutte le API pubbliche
    - Ogni convalida deve **fallire in chiusura** (negare in caso di errore)
    - Smaltisci esplicitamente tutti gli handle nativi nei blocchi `finally`
    - Azzera i buffer di memoria sensibili dopo l'uso
    
    ---
    
    ## 📄 Licenza
    
    Questo progetto è concesso in licenza secondo i termini della MIT License. Vedi [LICENSE](https://github.com/m2l33k/blockguard/blob/HEAD/LICENSE) per i dettagli.
    
    ---
    
    <p align="center">
      <b>Realizzato con principi di sicurezza al primo posto per la protezione dei file Windows.</b>
      <br/>
      <sub>BlockGuard — perché i tuoi dati meritano una guardia, non solo un lucchetto.</sub>
    </p>
    
    Scarica lo strumento