Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
IPSpinner — IPSpinner работает как локальный прокси-сервер, который перенаправляет запросы через внешние сервисы. | Kitploit
Инструменты/GitHubGitHub/synacktiv/ipspinner
Атаки на ПаролиВеб-прокси и перехватОбход IDS/IPSТестирование на ПроникновениеБезопасность облачных средRed Teaming
GitHubsynacktiv/ipspinner

IPSpinner

IPSpinner работает как локальный прокси-сервер, который перенаправляет запросы через внешние сервисы.

Репозиторий
12381 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

🔁 IPSpinner

IPSpinner — это локальный прокси, который можно использовать для перенаправления всех входящих запросов через различных выбранных провайдеров. Цель — создать сквозной прокси, который ротирует исходный IP-адрес каждого запроса. Например, запуск операции брутфорса через IPSpinner поможет избежать обнаружения, поскольку сервер будет получать запросы с сотен разных IP-адресов.

В настоящее время IPSpinner поддерживает AWS (API Gateway), Azure (Cloud Shell) и GitHub (GitHub Actions).

Содержание

  1. Как это работает?
    1. Общее
    2. По провайдерам и лаунчерам
      1. AWS API Gateway
      2. Azure Cloud Shell
      3. GitHub Actions
    3. Сравнение лаунчеров
  2. Как установить?
    1. Установка Go
    2. Клонирование и сборка IPSpinner
    3. Очистка сборки
  3. Как использовать?
    1. Общее
      1. Аргументы командной строки
      2. Конфигурационный файл
    2. По провайдерам
      1. AWS
      2. Azure
      3. GitHub
  4. Как ...?
    1. Поддержка HTTP/2?

I/ Как это работает?

1) Общее

Рисунок 1: IPSpinner — Общая схема Рисунок 1: IPSpinner — Общая схема

IPSpinner работает как локальный прокси, который перенаправляет запросы через внешние сервисы. Для этого IPSpinner использует провайдеров и лаунчеров.

Провайдер соответствует облачному провайдеру или онлайн-провайдеру услуг (AWS, Azure, GitHub и т.д.), который предлагает различные сервисы, называемые лаунчерами, которые можно использовать для ретрансляции запросов пользователя (AWS API Gateway, GitHub Actions, Azure Cloud Shell и т.д.).

Таким образом, для запуска IPSpinner пользователь должен предоставить учетные данные для провайдеров, которые он хочет использовать, и дополнительные конфигурации для лаунчеров. Можно использовать несколько типов лаунчеров одновременно; IPSpinner будет выбирать случайным образом один из доступных для каждого запроса.

Кроме того, IPSpinner реализует функцию предварительной загрузки (preload). Некоторые лаунчеры можно предварительно загружать, чтобы избежать задержки перенастройки в случае, если прокси видит новый хост. Для этих лаунчеров процедура предварительной загрузки рекомендуется, но не обязательна. Для остальных предварительная загрузка не требуется.

2) По провайдерам и лаунчерам

i. AWS API Gateway

Введение

IPSpinner может использовать AWS API Gateway для отправки запросов. Эта реализация основана на FireProx, который создает REST API Gateway для перенаправления входящих запросов. FireProx был адаптирован для поддержки нескольких хостов на один API Gateway и реализации новых функций. Если кратко, когда IPSpinner получает запрос, он выбирает или создает подходящий экземпляр API Gateway и направляет запрос к нему. Затем он собирает ответ и возвращает его пользователю. Таким образом, целевой сервер получает запрос от API Gateway, а не напрямую от пользователя. Поскольку API Gateway ротирует свой исходящий IP для каждого запроса, IPSpinner использует эту возможность для ротации IP-адресов.

Рисунок 2: AWS API Gateway — Общая схема Рисунок 2: AWS API Gateway — Общая схема

Следующий график, созданный в октябре 2024 года, показывает количество уникальных IP-адресов, доступных в каждом регионе AWS, в зависимости от количества отправленных запросов. Большинство регионов предлагают более 100 IP-адресов, и можно использовать несколько регионов одновременно, что позволяет пользователю пропускать свои запросы через тысячи адресов по всему миру.

