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
DarkWidow — Indirect Dynamic Syscall, SSN + ordenación de direcciones Syscall mediante enfoque Modified TartarusGate + Remote Process Injection vía APC Early Bird + genera un proceso sacrificial como proceso objetivo + política de mitigación (ACG+BlockDll) en el proceso generado + PPID spoofing + resolución de API desde TIB + API hashing | Kitploit
Herramientas/GitHubGitHub/reveng007/darkwidow
Escalada de PrivilegiosExplotaciónEvasión de IDS/IPSPost-ExplotaciónAnálisis de MalwareAnálisis de BinariosAprendizaje y EducaciónRed TeamingDesarrollo de Payloads
GitHubreveng007/darkwidow

DarkWidow

Ver Repositorio
807104hace 6 mesesRevisado 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 →

Acerca de

Indirect Dynamic Syscall, SSN + ordenación de direcciones Syscall mediante enfoque Modified TartarusGate + Remote Process Injection vía APC Early Bird + genera un proceso sacrificial como proceso objetivo + política de mitigación (ACG+BlockDll) en el proceso generado + PPID spoofing + resolución de API desde TIB + API hashing

Compartir

DarkWidow

Una herramienta Dropper personalizable dirigida a Windows.


Menciones honorables:

  1. BlackHat Asia, 2024 - Call For Tools
  2. BlackHat USA, 2024 - Call For Tools
  3. BlackHat SecTor, 2024 - Call For Tools
  4. BlackHat Europe, 2024 - Call For Tools
  5. Wild West Hacking Fest 2024 - Arsenal
  • Muchas gracias a Soumyadeep Da aka @SoumyadeepBas12 por animarme a postularme a estas conferencias, si no no lo habría hecho :)
  • Muchas gracias a Faran aka @Chrollo_l33t por ayudarme a crear las diapositivas y la presentación para esta herramienta :)

Capacidades:

  1. Syscall dinámico indirecto. (MITRE ATT&CK TTP: T1106)
  2. Clasificación de SSN + dirección de syscall mediante el enfoque TartarusGate modificado
  3. Inyección de proceso remoto vía APC Early Bird para cortar la captura de telemetría por parte del EDR. (MITRE ATT&CK TTP: T1055.004)
  4. Genera un proceso sacrificial como proceso objetivo, sin interrumpir los procesos ya abiertos en el entorno.
  5. Política de mitigación ACG (Arbitrary Code Guard)/BlockDll sobre el proceso sacrificial generado.
  6. Suplantación de PPID (MITRE ATT&CK TTP: T1134.004)
  7. Resolución de API y DLL desde el TIB (directamente vía offset (desde TIB) -> TEB -> PEB -> resolver Nt API) (MITRE ATT&CK TTP: T1106)
  8. Hashing maldito de Nt API (MITRE ATT&CK ID: S0574)

Extra: Si se tiene privilegio de administrador =>

  1. Deshabilita el registro de eventos matando los hilos del servicio EventLog (MITRE ATT&CK TTP: T1562.002)

Desventaja: Si se reanudan los hilos, todos los eventos que ocurrieron durante la suspensión del registrador de eventos se registran de nuevo.

¡Así que pensé en matarlos en su lugar!

"Es más invasivo que la suspensión, pero la decisión siempre es del operador. Además, matar hilos se registra a nivel de kernel" - @SEKTOR7net

Al matar solo esos hilos en el implante de syscall indirecto, me enfrenté a un error. No pude obtener el valor SubProcessTag de "eventlog". Así que pensé en matar todos los hilos, es decir, eliminar todo el proceso (el svchost.exe responsable). Sí, creando un IOC!.

=

1. Bypass de hooks de EDR/Ring-3/UserLand

2. La syscall y la declaración de retorno se ejecutan desde la memoria de ntdll.dll

3. La detección de EDR basada en verificar la dirección de retorno en la pila de llamadas puede ser evadida.

Compilar:

root@kitploit:~
Directamente vía compilador de VS:

imagen

