
IPSpinner funktioniert als lokaler Proxy, der Anfragen über externe Dienste umleitet.
IPSpinner ist ein lokaler Proxy, mit dem alle eingehenden Anfragen über verschiedene ausgewählte Anbieter umgeleitet werden können. Der Zweck besteht darin, einen Durchgangs-Proxy zu erstellen, der die Quell-IP-Adresse jeder Anfrage rotiert. Wenn Sie beispielsweise eine Brute-Force-Operation über IPSpinner ausführen, können Sie vermeiden, erkannt zu werden, da der Server die Anfragen von Hunderten verschiedener IP-Adressen erhält.
IPSpinner unterstützt derzeit AWS (API Gateway), Azure (Cloud Shell) und GitHub (GitHub Actions).
Abbildung 1: IPSpinner – Gesamtdiagramm
IPSpinner fungiert als lokaler Proxy, der Anfragen über externe Dienste umleitet. Zu diesem Zweck nutzt IPSpinner Anbieter (Provider) und Launcher.
Ein Anbieter entspricht einem Cloud-Anbieter oder einem Online-Dienstanbieter (AWS, Azure, GitHub usw.), der verschiedene Dienste – sogenannte Launcher – anbietet, die zum Weiterleiten der Anfragen des Benutzers genutzt werden können (AWS API Gateway, GitHub Actions, Azure Cloud Shells usw.).
Um IPSpinner zu starten, muss der Benutzer daher Anmeldedaten für die gewünschten Anbieter sowie zusätzliche Konfigurationen für die Launcher bereitstellen. Mehrere Launcher-Typen können gleichzeitig verwendet werden; IPSpinner wählt für jede Anfrage zufällig einen der verfügbaren Launcher aus.
Darüber hinaus implementiert IPSpinner eine Preload-Funktion. Einige Launcher können vorgeladen werden, um die Verzögerung durch die Neukonfiguration zu vermeiden, falls der Proxy einen neuen Host sieht. Für diese Launcher wird die Preload-Prozedur empfohlen, ist aber nicht verpflichtend. Für die anderen ist kein Preloading erforderlich.
IPSpinner kann AWS API Gateway zum Senden von Anfragen nutzen. Diese Implementierung basiert auf FireProx, das ein REST-API-Gateway erstellt, um eingehende Anfragen umzuleiten. FireProx wurde daher angepasst, um mehrere Hosts pro API-Gateway zu unterstützen und neue Funktionen zu implementieren. Wenn IPSpinner eine Anfrage erhält, wählt oder erstellt es die passende API-Gateway-Instanz und sendet die Anfrage an diese. Anschließend sammelt es die Antwort und gibt sie an den Benutzer zurück. Der Zielserver empfängt die Anfrage also vom API-Gateway und nicht direkt vom Benutzer. Da das API-Gateway seine ausgehende IP bei jeder Anfrage rotiert, nutzt IPSpinner diese Funktion, um die IP-Adresse zu rotieren.
Abbildung 2: AWS API Gateway – Gesamtdiagramm
Die nächste Grafik (erstellt im Oktober 2024) zeigt die Anzahl der verfügbaren eindeutigen IP-Adressen pro AWS-Region in Abhängigkeit von der Anzahl der gesendeten Anfragen. Die meisten Regionen bieten mehr als 100 IP-Adressen, und es können mehrere Regionen gleichzeitig verwendet werden, sodass der Benutzer seine Anfragen über Tausende weltweiter Adressen proxifizieren kann.
Abbildung 3: AWS API Gateway – Verfügbare IP-Adressen pro Region
Schließlich zeigt Abbildung 4 mit einer logarithmischen Grünfärbung, wie viele Adressen pro Land verfügbar sind. Sie verdeutlicht, dass der Benutzer die Möglichkeit hat, seine Quell-IP-Adresse mit Adressen auf jedem Kontinent zu fälschen.
Abbildung 4: AWS API Gateway – IP-Adressen pro Land
IPSpinner implementiert eine Rotationsfunktion, die erstellte FireProx-Instanzen regelmäßig löscht und erneuert. Wie die folgende Grafik zeigt, kann die Rotation einer FireProx-Instanz eine neue Teilmenge von IPs liefern. Allerdings verfügt jede AWS-Region über einen begrenzten IP-Bestand, sodass Rotationen ab einem bestimmten Punkt keine neuen IPs mehr liefern.
Abbildung 5: AWS API Gateway – Rotationsprozess
Dieser Launcher implementiert eine Preload-Prozedur. Wie bereits erwähnt, ist sie nicht verpflichtend, kann aber einige Neukonfigurationsverzögerungen oder Synchronisationsfehler in den ersten Sekunden nach der Neukonfiguration verhindern.
Darüber hinaus setzen API-Gateways standardmäßig einen X-Forwarded-For-Header, der nicht gelöscht, aber überschrieben werden kann. Der Benutzer kann daher in der IPSpinner-Konfiguration einen IP-Adressbereich angeben, aus dem für jede Anfrage eine zufällige IP ausgewählt wird (IPv4- oder IPv6-Bereich).
IPSpinner nutzt Azure Cloud Shell zum Senden von Anfragen. Eine Azure Cloud Shell ist ein interaktives, authentifiziertes, über den Browser zugängliches Terminal zur Verwaltung von Azure-Ressourcen. Cloud Shell läuft auf einem temporären Host, der pro Sitzung und pro Benutzer bereitgestellt wird.
IPSpinner verwendet daher mehrere Azure-Benutzer, für die eine Cloud-Shell-Sitzung vorbereitet wird. Anschließend wird jede Anfrage an eine initialisierte Cloud Shell umgeleitet, bevor diese erneuert wird, um ihre IP-Adresse zurückzusetzen.
Abbildung 6: Azure Cloud Shell – Gesamtdiagramm
Wie die folgende Grafik zeigt, bieten die verschiedenen Regionen, die für die Bereitstellung von Cloud-Shell-Sitzungen zur Verfügung stehen, jeweils Dutzende von IP-Adressen. Der Benutzer kann mehrere Regionen gleichzeitig konfigurieren, um seinen IP-Pool zu vergrößern.