Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
IPSpinner — IPSpinner funciona como um proxy local que redireciona solicitações através de serviços externos. | Kitploit
Ferramentas/GitHubGitHub/synacktiv/ipspinner
Ataques de SenhaProxies Web e InterceptaçãoEvasão de IDS/IPSTestes de PenetraçãoSegurança na NuvemRed Teaming
GitHubsynacktiv/ipspinner

IPSpinner

IPSpinner funciona como um proxy local que redireciona solicitações através de serviços externos.

Ver Repositório
1238há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

🔁 IPSpinner

O IPSpinner é um proxy local que pode ser usado para redirecionar todas as requisições recebidas por meio de diferentes provedores escolhidos. O objetivo é criar um proxy de passagem que rotacione o endereço IP de origem de cada requisição. Por exemplo, executar uma operação de força bruta por meio do IPSpinner ajuda a evitar ser detectado, pois o servidor receberá as requisições de centenas de endereços IP diferentes.

O IPSpinner atualmente suporta AWS (API Gateway), Azure (Cloud Shell) e GitHub (GitHub Actions).

Índice

  1. Como funciona?
    1. Geral
    2. Por provedor e launcher
      1. AWS API Gateway
      2. Azure Cloud Shell
      3. GitHub Actions
    3. Comparação de launchers
  2. Como instalar?
    1. Instalar o Go
    2. Clonar e compilar o IPSpinner
    3. Limpar compilações
  3. Como usar?
    1. Geral
      1. Argumentos da linha de comando
      2. Arquivo de configuração
    2. Por provedor
      1. AWS
      2. Azure
      3. GitHub
  4. Como ...?
    1. Suporte HTTP/2?

I/ Como funciona?

1) Geral

Figura 1: IPSpinner - Diagrama geral Figura 1: IPSpinner - Diagrama geral

O IPSpinner funciona como um proxy local que redireciona requisições por meio de serviços externos. Para isso, o IPSpinner utiliza provedores e launchers.

Um provedor corresponde a um provedor de nuvem ou a um provedor de serviços online (AWS, Azure, GitHub, etc.), que oferece diferentes serviços, chamados launchers, que podem ser usados para retransmitir as requisições do usuário (AWS API Gateway, GitHub Actions, Azure Cloud Shells, etc.).

Assim, para iniciar o IPSpinner, o usuário precisará fornecer credenciais para os provedores que deseja usar e configurações adicionais para os launchers. Vários tipos de launchers podem ser usados ao mesmo tempo; o IPSpinner escolherá aleatoriamente um dos disponíveis para cada requisição.

Além disso, o IPSpinner implementa uma funcionalidade de pré-carregamento. Alguns launchers podem ser pré-carregados para evitar o atraso de reconfiguração caso um novo host seja visto pelo proxy. Para esses launchers, o procedimento de pré-carregamento é recomendado, mas não obrigatório. Para os demais, nenhum pré-carregamento é necessário.

2) Por provedor e launcher

i. AWS API Gateway

Introdução

O IPSpinner pode usar o AWS API Gateway para enviar requisições. Esta implementação é baseada no FireProx, que cria um REST API Gateway para redirecionar requisições recebidas. O FireProx foi, portanto, adaptado para lidar com múltiplos hosts por API Gateway e para implementar novas funcionalidades. Em resumo, quando o IPSpinner recebe uma requisição, ele seleciona ou cria a instância de API Gateway adequada e envia a requisição para ela. Em seguida, coleta a resposta e a devolve ao usuário. Assim, o servidor alvo recebeu a requisição do API Gateway e não diretamente do usuário. Como o API Gateway rotaciona o IP de saída a cada requisição, o IPSpinner usa essa funcionalidade para fazer a rotação do endereço IP.

Figura 2: AWS API Gateway - Diagrama geral Figura 2: AWS API Gateway - Diagrama geral

O gráfico a seguir, elaborado em outubro de 2024, mostra o número de endereços IP exclusivos disponíveis por região da AWS de acordo com o número de requisições enviadas. A maioria das regiões oferece mais de 100 endereços IP, e várias regiões podem ser usadas ao mesmo tempo, permitindo ao usuário fazer passar suas requisições por milhares de endereços em todo o mundo.