¡Agregue también la bandera del compilador /MT! => Para enlazar estáticamente las funciones de CRT juntas en un binario (Sí, lo adivinaste, infla el implante)

imagen

  1. También vía compile.bat (preferir opción 1.)
root@kitploit:~
./compile.bat

Uso:

root@kitploit:~
PS C:> .\x64\Release\indirect.exe
[!] ¡Incorrecto!
[->] Sintaxis: .\x64\Release\indirect.exe <PPID a suplantar>

En acción:

https://github.com/reveng007/DarkWidow/assets/61424547/62a90c5b-84af-4389-8ddc-9f7926debdcf

Ejecución exitosa sin crear alerta en el punto final de Sofos XDR:

SofosXDREvade


Mejoras adicionales:

  1. Suplantación de PPID (método Emotet)
  2. Caso de uso mucho más sigiloso de deshabilitación de EventLog!

Partes del código y enlaces que ayudaron:

  1. TIB:

    • https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
    • https://www.wikiwand.com/en/Win32_Thread_Information_Block
  2. Registros GS y FS:

    • https://stackoverflow.com/questions/39137043/what-is-the-gs-register-used-for-on-windows
    • https://stackoverflow.com/questions/10810203/what-is-the-fs-gs-register-intended-for#:~:text=The%20registers%20FS%20and%20GS,to%20access%20thread%2Dspecific%20memory.
  3. Estructura PEB LDR:

    • BlackHat - What Malware Authors Don't Want You to Know - Evasive Hollow Process Injection por @monnappa22

    • Una imagen de la memoria del proceso del enlace anterior:
      imagen

    • De labs.cognisys.group, un blog de @D1rkMtr :
      imagen

  4. TIB -> TEB -> PEB -> Resolver Nt API y hashing de API

    • https://stackoverflow.com/questions/41277888/iterating-over-peb-dllname-shows-only-exe-name

    • https://doxygen.reactos.org/d7/d55/ldrapi_8c_source.html#l01124

    • labs.cognisys.group, un blog de

root@kitploit:~

#include <stdint.h>
#include <stdio.h>
#include <Windows.h>

DWORD64 djb2(const char* str)
{
	DWORD64 dwHash = 0x7734773477347734;
	int c;

	while (c = *str++)
		dwHash = ((dwHash << 0x5) + dwHash) + c;


	return dwHash;
}

int main(int argc, char** argv)
{
	if (argc < 2)
	{
		printf("[!] ¡Incorrecto!\n");
		printf("[->] Sintaxis: .\\%s <NTFuncName>\n\n", argv[0]);
		return 1;
	}

	const char* string = argv[1];

	DWORD64 hashvalue = djb2(string);

	printf("Valor hash: 0x%llX\n", hashvalue);

	return 0;
}

  1. Política de mitigación ACG (Arbitrary Code Guard)/BlockDll:

    • enlaces:
    • Protecting Your Malware por @xpn
    • Wraith por @winterknife
    • spawn y HOLLOW por @0xBoku imagen
  2. Detección de suplantación de PPID:

    • PPID Spoofing Detect por @spotheplanet
    • Si tengo tiempo, agregaré una parte de detección a esta sección! -> [Restante..............................................!]
  3. Detección Moneta y detección PESieve:\

    • Moneta:
      imagen

    • PESieve:
      imagen

  4. Escaneo Capa:
    imagen

  5. Cómo se ve la pila de hilos del proceso implante:

Proceso implanteProceso Cmd legítimo
imagenimagen

Se deduce que al ejecutar la instrucción de retorno en la memoria de ntdll.dll en el POC de syscall indirecto, la dirección de retorno puede ser suplantada con éxito, ntdll.dll puede colocarse en la parte superior de la pila de llamadas y el EDR interpretará una mayor legitimidad. - @VirtualAllocEx de DirectSyscall Vs Indirect Syscall
También gracias a @peterwintrsmith!

  1. Evasión de Instrumentation CallBack: Usé este POC - syscall-detect por winternl_t

imagen

  1. Configuración de EventLogger que usé:

