【网络安全】Xred蠕虫再分析及修复工具编写

image.png

这个病毒很老了,已经有很多前辈分析过该病毒,跟着前辈们的思路深入分析一下,并编写一个清理工具。这是我分析的第一个真实环境下的恶意样本,文中如果有不正确的地方请指正。只需要清理工具的话,直接下滑到
解决方案 一节。

病毒行为总览

代码使用Delphi7编写,后续分析汇编代码发现有对XP系统和更高版本windows做了兼容处理,在这些系统上都可以正确感染,年代久远(我还没用过xp..)。被感染机器的 C:\ProgramData\目录下会有Synaptics目录,其下包含原始的恶意样本,但是图标不固定(图标会更新为最近一次运行被感染exe文件的图标),病毒生成的大部分文件都将其设置为 隐藏文件和系统文件(Exlporer设置显示隐藏文件和系统文件或命令行下attrib即可看到)。


在这里插入图片描述

被感染机器的Desktop、Documents、Downloads目录下的32位EXE文件和xlsx文件都会被掉包,但是用户并不会有察觉,导致文件分享给他人时,大范围感染。

病毒包含很多模块,下面是一个大体功能图,其中和网络连接有关的模块的IOC都已经失效。

在这里插入图片描述

→点击获取网络安全资料·攻略←

2000多本网络安全系列电子书
网络安全标准题库资料
项目源码
网络安全基础入门、Linux、web安全、攻防方面的视频
网络安全学习路线图

蠕虫模块分析

通过 SHGetSpecialFolderLocation和
SHGetPathFromIDListA来获取要感染的目录(清理工具的编写也会通过这种方式)。病毒会获取Desktop、Downloads和Documents的路径并递归感染子文件。

在这里插入图片描述

EXE文件感染分析

对于EXE文件,通过LoadLibrary加载到当前进程(病毒是32位的,所以只感染32位的EXE),根据其资源节“EXEVSNX”的情况,来进行对应的操作,这个资源节内的数据代表着版本号。这个病毒是可以进行版本更新的。


在这里插入图片描述

具体的感染流程如下,思路很简单。将原文件打包到病毒文件的资源节“EXERESX”中,病毒文件的图标被替换为原文件的图标,最后用病毒文件替换原文件。


在这里插入图片描述

在这里插入图片描述

当用户运行被掉包的EXE文件时,会释放出资源节"EXERESX"的原文件并运行,这样就对用户来说无感知。

具体的释放流程如下,原文件会被释放到已 ".cache"开头的文件中,文件属性被设置为 系统文件和隐藏文件,即使打开“显示隐藏文件的选项”也不会显示,“显示系统文件”的选项一般用户很少会打开。比较有趣的一点是代码中还会判断 ".cache"开头的文件是否也有资源节"EXERESX"。这是一个重复感染的问题,病毒作者考虑到了这一点。分析整个代码来看,可以发现病毒作者的编程功底很强,很多特殊情况的处理都有考虑到。

在这里插入图片描述
在这里插入图片描述

XLSX文件感染分析

感染xlsx文件是通过COM组件完成的,所以只有安装了Excel的机器才会被正确感染(清理工具也是利用COM组件来进行修复xlsx文件的)。


在这里插入图片描述

大致的感染流程如下,病毒文件的资源节"XLSM"包含包含了恶意宏代码的xlsm文件。


在这里插入图片描述

中间部分大量调用了COM组件中的函数,这里并没有去分析。用动态调试跳过了这些函数,从结果来看就是把原来的xlsx中的数据拷贝到包含宏代码的xlsm文件中。最后替换原了的xlsx文件,并再起目录下生成一个 "~$chac1"文件(这也是一个感染特征,文件夹下有这个文件说明该路径下的xlsx文件都被感染为xlsm文件),这个文件的数据就是病毒文件本身,文件属性也设置了系统文件和隐藏文件。被感染的xlsx文件后缀会变成xlsm,内容和原来一样。
在这里插入图片描述

其它模块分析

这些模块有的已经失效了,并没有太深入的分析。

  • 邮件发送: 使用的是Delphi中封装好的库,使用邮件服务器是
    smtp.gmail.com,账号密码是xredline2@gmail.com;xredline3@gmail.com/xredline2x;xredline3x
    我用gmail登录了一下,已经失效了。发送邮件的目的邮箱地址是 xredline1@gmail.com
    在这里插入图片描述
  • 键盘记录,设置消息钩子,最常用的方式。dll文件在病毒文件资源节"KBHKS"中。(动态调试过程中消息钩子并没有设置,出错原因还有待确认)
在这里插入图片描述
  • 远控模块,功能很少,反弹shell、屏幕截图、文件上下载...
  • 自启动项,直接操作注册表,用的是Delphi封装好的库(Register),使用很简单,不赘述。

IOC整理

文件MD5就不贴了,被感染文件一直都是变化的。


在这里插入图片描述

在这里插入图片描述

解决方案

基于上面的分析,就可以编写修复工具了。工具使用的也是Delphi编写的,为了分析这个病毒,稍微了解了一下Delphi,正好Delphi提供了一个很方便使用图形界面库。cdj68765 前辈也提供了一个命令行版本的修复工具,是用 c#写的。对于把xlsm修复为xlsx,前辈使用了Open_XML_SDK进行修复,这种方式更好。我使用的是和恶意代码一样的方式(COM组件)进行修复,这是一个取巧的方式,但是因为xlsm中的VBProject被加密了,导致通过COM组件的方式无法读取到宏代码进行特征判断后再修复,这里用到了一个折中的方案进行特征判断,下面会说明。

代码和工具下载在这里:https://github.com/forTheBest12138/RepairerForXredWorm

清理效果如下,目前只会扫描 Desktop、Downloads、Documents目录及其子目录。如果不在这些目录下的文件可以手动输入进行修复,目录和文件路径都行。


在这里插入图片描述

代码修复思路说明:

  1. 寻找病毒进程并关闭,这边病毒开机启动后一直后台运行
  2. 清除自启动项,及其对应的文件
  3. 修复EXE文件,判断标准是 EXE文件是否包含EXEVSNX和 EXERESX资源节,原理很简单,不赘述。
在这里插入图片描述

修复XLSX文件,使用COM组件的方式其实就和手动用Excel进行操作是一样的。所以我的思路是将xlsm"另存为/SaveAs"为xlsx格式,就会直接剔除掉宏代码,就和手动用Excel将xlsm保存为xlsx的效果是一样的,对应的代码就是图中标号3的地方。有几个坑点,图中标号1处的代码表示打开xlsm文件时是否执行宏代码,默认为1,即执行,所以一定要设置成3!!!这个选项好像不受宏执行策略的影响。标号2处的代码是来判断xlsm的宏代码中是否有特定的字符串,这样就可以先进行特征匹配判断其是否是被感染的xlsm文件,再进行修复,但是因为xlsm文件中的VBProject被加密,无法读取到宏代码。所以这部分代码无法使用,上面提到的折中的方案就是判断VBProject是否被加密再进行修复。所以特殊情况就是一个正常的xlsm文件有被加密的VBProject就会被误认为是被感染的文件!如果用Open_XML_SDK的话是可以绕过加密的问题,这样就可以达到100%的修复准确率。

在这里插入图片描述

同时还要设置运行访问VBA对象模型的注册表项,否则代码是无权读取xlsm的宏代码的。
在这里插入图片描述

感染过程中生成的".cache"前缀文件和“~$cache1"文件也会清理掉。
在这里插入图片描述

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容