En este blog se han venido publicando posts relacionados con soluciones C2 y por supuesto, no podía faltar Sliver. Es un proyecto que actualmente se encuentra bastante activo y que sigue la misma filosofía de otras soluciones C2 pero como siempre, cada herramienta aporta elementos o características que le hacen ideal en contextos concretos. Conocer estas alternativas es importante ya que nunca se sabe qué cosas se encontrarán en el proceso de una campaña de Red Team o incluso de un pentest en el que el alcance de la auditoría es lo suficientemente amplio como para probar este tipo de herramientas y utilidades. En este orden de ideas, puede ser interesante revisar los siguientes posts antes de continuar leyendo.
Uso de Empire Framework contra sistemas Windows.
RedTeaming: Command and Control con Pupy Parte I
RedTeaming: Command and Control con Pupy Parte II
RedTeaming: Command and Control con Pupy Parte III
Post-explotación con Koadic: COM Command and Control basado en Windows Script Host.
Merlin – Command and Control sobre HTTP/2 y QUIC para Red Team
Entornos C2 sobre sistemas Windows con Shad0w: Evasión de mecanismos de seguridad – Parte 1 de 2.
Entornos C2 sobre sistemas Windows con Shad0w: Evasión de mecanismos de seguridad – Parte 2 de 2.
Entornos C2 sobre sistemas Windows con Shad0w: Uso de Beacons – Parte 1 de 2.
Entornos C2 sobre sistemas Windows con Shad0w: Uso de Beacons – Parte 2 de 2.
Ahora bien, Sliver es una herramienta que permite crear canales de comunicación con un C2 del tipo HTTP/HTTPS o DNS. La ventaja que tiene con respecto a otras soluciones radica en el proceso de compilación y ofuscación única que se realiza sobre cada uno de los payloads generados con la herramienta. Si bien es un proceso que lleva tiempo, los resultados pueden ser muy favorables de cara a la evasión de soluciones de seguridad perimetral, de hecho, se han realizado pruebas sobre Windows 8.1, Windows 10 y Windows Server 2019 debidamente actualizados y ninguno de estos sistemas ha detectado la muestra como maliciosa. Por otro lado, las conexiones que se reciben en un servidor de Sliver se pueden compartir con otros integrantes de una campaña gracias al modo multiplayer de la herramienta, esto viene estupendamente cuando se trabaja en equipo que es precisamente, como se suele trabajar en campañas de Red Team.
El primer paso para utilizar Sliver es levantar el servidor y para ello se puede descargar la última versión disponible desde la sección de RELEASES o compilar desde código fuente. Si se descarga la última versión disponible que ya se encuentra compilada y preparada en el repositorio de GitHub, solamente hace falta descomprimir, darle permisos de ejecución al fichero “sliver-server” y ejecutar. Nuevamente, como en muchas otras herramientas modernas para C2, aparece un interprete de comandos, en donde entre otras cosas, se puede generar un “implante” que no es más que la muestra maliciosa que se enviará a la máquina objetivo.
Lo primero que hay que considerar es que es un proceso que puede tardar varios minutos ya que genera un binario con los símbolos de ofuscación habilitados por defecto, lo que también significa que cada Sliver o implante será único y de hecho, se le asigna un nombre que estará registrado en el C2 (algo que recuerda a las etiquetas que genera Docker cuando se crea un nuevo contenedor). Cuando termina el proceso de compilación el binario se almacenará en la ruta indicada con un nombre asignado por la herramienta a menos que se indique lo contrario con la opción “-n”. Como se puede ver en la imagen anterior, el comando “generate” es el encargado de producir los binarios y cuenta con varias opciones interesantes que se listan con “-h”.
Es un comando muy completo en el que se pueden usar múltiples opciones a la hora de generar el implante, algunas de ellas aplican técnicas de evasión sobre el binario y permiten especificar el tipo de comunicación que tendrá el implante con el correspondiente listener, el cual puede ser HTTP(S)/MTLS o DNS. Como ocurre con cualquier solución del tipo C2 es importante levantar el listener correspondiente para recibir la conexión del implante. En la generación del binario que se ha enseñado en la primera imagen del post, se ha especificado que el listener es del tipo MTLS, por lo tanto se debe levantar este tipo de servicio antes de transferir y ejecutar el implante. Tan simple como ejecutar el comando “mtls” desde el interprete de Sliver.
Una vez hecho esto, se debe ejecutar el implante en el objetivo para recibir una nueva conexión y poder controlar dicho sistema.
A continuación se procede a interactuar con dicha sesión, basta con ejecutar el comando “sessions interact” y seleccionar la sesión concreta. A partir de ese punto, el interprete de Sliver se ubicará en la sesión correspondiente al sistema comprometido y se podrán ejecutar comandos sobre él.
Los comandos disponibles en cada sesión son los habituales. Es decir, instrucciones comunes que permiten enumerar el sistema y subir/descargar ficheros. Son características que tienen prácticamente todas las herramientas del tipo C2.
Pero ademas de estos comandos simples, también permite desplegar un shellcode en el sistema infectado para establecer un mecanismo de persistencia, impersonalizar un usuario autenticado, ejecutar la técnica de Reflective DLL sobre un proceso, usar el sistema como un pivote o incluso inyectar un payload de MSF. Estas son solamente algunas de las operaciones que se pueden llevar a cabo sobre el objetivo gracias a Sliver.
Es una herramienta que en el momento de redactar este post sigue en desarrollo, por lo tanto es posible que algunos comandos no funcionen como se espera o dejen de hacerlo puntualmente en el futuro. Son cosas que pasan. Aún así es un proyecto que suele ser bastante estable y una alternativa a tener en cuenta. En el próximo post se enseñará el modo “multi-player” de esta herramienta.
Un saludo y Happy Hack!
Adastra.