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
whoc — Una imagen de contenedor que exfiltra el entorno de ejecución del contenedor subyacente a un servidor remoto. | Kitploit
Herramientas/GitHubGitHub/twistlock/whoc
Seguridad de ContenedoresExplotaciónExfiltración de DatosSeguridad en la Nube
GitHubtwistlock/whoc

whoc

Una imagen de contenedor que exfiltra el entorno de ejecución del contenedor subyacente a un servidor remoto.

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

whoc

Una imagen de contenedor que extrae el runtime de contenedor subyacente y lo envía a un servidor remoto. ¡Indaga en el runtime de contenedor subyacente de tu plataforma de contenedores CSP favorita!

  • WhoC en Defcon 29 Cloud Village
  • Azurescape - investigación impulsada por whoc, la primera toma de control de contenedores entre cuentas en la nube pública (recompensa de 70.000 $)

¿Cómo funciona?

Como se muestra en runc CVE-2019-5736, los runtimes de contenedores Linux tradicionales se exponen a los contenedores que ejecutan a través de /proc/self/exe. whoc utiliza este enlace para leer el runtime de contenedor que lo está ejecutando.

Modo dinámico

Este es el modo predeterminado de whoc que funciona contra runtimes de contenedor enlazados dinámicamente.

  1. El punto de entrada de la imagen whoc se establece en /proc/self/exe, y el enlazador dinámico (ld.so) de la imagen se reemplaza con upload_runtime.
  2. Una vez que la imagen se ejecuta, el runtime de contenedor se re-ejecuta dentro del contenedor.
  3. Dado que el runtime está enlazado dinámicamente, el kernel carga nuestro falso enlazador dinámico (upload_runtime) en el proceso del runtime y le pasa la ejecución.
  4. upload_runtime lee el binario del runtime a través de /proc/self/exe y lo envía al servidor remoto configurado.

alt text

Modo de espera para exec

Para runtimes de contenedor enlazados estáticamente, whoc viene en otra variante: whoc:waitforexec.

  1. upload_runtime es el punto de entrada de la imagen y se ejecuta como PID 1 del contenedor whoc.
  2. Se espera que el usuario ejecute un exec dentro del contenedor whoc e invoque un archivo que apunte a /proc/self/exe (p. ej., docker exec whoc_ctr /proc/self/exe).
  3. Una vez que ocurre el exec, el runtime de contenedor se re-ejecuta dentro del contenedor.
  4. upload_runtime lee el binario del runtime a través de /proc/$runtime-pid/exe y lo envía al servidor remoto configurado.

alt text

Probar localmente

Necesitarás docker y python3 instalados. Clona el repositorio:

root@kitploit:~
git clone [email protected]:twistlock/whoc.git && cd whoc

Configura un servidor de archivos para recibir el runtime de contenedor extraído:

root@kitploit:~
mkdir -p stash && cd stash
ln -s ../util/fileserver.py fileserver 
./fileserver

Desde otra terminal, ejecuta la imagen whoc en tu entorno de contenedor preferido, por ejemplo Docker:

root@kitploit:~
cd whoc
docker build -f Dockerfile_dynamic -t whoc:latest src  # o ./util/build.sh
docker run --rm -it --net=host whoc:latest 127.0.0.1  # o ./util/run_local.sh

Observa que el servidor de archivos recibió el runtime de contenedor. Si ejecutas whoc bajo Docker estándar, el runtime de contenedor recibido debería ser runc.

--net=host solo se usa en pruebas locales para que el contenedor whoc pueda alcanzar fácilmente el servidor de archivos en el host a través de 127.0.0.1.

Otras plataformas

Por defecto, whoc está compilado para linux/amd64, pero también soporta otras arquitecturas de CPU. El modo de espera para exec se puede compilar como de costumbre. Para compilar whoc en modo dinámico para otras arquitecturas de CPU, debes proporcionar el argumento de compilación PLATFORM_LD_PATH_ARG con la ruta del enlazador dinámico en la arquitectura objetivo.

Hay un script de compilación de ejemplo para arm64 disponible en util/build_arm64.sh.

Ayuda

Ayuda para el binario principal de whoc, upload_runtime:

root@kitploit:~
Usage: upload_runtime [options] <server_ip>

Options:
 -p, --port                 Puerto del servidor remoto, por defecto 8080
 -e, --exec                 Modo de espera para exec para runtimes de contenedor estáticos; espera hasta que ocurra un exec en el contenedor
 -b, --exec-bin             En modo exec, anula el binario predeterminado creado para el exec; por defecto /bin/enter
 -a, --exec-extra-argument  En modo exec, pasa un argumento adicional al runtime para que no salga rápidamente
 -r, --exec-readdir-proc    En modo exec, en lugar de adivinar el pid del runtime (lo que le da a whoc un solo intento de capturar el runtime),
                            encuentra el runtime buscando nuevos procesos en '/proc'
Descargar herramienta