红队渗透测试--HTTP流量重定向

600 阅读2分钟

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

参考资料

github.com/bluscreenof…