Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
IPSpinner — IPSpinner funziona come un proxy locale che reindirizza le richieste attraverso servizi esterni. | Kitploit
Strumenti/GitHubGitHub/synacktiv/ipspinner
Attacchi alle PasswordProxy Web e IntercettazioneEvasione IDS/IPSPenetration TestingSicurezza CloudRed Teaming
GitHubsynacktiv/ipspinner

IPSpinner

IPSpinner funziona come un proxy locale che reindirizza le richieste attraverso servizi esterni.

Vedi Repository
12381 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🔁 IPSpinner

IPSpinner è un proxy locale che può essere utilizzato per reindirizzare tutte le richieste in entrata attraverso diversi provider scelti. Lo scopo è creare un proxy di passaggio che ruoti l'indirizzo IP sorgente di ogni richiesta. Ad esempio, eseguire un'operazione di brute force tramite IPSpinner aiuta a evitare di essere scoperti, poiché il server riceverà le richieste da centinaia di indirizzi IP diversi.

IPSpinner supporta attualmente AWS (API Gateway), Azure (Cloud Shell) e GitHub (GitHub Actions).

Sommario

  1. Come funziona?
    1. Generale
    2. Per provider e launcher
      1. AWS API Gateway
      2. Azure Cloud Shell
      3. GitHub Actions
    3. Confronto tra launcher
  2. Come installare?
    1. Installare Go
    2. Clonare e compilare IPSpinner
    3. Pulire le build
  3. Come usare?
    1. Generale
      1. Argomenti della riga di comando
      2. File di configurazione
    2. Per provider
      1. AWS
      2. Azure
      3. GitHub
  4. Come ...?
    1. Supporto HTTP/2?

I/ Come funziona?

1) Generale

Figura 1: IPSpinner - Diagramma generale Figura 1: IPSpinner - Diagramma generale

IPSpinner funziona come un proxy locale che reindirizza le richieste attraverso servizi esterni. A tale scopo, IPSpinner sfrutta provider e launcher.

Un provider corrisponde a un cloud provider o a un fornitore di servizi online (AWS, Azure, GitHub, ecc.), che offre diversi servizi, chiamati launcher, utilizzabili per inoltrare le richieste dell'utente (AWS API Gateway, GitHub Actions, Azure Cloud Shells, ecc.).

Pertanto, per avviare IPSpinner, l'utente dovrà fornire le credenziali per i provider che vuole utilizzare e configurazioni aggiuntive per i launcher. È possibile utilizzare più tipi di launcher contemporaneamente: IPSpinner sceglierà casualmente uno di quelli disponibili per ogni richiesta.

Inoltre, IPSpinner implementa una funzionalità di preload. Alcuni launcher possono essere precaricati per evitare il ritardo di riconfigurazione nel caso in cui il proxy veda un nuovo host. Per questi launcher, la procedura di preload è consigliata ma non obbligatoria. Per gli altri, non è necessario alcun preload.

2) Per provider e launcher

i. AWS API Gateway

Introduzione

IPSpinner può sfruttare AWS API Gateway per inviare richieste. Questa implementazione è basata su FireProx, che crea un REST API Gateway per reindirizzare le richieste in entrata. FireProx è stato quindi adattato per gestire più host per API Gateway e per implementare nuove funzionalità. In sintesi, quando IPSpinner riceve una richiesta, seleziona o crea l'istanza API Gateway corretta e invia la richiesta verso la destinazione. Poi raccoglie la risposta e la restituisce all'utente. In questo modo, il server di destinazione riceve la richiesta dall'API Gateway e non direttamente dall'utente. Poiché API Gateway ruota il suo IP in uscita per ogni richiesta, IPSpinner sfrutta questa funzionalità per rendere rotante l'indirizzo IP.

Figura 2: AWS API Gateway - Diagramma generale Figura 2: AWS API Gateway - Diagramma generale

Il grafico seguente, realizzato nell'ottobre 2024, mostra il numero di indirizzi IP univoci disponibili per regione AWS in base al numero di richieste inviate. La maggior parte delle regioni offre più di 100 indirizzi IP e più regioni possono essere utilizzate contemporaneamente, consentendo all'utente di instradare le proprie richieste attraverso migliaia di indirizzi in tutto il mondo.

