Instalación

Introducción

En esta entrada se cubrirá la instalación desde diferentes enfoques:

  • Instalación de binarios.

  • Compilar el codigo por uno mismo.

Como se mencionó en el post anterior Sliver C2 cuenta con una arquitectura de cliente servidor, donde múltiples clientes son llamados "operadores" o "players" conectado al mismo servidor para colaborar en diversas actividades . En consecuencia, se tiene que que configurar el servidor y, a continuación, distribuir la aplicación cliente junto con las credenciales a todos los operadores. Para facilitar las cosas, utilizaré una sola máquina virtual Kali. Ejecutar el servidor Sliver como root y cada jugador puede ser configurado como un usuario dedicado del sistema Linux.

Recomiendo instalar Sliver dentro de una máquina virtual (VM). Esto facilitará la posterior adición de otras máquinas a la configuración, como una segunda VM que sirva de objetivo para los ataques. Todas tus máquinas virtuales pueden funcionar dentro de una red virtual para simular varios entornos.

Preparación

Antes de instalar sliver, si se quiere que la herramienta realice compilaciones cross-compile de ejecutables y DLLs se requieren los siguientes paquetes:

apt-get install -y build-essential mingw-w64 binutils-mingw-w64 g++-mingw-w64

Instalación desde script

Sliver provee un script de instalación el cual hace que la instalación y configuración no tome mucho tiempo, solamente ejecute el siguiente comando:

curl https://sliver.sh/install | sudo bash

Sin embargo, es entendible no querer ejecutar código de 3ros con máximos privilegios, en lo personal por mas que se confié en los creadores, es recomendable hacer la instalación manual.

Instalación de binarios release

La descarga de los binarios compilados se realiza desde su repositorio github en la sección de releases. Existen dos binarios, sliver-client y sliver-server, seleccione la arquitectura deseada para su descarga, o ejecute el siguiente comando para visualizar la versión mas resiente para su sistema:

curl -s https://api.github.com/repos/BishopFox/sliver/releases/latest \
    | jq -r '.assets | .[] | .browser_download_url' \
    | grep -E '(sliver-server_linux|sliver-client_linux)$'

Esto generará un output como el siguiente (tenga en cuenta que las versiones pueden ser diferentes a las de este blog):

https://github.com/BishopFox/sliver/releases/download/v1.5.41/sliver-client_linux
https://github.com/BishopFox/sliver/releases/download/v1.5.41/sliver-server_linux

Después, para descargar los binarios, se puede mediante la interfaz web o con los siguientes comandos:

sliver-server
wget -O /usr/local/bin/sliver-server \
https://github.com/BishopFox/sliver/releases/download/v1.5.41/sliver-server_linux && \
chmod 755 /usr/local/bin/sliver-server
sliver-client
wget -O /usr/local/bin/sliver \
https://github.com/BishopFox/sliver/releases/download/v1.5.41/sliver-client_linux && \
chmod 755 /usr/local/bin/sliver

Estos comandos asumen que se tiene la ubicación /usr/local/bin/ en el path. A continuación se tiene que ejecutar el siguiente comando con el servidor para extraer todos los assets necesarios, este comando creará una carpeta con archivo en el archivo ~/.sliver y lo más importante es que generará una versión personalizada de go dedicada a Sliver en la carpeta ~/.sliver/go.

sliver-server unpack --force

Finalmente, recomiendo la creación de un servicio en systemd para sliver server.

sudo touch /etc/systemd/system/sliver.service && sudo chmod 600 /etc/systemd/system/sliver.service
/etc/systemd/system/sliver.service
[Unit]
Description=Sliver
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=on-failure
RestartSec=3
User=root
ExecStart=/usr/local/bin/sliver-server daemon

[Install]
WantedBy=multi-user.target

Este archivo permite iniciar el servicio systemctl start sliver el cual inicia sliver-server en modo demonio con escucha en el puerto 31337 para la conexión a los operadores.

┌──(root㉿kali)-[~]
└─# netstat -antop | grep 31337
tcp6    0   0 :::31337    :::*    LISTEN    4706/sliver-server   off (0.00/0/0)

