我们知道hack都会使用C2(命令和控制)控制受感染的主机系统。这些C2中的大多数都由大型僵尸网络控制,Hack只是简单地使用其中一些来访问系统,使他们可以转到另一台设备中去或窃取凭据并获得对系统的“合法”访问。
我已经看到或听说过许多类型的C2,例如IRC,p2p,DNS,Twitter,Gmail,ICMP等。C2隐藏流量家族越来越大,并且实现C2的方式每天都变得更具创造性。我很少为听到任何新的C2感到惊讶。直到有一天与John Strand进行了交谈,他提到了可以使用HTTP 404 – 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”(https://www.blackhat.com/docs/eu-15/materials/eu-15-Bureau-Hiding-In-Plain-Sight-Advances-In-Malware-Covert-Communication-Channels-wp.pdf),另一个是“ Hiding Malicious Traffic Under the HTTP 404 Error”(作者:He Xu)(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 Not Found来控制系统并获得系统的响应。
方法
00×1
第一部分是通过添加和配置.htaccess文件来设置Web服务器,以将任何错误页面定向到我选择的.html文件(下面将其重定向到evil.html)。
作为攻击者,此Web服务器可以是他们自己的服务器或他们控制的Web服务器,也可以是他们具有“访问权”的服务器(肉鸡)。设置站点并设置HTTP 404 – File Not Found 后 ,我们继续进行第二部分,即 C2 服务器。
00×2
这是代码中最简单的部分。我们把要对受感染的系统执行的命令通过base64对进行编码,将它放入带有预定义标头的html注释中,然后包装到html文件中。在最后将它覆盖到HTTP 404 – File Not Found的html文件中。 主要我输入新命令,就会覆盖到HTTP 404 – File Not Found文件中。对于我的测试,我设置并控制了Web服务器,我们可以轻松地使用FTP上传新的html文件。
00×3
下一步是创建 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页面看起来好像相同。
但是,如果我们查看源代码,则可以看到页面底部有一个新注释。
好的,我们解码TmV3LUl0ZW0gLU5hbWUgRW1wdHlGaWxlLnR4dCAtSXRlbVR5cGUgRmlsZQ ==
我们可以到:
New-Item -Name EmptyFile.txt -ItemType file
总之,这是一个非常强大的工具,并且容易安全人员被忽略。
这介绍一个有趣的小项目:https://github.com/theG3ist/404
翻译文章
原文:https://www.blackhillsinfosec.com/how-to-build-a-404-page-not-found-c2/
翻译:李木
最后跟微信公众号Bypass道个歉,本公众号在昨天发表的文章《探测域内存活主机和端口扫描》中的端口部分信息没必允许使用了Bypass整理的文章,虽然本人在公众号中标注了来源,但没经允许就是没经允许,没什么好说的,在此给Bypass公开道歉!
如果有想了解到常见端口渗透测试方便的知识的话,可以看以下连接!或者等我整理出来,其实都大同小异,就那点东西…
https://www.cnblogs.com/wjw-zm/p/11803681.html
https://www.soul666.com/jishu/149.html
https://www.secpulse.com/archives/54880.html
公众号
https://mp.weixin.qq.com/s/D0saodqe3ocBfXDQF6PG8g
https://mp.weixin.qq.com/s/D0saodqe3ocBfXDQF6PG8g