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
Darkcloak — Herramienta de ocultación de identidad de procesos de Linux que falsifica comm, argv, cmdline, environ, ruta de exe y VMAs mediante un pipeline prctl de 11 fases para suplantar a otro proceso. | Kitploit
Herramientas/GitHubGitHub/0x574r/darkcloak
Escalada de PrivilegiosMecanismos de PersistenciaEvasión de IDS/IPSHerramientas de SuplantaciónPost-ExplotaciónAnálisis de BinariosPapers e InvestigaciónRed TeamingSuplantación de Huella Digital
GitHub0x574r/darkcloak

Darkcloak

Herramienta de ocultación de identidad de procesos de Linux que falsifica comm, argv, cmdline, environ, ruta de exe y VMAs mediante un pipeline prctl de 11 fases para suplantar a otro proceso.

1123hace 3 mesesAún no revisado

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
Ver Repositorio

DARKCLOAK

NASM Platform Architecture

Ocultación de la identidad de procesos en Linux

DARKCLOAK encadena la manipulación de todas las fuentes de identidad visibles desde el espacio de usuario en un pipeline secuencial de 11 fases que transforma progresivamente un proceso hasta que se vuelve indistinguible del proceso suplantado para las herramientas de monitoreo del espacio de usuario. Hasta donde sabemos, ninguna herramienta publicada combina la manipulación simultánea de todas las fuentes de identidad visibles desde el espacio de usuario.

El análisis técnico completo está disponible en el blog de RAZOR.

Qué se suplanta

  • task_struct->comm: mediante PR_SET_NAME
  • argv[0]: mediante sobrescritura directa de la pila
  • Línea de comandos (/proc/$PID/cmdline): mediante PR_SET_MM_ARG_START/END
  • Entorno (/proc/$PID/environ): mediante PR_SET_MM_ENV_START/END
  • Ruta del ejecutable (/proc/$PID/exe): mediante PR_SET_MM_EXE_FILE
  • VMAs respaldadas por archivo (/proc/$PID/maps): reemplazadas por memoria anónima
  • Visibilidad del namespace del proceso: mediante unshare

Cómo funciona

El pipeline se ejecuta en un orden estricto definido por las dependencias entre los subsistemas del kernel que se manipulan:

  1. Introspección ELF: analiza el vector auxiliar en _start para resolver el PHT y obtener los rangos de direcciones virtuales de los tres segmentos PT_LOAD
  2. Lectura de credenciales: getresuid / getresgid para almacenar los UIDs y GIDs originales para su posterior restauración
  3. Escalada de UID: setresuid(0,0,0) si alguno de los tres UIDs es 0
  4. Escalada de capacidades: copia el conjunto permitido en los conjuntos efectivo y heredable mediante capget/capset
  5. Suplantación de identidad:
    • prctl(PR_SET_NAME) → sobrescribe task_struct->comm
    • escritura directa en la pila en [rsp+8] → sobrescribe argv[0]
    • prctl(PR_SET_DUMPABLE, 0) → bloquea el acceso a y desde procesos sin privilegios

El trampolín mmap

PR_SET_MM_EXE_FILE falla con EBUSY mientras alguna VMA siga respaldada por el binario original. Dado que el segmento .text no se puede desmapear mientras RIP esté dentro de él, la anonimización se ejecuta desde una página anónima temporal:

  1. Asignar una página anónima de 4096 bytes (mmap)
  2. Copiar el código de anonimización (mm_start→mm_end) y los metadatos de los segmentos en ella
  3. Hacer la página ejecutable (mprotect)
  4. Saltar a ella: RIP abandona .text
  5. Para cada uno de los tres segmentos PT_LOAD: mmap una nueva región anónima → memcpy del contenido del segmento → munmap del original → mremap de la copia anónima de vuelta a la dirección original → mprotect para restaurar los permisos originales
  6. Volver a .text ahora anónimo, desmapear la página del trampolín

El binario es un ELF estático sin intérprete, por lo que el diseño de VMA en tiempo de ejecución es totalmente determinista: tres segmentos PT_LOAD, la pila y el vDSO del kernel.

Compilación

root@kitploit:~
nasm -f elf64 darkcloak.asm -o darkcloak.o
ld darkcloak.o -o darkcloak

Configuración

Los objetivos de suplantación se definen en tiempo de compilación en la sección .data. Los valores predeterminados suplantan a sshd:

root@kitploit:~
mimic_name    db 'sshd', 0
mimic_argv    db './sshd', 0
mimic_exe     db '/usr/sbin/sshd', 0
mimic_cmdline db '/usr/sbin/sshd', 0, '-D', 0, '[email protected]', 0, ...
mimic_environ db 'LANG=en_US.UTF-8', 0, 'NOTIFY_SOCKET=/run/systemd/notify', 0, ...

Para suplantar un proceso diferente, actualice estos valores antes de compilar.

Uso

root@kitploit:~
./darkcloak

Requiere CAP_SYS_RESOURCE, CAP_SETUID, CAP_SETGID y CAP_SETPCAP en el conjunto permitido. Si CAP_SYS_RESOURCE no está presente, el bloque de suplantación de MM (anonimización de VMA + intercambio de EXE_FILE) se omite por completo. Si CAP_SETPCAP no está presente, la herramienta recurre a PR_SET_KEEPCAPS en lugar de PR_SET_SECUREBITS.

Verificación

root@kitploit:~
./darkcloak &
PID=$!

cat /proc/$PID/comm
readlink /proc/$PID/exe
cat /proc/$PID/cmdline | tr '\0' ' '
cat /proc/$PID/environ | tr '\0' '\n' | head -3
cat /proc/$PID/maps | head -5
cat /proc/$PID/status | grep -E 'Uid|Gid|Cap'
ps aux | grep $PID

Descargo de responsabilidad

Publicado exclusivamente con fines educativos y de investigación. Úselo solo en sistemas de su propiedad o para los que tenga autorización escrita explícita para realizar pruebas.

Descargar herramienta
/proc/$PID/mem
ptrace(PTRACE_ATTACH)
  • Anonimización de VMA mediante trampolín mmap (ver más abajo) → elimina todas las asignaciones respaldadas por archivo
  • prctl(PR_SET_MM_ARG_START/END) → redirige /proc/$PID/cmdline
  • prctl(PR_SET_MM_ENV_START/END) → redirige /proc/$PID/environ
  • prctl(PR_SET_MM_EXE_FILE) → reemplaza mm_struct->exe_file
  • Retención de capacidades: PR_SET_SECUREBITS (si CAP_SETPCAP) o PR_SET_KEEPCAPS (alternativa) para sobrevivir a la caída de UID
  • Desescalada de UID: setresuid(1000,1000,1000) o restaurar los originales
  • Desescalada de GID: setresgid(1000,1000,1000) o restaurar los originales
  • Desescalada de capacidades: limpia los conjuntos efectivo y heredable
  • Aislamiento de namespace: unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • Espera: nanosleep(120s) y luego exit