前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用HTTP 404-File Not Found的C2

使用HTTP 404-File Not Found的C2

作者头像
洛米唯熊
发布2020-07-28 11:21:08
9670
发布2020-07-28 11:21:08
举报
文章被收录于专栏:洛米唯熊洛米唯熊

0x00前言

我们知道hack都会使用C2(命令和控制)控制受感染的主机系统.这些C2中的大多数都由大型僵尸网络控制,Hack只是简单地使用其中一些来访问系统,使他们可以转到另一台设备中去或窃取凭据并获得对系统的“合法”访问.

我已经看到或听说过许多类型的C2,例如IRC,p2p,DNS,Twitter,Gmail,ICMP等.C2隐藏流量家族越来越大,并且实现C2的方式每天都变得更具创造性.我很少为听到任何新的C2感到惊讶.直到有一天与John Strand进行了交谈,他提到了可以使用HTTP404 – File Not Found的C2 .这…引起了我的注意.作为安全专家,我知道这些以前C2技术中的大多数很容易被检测和阻止.

尽管我知道HTTP 404 – File Not Found 会更难检测,但过滤/阻止主机访问HTTP 404 –File Not Found 很容易.但是,有多少安全设备会阻止HTTP 404?事实上有多少安全设备可以监视和检看网站HTTP 404?大多数的安全工程师或普通人都会像我一样,在浏览网络时, 通常会忽略或跳过HTTP 404.在检测流量时,都会是主要是在寻找流量中的异常情况,例如流量流向Internet上的奇怪地方或其他类似性质的东西,而经常忽略或跳过HTTP 404的流量

随着我的兴趣激发了,我开始做一些研究,看看是否有人使用这种技术攻击,是否有人已经检测到这种技术的C2型.

我发现了几篇类似文章,一篇题为“隐藏在众目睽睽下” 由皮埃尔-马克局和基督教迪特里希的“Hiding in Plain Sight”

代码语言:javascript
复制
https://www.blackhat.com/docs/eu-15/materials/eu-15-Bureau-Hiding-In-Plain-Sight-Advances-In-Malware-Covert-Communication-Channelswp.pdf

另一个是“ Hiding Malicious Traffic Under the HTTP 404 Error”(作者:HeXu)

代码语言:javascript
复制
https:/ /blog.fortinet.com/2015/04/09/hide-malicious-traffic-under-the-http-404-error

在He Xu的文章中,他们实际上检测出来并见证了HTTP 404 – File Not Found C2,文章涵盖了他们发现的内容和技术发生的情况.简单来说,受感染的设备可以连接到此Web服务器,但是会返回HTTP 404 – File Not Found .该HTTP 404 看起来是正常的,但是从源码上的注释我们可以看到包含base64编码的命令..这些命令是指令将自身复制到USB驱动器,下载并执行可执行文件以及最后更改某些注册表项的说明.

根据以上的操作方式,我决定创建自己的HTTP 404 – File Not Found C2.尽管我不仅希望受感染的系统获得命令并运行这些指令,我希望它能够通过HTTP 404 – File NotFound来控制系统并获得系统的响应.

0x01方法

第一部分是通过添加和配置.htaccess文件来设置Web服务器,以将任何错误页面定向到我选择的.html文件(下面将其重定向到evil.html)

作为攻击者,此Web服务器可以是他们自己的服务器或他们控制的Web服务器,也可以是他们具有“访问权”的服务器(肉鸡).设置站点并设置HTTP 404 – File NotFound 后 ,我们继续进行第二部分,即 C2 服务器.

0x02

这是代码中最简单的部分.我们把要对受感染的系统执行的命令通过base64对进行编 码,将它放入带有预定义标头的html注释中,然后包装到html文件中.在最后将它覆盖到HTTP 404 – File Not Found的html文件中. 主要我输入新命令,就会覆盖到HTTP 404 –File Not Found文件中.对于我的测试,我设置并控制了Web服务器,我们可以轻松地使用FTP上传新的html文件.

0x03

下一步是创建 C2 客户端.然后创建适用于Windows和Linux的命令来控制客户端,以及命令执行返回我们服务器的响应.

受感染的系统必须请求某个域. 在这里我使用了静态网址.

过程就是:

受感染的系统一旦从网站请求页面,将首先确定它是否是404页面.如果不是404页,忽略并等待下一个请求发出.

如果是404页面,则检查其源代码中是否包含注释.如果找到注释,则检查注释中的标题是否与预定义的标题匹配.如果标题匹配,则解码base64字符串并执行命令.

这部分代码有点困难,因为我不仅要在受感染的系统上执行命令,同时还希望能够向Linux和Windows提供基本通用命令.最后,我还希望将已执行命令的结果发送回服务器.

我在 C2 解决此问题的方法是确定受感染的系统是Linux还是Windows.在Windows 上使用PowerShell执行一些与Linux中相同的基本命令,然后将其作为在base64中重新编码的PowerShell脚本执行.所以系统是Linux也能像操作系统是Windows一样执行命令.

然后,受感染的系统会将命令的结果发送回侦听服务器.为简单起见,我只使用了python服务器监听器.最后,我为受感染的系统发送的命令的结果创建了 C2 接收器.这只是一个等待连接的基本python服务器.

在我的演示中,我使用Windows 10计算机作为“受害者”,使用Ubuntu作为Web服务器, C2 控制器和 C2 接收器.

打开网站,你可以看到的是我们做的Office 365登录页面.

如果一旦我转到一个不存在的页面,我应该会收到404错误.

我们看到源码中没有任何注释,只有一个基本网页.

我们启动C2服务器并等待命令

C2接收器打开端口并等待传入连接.

然后,在受害计算机上运行C2客户端(前台不显示,文件启动然后在后台运行)

现在我们可以执行一个简单的命令,例如ls

如我们所见,c2客户端将桌面的内容(因为我们使用了ls命令)发送回到我们c2服务器.

下面,我将创建一个文件,列出内容,然后显示404页和该页的源代码. 在C2服务器上,我能够运行命令,所以我使用PowerShell命令并在当前目录(桌面)中.

创建了一个空文件

C2接收服务器显示文件已创建.

现在我们可以看到我从C2服务器创建的文件在桌面上显示了

404页面看起来好像相同.

但是,如果我们查看源代码,则可以看到页面底部有一个新注释.

好的,我们解码

代码语言:javascript
复制
TmV3LUl0ZW0gLU5hbWUgRW1wdHlGaWxlLnR4dCAtSXRlbVR5cGUgRmlsZQ ==

我们可以到:

代码语言:javascript
复制
New-Item -Name EmptyFile.txt -ItemType file

总之,这是一个非常强大的工具,并且容易安全人员被忽略.

这介绍一个有趣的小项目:

代码语言:javascript
复制
https://github.com/theG3ist/404

0x04原文地址

https://www.blackhillsinfosec.com/how-to-build-a-404-page-not-found-c2/

翻译:李木

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洛米唯熊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档