Figura 3: AWS API Gateway - Endereços IP disponíveis por região Figura 3: AWS API Gateway - Endereços IP disponíveis por região

Por fim, a Figura 4 mostra, com um nível de cor verde logarítmico, quantos endereços estão disponíveis por país. Isso demonstra que o usuário tem a possibilidade de falsificar seu endereço IP de origem com endereços em qualquer continente.

Figura 4: AWS API Gateway - Endereços IP por país Figura 4: AWS API Gateway - Endereços IP por país

Detalhes relevantes

O IPSpinner implementa uma funcionalidade de rotação que exclui e renova regularmente as instâncias FireProx criadas. Como mostra o gráfico a seguir, rotacionar uma instância FireProx pode fornecer um novo subconjunto de IPs. No entanto, cada região da AWS possui um conjunto limitado de IPs e, portanto, em algum momento, as rotações não fornecerão novos IPs.

Figura 5: AWS API Gateway - Processo de rotação Figura 5: AWS API Gateway - Processo de rotação

Este launcher implementa um procedimento de pré-carregamento. Como dito anteriormente, não é obrigatório, mas pode evitar alguns atrasos de reconfiguração ou erros de sincronização durante os primeiros segundos após ser reconfigurado.

Além disso, os API Gateways definem por padrão um cabeçalho X-Forwarded-For, que não pode ser excluído, mas pode ser sobrescrito. Assim, o usuário pode especificar na configuração do IPSpinner um intervalo de endereços IP a partir do qual um IP aleatório será escolhido para cada requisição (intervalo IPv4 ou IPv6).

ii. Azure Cloud Shell

Introdução

O IPSpinner usa o Azure Cloud Shell para enviar requisições. Um Azure Cloud Shell é um terminal interativo, autenticado e acessível pelo navegador para gerenciar recursos do Azure. O Cloud Shell é executado em um host temporário fornecido por sessão e por usuário.

Assim, o IPSpinner usa vários usuários do Azure para os quais uma sessão do Cloud Shell é preparada. Em seguida, cada requisição será redirecionada para um Cloud Shell inicializado, antes de ser renovada para redefinir seu endereço IP.

Figura 6: Azure Cloud Shell - Diagrama geral Figura 6: Azure Cloud Shell - Diagrama geral

Como mostra o gráfico a seguir, as diferentes regiões disponíveis para implantar sessões do Cloud Shell oferecem cada uma dezenas de endereços IP. O usuário pode configurar várias regiões ao mesmo tempo para aumentar seu pool de IPs.

Figura 7: Azure Cloud Shell - Endereços IP disponíveis por região Figura 7: Azure Cloud Shell - Endereços IP disponíveis por região

No entanto, os endereços IP estão mais concentrados do que no AWS API Gateway. Como ilustra o mapa a seguir, a maioria deles está localizada nos EUA, na Europa e na Índia.

Figura 8: Azure Cloud Shell - Endereços IP por país Figura 8: Azure Cloud Shell - Endereços IP por país

Detalhes relevantes

Devido ao atraso do processo de renovação do Cloud Shell, aconselhamos limitar a taxa de fluxo de requisições. Mais informações na subseção comparação de launchers.

iii. GitHub Actions

Introdução

O IPSpinner também pode aproveitar o GitHub Actions para enviar requisições. Esta implementação é inspirada no git-rotate, mas foi completamente modificada e adaptada para eliminar o servidor de captura (catcher server).

Ele cria um repositório com um modelo de workflow predefinido. Em seguida, para cada requisição, executa o workflow fornecendo as informações da requisição por meio das variáveis de ambiente. Todos os dados são criptografados para evitar que possam ser lidos por um usuário externo. Por fim, o IPSpinner coleta os dados de resposta dos logs do workflow.

Figura 9: GitHub Actions - Diagrama geral Figura 9: GitHub Actions - Diagrama geral

A figura a seguir mostra que o GitHub Actions oferece milhares de endereços IP diferentes.

Figura 10: GitHub Actions - Endereços IP disponíveis por região Figura 10: GitHub Actions - Endereços IP disponíveis por região

No entanto, o mapa a seguir ilustra que o GitHub Actions só oferece endereços IP americanos. Após análise, seus workers parecem estar implantados em uma infraestrutura Azure.