Рисунок 3: AWS API Gateway — Доступные IP-адреса по регионам Рисунок 3: AWS API Gateway — Доступные IP-адреса по регионам

Наконец, на рисунке 4 с помощью логарифмической шкалы зеленого цвета показано, сколько адресов доступно в каждой стране. Это демонстрирует, что пользователь имеет возможность подменить свой исходный IP-адрес адресами с любого континента.

Рисунок 4: AWS API Gateway — IP-адреса по странам Рисунок 4: AWS API Gateway — IP-адреса по странам

Примечательные детали

IPSpinner реализует функцию ротации, которая регулярно удаляет и пересоздает экземпляры FireProx. Как показывает следующий график, ротация экземпляра FireProx может предоставить новый поднабор IP-адресов. Однако каждый регион AWS имеет ограниченный набор IP-адресов, поэтому в какой-то момент ротация перестанет давать новые IP-адреса.

Рисунок 5: AWS API Gateway — Процесс ротации Рисунок 5: AWS API Gateway — Процесс ротации

Этот лаунчер реализует процедуру предварительной загрузки. Как уже говорилось, она не обязательна, но может предотвратить некоторые задержки перенастройки или ошибки синхронизации в первые секунды после перенастройки.

Кроме того, API Gateway по умолчанию устанавливает заголовок X-Forwarded-For, который нельзя удалить, но можно переопределить. Таким образом, пользователь может указать в конфигурации IPSpinner диапазон IP-адресов, из которого для каждого запроса будет выбран случайный IP-адрес (диапазон IPv4 или IPv6).

ii. Azure Cloud Shell

Введение

IPSpinner использует Azure Cloud Shell для отправки запросов. Azure Cloud Shell — это интерактивный терминал с аутентификацией, доступный через браузер, для управления ресурсами Azure. Cloud Shell работает во временном хостинге, предоставляемом на основе отдельного сеанса и отдельного пользователя.

Таким образом, IPSpinner использует несколько пользователей Azure, для которых подготавливается сеанс Cloud Shell. Затем каждый запрос будет перенаправлен в инициализированный Cloud Shell, после чего он будет перезапущен для сброса его IP-адреса.

Рисунок 6: Azure Cloud Shell — Общая схема Рисунок 6: Azure Cloud Shell — Общая схема

Как показывает следующий график, разные регионы, доступные для развертывания сеансов Cloud Shell, предлагают десятки IP-адресов. Пользователь может настроить несколько регионов одновременно, чтобы увеличить свой пул IP-адресов.

Рисунок 7: Azure Cloud Shell — Доступные IP-адреса по регионам Рисунок 7: Azure Cloud Shell — Доступные IP-адреса по регионам

Однако IP-адреса более сконцентрированы, чем у AWS API Gateway. Как показано на следующей карте, большинство из них находятся в США, Европе и Индии.

Рисунок 8: Azure Cloud Shell — IP-адреса по странам Рисунок 8: Azure Cloud Shell — IP-адреса по странам

Примечательные детали

Из-за задержки процесса обновления Cloud Shell мы советуем ограничить частоту запросов. Дополнительная информация в подразделе Сравнение лаунчеров.

iii. GitHub Actions

Введение

IPSpinner также может использовать GitHub Actions для отправки запросов. Эта реализация вдохновлена проектом git-rotate, но была полностью изменена и адаптирована для устранения сервера-перехватчика.

Он создает репозиторий с предопределенным шаблоном workflow. Затем для каждого запроса он запускает workflow, передавая информацию о запросе через переменные окружения. Все данные шифруются, чтобы их не мог прочитать внешний пользователь. Наконец, IPSpinner собирает данные ответа из журналов workflow.

Рисунок 9: GitHub Actions — Общая схема Рисунок 9: GitHub Actions — Общая схема

Следующий рисунок показывает, что GitHub Actions предлагают тысячи различных IP-адресов.

Рисунок 10: GitHub Actions — Доступные IP-адреса по регионам Рисунок 10: GitHub Actions — Доступные IP-адреса по регионам

Однако следующая карта показывает, что GitHub Actions предлагают только американские IP-адреса. После анализа их воркеры, судя по всему, развернуты на инфраструктуре Azure.

