
RevSuit es una plataforma de conexión inversa flexible y potente diseñada para recibir conexiones desde el host objetivo en penetración.
English |简体中文
RevSuit es una plataforma de conexión inversa flexible y poderosa diseñada para recibir conexiones desde el host objetivo en pruebas de penetración. Actualmente es compatible con los protocolos HTTP, DNS, RMI, LDAP, MySQL y FTP.
Flexible:
Poderoso:
Descargue la última versión directamente o construya siguiendo estos pasos:
git clone https://github.com/Li4n0/revsuit.git
cd revsuit/frontend && yarn install && yarn build
cd ../ && go build ./cmd/revsuit/revsuit.go
RevSuit generará un archivo de configuración predeterminado en la primera ejecución. Modifique el archivo de configuración según sus necesidades y luego vuelva a ejecutar. Una descripción detallada del archivo de configuración se encuentra en: Notas de configuración
Para confirmar la ubicación IP, es necesario usar la base de datos de ubicación IP. QQwry se utiliza como fuente de datos por defecto, también puede modificar la configuración para usar GeoIP. Si la base de datos seleccionada no está disponible en el directorio actual o si la base de datos se actualiza durante más de una semana, RevSuit descargará automáticamente la base de datos más reciente. Si la descarga falla, el campo IpArea siempre será nulo.
$ ./revsuit
2021/05/16 22:55:10 [ INFO] Descargando qqwry.dat...
____ _____ _ __
/ __ \___ _ __/ ___/__ __(_) /_
/ /_/ / _ \ | / /\__ \/ / / / / __/
/ _, _/ __/ |/ /___/ / /_/ / / /_
/_/ |_|\___/|___//____/\__,_/_/\__/
vBeta0.1
https://revsuit.pro
2021/05/16 22:55:22 [ INFO] Iniciando servidor HTTP en :80, token:your_token
2021/05/16 22:55:22 [ INFO] Iniciando escucha en puerto FTP PASV en :2020, PasvIP es 10.9.8.7
2021/05/16 22:55:22 [ INFO] Iniciando servidor FTP en :21
2021/05/16 22:55:22 [ INFO] Iniciando servidor MySQL en :3306
2021/05/16 22:55:22 [ INFO] Iniciando servidor RMI en :1099
2021/05/16 22:55:22 [ INFO] Iniciando servidor DNS en :53
Después de ejecutar, puede visitar la ruta /revsuit/admin/ del servidor HTTP e ingresar el token para acceder al panel de control.
Tomemos como ejemplo la creación de reglas HTTP:
Algunas notas son las siguientes:
name y el flagFormat de la regla son únicos.FlagFormat usa sintaxis de expresión regular, y para diferentes protocolos, los campos que coinciden con flagFormat son diferentes; puede consultar las pistas correspondientes para obtener detalles al crear reglas.flagFormat, y el resultado de la agrupación coincidente también se utilizará como variable de plantilla.Como se muestra a continuación, creamos una regla que utiliza variables de plantilla integradas y variables de plantilla personalizadas del protocolo http, y la nombramos test_create_rule:

Luego realice una solicitud que cumpla con la regla y vea la respuesta.

La solicitud se registrará en la plataforma al mismo tiempo.

Si desea recibir notificaciones de nuevas conexiones en su software de oficina, puede configurar la dirección del webhook del software correspondiente en el archivo de configuración y activar el interruptor Notice para la regla correspondiente. Actualmente solo se admite cuatro tipos de software: dingtalk, wechat, lark, slack. (El soporte para Discord y Telegram está en planes.)
Si está migrando plataformas o depurando datos, puede ser una molestia recrear reglas. Por eso la plataforma soporta la importación y exportación de reglas.
El punto de entrada para esta función se encuentra en Configuración>REGLAS.
Las reglas se almacenan en formato yaml para importación y exportación, como el siguiente:
http:
- name: test_create_rule
flag_format: (?P<what>\w+)\?
rank: 0
push_to_client: false
notice: false
response_status_code: "302"
response_headers:
Location: ${query.url}
response_body: ${header.say} ${what}
- name: other_rule
flag_format: other
rank: 1
push_to_client: false
notice: true
response_status_code: "200"
response_headers: { }
response_body: ¡Hola Revsuit!
dns:
... ...
RevSuit fue separado de mi proyecto de escáner, por lo que su soporte nativo funciona con escáneres.
Desde la perspectiva de RevSuit, llamamos cliente al escáner.
RevSuit utiliza Eventos enviados por el servidor HTTP (SSE) para establecer un canal de comunicación unidireccional con el cliente.
La API para el canal es: /revsuit/api/events?message. El cliente primero debe agregar el encabezado Token: your token al encabezado, y luego acceder a la API para establecer el canal. Cuando la plataforma recibe una nueva conexión, el flag capturado por la regla se pasará al cliente a través de este canal.

Aquí hay un demo simple utilizando la biblioteca sse de Golang como ejemplo.
Como se muestra arriba, RevSuit admite múltiples clientes, y cada cliente en estado conectado recibe un push de flag, por lo que se puede soportar escaneo distribuido.
Si no desea que cada cliente reciba todos los push de flag, puede usar el encabezado de solicitud Flag-Filter al crear una conexión sse para establecer el formato (expresiones regulares) del flag que desea que ese cliente reciba:

RevSuit almacenará flag temporalmente en la cola cuando no haya conexión de cliente y lo enviará cuando el cliente se conecte, por lo que no tiene que preocuparse por perder la vulnerabilidad porque el cliente se desconecta. (Esto es especialmente útil para descubrir vulnerabilidades activadas por retardo.)