Figura 3: AWS API Gateway - Indirizzi IP disponibili per regione Figura 3: AWS API Gateway - Indirizzi IP disponibili per regione

Infine, la Figura 4 mostra, con un livello di colore verde logaritmico, quanti indirizzi sono disponibili per paese. Dimostra che l'utente ha la possibilità di falsificare il proprio indirizzo IP sorgente con indirizzi di qualsiasi continente.

Figura 4: AWS API Gateway - Indirizzi IP per paese Figura 4: AWS API Gateway - Indirizzi IP per paese

Dettagli degni di nota

IPSpinner implementa una funzionalità di rotazione che elimina e rinnova regolarmente le istanze FireProx create. Come mostra il grafico seguente, la rotazione di un'istanza FireProx può fornire un nuovo sottoinsieme di IP. Tuttavia, ogni regione AWS ha un set limitato di IP e quindi, a un certo punto, le rotazioni non forniranno nuovi IP.

Figura 5: AWS API Gateway - Processo di rotazione Figura 5: AWS API Gateway - Processo di rotazione

Questo launcher implementa una procedura di preload. Come già detto, non è obbligatoria, ma può prevenire alcuni ritardi di riconfigurazione o errori di sincronizzazione durante i primi secondi dopo la riconfigurazione.

Inoltre, gli API Gateway impostano di default un header X-Forwarded-For, che non può essere eliminato ma può essere sovrascritto. L'utente può quindi specificare nella configurazione di IPSpinner un intervallo di indirizzi IP da cui verrà scelto un IP casuale per ogni richiesta (intervallo IPv4 o IPv6).

ii. Azure Cloud Shell

Introduzione

IPSpinner sfrutta Azure Cloud Shell per inviare richieste. Azure Cloud Shell è un terminale interattivo, autenticato e accessibile dal browser per la gestione delle risorse Azure. Cloud Shell viene eseguito su un host temporaneo fornito su base per-sessione e per-utente.

IPSpinner utilizza quindi diversi utenti Azure per i quali viene preparata una sessione Cloud Shell. Ogni richiesta verrà poi reindirizzata a una Cloud Shell inizializzata, prima di essere rinnovata per reimpostare il proprio indirizzo IP.

Figura 6: Azure Cloud Shell - Diagramma generale Figura 6: Azure Cloud Shell - Diagramma generale

Come mostra il grafico seguente, le diverse regioni disponibili per la distribuzione delle sessioni Cloud Shell offrono ciascuna decine di indirizzi IP. L'utente può configurare più regioni contemporaneamente per aumentare il proprio pool di IP.

Figura 7: Azure Cloud Shell - Indirizzi IP disponibili per regione Figura 7: Azure Cloud Shell - Indirizzi IP disponibili per regione

Tuttavia, gli indirizzi IP sono più concentrati rispetto ad AWS API Gateway. Come illustra la mappa seguente, la maggior parte di essi si trova negli Stati Uniti, in Europa e in India.

Figura 8: Azure Cloud Shell - Indirizzi IP per paese Figura 8: Azure Cloud Shell - Indirizzi IP per paese

Dettagli degni di nota

A causa del ritardo del processo di rinnovo di Cloud Shell, consigliamo di limitare la velocità di flusso delle richieste. Ulteriori informazioni nella sottosezione confronto tra launcher.

iii. GitHub Actions

Introduzione

IPSpinner può anche sfruttare GitHub Actions per inviare richieste. Questa implementazione si ispira a git-rotate ma è stata completamente modificata e adattata per eliminare il server catcher.

Crea un repository con un modello di workflow predefinito. Poi, per ogni richiesta, esegue il workflow fornendo le informazioni sulla richiesta tramite le variabili d'ambiente. Tutti i dati vengono crittografati per evitare che siano leggibili da un utente esterno. IPSpinner infine raccoglie i dati di risposta dai log del workflow.

Figura 9: GitHub Actions - Diagramma generale Figura 9: GitHub Actions - Diagramma generale

La figura seguente mostra che GitHub Actions offre migliaia di indirizzi IP diversi.

Figura 10: GitHub Actions - Indirizzi IP disponibili per regione Figura 10: GitHub Actions - Indirizzi IP disponibili per regione

