Injection-BOF proporciona múltiples técnicas de inyección de shellcode en procesos remotos. Desde técnicas clásicas basadas en secciones hasta las avanzadas técnicas PoolParty que abusan del Thread Pool de Windows para evasión de EDR.

Agentes compatibles: Beacon, Gopher, Kharon | Plataforma: Windows


inject-cfg

Configura los parámetros por defecto para las operaciones de inyección. Estos valores se aplican a los demás comandos de inyección cuando no se especifican explícitamente.

inject-cfg

Permite establecer valores predeterminados como el tipo de asignación de memoria, protecciones de página y otras opciones que afectan el comportamiento de la inyección.

Situación de uso: Ejecutar antes de una campaña de inyección para establecer parámetros óptimos según el entorno objetivo. Útil cuando se van a realizar múltiples inyecciones con la misma configuración.


inject-sec

Inyecta shellcode en un proceso remoto usando la técnica basada en secciones de memoria (NtCreateSection/NtMapViewOfSection). Esta técnica crea una sección de memoria compartida entre el proceso del agente y el proceso objetivo.

inject-sec <pid> <shellcode>
ArgumentoRequeridoDescripción
pidSiID del proceso objetivo
shellcodeSiShellcode a inyectar (ruta al archivo o datos inline)

Ejemplos:

# Inyectar shellcode en el proceso con PID 3456
inject-sec 3456 /tmp/beacon_x64.bin

# Inyectar en un proceso de explorer.exe
inject-sec 1892 /tmp/payload.bin

Situaciones de uso:

  • Migrar un agente a otro proceso para persistencia o evasión.
  • Desplegar un agente adicional en un proceso con contexto de seguridad diferente.
  • Técnica más simple y directa cuando no se requiere evasión avanzada de EDR.

Cómo funciona:

  1. Crea una sección de memoria compartida con NtCreateSection.
  2. Mapea la sección en el proceso local con permisos de escritura.
  3. Escribe el shellcode en la sección mapeada localmente.
  4. Mapea la sección en el proceso remoto con permisos de ejecución.
  5. Crea un hilo remoto que ejecuta el shellcode.

inject-poolparty

Inyección avanzada que abusa de los mecanismos internos del Thread Pool de Windows. Ofrece 8 técnicas diferentes, cada una con distintos niveles de evasión y compatibilidad. Estas técnicas son altamente evasivas contra la mayoría de soluciones EDR.

inject-poolparty <pid> <técnica> <shellcode>
ArgumentoRequeridoDescripción
pidSiID del proceso objetivo
técnicaSiNúmero de técnica (1-8)
shellcodeSiShellcode a inyectar

Técnicas disponibles

#NombreMecanismoDescripción
1Worker FactoryTP_WORKInserta un work item en la cola del thread pool del proceso objetivo. La técnica más confiable.
2TimerTP_TIMERAbusa de los timers del thread pool para ejecutar el shellcode cuando el timer se dispara.
3WaitTP_WAITRegistra un callback de espera en el thread pool que ejecuta el shellcode.
4IO CompletionTP_IOUsa puertos de IO completion para disparar la ejecución del shellcode.
5ALPCTP_ALPCAbusa de los puertos ALPC (Advanced Local Procedure Call) del thread pool.
6JobTP_JOBUtiliza objetos de trabajo (Job objects) para disparar la ejecución.
7DirectTP_DIRECTInserción directa en la cola del thread pool. Rápida pero más detectable.
8Timer AlternativoNtAssociateWaitCompletionPacketVariante que usa NtAssociateWaitCompletionPacket para una ejecución más sigilosa.

Ejemplos:

# Inyectar con técnica Worker Factory (más confiable)
inject-poolparty 4520 1 /tmp/beacon.bin

# Inyectar con técnica ALPC (más sigilosa)
inject-poolparty 4520 5 /tmp/beacon.bin

# Inyectar con técnica Timer alternativo
inject-poolparty 3112 8 /tmp/payload.bin

Selección de técnica:

PrioridadTécnicaCuándo usar
Alta1 (Worker Factory)Primera opción, más estable y confiable
Alta5 (ALPC)Cuando se necesita máxima evasión
Media2 (Timer)Alternativa sólida si 1 y 5 fallan
Media8 (Timer Alt)Variante para entornos con EDR avanzado
Baja3-4, 6-7Usar si las técnicas principales son detectadas

Situaciones de uso:

  • Entornos con EDR avanzado donde técnicas tradicionales de inyección son detectadas.
  • Migración de agente a un proceso de larga vida útil (explorer.exe, svchost.exe).
  • Despliegue sigiloso de payloads adicionales.

Nota: Las técnicas PoolParty funcionan mejor con procesos que tienen un thread pool activo. Procesos como explorer.exe, svchost.exe y servicios de Windows son los mejores candidatos.


inject-32to64

Permite inyectar shellcode de 64 bits desde un proceso de 32 bits (transición WoW64). Resuelve el problema común de cuando el agente está ejecutándose en un proceso de 32 bits pero necesita interactuar con procesos nativos de 64 bits.

inject-32to64 <pid> <shellcode>
ArgumentoRequeridoDescripción
pidSiID del proceso de 64 bits objetivo
shellcodeSiShellcode de 64 bits a inyectar

Ejemplos:

# Inyectar un beacon x64 desde un proceso x86
inject-32to64 2340 /tmp/beacon_x64.bin

Situaciones de uso:

  • El agente inicial se ejecutó en un proceso de 32 bits (como una aplicación legacy o un macro de Office x86).
  • Necesitas migrar a un proceso de 64 bits para acceder a APIs y memoria de 64 bits.
  • Operaciones que requieren un contexto de 64 bits (dumping de LSASS, acceso al registro de 64 bits).

Integración con la interfaz gráfica

Injection-BOF se integra con el explorador de procesos de la interfaz gráfica de JustC2. Al hacer clic derecho en un proceso en el Process Browser, se muestra la opción de inyectar directamente, proporcionando una interfaz visual para seleccionar el proceso objetivo sin necesidad de conocer el PID manualmente.


Flujo de trabajo recomendado

  1. Usa findobj module (Process-BOF) para encontrar procesos candidatos.
  2. Configura la inyección con inject-cfg si es necesario.
  3. Para entornos sin EDR o con EDR básico: usa inject-sec.
  4. Para entornos con EDR avanzado: usa inject-poolparty con técnica 1 o 5.
  5. Si estás en un proceso de 32 bits y necesitas inyectar en 64 bits: usa inject-32to64.
  6. Verifica la inyección exitosa con process conn (Process-BOF) para confirmar las conexiones del nuevo agente.