使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

admin 2024年8月16日14:24:52评论22 views字数 4527阅读15分5秒阅读模式

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

重定向服务器负责将所有通信重定向到 C2 服务器。让我们用一个简单的例子来探索重定向器的基础知识。假设我们已经配置了团队服务器,并且正在等待端口上的传入 Meterpreter 连接8080/tcp。此时,有效载荷已传递到目标并已成功执行。
本文摘自 Himanshu Sharma 和 Harpreet Singh 合著的《 实战红队战术》  。本书介绍了使用 Cobalt Strike 进行后期利用的高级方法,并向您介绍了命令和控制 (C2) 服务器和重定向器。
在本文中,您将了解重定向器的基础知识、安全混淆 C2 的过程、域前端等等。
接下来会发生的事情如下:
在执行有效载荷时,目标服务器将尝试通过端口连接到我们的 C2 8080/tcp。连接成功后,我们的 C2 将发送第二阶段如下内容:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

然后将打开一个 Meterpreter 会话,我们可以使用 Armitage 访问它:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

但是,目标服务器的连接表将包含我们的 C2 IP。这意味着监控团队可以轻松获取我们的 C2 IP 并将其阻止:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

以下是当前的情况。为了帮助理解,以建筑格式显示:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

为了保护我们的 C2 不被烧毁,我们需要在 C2 前面添加一个重定向器。请参考下图来清楚地了解这个过程:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

这是目前我们的重定向器和 C2 的 IP 信息:

  • 重定向器 IP:35.153.183.204

  • C2 IP:54.166.109.171

假设重定向器服务器上安装了 socat,我们将执行以下命令将传入端口上的所有通信转发8080/tcp到我们的 C2:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们的重定向器现已准备就绪。现在让我们生成一行代码,并进行一些小改动。这一次,将lhost设置为重定向器 IP,而不是 C2:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

执行有效负载后,连接将从目标服务器发起,并且服务器将尝试连接重定向器:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们现在可能会注意到下图有所不同,因为源 IP 是重定向器而不是目标服务器:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们来看一下目标服务器的连接表:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

连接表中没有我们的 C2 IP,蓝队也没有。现在重定向器运行正常,这个 C2 重定向器设置可能存在什么问题?

让我们对 C2 执行端口扫描以检查可用的开放端口:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

从上面的截图中我们可以看到,端口8080/tcp在open我们的 C2 上。这意味着任何人都可以尝试连接到我们的监听器以确认它的存在。为了避免这种情况,我们应该以某种方式配置我们的 C2,以保护它免受外部侦察 (recon) 和攻击。

安全地混淆 C2

以图表形式展示,我们当前的 C2 配置如下:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

如果有人尝试连接到我们的 C2 服务器,他们将能够检测到我们的 C2 服务器在端口上运行 Meterpreter 处理程序8080/tcp:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

为了保护我们的 C2 服务器免受外部扫描和侦察,让我们设置以下简单防火墙 ( UFW ) 规则集,以便只有我们的重定向器可以连接到我们的 C2。首先,执行以下 UFW 命令为 C2 添加防火墙规则:

sudo ufw allow 22sudo ufw allow 55553sudo ufw allow from 35.153.183.204 to any port 8080 proto tcpsudo ufw allow out to 35.153.183.204 port 8080 proto tcpsudo ufw deny out to any

需要执行给定的命令,结果如下面的屏幕截图所示:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

此外,执行以下ufw命令为重定向器添加防火墙规则:

sudo ufw allow 22sudo ufw allow 8080

需要执行给定的命令,结果如下面的屏幕截图所示:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

一旦规则集到位,就可以描述如下:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

如果我们现在尝试对C2进行端口扫描,端口将显示为filtered:如下所示。

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

此外,我们的 C2 现在只能从我们的重定向器访问。让我们通过从重定向器服务器对我们的 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 重定向器。

隔离的红队基础设施设置看起来应该是这样的:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

来源: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 服务器。

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

来源:https://payatu.com/wp-content/uploads/2018/08/dumb_pipe_redirection123.png

让我们执行下图中给出的命令来配置一个Dumb pipe重定向器,它将重定向到我们端口上的 C2 8080/tcp:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

以下是我们可以执行以使用 iptables 执行哑管道重定向的命令:

iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPTiptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 54.166.109.171:8080iptables -t nat -A POSTROUTING -j MASQUERADEiptables -I FORWARD -j ACCEPTiptables -P FORWARD ACCEPTsysctl net.ipv4.ip_forward=1

需要执行给定的命令,结果如下面的屏幕截图所示:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

(忽略sudo此处的错误。这是因为我们更改了主机名而发生的)

使用 socat 或 iptables,结果将是相同的,即重定向器接口上的网络流量将被转发到我们的 C2。

Filtration/smart 重定向

过滤重定向(也称为智能重定向)不会盲目地将网络流量转发到 C2。智能重定向将始终根据红队定义的规则处理网络流量,然后再将其转发到 C2。在智能重定向中,如果 C2 流量无效,则网络流量将被转发到合法网站,或者只是丢弃数据包。只有当网络流量用于我们的 C2 时,重定向才会正常工作:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

要配置智能重定向,我们需要安装 Web 服务并对其进行配置。让我们使用以下命令在重定向器上安装 Apache 服务器sudo apt install apache2 :

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们还需要执行以下命令以便能够重写 Apache 模块,并启用 SSL:

sudo apt-get install apache2sudo a2enmod ssl rewrite proxy proxy_httpsudo a2ensite default-ssl.confsudo service apache2 restart

以上就是需要执行的命令,执行结果如下图所示:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们还需要从其配置中配置Apache:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们需要查找Directory指令以便将其更改为AllowOverride,None以便All 我们可以使用自定义.htaccess文件进行 Web 请求过滤。

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们现在可以设置虚拟主机设置并将其添加到wwwpacktpub.tk(/etc/apache2/sites-enabled/default-ssl.conf):

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

在此之后,我们可以用域生成有效负载,以wwwpacktpub.tk获取连接。

域名前置

根据 https://resources.infosecinstitute.com/domain-fronting/:

域名前置是一种旨在规避针对某些域名实施的审查的技术(不符合公司政策的域名可能会受到审查,也可能是由于域名声誉不佳而导致的)。域名前置在 HTTPS 层工作,并在请求的不同层使用不同的域名(稍后会详细介绍)。对于审查者来说,通信似乎发生在客户端和允许的域之间。但实际上,通信可能发生在客户端和被阻止的域之间。

要开始使用域前端,我们需要获取与目标组织类似的域。要检查域,我们可以使用该domainhunter工具。让我们克隆存储库以继续:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

在继续之前,我们需要安装一些必需的 Python 包。这可以通过执行pip install -r requirements.txt 以下命令来实现:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

python domainhunter.py安装完成后,我们可以通过执行以下命令来运行该工具 :

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

默认情况下,这将获取具有空白名称的已过期和已删除的域名,因为我们没有提供域名:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

让我们检查一下help选项,看看如何使用domainhunter:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

让我们搜索一个关键字来查找与指定关键字相关的域。在本例中,我们将使用packtpub 所需的关键字:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们刚刚发现该域名wwwpacktpub.com可用。让我们在以下域名搜索网站上确认其可用性:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

这证实了该域名在 上可用name.com,甚至dot.tk价格接近 8.50 美元:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

让我们看看是否可以找到具有不同 TLD 的免费域名:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们发现上述域名都是免费注册的,我们选择wwwpacktpub.tk如下:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们可以再次检查可用性www.packtpub.tk并免费获取此域名:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

在上面的设置中,我们需要在使用 DNS 字段中设置重定向器的 IP 地址:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

让我们回顾一下购买情况然后结账:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

我们的订单现已确认。我们刚刚获得 wwwpacktpub.tk:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

让我们执行dig命令来确认我们对此的所有权:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

该dig命令解析wwwpacktpub.tk为我们的重定向器的 IP。现在我们已经获得了这个,我们可以在 stager 创建中设置域并从中获取反向连接wwwpacktpub.tk:

使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

在本文中,我们学习了重定向器的基础知识,还介绍了如何以安全的方式混淆 C2,以便保护我们的 C2 不被蓝队检测到。本文还介绍了短期和长期 C2 等等。要了解有关高级渗透测试工具的更多信息,请查看 Himanshu Sharma 和 Harpreet Singh 撰写的《动手红队战术》一书 。https://www.packtpub.com/networking-and-servers/hands-red-team-tactics

原文始发于微信公众号(Ots安全):使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月16日14:24:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用重定向器安全地混淆命令和控制 (C2) 服务器 [教程]https://cn-sec.com/archives/3072359.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息