Tuttavia, la mappa seguente illustra che GitHub Actions offre solo indirizzi IP americani. Dopo l'analisi, i loro worker sembrano essere distribuiti su un'infrastruttura Azure.

Figura 11: GitHub Actions - Indirizzi IP per paese Figura 11: GitHub Actions - Indirizzi IP per paese

Dettagli degni di nota

⚠️ Inoltre, "GitHub prende seriamente gli abusi e lo spam delle Actions e dispone di un team dedicato al monitoraggio degli 'utenti spam'." Pertanto, l'utente NON DEVE utilizzare questo provider con il proprio account o con l'account aziendale per evitare qualsiasi problema di chiusura dell'account.

A causa del limite orario dell'API REST di GitHub, la velocità massima di flusso delle richieste deve essere limitata per evitare interruzioni. Ulteriori informazioni nella sottosezione confronto tra launcher.

3) Confronto tra launcher

II/ Come installare?

1) Installare Go

Questo progetto è stato testato con una versione di Go >= 1.21, ma potrebbe funzionare anche con versioni inferiori.

Vedi documentazione sull'installazione di Go

Dopo l'installazione, assicurati che il binario go predefinito sia quello corretto:

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

2) Clonare e compilare 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

L'eseguibile sarà chiamato per impostazione predefinita "ipspinner" su Linux o "ipspinner.exe" su Windows.

3) Pulire le build

Al termine dell'utilizzo, puoi pulire le build eseguendo

root@kitploit:~
$ make clean

III/ Come usare?

1) Generale

Per ottenere aiuto sull'utilizzo di IPSpinner, puoi eseguire il comando senza alcun argomento:

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

Tutte le informazioni (escluse le richieste di reindirizzamento) vengono registrate nel file ipspinner.log.

Alcune opzioni comuni sono disponibili come argomenti, mentre le altre informazioni di configurazione devono essere fornite in un file di configurazione INI.

i. Argomenti della riga di comando

L'utente può specificare alcuni argomenti della riga di comando:

Alcuni parametri globali e dei provider devono essere specificati in un file di configurazione INI. Il file di configurazione deve essere preparato prima di eseguire IPSpinner. Il suo contenuto verrà spiegato nelle prossime sottosezioni. Per impostazione predefinita, IPSpinner cerca un file di configurazione denominato config.ini.

Per gestire le richieste https, IPSpinner necessita di un certificato di Certificate Authority (CA) e di una chiave. Se l'utente non fornisce un certificato, IPSpinner genererà il proprio certificato e la propria chiave autofirmati. L'utente può richiedere il recupero del certificato generato con --export-ca-cert (ad es. per importarlo nel browser). In alternativa, l'utente può fornire il proprio certificato CA e la propria chiave nel file di configurazione (vedere le parti successive).

L'utente può specificare l'host e la porta di ascolto con --host e --port.

Infine, sono disponibili tre modalità verbose:

  • --v: stampa i log di creazione
  • --vv: come --v e stampa i reindirizzamenti delle richieste
  • --vvv: come --vv e stampa le informazioni dettagliate delle richieste

ii. File di configurazione

Un modello per il file di configurazione INI è disponibile nel repository del progetto.

Nella sezione proxy, l'utente può specificare alcuni parametri:

Tutte le altre sezioni saranno descritte nel capitolo relativo al provider corrispondente.

È importante notare che un utente può abilitare più provider e launcher contemporaneamente. IPSpinner sceglierà quindi un launcher casuale tra tutti quelli disponibili per ogni richiesta.

2) Per provider

i. AWS

Parametri di configurazione per AWS, nella sezione aws:


Parametri di configurazione per gli API Gateway, nella sezione aws:

ii. Azure

Parametri di configurazione per Azure, nella sezione azure:


Parametri di configurazione per Azure Cloud Shell, nella sezione azure:

iii. GitHub

Parametri di configurazione per GitHub, nella sezione github:

ParametroObbligatorioValore predefinitoDescrizione
username✅Nome utente GitHub
token✅Token GitHub associato al nome utente fornito

Parametri di configurazione per GitHub Actions, nella sezione github:

ParametroObbligatorio
(se ga_enabled=true)
Valore predefinitoDescrizione
ga_enabled/Abilita il launcher GitHub Actions

