本帖最后由 xiaoxiaoY520 于 2024-7-15 09:26 编辑
起因是逛论坛发现一个坛友的求助:https://www.52pojie.cn/thread-1905922-1-1.html,评论区看了一下没什么有用的信息。该贴下面有坛友评论上报了火绒论坛,我也跟去看了,截图如下,隐去了部分信息,要看自己搜索,嗯。。。一无所获,激起了我的兴趣,决定分析一下。
由于没学习过c#,其中很多加载运行机制不懂,只有dnspy反编译后看代码,分析有误还请坛友指出,反编译后文件有9M,后续有人需要看看的我就找个网盘补放出来,这边就不放了。
基本信息:
无保护,印象里无虚拟机检测(时间比较久了也可能忘了),dnspy可直接反编译。
其中代码涉及到线程管理、安全软件查杀、痕迹清理、文件处理、语言检测、时间检测等。
现象:
VM中运行十分钟,无文件被加密未复现成功,后面有给出猜测原因;宿主机硬盘无限被占用空间,磁盘已爆红,多出40G,检查发现是vm虚拟磁盘增长,确定是病毒行为,具体原因由于技术不行和时间不足未分析出。
部分代码分析:
主程序中有给出文件白名单,检查后缀、查杀的服务和一些主要的目录。
首先检测了特定文件和系统语言(怀疑是这靓仔看不懂这些语言或是不好兼容)来判断是否触发病毒行为: 然后是初始化线程队列(有普通线程和优先线程,也就是遍历文件和加密文件),关闭进程,主要是数据库和安全软件,关闭逻辑粗暴简单,未写异常处理。 前置处理:cmd关闭指定服务(主要是数据库,防止备份恢复),关闭虚拟内存降低系统性能估计是干扰防护,毕竟防护需要占用不少性能;关闭防护删除还原点并禁止休眠(根据这些特征应该是很容易提前发现中毒),不清楚为什么放过anydesk,用anydesk给客户远程解密?不至于吧。
入侵结束后删除一些系统目录下的东西,一些注册表里的东西,主要是最近的记录,例如文件管理器中的最近打开文件记录,删除windows日志、远程桌面连接历史、然后创建任务(10秒后重启系统)并创建删除自身病毒文件的bat脚本执行,成功删除后连同bat文件一起删除,重启完应该就是系统嘎掉的样子了。上传大小有限,只贴部分图了。 讲讲加密:
加密文件使用了chacha20对称加密算法,该加密算法需要一个密钥和一个IV向量,这个毒有意思的就是这两个量的来源,也许是一个恢复文件(可能性渺茫)和防御该毒的突破口。可能也是因为这个点导致我这边没有复现成功。构造这个有意思的文件又太麻烦,需要大量时间去调整,没有精力去搞了,有兴趣的可以去试试。下面说这俩个量的来源,看完就知道恢复真的渺茫。 RSA的多个公钥和勒索信来源于encry_开头的文件信息中,那位老哥中少了这个文件(估计就是这个原因没法复现加密),因为会自动删除,自己构造太麻烦,字节偏移计算头疼: 获取信息后这靓仔会反复覆盖这个文件10次后删除,因为这玩意是关键,有这玩意恢复难度大减。 初始化chacha20,通过上面获得的公钥信息来计算获取加密文件用到的密钥和IV向量然后初始化chacha加密引擎并加密这两个关键信息;这个靓仔搞的还挺严谨,把内存中用过的数组变量都清除了,array5和array6实际就是加解密的关键东西,有这玩意文件就能解了,可惜全清了,返回的两个数据是加密后的,也就是后面要写到文件尾部的数据: 随机字符串实际比较简陋,用到的字符集比较少: 加密函数名字是AES加密,不知道是不是从其他代码框架中改过来的,加密过程是先写入元数据再加密?这怎么解密,没看明白。但是他并不是全文件加密,元数据写在尾部(当然元数据中密钥和IV也是被rsa加密后的),通过判断文件大小来选择加密多少,难道是以这个机制来免除元数据被加密?由此也可推断解密流程:从文件尾读取元数据,用靓仔提供的rsa私钥解密获得chacha20的密钥和IV向量,然后根据加密规则找到加密的文件块解密后覆盖,然后删除结尾元数据,也就恢复了。
应读取的文件块大小逻辑: 整理出来大概是这样,没懂,嗐,仍需努力!!! 值得一提的是我发现其中有部分代码没有被调用到,尤其是自动启动的代码,不知道是作者拷贝的冗余代码还是c#有什么独特的加载机制,望大佬指教补充。
FileEncry.zip
(2.61 MB, 下载次数: 8)
|