配置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地址在目标服务器看来都是不同的。
目录
- 先决条件
- 创建亚马逊账户
- 配置AWS API网关
- 安装和设置
- 安装Fireprox
- 使用
- 运行FireProx
- 检查IP轮换
- 伪造X-Forwarded-For头部
- 资源
创建亚马逊账户
要为Fireprox设置直通代理,我们需要创建一个AWS账户。首先,访问AWS网站并单击"创建AWS账户"。填写账户信息,包括电子邮件地址、强密码和所需的账户名称。
图1和图2显示了注册AWS账户的步骤。
在下一页,选择账户类型(个人或企业),输入联系信息,并勾选同意AWS客户协议的复选框。
图3显示了添加联系信息。
之后,输入账单信息并通过电话或短信验证身份。
图4显示了添加账单信息。
然后,我们选择支持计划—基本、开发人员或商业计划。通常,AWS提供一个免费层,允许用户试用其服务。三个主要提供是:
- 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
- 使用FireProx逃避外部网络安全控制的工具 by Nate Fair
- 使用Fireprox安静地密码喷洒ADFS by Mike Felch
- 使用Fireprox击败速率限制 by James Gallagher