HookDump
Volcado de hooks de funciones EDR
Consulte la publicación del blog de Zeroperil para más información https://zeroperil.co.uk/hookdump/
Compilación del código fuente
- Para compilarlo necesitará Visual Studio 2019 (la edición Community es suficiente) y CMake. El archivo por lotes Configure.bat creará dos directorios de compilación con soluciones de Visual Studio.
- El proyecto puede compilarse con MinGW usando la línea de comandos correcta de CMake, esto no está probado, YMMV.
- Hay una dependencia del desensamblador zydis, así que asegúrese de actualizar los submódulos en git antes de configurar el proyecto.
- Hay un proyecto para 32 bits y otro para 64 bits; puede que los EDR enganchen funciones diferentes en 32/64 bits, por lo que compilar y ejecutar ambos ejecutables puede proporcionar resultados más completos.
Notas
- Algunos EDR reemplazan el stub WOW en la estructura TEB (específicamente Wow32Reserved) para enganchar las llamadas al sistema para binarios de 32 bits. En ese caso, es posible que no vea ningún hook ya que no hay instrucciones de salto en NTDLL. Lo más probable es que vea hooks en la versión x64, ya que se usa la instrucción syscall para las llamadas al sistema en lugar de un stub WOW.
- Hemos observado que Windows Defender no utiliza ningún hook en modo usuario.
- Esta herramienta está diseñada para ejecutarse como un usuario estándar, no se requieren privilegios elevados.
Tipos de hooks detectados
JMP
Se ha parcheado una instrucción de salto en la función para redirigir el flujo de ejecución.
WOW
Detección del stub de llamada al sistema WOW64 siendo enganchado, lo que permite filtrar todas las llamadas al sistema.
EAT
La dirección en la tabla de direcciones de exportación no coincide con la dirección en la tabla de direcciones de exportación de la copia en disco.
GPA
Hook de GetProcAddress, una característica experimental; solo se muestra en modo verbose, cuando el resultado de GetProcAddress no coincide con la dirección de función resuelta manualmente. YMMV con esto y se debe tener cuidado para verificar los resultados.
Verificación
La única forma de verificar realmente el correcto funcionamiento del programa es comprobar en un depurador si hay hooks presentes. Si obtiene un resultado de cero hooks y espera ver algo diferente, primero verifíquelo en un depurador y comuníquese con nosotros.