IV/ Come ...?

1) Supporto HTTP/2?

IPSpinner non supporta il protocollo HTTP/2. Poiché il proxy termina la prima connessione TLS, i vantaggi del protocollo vengono persi e la connessione appare come una normale connessione HTTP/1.1.

Pertanto, per evitare problemi con HTTP/2 quando si utilizza IPSpinner con Burp Suite, rimuovere il supporto client HTTP/2: Settings > Network > HTTP > HTTP/2 > Deselezionare la casella HTTP/2.

Scarica lo strumento
AWS API GatewayAzure Cloud ShellGitHub Actions
Indirizzi IP disponibili≈ 12,418≈ 276> 6,000
Tempo di risposta medio0.46s13.04s21.42s
Tempo medio di riconfigurazioneNessuno20sNessuno
Velocità di flusso teorica massimada 4.000 a 16.000 req/h107 req/h/istanza cloud shell1.000 req/h
Può/Deve essere precaricato?✅❌❌
Utilizzo: navigazione✅❌❌
Utilizzo: password spraying✅✅✅
ParametroObbligatorioValore predefinito
--config❌config.ini
--export-ca-cert❌
--host❌
--port❌8080
--v, --vv, --vvv❌
ParametroObbligatorioValore predefinitoDescrizione
preload_hosts_file❌un elenco di URL/host da precaricare, per i provider che possono precaricare host
whitelist_hosts_file❌un elenco di URL/host in whitelist (tutti gli altri saranno in blacklist per impostazione predefinita)
blacklist_hosts_file❌un elenco di URL/host in blacklist (ignorato se è impostata la whitelist)
ca_cert_file & ca_cert_key_file❌un certificato CA fornito dall'utente (se si vuole sostituire quello generato predefinito)
user_agents_file❌un elenco di user agent che verranno scelti casualmente per le richieste
debug_response_headers❌falseaggiunge due header di debug nelle risposte del proxy: X-IPSpinner-Provider e X-IPSpinner-Provider-NbTotalReqSent
wait_for_launcher_available_timeout❌60numero di secondi prima del timeout di una richiesta se nessun launcher diventa disponibile
ParametroObbligatorioValore predefinitoDescrizione
regions✅Elenco di regioni, separate da virgola, in cui possono essere distribuite le risorse
profile❌Profilo AWS CLI da utilizzare
access_key✅
(o profile)
Chiave di accesso utente AWS
secret_key✅
(o profile)
Chiave segreta utente AWS
session_token❌Token di sessione utente AWS
ParametroObbligatorio
(se ag_enabled=true)
Valore predefinitoDescrizione
ag_enabled/Abilita il launcher API Gateway
ag_max_instances❌5Numero massimo di istanze API Gateway distribuibili (massimo complessivo, non per regione)
ag_rotate_nb_requests❌5,000Numero di richieste prima di ruotare un API Gateway
ag_forwarded_for_range❌35.180.0.0/16Intervallo di indirizzi IP per l'header X-Forwarded-For (intervallo IPv4 o IPv6)
ag_instance_title_prefix❌fprPersonalizzazione delle informazioni dell'API Gateway
ag_instance_deployment_description❌IPSpinner FireProx ProdPersonalizzazione delle informazioni dell'API Gateway
ag_instance_deployment_stage_description❌IPSpinner FireProx Prod StagePersonalizzazione delle informazioni dell'API Gateway
ag_instance_deployment_stage_name❌3 random english wordsPersonalizzazione delle informazioni dell'API Gateway
ParametroObbligatorioValore predefinitoDescrizione
admin_email✅
(o accounts_file)
Email dell'amministratore Azure
admin_password✅
(o accounts_file)
Password dell'amministratore Azure
tenant_id✅ID tenant
subscription_id✅ID sottoscrizione
accounts_file❌Un elenco di account pre-creati (email e password, un'informazione per riga) che sovrascrive admin_email e admin_password
ParametroObbligatorio
(se cs_enabled=true)
Valore predefinitoDescrizione
cs_enabled/Abilita il launcher Cloud Shell
cs_preferred_locations✅Posizioni per la distribuzione delle istanze Cloud Shell
cs_nb_instances❌5Numero di istanze Cloud Shell da distribuire