用Apache mod_rewrite来保护你的Empire C2

背景

由于红色团队(red teamers)发布了红色团队维基基础架构(Red Team Infrastructure Wiki),圣诞节似乎更早的来到了。它首次出场于Jeff Dimmock和Steve Borosh的红色团队基础架构的演讲。在设计和保护您的基础架构时,我甚至无法研究wiki这样的无价之宝。请您阅读这篇文章,来领略我的意思。

Wiki强调的一个关键设计因素是在您的基础设施设置中使用重定向器。重定向可以应用于基础架构的几乎所有功能 服务有效载荷,避免IR和保护您的C2等等。丢失C2服务器的成本可能会非常高,因此应用重定向来保护C2服务器应该是您设计过程中的首要任务。Jeff Dimmock已经写了一篇关于用Apache mod_rewrite重定向保护Cobalt Strike C2流量的详细文章,Julian Catrambone写了一个很酷的脚本来自动化过程。
请允许我在这里喋喋不休地谈论重定向器并学习他们一些伟大的经验。

 

问题前引

“经典的”C2服务器设置如下所示:
![](https://p3.ssl.qhimg.com/t011322edc1dab81682.png)
问题在于你的C2服务器是完全暴露的,如果它被损坏,你将别无选择的放弃并重新开始建立新的基础设施。而解决方案正是使用C2重定向。

 

重定向

一般来说,流量重定向可以通过两种方式完成:

 

Dumb Pipe Redirection:


所有通过您的重定向器的流量都会转发到您的C2服务器。
这种重定向有一些优点:您的C2服务器的真实位置没有显示。
不足之处在于蓝色团队很容易识别可疑活动,因为来自任何防御性解决方案或好奇事件响应者的所有不需要的流量都会被转发到您的C2,并且如果您的某些C2服务器端指标引发了任何问题,那么您可能很快就会使自己处于一个麻烦的境地。

 

Conditional Redirection:


条件重定向允许您使用非常个性化的参数来配置重定向器,以便在将所有传入流量转发到其目标之前检查所有传入流量。这意味着你可以配置你的重定向器,只允许你想要通过你的C2服务器的流量,并将所有不需要的流量重定向到你选择的另一个目的地,例如可能会欺骗你的评估的任何流量。

 

Apache mod_rewrite

Apache mod_rewrite是一个强大的apache web服务器模块,他允许我们使用条件重定向去保护我们的Empire C2服务器。Jeff Dimmock已经写了一篇惊艳的博文去展示mod_rewrite是多么有用。
但是在我们开始设置我们的重定向之前,我们需要判断我们的重定向器需要什么样的条件去分辨有效的C2流量

 

Empire通讯文件

Empire通讯文件允许操作者去配置他们的C2流量。举个例子,操作者可以配置他们的Empire C2流量,使他们看起来像正常的web流量,就如搜索引擎流量,视频流,甚至是从已知恶意行为中复制的异常流量。Empire的通信配置文件相当于Cobalt Strike的Malleable C2配置文件。
现在已经有大量的资料可以用来学习通信配置文件和可扩展的C2,所以我不会再详细解释它们。我只提及它们。因为我们的重定向器将使用通信配置文件,所以我们配置我们的Empire C2服务器以确定什么是有效的C2流量,什么不是。
现在,我们可以开始设置我们的重定向了。

 

使用Apache mod_rewrite的Empire C2重定向器

先决条件

我们需要2台服务器; 一个重定向器(Apache webserver)和一个C2服务器(Empire)。我正在使用的设置如下所示:

 

安装Apache并启用mod_rewrite

安装了Apache之后,你需要在你的Apache配置文件中找到下面的代码块(应该位置于/etc/apache2/apache.conf)并将

AllowOverride None

改为

AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

在你编辑了Apache配置文件之后,你将需要启用一些模块并重启你的Apache web服务器。

sudo a2enmod rewrite proxy proxy_http
sudo service apache2 restart

现在mod_rewrite已经奏效了

 

选择一个Empire通信配置文件

最简单去配置Empire通信配置文件的方法就是去你的Empire监听配置中改变DefaultProfile的属性。只需将您选择的通信配置文件粘贴到相应的字段并启动您的监听。我将使用配置Zeus Communication Profile

set Host http:///192.168.56.101:80

set DefaultProfile /metro91/admin/1/ppptp.jpg,/metro91/admin/1/secure.php|Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)|Accept:*/*


注意:”主机”监听器属性应设置为重定向器的IP地址/域。

 

生成mod_rewrite规则

这篇文章将详细的告诉你如何生成mod_rewrite的规则

https://bluescreenofjeff.com/2016-06-28-cobalt-strike-http-c2-redirectors-with-apache-mod_rewrite/

Empire通讯文件的过程是相同的,所以我不需要再解释它。我正在使用的Zeus配置文件的生成规则,如下所示

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(metro91/admin/1/ppptp.jpg|metro91/admin/1/secure.php)/?$
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)?$
RewriteRule ^.*$ http://192.168.56.102%{REQUEST_URI} [P]
RewriteRule ^.*$ http://example.com/? [L,R=302]

 

将规则写入.htaccess文件

一旦你有了你的规则,你可以将它们写入你的web服务器根目录下的.htaccess文件: 在我的vps上目录为/var/www/html
这个站点允许你在将它们放入一个.htaccess文件之前检查你的mod_rewrite规则的语法错误 。
注:.htaccess文件应该配置为644权限。

 

重启web服务器

剩下的就是重启Apache并完成新的更改。

sudo service apache2 restart

 

测试

现在查看我们的重定向器是否正常工作。我用Powershell启动器影响了Windows 7(192.168.56.100)。

这是目标的流量:

如果我们的重定向器收到来自可疑事件响应者浏览其IP的任何无效C2流量,会发生什么情况?

它们被重定向到我们在mod_rewrite规则集中指定的网站(example.com)。

 

Sleight-自动重定向器设置

如果你必须不止一次地做同样的事情,你应该自动化它,对吧?
我写了一个乱七八糟的Python脚本来自动完成上述过程,并为将来节省一点时间。一旦你配置了你的Empire C2并获得了一个服务器/VPS作为重定向器使用,只需下载Sleight,使用管理权限运行它,为它提供一个通信配置文件,按照提示进行操作。
您应该立即启动并运行一个功能强大的Empire HTTP C2重定向器。使用Empire HTTPS重定向在我的待办事项列表中。一旦我做到了,我一定会写博客。下面的图片显示了Sleight使用Comfoo配置文件设置新的重定向器。


注意:Sleight一个快速的配置脚本,用于初始化配置你的vps重定向器,如果你已经有了一个使用自定义mod_rewrite规则集的可操作的Apache服务器,那么使用Sleight只会将Empire通信配置文件转换成mod_rewrite规则,然后将它们添加到你的.htaccess文件中会更好。

 

结论

将重定向应用到您的C2流量只是加强您的基础架构的一个小而关键的步骤。我希望这篇文章很有帮助,但还有很多工作可以做,以防止您的基础架构被事件响应者标记,以及发现违反的任何防御措施的行为。我强烈建议配置你的Empire C2服务器,防火墙只允许来自其分配的重定向器的HTTP流量。 查看Red Team Infrastructure Wiki和下面的资源以获取更多提示。

 

参考文献

https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki
https://speakerdeck.com/bluscreenofjeff/building-a-better-moat-designing-an-effective-covert-red-team-attack-infrastructure
https://bluescreenofjeff.com/tags#mod_rewrite
https://blog.inspired-sec.com/archive/2017/04/17/Mod-Rewrite-Automatic-Setup.html
https://blog.cobaltstrike.com/2014/07/16/malleable-command-and-control/
https://bluescreenofjeff.com/2017-03-01-how-to-make-communication-profiles-for-empire/
http://threatexpress.com/2017/06/convert-cobalt-strike-profiles-apache-mod_rewrite-htaccess-files-support-http-c2-redirection/
http://threatexpress.com/2017/05/empire-modifying-server-c2-indicators/
https://www.legalbutfrownedupon.com/customizing-powershell-empire-to-avoid-detection/

(完)