
RevSuit é uma plataforma de conexão reversa flexível e poderosa projetada para receber conexão do host alvo em penetração.
Inglês |简体中文
RevSuit é uma plataforma de conexão reversa flexível e poderosa projetada para receber conexões do host alvo durante testes de penetração. Atualmente suporta os protocolos HTTP, DNS, RMI, LDAP, MySQL e FTP.
Flexível:
Poderoso:
Baixe a versão mais recente diretamente ou construa seguindo os passos:
git clone https://github.com/Li4n0/revsuit.git
cd revsuit/frontend && yarn install && yarn build
cd ../ && go build ./cmd/revsuit/revsuit.go
RevSuit irá gerar um arquivo de configuração padrão na primeira execução. Modifique o arquivo de configuração de acordo com suas necessidades e execute novamente. Uma descrição detalhada do arquivo de configuração pode ser encontrada em: Notas de Configuração
Para confirmar a localização do IP, é necessário usar o banco de dados de localização de IP. QQwry é usado como fonte de dados padrão, você também pode modificar a configuração para usar GeoIP. Se o banco de dados selecionado não estiver disponível no diretório atual ou se o banco de dados estiver desatualizado por mais de uma semana, o RevSuit baixará automaticamente o banco de dados mais recente. Se o download falhar, o campo IpArea será sempre nulo.
$ ./revsuit
2021/05/16 22:55:10 [ INFO] Downloading qqwry.dat...
____ _____ _ __
/ __ \___ _ __/ ___/__ __(_) /_
/ /_/ / _ \ | / /\__ \/ / / / / __/
/ _, _/ __/ |/ /___/ / /_/ / / /_
/_/ |_|\___/|___//____/\__,_/_/\__/
vBeta0.1
https://revsuit.pro
2021/05/16 22:55:22 [ INFO] Starting HTTP Server at :80, token:your_token
2021/05/16 22:55:22 [ INFO] Start to listen FTP PASV port at :2020, PasvIP is 10.9.8.7
2021/05/16 22:55:22 [ INFO] Starting FTP Server at :21
2021/05/16 22:55:22 [ INFO] Starting MySQL Server at :3306
2021/05/16 22:55:22 [ INFO] Starting RMI Server at :1099
2021/05/16 22:55:22 [ INFO] Starting DNS Server at :53
Após a execução, você pode visitar o caminho /revsuit/admin/ do Servidor HTTP e inserir o token para acessar o painel de controle.
Tome a criação de regras HTTP como exemplo:
Algumas notas são as seguintes:
name e flagFormat da regra são únicos.FlagFormat usa sintaxe de expressão regular, e para diferentes protocolos, os campos correspondidos pelo flagFormat são diferentes; você pode verificar as dicas correspondentes para obter detalhes ao criar regras.flagFormat, e o resultado do agrupamento correspondente também será usado como uma variável de modelo.Conforme mostrado abaixo, criamos uma regra que usa as variáveis de modelo embutidas e variáveis de modelo personalizadas do protocolo http, e a nomeamos test_create_rule:

Em seguida, faça uma solicitação que satisfaça a regra e visualize a resposta.

A solicitação será registrada na plataforma ao mesmo tempo.

Se você deseja ser notificado sobre novas conexões em seu software de escritório, pode configurar o endereço do webhook do software relevante no arquivo de configuração e ativar a chave Notice para a regra correspondente. Atualmente, suporta apenas quatro tipos de software: dingtalk,wechat,lark,slack. (Suporte para Discord e telegram está planejado.)
Se você está migrando plataformas ou limpando dados, pode ser um incômodo recriar regras. É por isso que a plataforma suporta importação e exportação de regras.
O ponto de entrada para esta função está localizado em Settings>RULES.
As regras são armazenadas em formato yaml para importação e exportação, como a seguir:
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: Hello Revsuit!
dns:
... ...
RevSuit foi separado do meu projeto de scanner, portanto seu suporte nativo funciona com scanners.
Da perspectiva do RevSuit, chamamos um scanner de cliente.
RevSuit usa Eventos enviados pelo servidor HTTP (SSE) para estabelecer um canal de comunicação unidirecional com o cliente.
A API para o canal é: /revsuit/api/events?message. O cliente primeiro precisa adicionar o cabeçalho Token: your token ao Header, e então acessar a API para estabelecer o canal. Quando a plataforma recebe uma nova conexão, o flag capturado pela regra será passado ao cliente através deste canal.

Aqui está uma demo simples usando a biblioteca sse do Golang como exemplo.
Conforme mostrado acima, o RevSuit suporta vários clientes, e cada cliente no estado conectado recebe um push de flag, portanto a varredura distribuída pode ser suportada.
Se você não quer que todos os clientes recebam todos os pushes de flag, pode usar o cabeçalho de solicitação Flag-Filter ao criar uma conexão sse para definir o formato (expressões regulares) do flag que você deseja que aquele cliente receba:

RevSuit armazenará flag temporariamente na fila quando não houver conexão de cliente e o enviará quando o cliente conectar, para que você não precise se preocupar em perder a vulnerabilidade devido à desconexão do cliente. (Isso é especialmente útil para descobrir vulnerabilidades acionadas por atraso.)