Figura 11: GitHub Actions - Endereços IP por país Figura 11: GitHub Actions - Endereços IP por país

Detalhes relevantes

⚠️ Além disso, "o GitHub leva o abuso e o spam de Actions a sério e tem uma equipe dedicada a rastrear 'usuários spammy'." Portanto, o usuário NÃO DEVE usar este provedor com sua própria conta ou com a conta da empresa para evitar qualquer problema de encerramento de conta.

Devido ao limite por hora da API REST do GitHub, a taxa máxima de fluxo de requisições deve ser limitada para evitar interrupções. Mais informações na subseção comparação de launchers.

3) Comparação de launchers

II/ Como instalar?

1) Instalar o Go

Este projeto foi testado para uma versão do Go >= 1.21, mas pode funcionar com versões anteriores do Go.

Consulte a documentação de instalação do Go

Após a instalação, certifique-se de que o binário Go padrão é o correto:

root@kitploit:~
$ go version
go version go1.21.1 linux/amd64

2) Clonar e compilar o IPSpinner

root@kitploit:~
$ git clone https://github.com/synacktiv/IPSpinner.git
$ cd IPSpinner
$ go mod tidy

$ make build-linux # For Linux AMD64 arch
$ make build-windows # For Windows AMD64 arch

O executável será nomeado por padrão "ipspinner" no Linux ou "ipspinner.exe" no Windows.

3) Limpar compilações

Para limpar as compilações ao final do uso, execute

root@kitploit:~
$ make clean

III/ Como usar?

1) Geral

Para obter ajuda sobre o uso do IPSpinner, você pode executar o comando sem nenhum argumento:

root@kitploit:~
$ ./ipspinner -h
    Help will be displayed

Todas as informações (exceto os redirecionamentos de requisições) são registradas no arquivo ipspinner.log.

Algumas opções comuns estão disponíveis como argumentos, e as demais informações de configuração devem ser fornecidas em um arquivo de configuração INI.

i. Argumentos da linha de comando

O usuário pode especificar alguns argumentos de linha de comando:

Alguns parâmetros globais e dos provedores devem ser especificados em um arquivo de configuração INI. O arquivo de configuração deve ser preparado antes de executar o IPSpinner. Seu conteúdo será explicado nas próximas subseções. Por padrão, o IPSpinner procura um arquivo de configuração chamado config.ini.

Para lidar com requisições https, o IPSpinner precisa de um certificado de Autoridade de Certificação (CA) e uma chave. Se o usuário não fornecer um certificado, o IPSpinner gerará seu próprio certificado autoassinado e chave. O usuário pode solicitar a recuperação do certificado gerado com --export-ca-cert (ex.: para importá-lo no navegador). Caso contrário, o usuário pode fornecer seu próprio certificado e chave CA no arquivo de configuração (consulte as próximas partes).

O usuário pode especificar o host e a porta de escuta com --host e --port.

Por fim, três modos de verbosidade estão disponíveis:

  • --v: exibe os logs de criação
  • --vv: igual a --v e exibe os redirecionamentos de requisições
  • --vvv: igual a --vv e exibe informações detalhadas das requisições

ii. Arquivo de configuração

Em seguida, um modelo para o arquivo de configuração INI está disponível no repositório do projeto.

Na seção proxy, o usuário pode especificar alguns parâmetros:

Todas as outras seções serão descritas no capítulo do provedor correspondente.

É importante notar que um usuário pode habilitar vários provedores e launchers ao mesmo tempo. O IPSpinner escolherá então um launcher aleatório entre todos os disponíveis para cada requisição.

2) Por provedor

i. AWS

Parâmetros de configuração para AWS, na seção aws:


Parâmetros de configuração para os API Gateways, na seção aws:

ii. Azure

Parâmetros de configuração para Azure, na seção azure:


Parâmetros de configuração para o Azure Cloud Shell, na seção azure:

iii. GitHub

Parâmetros de configuração para GitHub, na seção github:

ParâmetroObrigatórioValor padrãoDescrição
username✅Nome de usuário do GitHub
token✅Token do GitHub associado ao nome de usuário fornecido

Parâmetros de configuração para o GitHub Actions, na seção github:

ParâmetroObrigatório
(se ga_enabled=true)
Valor padrãoDescrição
ga_enabled/Ativa o launcher de GitHub Actions