Рисунок 11: GitHub Actions — IP-адреса по странам Рисунок 11: GitHub Actions — IP-адреса по странам

Примечательные детали

⚠️ Кроме того, «GitHub серьезно относится к злоупотреблениям и спаму в Actions, и у них есть специальная команда для отслеживания «спамеров».» Поэтому пользователь НЕ ДОЛЖЕН использовать этого провайдера со своей собственной учетной записью или с корпоративной учетной записью, чтобы избежать блокировки учетной записи.

Из-за почасового лимита GitHub REST API максимальная частота запросов должна быть ограничена во избежание сбоев. Дополнительная информация в подразделе Сравнение лаунчеров.

3) Сравнение лаунчеров

II/ Как установить?

1) Установка Go

Этот проект протестирован для версии Go >= 1.21, но может работать и с более низкими версиями Go.

См. документацию по установке Go

После установки убедитесь, что используемый по умолчанию бинарный файл go является правильным:

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

2) Клонирование и сборка 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

По умолчанию исполняемый файл будет называться «ipspinner» в Linux или «ipspinner.exe» в Windows.

3) Очистка сборки

По завершении использования можно очистить сборку, выполнив команду

root@kitploit:~
$ make clean

III/ Как использовать?

1) Общее

Чтобы получить справку по использованию IPSpinner, вы можете запустить команду без аргументов:

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

Вся информация (за исключением перенаправлений запросов) записывается в файл ipspinner.log.

Некоторые общие параметры доступны в качестве аргументов, а остальная конфигурационная информация должна быть указана в INI-файле.

i. Аргументы командной строки

Пользователь может указать некоторые аргументы командной строки:

Некоторые глобальные параметры и параметры провайдеров должны быть указаны в INI-файле конфигурации. Конфигурационный файл должен быть подготовлен до запуска IPSpinner. Его содержимое будет объяснено в следующих подразделах. По умолчанию IPSpinner ищет конфигурационный файл с именем config.ini.

Для обработки HTTPS-запросов IPSpinner требуется сертификат удостоверяющего центра (CA) и ключ. Если пользователь не предоставляет сертификат, IPSpinner сгенерирует собственный самозаверяющий сертификат и ключ. Пользователь может запросить получение сгенерированного сертификата с помощью --export-ca-cert (например, для импорта в браузер). В противном случае пользователь может указать свой собственный сертификат CA и ключ в конфигурационном файле (см. следующие разделы).

Пользователь может указать хост и порт прослушивания с помощью --host и --port.

Наконец, доступны три режима подробного вывода:

  • --v: выводит журналы создания
  • --vv: как --v, а также выводит перенаправления запросов
  • --vvv: как --vv, а также выводит подробную информацию о запросах

ii. Конфигурационный файл

Кроме того, в репозитории проекта доступен шаблон INI-файла конфигурации.

В разделе proxy пользователь может указать следующие параметры:

Все остальные разделы будут описаны в соответствующей главе о провайдере.

Важно отметить, что пользователь может одновременно включить несколько провайдеров и лаунчеров. В этом случае IPSpinner будет выбирать случайный лаунчер среди всех доступных для каждого запроса.

2) По провайдерам

i. AWS

Параметры конфигурации для AWS в разделе aws:


Параметры конфигурации для API Gateway в разделе aws:

ii. Azure

Параметры конфигурации для Azure в разделе azure:


Параметры конфигурации для Azure Cloud Shell в разделе azure:

iii. GitHub

Параметры конфигурации для GitHub в разделе github:

ПараметрОбязательныйЗначение по умолчаниюОписание
username✅Имя пользователя GitHub
token✅GitHub-токен, связанный с указанным именем пользователя

Параметры конфигурации для GitHub Actions в разделе github:

ПараметрОбязательный
(если ga_enabled=true)
Значение по умолчаниюОписание
ga_enabled/Включить лаунчер GitHub Actions

IV/ Как ...?

1) Поддержка HTTP/2?

IPSpinner не поддерживает протокол HTTP/2. Поскольку прокси завершает первое TLS-соединение, преимущества протокола теряются, и соединение выглядит как обычное HTTP/1.1.

