Torna agli aggiornamenti
New releaseSep 1, 2026

DLLHijackHunter v2.4.0

Scoperta, validazione e conferma automatizzata del DLL Hijacking. Trasformare le configurazioni errate locali in percorsi di attacco confermati e weaponizzati.

Condividi

DLLHijackHunter

Di ProjectMerai

Scoperta, validazione e conferma automatizzate del DLL hijacking su Windows
Da "questa DLL potrebbe essere dirottabile" a "un utente standard può far caricare questa DLL a SYSTEM — eccone la prova."


Indice


Panoramica

DLLHijackHunter individua le opportunità di DLL hijacking su un host Windows e si adopera per dimostrarle, non solo elencarle. Esso:

  1. Scopre ogni punto in cui un binario viene avviato automaticamente — servizi, attività pianificate, chiavi Run, cartelle Startup, server COM, DLL AppInit/AppCert, voci IFEO e binari UAC ad auto-elevazione — e calcola dove verrebbe cercata ciascuna DLL importata.
  2. Filtra le posizioni che un attaccante non può effettivamente sfruttare: API set, KnownDLL, directory in cui un utente standard non può scrivere, processi protetti e altro ancora.
  3. Verifica (opzionale) con il vero loader di Windows, posizionando una DLL sonda benigna e controllando quale copia vince la ricerca.
  4. Conferma (opzionale) distribuendo una DLL canary innocua, attivando il servizio/attività/oggetto COM e registrando l'identità con cui è effettivamente stato eseguito.
  5. Assegna un punteggio e riporta ogni risultato in base a confidenza e impatto, e correla i risultati in catene di attacco (ad esempio utente standard → SYSTEM).

Ogni giudizio è formulato dal punto di vista dell'attaccante — un utente standard non privilegiato — indipendentemente dal fatto che lo scanner stesso venga eseguito con privilegi elevati. L'esecuzione come Amministratore offre allo strumento maggiore visibilità (ETW, canary, trigger dei servizi); non rende mai le directory protette scrivibili né gonfia il privilegio ottenuto.


Avvio rapido

Scarica o compila DLLHijackHunter.exe (autonomo; non richiede l'installazione di .NET), quindi da un prompt con privilegi elevati:

# Passive, read-only triage: no file drops, no service/task starts
.\DLLHijackHunter.exe --profile safe

# Full static analysis without touching the system, JSON report
.\DLLHijackHunter.exe --profile aggressive --no-canary --no-etw -o report.json

# Static analysis + real-loader verification (writes probe DLLs transiently)
.\DLLHijackHunter.exe --profile aggressive --no-canary --no-etw --verify-load -o report.html

# Everything, including ETW and canary confirmation — lab / authorised targets only
.\DLLHijackHunter.exe --profile aggressive -o report.html

# Focus on one application
.\DLLHijackHunter.exe --target "C:\Program Files\MyApp\app.exe" --no-canary

Antivirus: le DLL canary e probe non sono firmate e si comportano come payload di hijack, quindi Microsoft Defender potrebbe metterle in quarantena. Lo strumento rileva questa situazione e riporta tali risultati come inconclusivi anziché "non hijackable". Su una macchina di test, escludere le directory di destinazione e %ProgramData%\DLLHijackHunter per ottenere risultati definitivi.


Come funziona

flowchart TB
    subgraph S1["1 · Discovery"]
        direction LR
        EN["Launch points<br/>services · tasks · Run keys<br/>startup · COM · AutoElevate"] --> PE["PE analysis<br/>imports · delay loads<br/>manifest"] --> SO["Search order<br/>identity-aware PATH"]
        ETW["ETW runtime trace<br/>optional, elevated"]
    end
    subgraph S2["2 · Filter pipeline"]
        direction LR
        HG["Hard gates<br/>API sets · KnownDLLs<br/>writability"] --> SG["Soft gates<br/>manifest · privilege<br/>PPL · LoadLibraryEx"] --> DD["Dedup and<br/>profile filters"]
    end
    subgraph S3["3 · Verification (optional)"]
        direction LR
        LP["Load probe<br/>real Windows loader"] --> CN["Canary<br/>deploy, trigger, confirm"]
    end
    subgraph S4["4 · Output"]
        direction LR
        SC["Scoring and tiers"] --> AC["Attack chains"] --> RP["Console · JSON · HTML"]
    end
    S1 --> S2 --> S3 --> S4
FaseRichiede adminModifica il sistema
Scoperta statica + filtriNo (l'admin vede di più)No
Scoperta runtime ETWSìAvvia servizi ad avvio automatico (fino a 100) ed esegue attività pianificate (fino a 30) per provocare il caricamento di DLL
Sonda di caricamento (--verify-load)NoScrive brevemente una DLL sonda benigna in ogni posizione candidata, poi la rimuove e ripristina l'originale, se presente
Conferma canarySìScrive una DLL canary, arresta/avvia servizi, esegue attività, attiva oggetti COM, poi esegue la pulizia

Cosa rileva

Tipi di hijack

TipoCosa significaNote
PhantomLa DLL non esiste in nessun punto del percorso di ricercaCollocala ovunque il binario effettui la ricerca
Search orderUna directory scrivibile viene cercata prima della copia legittimaInclude la sovrascrittura di una DLL in una directory scrivibile
ENV PATHUna directory scrivibile in PATH viene cercata per una DLL mancanteI servizi vengono valutati solo rispetto al PATH macchina — le voci PATH dell'utente non vengono mai cercate da un servizio
Reindirizzamento .localReindirizzamento <app>.exe.local\<dll>Segnalato solo per eseguibili senza manifest (o quando IFEO DevOverrideEnable=1); il loader ignora .local in caso contrario, e non reindirizza mai le KnownDLLs
Side-load (UAC)Copia un EXE ad auto-elevazione accanto a una DLL collocataSolo per EXE con <autoElevate>true</autoElevate> nel loro manifest. L'auto-elevazione richiede una posizione attendibile, quindi la copia deve superare tale controllo (ad es. una cartella fittizia C:\Windows \System32\)
AppInit DLLsAppInit_DLLs punta a una DLL scrivibileCaricata in ogni processo che carica user32.dll
AppCert DLLsAppCertDLLs punta a una DLL scrivibileCaricata in ogni chiamante di CreateProcess/WinExec

I binari IFEO Debugger e SilentProcessExit\MonitorProcess vengono enumerati e analizzati come qualsiasi altro punto di avvio. Gli hijack basati su CWD non vengono attualmente prodotti.

Con quale identità viene eseguito il target

L'identità corretta determina sia il verdetto di escalation dei privilegi sia il punteggio di impatto:

Categorie