imagen imagen

  1. Configuración de SeDebugPrivilege:
    Desde Aquí: imagen Hasta Aquí: imagen

  2. Matar hilos del registro de eventos:

    • rto-win-evasion por @SEKTOR7net
    • Phant0m por @hlldz
    • Goblin por @winterknife
    • disabling-windows-event-logs-by-suspending-eventlog-service-threads por @spotheplanet
      Desde aquí:
      imagen
      Hasta aquí:
      imagen
    • Este método terminó causando errores en la implementación de syscall indirecto. Así que terminé matando todos esos hilos presentes dentro del svchost.exe responsable (razón: Ir arriba).

Escenario de registro de eventos en Sophos XDR:

  1. Caso 1: Cuando Darkwidow se ejecuta con privilegios normales

imagen

No se generan alertas críticas excepto un registro de baja gravedad.

  1. Caso 2: Cuando Darkwidow se ejecuta con privilegios de administrador

imagen

Un registro de baja gravedad => Inyección APC (como antes)

imagen

Otro registro de gravedad media ocurrió al establecer SeDebugPrivilege.

imagen

DarkWidow V2:

Para evitar esta detección de registro de eventos, agregué el concepto de Synthetic Frame Thread Stack Spoofing.

Así es como se ve la pila después de aplicar la suplantación de pila de hilos con marco sintético.

imagen

Esta es la pila de hilos de la API NT

imagen

Esta es la pila de hilos del shellcode (por cierto, esto no está hecho a medida, es shellcode de Havoc :)).

Para el desarrollo del shellcode, usé havoc y la siguiente configuración:

imagen

NOTA:

La suplantación de la dirección de inicio del hilo recién creado no era realmente necesaria en este proyecto porque dentro de la técnica de inyección APC, APC secuestra la ejecución de un hilo ya existente y legítimo. Gracias a @C5pider!

Imagen de ejecución de demostración:

1708744707672

Video de demostración contra Sophos XDR:

Enlace de video de demostración en Youtube

¿Ahora el estado de los registros de eventos?

imagen

No se generaron registros. También eliminé la parte de eliminación del registrador de eventos de DarkWidow V2, lo que también reduce la generación de eventos.

Mi video de demostración de BlackHat Arsenal se puede encontrar aquí:

Enlace de video de demostración en Youtube

Mi diapositiva de presentación de WildWestHackinFest y el enlace del video se pueden encontrar aquí:

  1. Enlace de Google Slide
  2. https://www.youtube.com/watch?v=xsibDZ6BpyA&t=1295s

Actualizaciones futuras a esto:

  1. Portar esta versión al compilador C++ Clang, lo que nos ayudaría a realizar ofuscación LLVM.
  2. Actualizar a NtCreateUserProcess() para realizar syscall indirecto y suplantación de pila.
  3. Aplicar la capacidad de carga manual de bibliotecas para evitar las devoluciones de llamada del kernel de carga de imágenes.
  4. Aplicar la capacidad de Module Stomping.
  5. Inyección de shellcode cifrado para evitar escaneos de memoria activados por el kernel (Caro-Kann).

Detección de la técnica de suplantación de pila (como se mencionó en uno de mis talleres/charlas):

imagen

Agradecimientos principales por ayudarme (Directa/indirectamente (juego de palabras NO intencionado :))):

  1. @SEKTOR7net
  2. @peterwintrsmith
  3. @Jean_Maes_1994
  4. @D1rkMtr
  5. @spotheplanet
  6. @0xBoku
  7. @Sh0ckFR
  8. @winterknife
  9. @monnappa22
  10. @xpn
  11. @hlldz
  12. @d_tranman
  13. @SoumyadeepBas12
  14. @jack_halon
  15. @KlezVirus
  16. @C5pider

¡Espero no haberme olvidado de alguien!

Este proyecto es parte de mi viaje para aprender sobre el mundo de los EDR! => Learning-EDR-and-EDR_Evasion

Descargar herramienta
@D1rkMtr
  • Una imagen del fragmento del enlace anterior, que usé aquí para resolver API dinámicamente sin offsets codificados:
    imagen

  • El código de hashing de API que apliqué: