配置Fireprox使用AWS API网关实现IP轮换
在渗透测试评估期间,某些活动需要一定程度的自动化,例如从LinkedIn等网站进行网络爬取以收集可用于社会工程活动、密码喷洒登录门户或测试Web应用程序时的盲注的有效员工名单。但是,从单个源IP地址执行这些活动可能导致在测试期间被阻止。
为了克服这个问题,我们需要足够频繁地轮换IP以避免被检测。我们可以使用AWS API网关等服务,它通过网关代理我们的流量,而不是直接发送到目标。当通过网关发出请求时,它会从AWS的大型IP池中选择一个IP地址。由于AWS拥有全球基础设施,这些IP对于每个请求可能都不同。
有许多工具利用AWS API网关;在本文中,我们将研究Fireprox。这是一个由Black Hills Information Security的Mike Felch创建的开源工具。Fireprox动态创建临时直通代理,每次通过代理发出请求时,IP地址在目标服务器上显示为不同。
目录
- 先决条件
- 创建Amazon账户
- 配置AWS API网关
- 安装和设置
- 安装Fireprox
- 使用
- 运行FireProx
- 检查IP轮换
- 伪造X-Forwarded-For头部
- 资源
创建Amazon账户
要为Fireprox设置直通代理,我们需要创建一个AWS账户。首先,访问AWS网站并单击"创建AWS账户"。填写账户信息,包括电子邮件地址、强密码和所需的账户名称。
图1和图2 - 显示注册AWS账户的步骤
在下一页,选择账户类型(个人或企业),输入联系信息,并勾选同意AWS客户协议的复选框。
图3 - 显示添加联系信息
之后,输入账单信息并通过电话或短信验证身份。
图4 - 显示添加账单信息
然后,我们选择支持计划 - 基本、开发人员或商业计划。通常,AWS提供一个免费层,允许用户试用其服务。3个主要提供是:
- 12个月免费:这些服务在您注册AWS后的前12个月内免费使用。之后,将按标准即用即付费率收费。
- 始终免费:只要您保持在免费层限制内,一些AWS服务完全免费。
- 免费试用:一些服务提供较短期的免费试用,如一个月左右。
对于本文,基本计划就足够了。API网关的免费层每月为REST和HTTP API提供高达100万次API调用。但是,如果您需要更多,可以查看其定价页面获取更多信息 - Amazon API Gateway定价。
图5 - 显示选择支持计划
完成注册过程后,我们登录并访问"AWS管理控制台"以开始使用AWS服务。
图6和图7 - 显示登录和AWS控制台
配置AWS API网关
创建AWS账户后,导航到AWS控制台上的"服务"磁贴图标。从那里打开"身份和访问管理仪表板(IAM)"。
图8:显示从AWS控制台选择IAM服务
在IAM仪表板中,从侧边菜单中选择"用户组",然后单击"创建组"。
图9 - 显示IAM仪表板
输入组名并向下滚动到"附加权限策略 - 可选",选择策略类型为AmazonAPIGatewayAdministrator策略,然后单击"创建用户组"。
图10 - 显示创建新组
图11 - 显示选择Amazon API策略
之后,我们将创建一个新用户添加到"FireProx-Testing"组。单击"创建用户"并输入用户名信息。
图12和图13 - 显示创建新用户
对于"设置权限",选择"添加到组"并将其添加到Fireprox-Testing组。然后,在单击"创建用户"之前查看用户名和组。
图14和图15 - 显示设置用户账户权限
成功创建用户后,单击用户查看其信息。
要生成访问密钥,单击"创建访问密钥"。在访问密钥向导中,选择命令行界面(CLI)用例并确认我们理解Amazon关于访问密钥的建议。
图16和图17 - 显示生成访问密钥
如果要添加描述,可以这样做;这是可选的。要继续,单击"创建访问密钥"。在最后一步,您可以将访问密钥复制到密码管理器或将其下载为.csv文件。完成后,单击"完成"。
图18和图19 - 显示AWS访问密钥
安装Fireprox
要安装Fireprox工具,从GitHub克隆仓库,并在"fireprox"目录中使用virtualenv为Python3创建虚拟环境。
|
|
图20 - 显示fireprox设置
然后,运行命令source bin/activate
以执行activate bash脚本的内容。activate脚本通过设置像VIRTUAL_ENV这样的变量指向Fireprox目录来修改环境变量。
它还会修改系统的$PATH变量以优先考虑在Fireprox虚拟环境中安装的库。
|
|
要验证变量是否正确添加,运行env命令,并检查PATH、VIRTUAL_ENV和VIRTUAL_ENV_PROMPT变量。
图21 - 显示修改的$PATH变量
图22 - 显示修改的虚拟环境变量
最后,使用pip安装Fireprox的其余要求,并运行该工具。
|
|
图23 - 显示运行Fireproxy手册页
运行FireProx
要使用Fireprox,我们需要提供之前创建新用户"fireprox-testuser"时生成的访问和秘密密钥,以及我们希望通过代理的站点的URL。
您可以直接在命令中提供密钥,如"方法1"所示,或将它们添加到环境变量中。或者,您可以使用AWS CLI创建配置文件并将密钥添加到其中。
方法1:直接提供
|
|
图24 - 显示直接使用aws访问密钥运行fireprox
方法2:环境变量
使用export命令添加AWS变量。然后,运行Fireprox并指定区域和要代理的URL。
|
|
图25 - 显示添加AWS变量
图26 - 显示使用AWS变量运行Fireprox
创建API后,返回控制台查看新创建的网关。
图27 - 新创建的API网关
方法3:AWS配置文件
我们可以创建一个AWS配置文件,这是一个包含不同账户或目的的一组配置的文件。配置文件包括访问密钥ID和秘密访问密钥,并指定默认区域。
要创建配置文件,首先安装AWS CLI,然后使用aws configure命令创建配置文件。提供访问密钥ID、秘密密钥以及将创建API网关的区域。
|
|
图28 - 显示配置aws配置文件
默认情况下,配置文件将命名为"default"。aws配置文件通常位于Linux上的~/.aws/config。
图29 - 显示aws配置文件的位置
创建后,再次运行以下命令的工具,它将从~/.aws/config获取凭据。
|
|
图30 - 使用aws配置文件运行fireprox
💡–profile_name选项不起作用,因此请在没有它的情况下运行命令。
检查IP轮换
使用免费层,我们获得100万次请求;如果您好奇当我们通过API网关发送请求时IP如何变化,您可以编写一个快速的bash脚本,向创建的URL发送10次请求。
|
|
图31 - 显示Bash脚本
如下所示,返回的IP是唯一的。
图32 - 显示API网关的IP地址
伪造X-Forwarded-For头部
在向目标URL发送请求时,我观察到我的云VM的源IP地址显示在目标服务器的X-Forwarded-For头部的值中,而不是API网关的IP地址。
我使用Burp Suite Collaborator检查发送请求中X-Forwarded-For头部的值。
|
|
查看协作器请求,您可能会看到源IP来自AWS池,但如果您单击其中一个请求并检查发送到目标目的地的头部,您将在X-Forwarded-For头部中看到您的源IP。
图33和图34 - 显示X-Forwarded-For头部的值
为了逃避检测,我们可以通过将此自定义头部添加到我们的curl命令中来掩盖我们的源IP地址"X-My-X-Forwarded-For: 127.0.0.1"。
|
|
图35 - 显示请求中的自定义X-My-X-Forwarded-For头部
完整脚本
|
|
我们已经配置了Fireprox并学习了如何伪造X-Forwarded-For头部。我们现在可以将其与各种工具一起使用,以自动化我们的请求,而不用担心被阻止。
今天就到这里。感谢您的阅读!
资源
- AWS直通代理 by Mike Bond
- 用于逃避外部网络安全控制的工具 by Nate Fair
- 使用FireProx静默密码喷洒ADFS by Mike Felch
- 使用Fireprox击败速率限制 by James Gallagher