Поэтому, чтобы избежать проблем с HTTP/2 при использовании IPSpinner с Burp Suite, отключите поддержку клиента HTTP/2: Настройки > Сеть > HTTP > HTTP/2 > снимите флажок HTTP/2.

Скачать инструмент
AWS API GatewayAzure Cloud ShellGitHub Actions
Доступные IP-адреса≈ 12,418≈ 276> 6,000
Среднее время ответа0.46s13.04s21.42s
Среднее время перенастройкиНет20sНет
Максимальная теоретическая частота запросовот 4 000 до 16 000 запросов/ч107 запросов/ч на экземпляр Cloud Shell1 000 запросов/ч
Можно/нужно ли выполнять предзагрузку?✅❌❌
Использование для: браузинга✅❌❌
Использование для: подбора паролей✅✅✅
ПараметрОбязательныйЗначение по умолчанию
--config❌config.ini
--export-ca-cert❌
--host❌
--port❌8080
--v, --vv, --vvv❌
ПараметрОбязательныйЗначение по умолчаниюОписание
preload_hosts_file❌список URL-адресов/хостов для предварительной загрузки, для провайдеров, которые поддерживают предварительную загрузку хостов
whitelist_hosts_file❌список URL-адресов/хостов, которые находятся в белом списке (все остальные по умолчанию будут в черном списке)
blacklist_hosts_file❌список URL-адресов/хостов, которые находятся в черном списке (игнорируется, если задан белый список)
ca_cert_file & ca_cert_key_file❌предоставленный пользователем сертификат CA (если пользователь хочет заменить сгенерированный по умолчанию)
user_agents_file❌список user-agent'ов, которые будут случайным образом выбираться для запросов
debug_response_headers❌falseдобавляет два отладочных заголовка в ответы прокси: X-IPSpinner-Provider и X-IPSpinner-Provider-NbTotalReqSent
wait_for_launcher_available_timeout❌60количество секунд ожидания перед тайм-аутом запроса, если ни один лаунчер не стал доступен
ПараметрОбязательныйЗначение по умолчаниюОписание
regions✅Список регионов, разделенных запятой, где могут быть развернуты ресурсы
profile❌Профиль AWS CLI для использования
access_key✅
(или profile)
Ключ доступа пользователя AWS
secret_key✅
(или profile)
Секретный ключ пользователя AWS
session_token❌Сессионный токен пользователя AWS
ПараметрОбязательный
(если ag_enabled=true)
Значение по умолчаниюОписание
ag_enabled/Включить лаунчер API Gateway
ag_max_instances❌5Максимальное количество экземпляров API Gateway, которые могут быть развернуты (общий максимум, не на регион)
ag_rotate_nb_requests❌5,000Количество запросов перед ротацией API Gateway
ag_forwarded_for_range❌35.180.0.0/16Диапазон IP-адресов для заголовка X-Forwarded-For (диапазон IPv4 или IPv6)
ag_instance_title_prefix❌fprНастройка отображаемой информации API Gateway
ag_instance_deployment_description❌IPSpinner FireProx ProdНастройка отображаемой информации API Gateway
ag_instance_deployment_stage_description❌IPSpinner FireProx Prod StageНастройка отображаемой информации API Gateway
ag_instance_deployment_stage_name❌3 random english wordsНастройка отображаемой информации API Gateway
ПараметрОбязательныйЗначение по умолчаниюОписание
admin_email✅
(или accounts_file)
Адрес электронной почты администратора Azure
admin_password✅
(или accounts_file)
Пароль администратора Azure
tenant_id✅Tenant ID
subscription_id✅Subscription ID
accounts_file❌Список предварительно созданных учетных записей (адрес электронной почты и пароль, по одному элементу в строке), которые переопределяют admin_email и admin_password
ПараметрОбязательный
(если cs_enabled=true)
Значение по умолчаниюОписание
cs_enabled/Включить лаунчер Cloud Shell
cs_preferred_locations✅Расположения для развертывания экземпляров Cloud Shell
cs_nb_instances❌5Количество экземпляров Cloud Shell для развертывания