Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
WFH — Herramienta de análisis dinámico basada en Frida que identifica automáticamente vulnerabilidades de sideloading de DLL y secuestro de COM en ejecutables de Windows mediante instrumentación en tiempo de ejecución y análisis de IAT. | Kitploit
Herramientas/GitHubGitHub/conscioushacker/wfh
Análisis Dinámico (Sandboxing)ExplotaciónFuzzingAnálisis de Binarios
GitHubconscioushacker/wfh

WFH

Herramienta de análisis dinámico basada en Frida que identifica automáticamente vulnerabilidades de sideloading de DLL y secuestro de COM en ejecutables de Windows mediante instrumentación en tiempo de ejecución y análisis de IAT.

Ver Repositorio
436722hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Windows Feature Hunter (WFH)

Windows Feature Hunter (WFH) es un script de Python de prueba de concepto que utiliza Frida, un conjunto de herramientas de instrumentación dinámica, para ayudar a identificar potencialmente "vulnerabilidades" o "características" comunes en ejecutables de Windows. WFH actualmente tiene la capacidad de identificar automáticamente oportunidades potenciales de carga lateral de DLL (Dynamic Linked Library) y secuestro de COM (Component Object Model) a escala.

La carga lateral de DLL utiliza el ensamblado side-by-side (WinSXS) de Windows para cargar un DLL malicioso desde la lista side-by-side (SXS). El secuestro de COM permite a un adversario insertar código malicioso que puede ejecutarse en lugar del software legítimo mediante el secuestro de las referencias y relaciones de COM. WFH imprimirá las vulnerabilidades potenciales y escribirá un archivo CSV que las contenga en los ejecutables de Windows objetivo.