IV/ Como ...?

1) Suporte HTTP/2?

O IPSpinner não suporta o protocolo HTTP/2. Como o proxy encerra a primeira conexão TLS, as vantagens do protocolo são perdidas e ele aparece como uma conexão HTTP/1.1 básica.

Portanto, para evitar problemas de HTTP/2 ao usar o IPSpinner com o Burp Suite, remova o suporte do cliente HTTP/2: Settings > Network > HTTP > HTTP/2 > Desmarque a caixa de seleção HTTP/2.

Baixar ferramenta
AWS API GatewayAzure Cloud ShellGitHub Actions
Endereços IP disponíveis≈ 12,418≈ 276> 6,000
Tempo médio de resposta0.46s13.04s21.42s
Tempo médio de reconfiguraçãoNenhum20sNenhum
Taxa de fluxo teórica máxima4,000 a 16,000 req/h107 req/h/instância de Cloud Shell1,000 req/h
Pode/Precisa ser pré-carregado?✅❌❌
Uso: navegação✅❌❌
Uso: password spraying✅✅✅
ParâmetroObrigatórioValor padrão
--config❌config.ini
--export-ca-cert❌
--host❌
--port❌8080
--v, --vv, --vvv❌
ParâmetroObrigatórioValor padrãoDescrição
preload_hosts_file❌uma lista de URLs/hosts para pré-carregar, para os provedores que podem pré-carregar hosts
whitelist_hosts_file❌uma lista de URLs/hosts que estão na lista de permissões (todos os outros serão bloqueados por padrão)
blacklist_hosts_file❌uma lista de URLs/hosts que estão na lista de bloqueio (ignorada se a lista de permissões estiver definida)
ca_cert_file & ca_cert_key_file❌um certificado CA fornecido pelo usuário (se o usuário quiser substituir o certificado padrão gerado)
user_agents_file❌uma lista de user agents que serão escolhidos aleatoriamente para as requisições
debug_response_headers❌falseadiciona dois cabeçalhos de depuração nas respostas do proxy: X-IPSpinner-Provider e X-IPSpinner-Provider-NbTotalReqSent
wait_for_launcher_available_timeout❌60número de segundos antes de expirar uma requisição se nenhum launcher ficar disponível
ParâmetroObrigatórioValor padrãoDescrição
regions✅Lista de regiões separadas por vírgula, onde os recursos podem ser implantados
profile❌Perfil da CLI AWS a ser usado
access_key✅
(ou profile)
Chave de acesso do usuário AWS
secret_key✅
(ou profile)
Chave secreta do usuário AWS
session_token❌Token de sessão do usuário AWS
ParâmetroObrigatório
(se ag_enabled=true)
Valor padrãoDescrição
ag_enabled/Ativa o launcher de API Gateway
ag_max_instances❌5Máximo de instâncias de API Gateway que podem ser implantadas (máximo geral, não por região)
ag_rotate_nb_requests❌5,000Número de requisições antes de rotacionar um API Gateway
ag_forwarded_for_range❌35.180.0.0/16Intervalo de endereços IP para o cabeçalho X-Forwarded-For (intervalo IPv4 ou IPv6)
ag_instance_title_prefix❌fprPersonalização das informações do API Gateway
ag_instance_deployment_description❌IPSpinner FireProx ProdPersonalização das informações do API Gateway
ag_instance_deployment_stage_description❌IPSpinner FireProx Prod StagePersonalização das informações do API Gateway
ag_instance_deployment_stage_name❌3 palavras aleatórias em inglêsPersonalização das informações do API Gateway
ParâmetroObrigatórioValor padrãoDescrição
admin_email✅
(ou accounts_file)
E-mail do administrador do Azure
admin_password✅
(ou accounts_file)
Senha do administrador do Azure
tenant_id✅ID do locatário
subscription_id✅ID da assinatura
accounts_file❌Uma lista de contas pré-criadas (e-mail e senha, uma informação por linha) que substituem admin_email e admin_password
ParâmetroObrigatório
(se cs_enabled=true)
Valor padrãoDescrição
cs_enabled/Ativa o launcher de Cloud Shell
cs_preferred_locations✅Locais para implantar instâncias do Cloud Shell
cs_nb_instances❌5Número de instâncias do Cloud Shell a implantar