Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
IPSpinner — IPSpinner 作为一个本地代理运行,将请求通过外部服务进行重定向。 | Kitploit
工具/GitHubGitHub/synacktiv/ipspinner
密码攻击Web代理与拦截IDS/IPS规避渗透测试云安全红队
GitHubsynacktiv/ipspinner

IPSpinner

IPSpinner 作为一个本地代理运行,将请求通过外部服务进行重定向。

查看仓库
123841年前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 利用了提供商和启动器。

提供商(provider)指云提供商或在线服务提供商(AWS、Azure、GitHub 等),它们提供不同的服务,即所谓的启动器(launcher),可用于中继用户的请求(AWS API Gateway、GitHub Actions、Azure Cloud Shell 等)。

因此,要启动 IPSpinner,用户必须为要使用的提供商提供凭据,并为启动器提供额外配置。可以同时使用多种启动器类型,IPSpinner 会为每个请求随机选择其中一个可用的启动器。

此外,IPSpinner 实现了预加载功能。某些启动器可以预先加载,以避免代理发现新主机时的重新配置延迟。对于这些启动器,预加载过程是推荐的但不是强制的。对于其他启动器,则无需预加载。

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 年 10 月,展示了每个 AWS 区域根据发送请求数量可用的唯一 IP 地址数量。大多数区域提供超过 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 更集中。如下图所示,大多数 IP 地址位于美国、欧洲和印度。

图 8:Azure Cloud Shell - 各国 IP 地址 图 8:Azure Cloud Shell - 各国 IP 地址

值得注意的细节

由于 Cloud Shell 续期过程的延迟,我们建议限制请求速率。更多信息请参阅启动器对比小节。

iii. GitHub Actions

简介

IPSpinner 也可以利用 GitHub Actions 发送请求。此实现的灵感来自 git-rotate,但已被完全修改和调整,以摆脱 catcher 服务器。

它创建一个包含预定义工作流模板的仓库。然后,对于每个请求,它通过环境变量传递请求信息来运行工作流。所有数据均经过加密,外部用户无法读取。IPSpinner 最终从工作流日志中收集响应数据。

图 9:GitHub Actions - 总体架构图 图 9:GitHub Actions - 总体架构图

下图显示 GitHub Actions 提供数千个不同的 IP 地址。

图 10:GitHub Actions - 各区域可用 IP 地址 图 10:GitHub Actions - 各区域可用 IP 地址

然而,下图显示 GitHub Actions 仅提供美国 IP 地址。经分析,其 worker 似乎部署在 Azure 基础设施上。

图 11:GitHub Actions - 各国 IP 地址 图 11:GitHub Actions - 各国 IP 地址

值得注意的细节

⚠️ 此外,“GitHub 严肃对待 Actions 的滥用和垃圾信息行为,并设有专门团队追踪‘垃圾用户’。” 因此,用户绝不能使用自己的账户或公司账户使用此提供商,以避免账户被关闭的问题。

由于 GitHub REST API 的每小时限制,必须限制最大请求速率以避免中断。更多信息请参阅启动器对比小节。

3) 启动器对比

II/ 如何安装?

1) 安装 Go

本项目已在 go 版本 >= 1.21 下测试,但在更低版本下也可能正常工作。

参见 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

在 Linux 上,可执行文件默认名为 “ipspinner”,在 Windows 上则为 “ipspinner.exe”。

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 配置参数:


在 aws 部分中的 API Gateway 配置参数:

ii. Azure

在 azure 部分中的 Azure 配置参数:


在 azure 部分中的 Azure Cloud Shell 配置参数:

iii. GitHub

在 github 部分中的 GitHub 配置参数:

参数必填默认值描述
username✅GitHub 用户名
token✅与所提供用户名关联的 GitHub token

在 github 部分中的 GitHub Actions 配置参数:

参数必填
(如果 ga_enabled=true)
默认值描述
ga_enabled/启用 GitHub Actions 启动器

IV/ 如何 ...?

1) HTTP/2 支持?

IPSpinner 不支持 HTTP/2 协议。由于代理会终止第一个 TLS 连接,协议的优势会丢失,表现为基本的 HTTP/1.1 连接。

因此,为了避免在将 IPSpinner 与 Burp Suite 一起使用时出现 HTTP/2 问题,请取消 HTTP/2 客户端支持:Settings > Network > 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 req/h107 req/h/Cloud Shell 实例1,000 req/h
可否/需要预加载?✅❌❌
用途:浏览✅❌❌
用途:密码喷洒✅✅✅
参数必填默认值
--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❌将从列表中随机选择用于请求的用户代理列表
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/16X-Forwarded-For 头的 IP 地址范围(IPv4 或 IPv6 范围)
ag_instance_title_prefix❌fprAPI Gateway 信息自定义
ag_instance_deployment_description❌IPSpinner FireProx ProdAPI Gateway 信息自定义
ag_instance_deployment_stage_description❌IPSpinner FireProx Prod StageAPI Gateway 信息自定义
ag_instance_deployment_stage_name❌3 个随机英文单词API Gateway 信息自定义
参数必填默认值描述
admin_email✅
(或 accounts_file)
Azure 管理员电子邮件
admin_password✅
(或 accounts_file)
Azure 管理员密码
tenant_id✅租户 ID
subscription_id✅订阅 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 实例数量