En la primera parte de estos post se han mencionado las características de Sliver y sus funciones básicas. Se trata de un C2 que puede funcionar sobre HTTP/S, M-TLS y DNS. Como se ha visto en dicho post, una de las cosas que más llaman la atención de Sliver es su generación dinámica de código y mecanismos de ofuscación en tiempo de compilación, lo que hace que en ocasiones la generación de los implantes tarde varios minutos pero puede ayudar a la evasión de AVs. A continuación se explicarán algunas características interesantes que tienen los Slivers que se establecen contra la máquina comprometida y cómo pueden ayudar en un proceso de post-explotación en el entorno de la víctima.
El modo "multiplayer" es útil para trabajar en un engagement con varias personas, de esta manera se pueden compartir los implantes generados en un servidor central o dicho de otra manera, se puede compartir las sesiones que se han obtenido con otros atacantes. Para que esto funcione es necesario crear un nuevo "player" y habilitar el modo "multiplayer" en el servidor, es decir, en la máquina donde se han creado los slivers y se tienen las sesiones establecidas. Los pasos poder habilitar y utilizar el modo mutiplayer son los siguientes.
- En el servidor, se debe ejecutar el comando "new-player" que permitirá generar un fichero de configuración nuevo con todo lo necesario para que un cliente (integrante del equipo) se pueda conectar utilizando TLS.
- En el servidor, ejecutar el comando "multiplayer" para iniciar el servidor. Hay que tener en cuenta que ambos comandos tienen valores por defecto que se pueden cambiar. Es recomendable ver las opciones disponibles tal como se puede ver en la siguiente imagen.
- En el cliente, descargar la última versión de "sliver-client" para establecer la conexión con el servidor utilizando el fichero de configuración generado con el comando "new-player".
Como se puede apreciar, ambos comandos en el servidor son muy sencillos y en el cliente se puede ejecutar el comando "import" para cargar el fichero de configuración generado en el servidor con el comando "new-player". - A continuación se precede a:
- Crear el fichero de configuración con el comando "new-player".
- Habilitar el modo "multiplayer" en el servidor.
- Transferir e importar el fichero de configuración a la máquina donde se ejecuta el cliente de Sliver.
- Utilizar el interprete de Sliver en el cliente para comprobar que efectivamente, se tiene acceso a las sesiones generadas en el servidor.
A partir de este momento, el nuevo player podrá interactuar con las sesiones que se han creado en el servidor, la máquina comprometida se puede compartir con otros integrantes del equipo.
Otra de las características que ofrece el C2 es la de pivotar en los diferentes Slivers que se van desplegando en los sistemas comprometidos. Lo primero que se debe hacer es levantar un "pivote" en un puerto arbitrario, para ello desde la sesión se utiliza el comando "tcp-pivot". Con dicho comando se abrirá en la máquina comprometida el puerto indicado y posteriormente se puede generar un nuevo implante, el cual se conectará a dicho puerto, utilizándolo como pivote. Como se puede apreciar en la siguiente imagen, el puerto abierto en la máquina comprometida es el 8000 y la segunda sesión generada utiliza como pivote la primera.
Sliver es un proyecto que se encuentra en constante desarrollo, basta simplemente con abrir el repositorio de GitHub para ver la frecuencia con la que se suben cambios. Aunque en un futuro algunas de las características existentes se podrían suprimir por diferentes motivos o añadir nuevas, en el momento de redactar estos posts las siguientes funciones están vigentes.
Gestión de implantes.
A diferencia de otros sistemas C2 existentes, la gestión de las muestras, agentes o como se les denomina en Sliver "implantes", se registran directamente en la configuración del servidor una vez se han generado con el comando "generate". Esto permite una gestión centralizada y hace innecesario generar una y otra vez los implantes, cada uno tiene un nombre único que se puede consultar desde en el servidor y también se pueden regenerar.
Stagers en Sliver
Sliver implementa el mecanismo staging de Metasploit Framework por medio de la generación de perfiles con el comando "new-profile". Con el perfil creado se podrá establecer un "stage-listener" para recibir la conexión y generar el stager con el comando "generate". Es importante anotar que en el PATH se debe encontrar la utilidad "msfvenom" de Metasploit Framework y que además, el comando "generate stager" genera un shellcode en diferentes formatos, el cual se puede ejecutar posteriormente en la víctima para obtener una sesión valida en Sliver.
Extensiones en Sliver.
Las extensiones en Sliver representan otra característica interesante que le permite al usuario integrar utilidades externas, de esta manera se podrá tener en el implante (máquina comprometida) herramientas adicionales que ayudarán en la post-explotación. En la wiki del proyecto se expone un ejemplo muy ilustrativo y útil sobre algunos de los programas incluidos en el gran paquete de herramientas GhostPack, el cual es estupendo para post-explotación en Windows y que también se utiliza en los beacons de Shad0w.
Como se puede ver y se explica en la wiki oficial de Sliver, las extensiones están compuestas por un fichero "manifest.json" y el conjunto de scripts, dlls o binarios ejecutables que representan las utilidades externas. En el fichero "manifest.json" simplemente se incluye cada una de estas herramientas con su correspondiente descripción y argumentos, de tal manera que luego cuando se carga en el implante se crean los comandos correspondientes que se pueden lanzar directamente contra la máquina comprometida.
Sin duda Sliver es una herramienta que merece la pena conocer, controlar y si es posible, mejorar aportando al proyecto con código. 🙂
Un saludo y Happy Hack!
Adastra.