O Intruso é o módulo de automação de requisições do CatSuite: ele pega uma request-base, substitui as posições marcadas por cada payload de uma wordlist ou de um gerador, dispara os envios no ritmo que você definir e guarda cada resposta para você recortar e filtrar. É a ferramenta certa para enumeração de valores, teste de parâmetros, fuzzing controlado e verificação de comportamento quando você precisa repetir a mesma request dezenas ou milhares de vezes trocando apenas um trecho. Esta página explica cada conceito, cada opção e como configurar o Intruso passo a passo, sempre contra um alvo autorizado.
O que é o Intruso e para que serve #
O Intruso resolve um problema simples de repetição: em vez de editar e reenviar uma request manualmente no Repetir, você marca onde o valor muda, escolhe quais valores testar e deixa o módulo percorrer a lista inteira. Cada envio vira uma linha no log da intrusão, com status, tamanho e tempo, pronta para comparação.
Casos de uso típicos:
- Enumerar identificadores sequenciais (por exemplo
id=1atéid=500) para checar controle de acesso. - Testar uma lista de nomes de usuário, caminhos ou parâmetros contra um endpoint.
- Variar o valor de um header ou de um campo de formulário e observar mudanças de resposta.
- Medir diferenças de tamanho e tempo entre a resposta normal (a sonda) e cada variação.
O Intruso é um cliente HTTP local: ele monta e envia as requests do próprio aparelho, sem servidores intermediários. O histórico da sessão fica salvo no armazenamento do app, então você pode pausar e retomar sem perder o progresso.
Conceitos essenciais do Intruso #
Antes de configurar, vale entender os termos que aparecem na tela. Cada conceito abaixo tem um reflexo direto em um botão ou painel do módulo.
Marcadores de payload: marcar as posições #
Um marcador de payload indica o ponto exato da request em que cada valor da sua lista vai entrar. No Intruso você não digita o marcador à mão: os botões AUTODETECTAR e MARCAR SELEÇÃO envolvem o trecho escolhido em um par de marcadores e cada posição passa a aparecer como um chip P1, P2, P3… na lista MARCAÇÕES ATUAIS. No editor, o trecho marcado fica destacado entre o par de delimitadores (§valor§).
A detecção automática entende três formatos de campo:
- Query string na URL (
?chave=valor&chave2=valor2). - Formulário
application/x-www-form-urlencodedno corpo (campo=valor). - JSON no corpo (marca os valores de cada par
"chave": valor).
Wordlists e geradores de payload #
Os valores que entram nas posições vêm de uma de duas origens:
- Wordlist — uma lista de linhas, interna ou importada por você. As wordlists internas e as criadas nas configurações do app são listadas no seletor WORDLIST DO INTRUSO. Importação, formato
.txte validação estão detalhados em Wordlists e payloads. - Gerador dinâmico — cria uma sequência numérica na hora, a partir de um intervalo e de afixos. Útil quando você não tem um arquivo, só um intervalo (por exemplo
user-001auser-250).
Modos de distribuição #
Quando há mais de uma posição marcada, o modo de distribuição decide como as listas são combinadas entre as marcas. São quatro modos, cada um com uma estimativa de total diferente, detalhados na tabela Modos de distribuição e combinação, mais abaixo.
Processadores de payload #
Um processador é uma transformação aplicada a cada payload antes do envio. Você monta uma cadeia de passos (codificar em URL, Base64, gerar hash, mudar a caixa, escapar Unicode, adicionar afixos) e os passos são aplicados na ordem em que aparecem. É o mesmo mecanismo do Decodificar, reaproveitado para preparar os valores no momento do ataque.
Sonda e linha de base (baseline) #
Ao iniciar, o Intruso envia primeiro a request sem marcadores — a sonda. A resposta da sonda vira a linha de base contra a qual cada variação é comparada. A partir dela o módulo calcula, para cada resultado:
- Delta de tamanho — a diferença, em bytes, entre a resposta e a sonda.
- Semelhança — um índice de 0 a 100 (por bigramas) entre o corpo da resposta e o da sonda.
- Diferente da sonda — se o corpo é igual ou diferente do da linha de base.
Recorte e filtro de resultados #
Recorte e filtro refinam o que o log mostra, sem reenviar nada. Você pode filtrar por status, tamanho, tempo, buscar por palavras em qualquer parte do resultado e aplicar GREP (manter o que casa com um padrão) ou EXTRAIR (puxar um trecho da resposta via regex).
Ritmo e sessão #
O ritmo combina duas opções: o delay (espera fixa entre tentativas) e as requisições por segundo (teto de taxa). O Intruso respeita o maior intervalo entre os dois. A sessão é persistida em disco, então pausar, sair e voltar mantém request, marcações, payloads e resultados.
A tela do Intruso: páginas, abas e painéis #
O Intruso tem duas páginas: Preparação (onde você monta o ataque) e Fluxo (onde acompanha os resultados). Você alterna entre elas com VER FLUXO e com o botão de voltar da página de fluxo.
Página de preparação #
A preparação é dividida em três abas, no topo: ALVO, REQUEST e PAYLOADS. A aba REQUEST mostra um contador com o número de marcações ativas.
Aba ALVO #
Define o destino e a rede. O campo ALVO PRINCIPAL aceita um host (alvo.exemplo) ou uma URL completa — o Intruso mantém apenas host, protocolo e porta, descartando caminho, query e barras extras. Abaixo ficam o PROTOCOLO (HTTPS/HTTP), a PORTA, o DELAY, as REQUISIÇÕES POR SEGUNDO e o interruptor de tolerância TLS. Os chips do topo resumem a configuração atual (alvo, delay, ritmo e TLS estrito/flexível).
Aba REQUEST #
Contém o editor da request-base e as ações de marcação: AUTODETECTAR, MARCAR SELEÇÃO e LIMPAR. Logo abaixo, MARCAÇÕES ATUAIS lista os chips P1, P2… e um preview com as posições destacadas. Quando a request chega importada do Interceptador ou do Repetir, o Intruso já tenta marcar os campos automaticamente.
Aba PAYLOADS #
Reúne, nesta ordem: os tiles de modo de distribuição; (quando há duas ou mais marcas em modo Alinhadas ou Combinações) os chips de origem por marca; a escolha de ORIGEM DOS PAYLOADS (WORDLIST ou GERADOR DINÂMICO); a configuração da origem escolhida; e os PROCESSADORES.
Página de fluxo (resultados) #
Mostra três contadores — PROCESSADAS, RESPOSTAS e FALHAS — e o LOG DA INTRUSÃO. Cada resultado é um cartão com # da execução, status, tamanho, tempo, o payload e um trecho da resposta. O botão FILTROS abre o recorte; LIMPAR zera os filtros ativos. Toque e segure um resultado para abrir o menu de cópia e envio.
Opções do Intruso e como configurar #
A tabela abaixo reúne as opções de alvo, rede e ritmo da aba ALVO.
| Opção | Valores | Padrão | O que faz |
|---|---|---|---|
| Protocolo | HTTPS, HTTP | HTTPS | Define o esquema do envio e sugere a porta (443 ou 80) |
| Porta | 1 a 65535 | 443 (HTTPS) / 80 (HTTP) | Porta de destino; some do header Host quando é a padrão do protocolo |
| Alvo principal | host ou URL | vazio | Destino do ataque; mantém só host, protocolo e porta |
| Delay | 0, 50, 100, 250, 500, 750, 1000 ms | 0 (sem delay) | Espera fixa antes de iniciar a próxima tentativa (aceita 0 a 60000) |
| Requisições por segundo | 0, 1, 2, 3, 5, 10, 20 | 0 (livre) | Teto de taxa; 0 não limita e respeita só o delay (aceita 0 a 1000) |
| Ignorar erros de certificado | Ligado, Desligado | Desligado (TLS estrito) | Aceita certificados TLS inválidos ou autoassinados |
Para configurar o alvo, cole o host ou a URL no campo ALVO PRINCIPAL; se colar uma URL com protocolo e porta, o Intruso ajusta os botões e o campo automaticamente. Escolha HTTPS ou HTTP — ao trocar, a porta padrão (443/80) é preenchida quando o campo está vazio ou contém a porta padrão do outro protocolo. Deixe Ignorar erros de certificado desligado em alvos públicos; ligue apenas em ambientes de teste com certificado próprio.
Para ajustar o ritmo, pense em duas travas somadas. O delay garante uma pausa mínima após cada envio; use valores maiores (250 a 1000 ms) em alvos sensíveis. As requisições por segundo limitam o pico: com 5 REQ/S, o Intruso espaça os envios para no máximo cinco por segundo. Com 0 (livre), não há teto de taxa e o único freio é o delay mais o tempo natural de resposta.
Origem dos payloads: wordlist e gerador dinâmico #
Na aba PAYLOADS, escolha WORDLIST para usar uma lista pronta ou GERADOR DINÂMICO para criar uma sequência. Com WORDLIST selecionada, toque em WORDLIST para abrir o seletor WORDLIST DO INTRUSO: as listas internas aparecem primeiro e as suas, criadas nas configurações, logo abaixo. O seletor atualiza as listas sempre que é aberto.
O gerador dinâmico monta números por um intervalo. Os campos são:
| Campo | Valores | Padrão | O que faz |
|---|---|---|---|
| Início | inteiro | 1 | Primeiro número da sequência |
| Fim | inteiro maior ou igual ao início | 25 | Último número (inclusive) |
| Passo | inteiro maior que 0 | 1 | Incremento entre um número e o próximo |
| Padding | inteiro | 0 | Completa com zeros à esquerda até esse tamanho (0 desliga) |
| Prefixo | texto | vazio | Texto fixo antes do número |
| Sufixo | texto | vazio | Texto fixo depois do número |
A linha Estimativa atual mostra quantos payloads a configuração vai gerar. O total é ((fim - início) / passo) + 1. Com Início 1, Fim 5, Passo 1 e Padding 3, a sequência é 001, 002, 003, 004, 005; com Prefixo user-, vira user-001… user-005.
Modos de distribuição e combinação #
Com duas ou mais posições marcadas, o modo decide como as listas se cruzam. O total estimado aparece no tile de Combinações.
| Modo | O que faz | Total estimado |
|---|---|---|
| Por marca | Uma lista, uma marca por vez (as demais ficam no valor original) | Soma dos tamanhos |
| Todas as marcas | O mesmo item em todas as marcas ao mesmo tempo | Tamanho da primeira lista |
| Alinhadas | Uma lista por marca, pelo mesmo índice | Menor tamanho entre as listas |
| Combinações | Produto cartesiano de todas as listas | Produto dos tamanhos |
Todas as marcas é o padrão. Combinações tem um teto de 10.000 combinações; acima disso o ataque é bloqueado para evitar execuções enormes. Nos modos Alinhadas e Combinações com duas ou mais marcas, aparecem os chips de origem por marca, que permitem usar uma lista diferente em cada posição; sem override, cada marca usa a origem global.
Processadores de payload e a cadeia de transformação #
Na seção PROCESSADORES, toque no botão de adicionar e escolha um passo. Cada chip pode ser reordenado (subir/descer) ou removido; a cadeia é aplicada na ordem.
| Processador | Opções | O que faz |
|---|---|---|
| URL | — | Codifica o payload em percent-encoding |
| BASE64 | — | Codifica o payload em Base64 |
| JSON | — | Escapa o payload como string JSON |
| HASH | MD5, SHA-1, SHA-256, SHA-512 | Substitui o payload pelo seu hash |
| AFIXOS | prefixo, sufixo | Adiciona texto antes e/ou depois do payload |
| CAIXA | MAIÚSCULAS, MINÚSCULAS, INVERTER | Muda a caixa das letras |
| UNICODE | — | Escapa caracteres fora de ASCII como \uXXXX |
Botões e ações #
| Botão | Onde | O que faz |
|---|---|---|
| AUTODETECTAR | Aba REQUEST | Detecta e marca campos de query, formulário e JSON |
| MARCAR SELEÇÃO | Aba REQUEST | Marca como posição o trecho selecionado no editor |
| LIMPAR | Aba REQUEST | Remove todas as marcações da request |
| WORDLIST / GERADOR DINÂMICO | Aba PAYLOADS | Alterna a origem dos payloads |
| WORDLIST (seletor) | Aba PAYLOADS | Abre a lista de wordlists internas e do usuário |
| Adicionar processador | Aba PAYLOADS | Acrescenta um passo de transformação à cadeia |
| VER FLUXO | Preparação | Abre a página de resultados |
| INICIAR INTRUSÃO | Preparação | Envia a sonda e dispara o ataque |
| PAUSAR / RETOMAR | Durante a execução | Pausa e retoma sem perder o progresso |
| PARAR INTRUSÃO | Durante a execução | Encerra a sessão em andamento |
| FILTROS | Fluxo | Abre o painel de recorte e filtro |
| LIMPAR (filtros) | Fluxo | Remove todos os filtros ativos |
| Toque longo no resultado | Fluxo | Abre o menu de cópia e de envio ao Repetir |
O menu do resultado (toque longo) oferece: Enviar para o Repetir, Copiar URL, Copiar request, Copiar headers, Copiar body, Copiar response, Copiar payload e Copiar cURL.
Passo a passo #
1. Enviar uma request e marcar automaticamente #
- No Interceptador ou no Repetir, use Enviar para o Intruso.
- O Intruso abre com a request já colada e tenta marcar os campos. Confira os chips
P1,P2… em MARCAÇÕES ATUAIS. - Se algo ficou de fora, selecione o trecho no editor e toque em MARCAR SELEÇÃO. Para recomeçar, toque em LIMPAR e depois AUTODETECTAR.
2. Ataque com wordlist em uma posição #
- Na aba ALVO, confirme host, protocolo e porta.
- Na aba REQUEST, marque a posição (uma só marca).
- Na aba PAYLOADS, mantenha WORDLIST, toque no seletor e escolha a lista.
- Ajuste o ritmo na aba ALVO (por exemplo
DELAY 250 MSe5 REQ/S). - Toque em INICIAR INTRUSÃO e acompanhe o LOG DA INTRUSÃO na página de fluxo.
3. Gerador dinâmico com processadores #
- Marque a posição que recebe o número (por exemplo
id=no corpo ou na query). - Na aba PAYLOADS, escolha GERADOR DINÂMICO e preencha Início, Fim, Passo e Padding.
- Confira a Estimativa atual.
- Em PROCESSADORES, adicione os passos necessários (por exemplo
AFIXOSe depoisBASE64). - Inicie o ataque.
4. Duas posições com modos Alinhadas ou Combinações #
- Marque duas posições (por exemplo usuário e senha).
- Na aba PAYLOADS, escolha o modo: Alinhadas para testar pares por índice, Combinações para cruzar tudo.
- Use os chips de origem por marca para dar uma lista a cada posição.
- Verifique a estimativa (lembre do teto de 10.000 em Combinações) e inicie.
5. Recortar e filtrar os resultados #
- Na página de fluxo, toque em FILTROS.
- Em RECORTE, ative DIFERENTE para ver só o que mudou em relação à sonda, ou TAMANHO e informe o
|delta| mín.. - Para texto, ative GREP (manter o que casa) ou EXTRAIR (puxar um grupo) e digite a regex.
- Em MÉTODO E STATUS, selecione códigos como
200ou classes como cliente/servidor. - Toque em APLICAR; o botão mostra quantos resultados sobram. Use LIMPAR para voltar à lista completa.
Exemplos #
Request-base antes de marcar, com um campo de ID na query:
GET /api/pedidos?id=1024 HTTP/1.1
Host: alvo.exemplo
Accept: application/jsonDepois do AUTODETECTAR, o valor de id é envolvido pelo par de marcadores (a posição aparece como P1):
GET /api/pedidos?id=§1024§ HTTP/1.1
Host: alvo.exemplo
Accept: application/jsonSequência do gerador dinâmico com Início 1, Fim 5, Passo 1, Padding 3 e Prefixo user-:
user-001
user-002
user-003
user-004
user-005Request efetivamente enviada em uma das execuções, já com o payload no lugar da marca:
GET /api/pedidos?id=1031 HTTP/1.1
Host: alvo.exemplo
Accept: application/jsonProblemas comuns e perguntas frequentes #
O ataque não inicia e volto para a aba PAYLOADS. Não há payloads válidos: escolha uma wordlist com linhas ou verifique o gerador (Fim deve ser maior ou igual ao Início). Linhas em branco são ignoradas.
Digitei o marcador no editor e não funcionou. No Intruso o marcador não é digitado. Selecione o trecho e use MARCAR SELEÇÃO, ou AUTODETECTAR. O token literal $CAT$ pertence ao Descobridor.
O Combinações ficou bloqueado. O produto das listas passou de 10.000. Reduza as listas, troque para Alinhadas ou use Por marca.
Todos os resultados somem ao filtrar. Algum filtro está exigente demais (regex que não casa, delta alto, status restrito). Toque em LIMPAR no painel de filtros e refine aos poucos.
Recebo erros de certificado. Em ambiente de teste com certificado próprio, ligue Ignorar erros de certificado. Em produção, mantenha o TLS estrito e investigue o certificado.
Fechei o app no meio do ataque. A sessão é salva em disco: ao reabrir o Intruso, request, marcações, payloads e resultados voltam, e você pode RETOMAR.
Boas práticas e segurança #
- Prefira o menor volume que responda à sua pergunta; não teste o intervalo inteiro quando uma amostra basta.
- Use delay e teto de requisições por segundo em alvos de terceiros.
- Compare sempre com a sonda: um delta de tamanho ou de status fora do padrão é mais informativo que a lista crua.
- Encaminhe os resultados interessantes para o Repetir e aprofunde um a um.