serpentine es una Windows RAT (Herramienta de administración remota) que te permite interactuar con los clientes utilizando un servidor RESTful C2 multiplataforma.
Funcionalidades
- Puesta en marcha
- Obtener archivos
- Colocar archivos
- Keylogger (solo obtener el archivo
%APPDATA%/svchost/log
) - Shell inverso (Utilizándolo
netcat
como cliente, escucha en un puertonc -l -p 5555
y solicita una conexión de shell inverso a ese puerto) - Proxy inverso (usando
revp
, cargarevp
al cliente y ejecútalo con un shell inverso)
Disección
client
El directorio contiene la porción de Windows de la RAT hecha con C ++ y Boost.
server
contiene la porción del servidor RESTful hecha con Java y Spring.
frontend
puede contener cualquier cantidad de interfaces que consuman la API RESTful, pero actualmente solo tiene un cliente terminal hecho con Go.
Construir
Construye server
con mvn package
y luego ejecuta el JAR con 2 argumentos, primero el puerto de escucha del cliente y el segundo en el que se servirá la API RESTful del puerto. Ejemplo:
java -jar target/serpentine-0.1.0.jar 2222 8080
Compila client
con Visual Studio y también incluye bibliotecas Boost: https://www.boost.org/doc/libs/1_73_0/more/getting_started/windows.html
Construye goserpentine
frontend
con go build
y ejecutar el ejecutable resultante para ver la lista de opciones.
API
/client
GET -> Devuelve la lista de clientes conectados actualmente (clientes que hicieron ping en los últimos 10 segundos)
/client
POST -> Cambia el nombre asociado con un cliente
/file/{client}
POST -> Obtiene un archivo de un cliente
/file/{client}
PUT -> Sube un archivo a un cliente
/shell/{client}
POST -> Hace que un cliente inicie una conexión de shell inversa
serpentine (este enlace se abre en una nueva ventana) por jafarlihi (este enlace se abre en una nueva ventana)
C++/Win32/Boost Windows RAT (Remote Administration Tool) with a multiplatform Java/Spring RESTful C2 server and Go, C++/Qt5 frontends