Tabla de contenido

  • Windows Feature Hunter (WFH)
    • Instalación de WFH
    • Ayuda de WFH
    • Uso de WFH
      • Identificación de DLL Sideloading de WFH
      • Identificación de COM Hijacking de WFH
    • Casos de uso de WFH
      • Archivos binarios firmados nativos de Windows
  • Windows Feature Hunter Dridex (WFH Dridex)
    • Instalación de WFH Dridex
    • Dependencias de WFH Dridex
    • Uso de WFH Dridex
  • Identificación de DLL Sideloading de WFH Dridex
  • DLL Sideloads de WFH Dridex desde System32
    • Resultados de WFH vs WFH Dridex
  • Contribución a HijackLibs
  • Instalación de WFH

    root@kitploit:~
    pip install -r requirements.txt
    

    Ayuda de WFH

    root@kitploit:~
    PS C:\Tools\WFH > python .\wfh.py -h
    usage: wfh.py [-h] -t T [T ...] -m {dll,com} [-v] [-timeout TIMEOUT]
    
    Windows Feature Hunter
    
    optional arguments:
      -h, --help            show this help message and exit
      -t T [T ...], -targets T [T ...]
                            list of target windows executables
      -m {dll,com}, -mode {dll,com}
                            vulnerabilities to potentially identify
      -v, -verbose          verbose output from Frida instrumentation
      -timeout TIMEOUT      timeout value for Frida instrumentation
    
    EXAMPLE USAGE
        NOTE: It is recommended to copy target binaries to the same directory as wfh for identifying DLL Sideloading
    
        DLL Sideloading Identification (Single):        python wfh.py -t .\mspaint.exe -m dll
        DLL Sideloading Identification (Verbose):       python wfh.py -t .\mspaint.exe -m dll -v
        DLL Sideloading Identification (Timeout 30s):   python wfh.py -t .\mspaint.exe -m dll -timeout 30
        DLL Sideloading Identification (Wildcard):      python wfh.py -t * -m dll
        DLL Sideloading Identification (List):          python wfh.py -t .\mspaint.exe .\charmap.exe -m dll
    
        COM Hijacking Identification (Single):          python wfh.py -t "C:\Program Files\Internet Explorer\iexplore.exe" -m com
        COM Hijacking Identification (Verbose):         python wfh.py -t "C:\Program Files\Internet Explorer\iexplore.exe" -m com -v
        COM Hijacking Identification (Timeout 60s):     python wfh.py -t "C:\Program Files\Internet Explorer\iexplore.exe" -m com -timeout 60
        COM Hijacking Identification (Wildcard):        python wfh.py -t * -m com -v
        COM Hijacking Identification (List):            python wfh.py -t "C:\Program Files\Internet Explorer\iexplore.exe" "C:\Windows\System32\notepad.exe" -m com -v
    

    Uso de WFH

    Identificación de DLL Sideloading de WFH

    Primero necesitas copiar los binarios que quieres analizar al mismo directorio que WFH

    root@kitploit:~
    PS C:\Tools\WFH > copy C:\Windows\System32\mspaint.exe .
    PS C:\Tools\WFH > copy C:\Windows\System32\charmap.exe .
    PS C:\Tools\WFH > dir
    
    
        Directory: C:\Tools\WFH
    
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    d-----         5/14/2021   2:12 PM                .vscode
    -a----          5/6/2021   2:39 PM           1928 .gitignore
    -a----         12/7/2019   2:09 AM         198656 charmap.exe
    -a----         5/18/2021   7:39 AM           6603 loadlibrary.js
    -a----          4/7/2021  12:48 PM         988160 mspaint.exe
    -a----         5/18/2021   7:53 AM           8705 README.md
    -a----         5/17/2021  11:27 AM           5948 registry.js
    -a----          5/6/2021   2:41 PM             11 requirements.txt
    -a----         5/18/2021   8:35 AM          10623 wfh.py
    

    Ahora puedes ejecutar wfh contra los binarios para identificar oportunidades de carga lateral de dll

    root@kitploit:~
    PS C:\Tools\WFH > python .\wfh.py -t * -m dll
    ==================================================
    Running Frida against charmap.exe
    --------------------------------------------------
            [+] Potential DllMain Sideloading: LoadLibraryW,LPCWSTR: MSFTEDIT.DLL
            [+] Potential DllMain Sideloading: LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE
    
    [*] Writing raw Frida instrumentation to charmap.exe-raw.log
    [*] Writing Potential DLL Sideloading to charmap.exe-sideload.log
    --------------------------------------------------
    ==================================================
    Running Frida against mspaint.exe
    --------------------------------------------------
            [+] Potential DllMain Sideloading: LoadLibraryExW,LPCWSTR : gdiplus.dll, dwFlags : NONE
            [-] Potential DllExport Sideloading: GetProcAddress,hModule : C:\WINDOWS\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.789_none_faf0a7e97612e7bb\gdiplus.dll, LPCSTR: GdiplusStartup
            [+] Potential DllMain Sideloading: LoadLibraryW,LPCWSTR: MSFTEDIT.DLL
            [+] Potential DllMain Sideloading: LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE
    
    [*] Writing raw Frida instrumentation to mspaint.exe-raw.log
    [*] Writing Potential DLL Sideloading to mspaint.exe-sideload.log
    --------------------------------------------------
    ==================================================
    [*] Writing dll results to dll_results.csv
    
    PS C:\Tools\WFH > type .\dll_results.csv
    Executable,WinAPI,DLL,EntryPoint / WinAPI Args
    charmap.exe,LoadLibraryW,LPCWSTR: MSFTEDIT.DLL
    charmap.exe,LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE
    mspaint.exe,LoadLibraryExW,LPCWSTR : gdiplus.dll, dwFlags : NONE
    mspaint.exe,GetProcAddress,hModule : C:\WINDOWS\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.789_none_faf0a7e97612e7bb\gdiplus.dll, LPCSTR: GdiplusStartup
    mspaint.exe,LoadLibraryW,LPCWSTR: MSFTEDIT.DLL
    mspaint.exe,LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE
    

    Si prefieres una salida más detallada, puedes usar "-v" para ver cada mensaje de Frida instrumentando las llamadas a la API de Windows. También puedes ver esta salida en el archivo de registro sin procesar.

    root@kitploit:~
    PS C:\Tools\WFH > python .\wfh.py -t * -m dll -v
    ==================================================
    Running Frida against charmap.exe
    {'type': 'send', 'payload': 'LoadLibraryW,LPCWSTR: MSFTEDIT.DLL'}
    {'type': 'send', 'payload': 'LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE'}
    --------------------------------------------------
            [+] Potential DllMain Sideloading: LoadLibraryW,LPCWSTR: MSFTEDIT.DLL
            [+] Potential DllMain Sideloading: LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE
    
    [*] Writing raw Frida instrumentation to charmap.exe-raw.log
    [*] Writing Potential DLL Sideloading to charmap.exe-sideload.log
    --------------------------------------------------
    ==================================================
    Running Frida against mspaint.exe
    {'type': 'send', 'payload': 'LoadLibraryExW,LPCWSTR : gdiplus.dll, dwFlags : NONE'}
    {'type': 'send', 'payload': 'GetProcAddress,hModule : C:\\WINDOWS\\WinSxS\\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.789_none_faf0a7e97612e7bb\\gdiplus.dll, LPCSTR: GdiplusStartup'}
    {'type': 'send', 'payload': 'LoadLibraryW,LPCWSTR: MSFTEDIT.DLL'}
    {'type': 'send', 'payload': 'LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE'}
    --------------------------------------------------
            [+] Potential DllMain Sideloading: LoadLibraryExW,LPCWSTR : gdiplus.dll, dwFlags : NONE
            [-] Potential DllExport Sideloading: GetProcAddress,hModule : C:\WINDOWS\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.19041.789_none_faf0a7e97612e7bb\gdiplus.dll, LPCSTR: GdiplusStartup
            [+] Potential DllMain Sideloading: LoadLibraryW,LPCWSTR: MSFTEDIT.DLL
            [+] Potential DllMain Sideloading: LoadLibraryExW,LPCWSTR : MSFTEDIT.DLL, dwFlags : NONE
    
    [*] Writing raw Frida instrumentation to mspaint.exe-raw.log
    [*] Writing Potential DLL Sideloading to mspaint.exe-sideload.log
    --------------------------------------------------
    ==================================================
    [*] Writing dll results to dll_results.csv
    

    Identificación de COM Hijacking de WFH

    root@kitploit:~
    PS C:\Tools\WFH > python .\wfh.py -t "C:\Program Files\Internet Explorer\iexplore.exe" -m com
    ==================================================
    Running Frida against C:\Program Files\Internet Explorer\iexplore.exe
    --------------------------------------------------
            [+] Potential COM Hijack: Path : HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{0E5AAE11-A475-4C5B-AB00-C66DE400274E}\InProcServer32,lpValueName : null,Type : REG_EXPAND_SZ, Value : %SystemRoot%\system32\Windows.Storage.dll
            [+] Potential COM Hijack: Path : HKEY_CLASSES_ROOT\CLSID\{1FD49718-1D00-4B19-AF5F-070AF6D5D54C}\InProcServer32,lpValueName : null,Type : REG_SZ, Value : C:\Program Files (x86)\Microsoft\Edge\Application\90.0.818.62\BHO\ie_to_edge_bho_64.dll
    
    [*] Writing raw Frida instrumentation to .\iexplore.exe-raw.log
    [*] Writing Potential COM Hijack to .\iexplore.exe-comhijack.log
    --------------------------------------------------
    ==================================================
    [*] Writing dll results to comhijack_results.csv
    

    Casos de uso de WFH

    Archivos binarios firmados nativos de Windows

    Copiar todos los binarios firmados nativos de Windows al directorio de wfh

    root@kitploit:~
    Get-ChildItem c:\ -File | ForEach-Object { if($_ -match '.+?exe$') {Get-AuthenticodeSignature $_.fullname} } | where {$_.IsOSBinary} | ForEach-Object {Copy-Item $_.path . }
    

    Buscar oportunidades de carga lateral de DLL

    root@kitploit:~
    python wfh.py -t * -m dll
    

    Buscar oportunidades de secuestro de COM

    root@kitploit:~
    python wfh.py -t * -m com
    

    Windows Feature Hunter Dridex (WFH Dridex)

    Windows Feature Hunter Dridex (WFH Dridex) es un script de Python de prueba de concepto inspirado en el cargador Dridex. WFH Dridex analiza la Tabla de Direcciones de Importación (IAT) de los ejecutables objetivo, compila un DLL para cada entrada en la IAT de los ejecutables y valida si se identificó una carga lateral de DLL.

    La versión original de WFH identificó aproximadamente 96 oportunidades potenciales de carga lateral de DLL. WFH Dridex identificó aproximadamente 966 oportunidades validadas de carga lateral de DLL.

    Instalación de WFH Dridex

    root@kitploit:~
    pip install -r requirements.txt
    

    Dependencias de WFH Dridex

    MingW G++ (64 bits)

    g++.exe debe agregarse a la variable de entorno PATH después de la instalación para que WFH Dridex funcione correctamente.

    Uso de WFH Dridex

    Identificación de DLL Sideloading de WFH Dridex

    Primero necesitas copiar los binarios que quieres analizar al mismo directorio que WFH Dridex

    root@kitploit:~
    ❯ cp C:\Windows\System32\mspaint.exe .
    ❯ cp C:\Windows\System32\charmap.exe .
    
    root@kitploit:~
    ❯ python .\wfh_dridex.py
    [*] Creating a payload for charmap.exe with GetUName.dll
        |_ Compiling with: g++.exe -s -Os -static -shared -fpermissive -oGetUName.dll dllmain.c
        |_ Testing charmap.exe with GetUName.dll for DLL sideloading opportunity
        |_ PID: 8936
    [>] Listing working DLL sideloads
        |_ charmap.exe GetUName.dll
    [*] Creating a payload for mspaint.exe with MFC42u.dll
        |_ Compiling with: g++.exe -s -Os -static -shared -fpermissive testaroo.def -oMFC42u.dll dllmain.c
        |_ Testing mspaint.exe with MFC42u.dll for DLL sideloading opportunity
        |_ PID: 9472
    [*] Creating a payload for mspaint.exe with PROPSYS.dll
        |_ Compiling with: g++.exe -s -Os -static -shared -fpermissive -oPROPSYS.dll dllmain.c
        |_ Testing mspaint.exe with PROPSYS.dll for DLL sideloading opportunity
        |_ PID: 11308
    [*] Creating a payload for mspaint.exe with WINMM.dll
        |_ Compiling with: g++.exe -s -Os -static -shared -fpermissive -oWINMM.dll dllmain.c
        |_ Testing mspaint.exe with WINMM.dll for DLL sideloading opportunity
        |_ PID: 180
    [>] Listing working DLL sideloads
        |_ mspaint.exe MFC42u.dll
        |_ mspaint.exe PROPSYS.dll
        |_ mspaint.exe WINMM.dll
    

    Ahora puedes ejecutar WFH Dridex contra los binarios para identificar oportunidades de carga lateral de DLL

    root@kitploit:~
    ❯ gc .\results.csv
    Executable,DllName
    charmap.exe,GetUName.dll
    mspaint.exe,MFC42u.dll
    mspaint.exe,PROPSYS.dll
    mspaint.exe,WINMM.dll
    

    DLL Sideloads de WFH Dridex desde System32

    Un ejemplo de salida CSV de WFH Dridex ejecutado contra C:\Windows\System32 se puede ver aquí.

    Resultados de WFH vs WFH Dridex

    La versión original de WFH identificó aproximadamente 96 oportunidades potenciales de carga lateral de DLL. WFH Dridex identificó aproximadamente 966 oportunidades validadas de carga lateral de DLL.

    Contribución a HijackLibs

    Como parte del lanzamiento de WFH Dridex, se envió una solicitud de incorporación de cambios al proyecto HijackLibs de Wietze que incluía 507 nuevas entradas al proyecto.

    Descargar herramienta