Creación Operadores

Los operadores se autentican en el servidor mediante TLS mutuo (mTLS). Los certificados de cliente pueden ser emitidos por el servidor utilizando el comando operador. A continuación, se creará un nuevo operador llamado hacker1, que se conecta al servidor directamente desde localhost:

sudo sliver-server operator --name kali --lhost localhost --save /tmp

Esto creará un archivo de configuración json con los certificados necesarios para la conexión:

┌──(root㉿kali)-[~]
└─# cat /tmp/kali_localhost.cfg  | jq
{
  "operator": "kali",
  "token": "4700ca860f06ed4e47ad50fc5a58ff22280272ccac437614667520ee31142c28",
  "lhost": "localhost",
  "lport": 31337,
  "ca_certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n",
  "private_key": "-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----\n",
  "certificate": "-----BEGIN CERTIFICATE-----\n...-----END CERTIFICATE-----\n"
}

Este archivo debe esta en la carpeta ~/.sliver-client/configs:

mkdir -p /home/kali/.sliver-client/configs && mv /tmp/kali_localhost.cfg /home/kali/.sliver-client/configs/ && chown -R kali:kali /home/kali/.sliver-client/ && chmod 600 /home/kali/.sliver-client/configs/kali_localhost.cfg

Si todo se configuró correctamente solo se tiene que ejecutar el comando sliver o sliver-client y se tendrá una shell como esta:

┌──(kali㉿kali)-[~]
└─$ sliver
Connecting to localhost:31337 ...

    ███████╗██╗     ██╗██╗   ██╗███████╗██████╗
    ██╔════╝██║     ██║██║   ██║██╔════╝██╔══██╗
    ███████╗██║     ██║██║   ██║█████╗  ██████╔╝
    ╚════██║██║     ██║╚██╗ ██╔╝██╔══╝  ██╔══██╗
    ███████║███████╗██║ ╚████╔╝ ███████╗██║  ██║
    ╚══════╝╚══════╝╚═╝  ╚═══╝  ╚══════╝╚═╝  ╚═╝

All hackers gain indestructible
[*] Server v1.5.41 - kali
[*] Welcome to the sliver shell, please type 'help' for options

[server] sliver > version

[*] Client 1.5.41 - kali - linux/amd64
    Compiled at 2023-08-29 04:38:25 -0600 CST
    Compiled with go version go1.21.0 linux/amd64


[*] Server v1.5.41 - kali - linux/amd64
    Compiled at 2023-08-29 04:38:25 -0600 CST

Compilar el código fuente

Compilar sliver desde el código fuente es fácil. Sólo tienes que seguir los pasos descritos en su wiki.

Para compilar desde el código fuente, necesitas tener Go instalado. Instale los paquetes con apt-get install -y golang. A continuación, obtener el código fuente de GitHub. Clone el repositorio en cualquier lugar de tu máquina con:

git clone https://github.com/BishopFox/sliver && cd sliver 

Ahora, se tiene que ejecutar el script go-assets.sh para descargar todas las utilidades que ocupa sliver, como es el ofuscador de binarios de golang garble.

sudo bash ./go-assets.sh

Finalmente, se ejecuta el comando make, el cual empezará a compilar los binarios y los dejará en la carpeta raíz de proyecto de git, antes de compilar se puede realiza modificaciones al código fuente. Tome en cuenta que puede compilar los binarios para diferentes plataformas (Windows, Linux, Max).

┌──(root㉿kali)-[~/github/sliver]
└─# make        
...

┌──(root㉿kali)-[~/github/sliver]
└─# file sliver-server 
sliver-server: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=3c42b0bbc6d3077929e87f3c1c170d680eb6f8b2, for GNU/Linux 3.2.0, stripped
                                                                                                                                                                                                                    
┌──(root㉿kali)-[~/github/sliver]
└─# file sliver-client 
sliver-client: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7add139c2d119c72b533778f08897ed575b3f15e, for GNU/Linux 3.2.0, stripped

Asegúrese de seguir después de la compilación los pasos descrito en Instalación de binarios descrito previamente en este blog.

Última actualización