Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
herpaderping — Prueba de concepto, herramienta y análisis técnico profundo de Process Herpaderping. Process Herpaderping sortea los productos de seguridad ocultando las intenciones de un proceso. | Kitploit
Herramientas/GitHubGitHub/jxy-s/herpaderping
Herramientas DefensivasExplotaciónPruebas de Penetración
GitHubjxy-s/herpaderping

herpaderping

Prueba de concepto, herramienta y análisis técnico profundo de Process Herpaderping. Process Herpaderping sortea los productos de seguridad ocultando las intenciones de un proceso.

Ver Repositorio
1.2k2249hace 3 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

Process Herpaderping

[][png.HerpaderpIcon] Process Herpaderping es un método para ocultar las intenciones de un proceso modificando el contenido en disco después de que la imagen haya sido mapeada. Esto resulta en un comportamiento curioso por parte de los productos de seguridad y del propio sistema operativo.

![][png.mimioogle]

![][gif.SurivDemo]

Resumen

Generalmente, un producto de seguridad actúa sobre la creación de procesos registrando un callback en el kernel de Windows ([PsSetCreateProcessNotifyRoutineEx][msdn.PsSetCreateProcessNotifyRoutineEx]). En ese momento, un producto de seguridad puede inspeccionar el archivo que se usó para mapear el ejecutable y determinar si este proceso debe permitirse ejecutar. Este callback del kernel se invoca cuando se inserta el hilo inicial, no cuando se crea el objeto del proceso.

Debido a esto, un actor puede crear y mapear un proceso, modificar el contenido del archivo y luego crear el hilo inicial. Un producto que realice la inspección en el callback de creación vería el contenido modificado. Además, algunos productos utilizan un enfoque de escaneo en escritura que consiste en monitorear las escrituras en archivos. Una optimización común aquí es registrar que el archivo ha sido escrito y diferir la inspección real hasta que ocurra [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP] (por ejemplo, cuando se cierra el identificador del archivo). Por lo tanto, un actor que utilice un flujo de trabajo escribir -> mapear -> modificar -> ejecutar -> cerrar sorteará el escaneo en escritura que se basa únicamente en la inspección en [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP].

Para abusar de esta convención, primero escribimos un binario en un archivo destino en disco. Luego, mapeamos una imagen del archivo destino y se la proporcionamos al sistema operativo para que la use en la creación del proceso. El sistema operativo amablemente mapea el binario original por nosotros. Usando el identificador de archivo existente, y antes de crear el hilo inicial, modificamos el contenido del archivo destino para ocultar o falsear el archivo que respalda la imagen. Algún tiempo después, creamos el hilo inicial para comenzar la ejecución del binario original. Finalmente, cerraremos el identificador del archivo destino. Recorramos esto paso a paso:

  1. Escribir el binario destino en disco, manteniendo el identificador abierto. Esto es lo que se ejecutará en memoria.
  2. Mapear el archivo como una sección de imagen ([NtCreateSection][msdn.NtCreateSection], [SEC_IMAGE][msdn.SEC_IMAGE]).
  3. Crear el objeto del proceso usando el identificador de sección (NtCreateProcessEx).
  4. Usando el mismo identificador de archivo destino, ocultar el archivo en disco.
  5. Crear el hilo inicial en el proceso (NtCreateThreadEx).
    • En este punto, el callback de creación de procesos en el kernel se disparará. El contenido en disco no coincide con lo que fue mapeado. La inspección del archivo en este momento resultará en una atribución incorrecta.
  6. Cerrar el identificador. [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP] ocurrirá aquí.
    • Dado que hemos ocultado el contenido de lo que se está ejecutando, la inspección en este punto resultará en una atribución incorrecta.

![][svg.StateDiagram]

plantuml

@startuml
hide empty description

