然后将打开一个 Meterpreter 会话,我们可以使用 Armitage 访问它:
但是,目标服务器的连接表将包含我们的 C2 IP。这意味着监控团队可以轻松获取我们的 C2 IP 并将其阻止:
以下是当前的情况。为了帮助理解,以建筑格式显示:
为了保护我们的 C2 不被烧毁,我们需要在 C2 前面添加一个重定向器。请参考下图来清楚地了解这个过程:
这是目前我们的重定向器和 C2 的 IP 信息:
-
重定向器 IP:35.153.183.204
-
C2 IP:54.166.109.171
假设重定向器服务器上安装了 socat,我们将执行以下命令将传入端口上的所有通信转发8080/tcp到我们的 C2:
我们的重定向器现已准备就绪。现在让我们生成一行代码,并进行一些小改动。这一次,将lhost设置为重定向器 IP,而不是 C2:
执行有效负载后,连接将从目标服务器发起,并且服务器将尝试连接重定向器:
我们现在可能会注意到下图有所不同,因为源 IP 是重定向器而不是目标服务器:
我们来看一下目标服务器的连接表:
连接表中没有我们的 C2 IP,蓝队也没有。现在重定向器运行正常,这个 C2 重定向器设置可能存在什么问题?
让我们对 C2 执行端口扫描以检查可用的开放端口:
从上面的截图中我们可以看到,端口8080/tcp在open我们的 C2 上。这意味着任何人都可以尝试连接到我们的监听器以确认它的存在。为了避免这种情况,我们应该以某种方式配置我们的 C2,以保护它免受外部侦察 (recon) 和攻击。
安全地混淆 C2
以图表形式展示,我们当前的 C2 配置如下:
如果有人尝试连接到我们的 C2 服务器,他们将能够检测到我们的 C2 服务器在端口上运行 Meterpreter 处理程序8080/tcp:
为了保护我们的 C2 服务器免受外部扫描和侦察,让我们设置以下简单防火墙 ( UFW ) 规则集,以便只有我们的重定向器可以连接到我们的 C2。首先,执行以下 UFW 命令为 C2 添加防火墙规则:
sudo ufw allow 22
sudo ufw allow 55553
sudo ufw allow from 35.153.183.204 to any port 8080 proto tcp
sudo ufw allow out to 35.153.183.204 port 8080 proto tcp
sudo ufw deny out to any
需要执行给定的命令,结果如下面的屏幕截图所示:
此外,执行以下ufw命令为重定向器添加防火墙规则:
sudo ufw allow 22
sudo ufw allow 8080
需要执行给定的命令,结果如下面的屏幕截图所示:
一旦规则集到位,就可以描述如下:
如果我们现在尝试对C2进行端口扫描,端口将显示为filtered:如下所示。
此外,我们的 C2 现在只能从我们的重定向器访问。让我们通过从重定向器服务器对我们的 C2 进行端口扫描来确认这一点:
短期和长期重定向器
短期 (ST)(也称为短程)C2 是那些信标过程将继续进行的 C2 服务器。每当目标组织中的系统执行我们的有效载荷时,服务器就会连接到 ST-C2 服务器。有效载荷将定期轮询来自我们的 C2 服务器的任务,这意味着目标将每隔几秒钟回调 ST-C2 服务器。放置在我们的 ST-C2 服务器前面的重定向器称为短期 (ST) 重定向器。它负责处理 ST-C2 服务器连接,ST-C2 将用于实时执行目标服务器上的命令。ST 和 LT 重定向器在交战过程中很容易被抓住,因为它们位于最前面。
长期 (LT)(也称为长途)C2 服务器是每隔几小时或几天从目标服务器收到回调的地方。放置在我们的 LT-C2 服务器前面的重定向器称为长期 (LT) 重定向器。此重定向器用于比 ST 重定向器更长时间地保持访问。当通过 ST-C2 服务器执行持久性时,我们需要提供我们的 LT 重定向器的域,以便目标服务器上运行的持久性模块将连接回 LT 重定向器而不是 ST 重定向器。
隔离的红队基础设施设置看起来应该是这样的:
来源:https://payatu.com/wp-content/uploads/2018/08/redteam_infra.png
一旦我们拥有适当的红队基础设施设置,我们就可以专注于我们想要在 ST 和 LT 重定向器中进行的重定向类型。
重定向方法
我们可以通过两种方式执行重定向:
-
Dumb pipe重定向
-
Filtration/smart 重定向
Dumb pipe 重定向
Dumb pipe重定向器盲目地将网络流量从目标服务器转发到我们的 C2,反之亦然。这种类型的重定向器对于快速配置和设置很有用,但它们缺乏对传入流量的一定程度的控制。Dumb pipe重定向将混淆(隐藏)我们 C2 的真实 IP,但不会分散组织防御者调查我们设置的注意力。我们可以使用 socat 或 iptables 执行Dumb pipe重定向。在这两种情况下,网络流量都将重定向到我们的 ST-C2 服务器或 LT-C2 服务器。
来源:https://payatu.com/wp-content/uploads/2018/08/dumb_pipe_redirection123.png
让我们执行下图中给出的命令来配置一个Dumb pipe重定向器,它将重定向到我们端口上的 C2 8080/tcp:
以下是我们可以执行以使用 iptables 执行哑管道重定向的命令:
iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 54.166.109.171:8080
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -j ACCEPT
iptables -P FORWARD ACCEPT
sysctl net.ipv4.ip_forward=1
需要执行给定的命令,结果如下面的屏幕截图所示:
(忽略sudo此处的错误。这是因为我们更改了主机名而发生的)
使用 socat 或 iptables,结果将是相同的,即重定向器接口上的网络流量将被转发到我们的 C2。
Filtration/smart 重定向
过滤重定向(也称为智能重定向)不会盲目地将网络流量转发到 C2。智能重定向将始终根据红队定义的规则处理网络流量,然后再将其转发到 C2。在智能重定向中,如果 C2 流量无效,则网络流量将被转发到合法网站,或者只是丢弃数据包。只有当网络流量用于我们的 C2 时,重定向才会正常工作:
要配置智能重定向,我们需要安装 Web 服务并对其进行配置。让我们使用以下命令在重定向器上安装 Apache 服务器sudo apt install apache2 :
我们还需要执行以下命令以便能够重写 Apache 模块,并启用 SSL:
sudo apt-get install apache2
sudo a2enmod ssl rewrite proxy proxy_http
sudo a2ensite default-ssl.conf
sudo service apache2 restart
以上就是需要执行的命令,执行结果如下图所示:
我们还需要从其配置中配置Apache:
我们需要查找Directory指令以便将其更改为AllowOverride,None以便All 我们可以使用自定义.htaccess文件进行 Web 请求过滤。
我们现在可以设置虚拟主机设置并将其添加到wwwpacktpub.tk(/etc/apache2/sites-enabled/default-ssl.conf):
在此之后,我们可以用域生成有效负载,以wwwpacktpub.tk获取连接。
域名前置
根据 https://resources.infosecinstitute.com/domain-fronting/:
域名前置是一种旨在规避针对某些域名实施的审查的技术(不符合公司政策的域名可能会受到审查,也可能是由于域名声誉不佳而导致的)。域名前置在 HTTPS 层工作,并在请求的不同层使用不同的域名(稍后会详细介绍)。对于审查者来说,通信似乎发生在客户端和允许的域之间。但实际上,通信可能发生在客户端和被阻止的域之间。
要开始使用域前端,我们需要获取与目标组织类似的域。要检查域,我们可以使用该domainhunter工具。让我们克隆存储库以继续:
在继续之前,我们需要安装一些必需的 Python 包。这可以通过执行pip install -r requirements.txt 以下命令来实现:
python domainhunter.py安装完成后,我们可以通过执行以下命令来运行该工具 :
默认情况下,这将获取具有空白名称的已过期和已删除的域名,因为我们没有提供域名:
让我们检查一下help选项,看看如何使用domainhunter:
让我们搜索一个关键字来查找与指定关键字相关的域。在本例中,我们将使用packtpub 所需的关键字:
我们刚刚发现该域名wwwpacktpub.com可用。让我们在以下域名搜索网站上确认其可用性:
这证实了该域名在 上可用name.com,甚至dot.tk价格接近 8.50 美元:
让我们看看是否可以找到具有不同 TLD 的免费域名:
我们发现上述域名都是免费注册的,我们选择wwwpacktpub.tk如下:
我们可以再次检查可用性www.packtpub.tk并免费获取此域名:
在上面的设置中,我们需要在使用 DNS 字段中设置重定向器的 IP 地址:
让我们回顾一下购买情况然后结账:
我们的订单现已确认。我们刚刚获得 wwwpacktpub.tk:
让我们执行dig命令来确认我们对此的所有权:
该dig命令解析wwwpacktpub.tk为我们的重定向器的 IP。现在我们已经获得了这个,我们可以在 stager 创建中设置域并从中获取反向连接wwwpacktpub.tk:
在本文中,我们学习了重定向器的基础知识,还介绍了如何以安全的方式混淆 C2,以便保护我们的 C2 不被蓝队检测到。本文还介绍了短期和长期 C2 等等。要了解有关高级渗透测试工具的更多信息,请查看 Himanshu Sharma 和 Harpreet Singh 撰写的《动手红队战术》一书 。https://www.packtpub.com/networking-and-servers/hands-red-team-tactics
原文始发于微信公众号(Ots安全):使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论