[*] --> CreateFile
CreateFile --> FileHandle
FileHandle --> Write
FileHandle --> NtCreateSection
Write -[hidden]-> NtCreateSection
NtCreateSection --> SectionHandle
SectionHandle --> NtCreateProcessEx
FileHandle --> Modify
NtCreateProcessEx -[hidden]-> Modify
NtCreateProcessEx --> NtCreateThreadEx
Modify -[hidden]-> NtCreateThreadEx
NtCreateThreadEx --> [*]
FileHandle --> CloseFile
NtCreateThreadEx -[hidden]-> CloseFile
NtCreateThreadEx --> PspCallProcessNotifyRoutines
PspCallProcessNotifyRoutines -[hidden]-> [*]
CloseFile --> IRP_MJ_CLEANUP
IRP_MJ_CLEANUP -[hidden]-> [*]
PspCallProcessNotifyRoutines --> Inspect
PspCallProcessNotifyRoutines -[hidden]-> CloseFile 
IRP_MJ_CLEANUP --> Inspect
Inspect -[hidden]-> [*]

CreateFile : Create target file, keep handle open.
Write : Write source payload into target file.
Modify : Obscure the file on disk.
NtCreateSection : Create section using file handle.
NtCreateProcessEx : Image section for process is mapped and cached in file object.
NtCreateThreadEx : The cached section is used.
NtCreateThreadEx : Process notify routines fire in kernel.
Inspect : The contents on disk do not match what was executed. 
Inspect : Inspection of the file at this point will result in incorrect attribution.
@enduml

Comportamiento

Verá en la demostración a continuación que se utiliza CMD.exe como destino de ejecución. La primera ejecución sobrescribe los bytes en disco con un patrón. La segunda ejecución sobrescribe CMD.exe con ProcessHacker.exe. La herramienta Herpaderping arregla el binario para que se parezca lo más posible a ProcessHacker.exe, incluso conservando la firma original. Observe las múltiples ejecuciones del mismo binario y cómo el proceso se ve para el usuario en comparación con lo que hay en el archivo en disco.

![][gif.ProcessHerpaderp]

![][png.procmon]

Profundizando

Hemos observado el comportamiento y parte de esto puede ser sorprendente. Intentemos explicar este comportamiento.

[Inmersión técnica profunda][md.DivingDeeper]

Antecedentes y Motivación

Al diseñar productos para asegurar plataformas Windows, muchos ingenieros en este campo (yo incluido) han caído en nociones preconcebidas con respecto a cómo el sistema operativo manejará los datos. En este escenario, algunos podrían esperar que el archivo en disco permanezca "bloqueado" cuando se crea el proceso. No se puede eliminar el archivo. No se puede escribir en él. Pero se puede renombrar. Como se ve aquí, bajo las condiciones adecuadas, de hecho se puede escribir en él. Permanezcan vigilantes sobre sus suposiciones, cuéstionenlas siempre e investiguen.

La motivación para esta investigación surgió al descubrir cómo realizar análisis cuando se escribe un archivo. Con antecedentes previos investigando el Hollowing de procesos y el Doppelganging, había teorizado que esto podría ser posible. El objetivo es proporcionar una mejor seguridad. No se puede crear una mejor cerradura sin antes comprender cómo romper la antigua.

Técnicas Similares

Herpaderping es similar a Hollowing y Doppelganging, sin embargo, hay algunas diferencias clave:

Process Hollowing

Process Hollowing implica modificar la sección mapeada antes de que comience la ejecución, lo que abstractamente se ve así: mapear -> modificar sección -> ejecutar. Este flujo de trabajo hace que el flujo de ejecución previsto del proceso hollowed (vaciado) diverja hacia código no previsto. Doppelganging podría considerarse una forma de Hollowing. Sin embargo, Hollowing, en mi opinión, está más cerca de la inyección en el sentido de que generalmente implica una escritura explícita en el código ya mapeado. Esto difiere de Herpaderping donde no hay secciones modificadas.

Process Doppelganging

Process Doppelganging está más cerca de Herpaderping. Doppelganging abusa de operaciones de archivos transaccionados y generalmente implica estos pasos: transaccionar -> escribir -> mapear -> revertir -> ejecutar. En este flujo de trabajo, el sistema operativo creará la sección de imagen y tendrá en cuenta las transacciones, por lo que la sección de imagen en caché termina siendo lo que se escribió en la

Descargar herramienta