-
UID:17777
-
- 注册时间2007-05-02
- 最后登录2025-05-02
- 在线时间18634小时
-
- 发帖786294
- 搜Ta的帖子
- 精华0
- 飞翔币209891
- 威望215717
- 飞扬币2613068
- 信誉值8
-
访问TA的空间加好友用道具
- 发帖
- 786294
- 飞翔币
- 209891
- 威望
- 215717
- 飞扬币
- 2613068
- 信誉值
- 8
|
1. 样本信息文件名称:C:UsersAdministratorDesktopb.exe文件大小:262913 字节修改时间:2017年2月22日 14:40:01MD5 :0C1BC5B8A8DFE0424030D419AB5C2F8ASHA1 :1BDF29827DADA442357C482A9E086DC3AE166728CRC32 :F3CDDB62PEiD识别不出编译语言和编译器版本,应该是经过加壳的文件。 2. 病毒流程 主要线程:1.关闭某些进程,如sqlserver.exe,这样才能加密并删除数据库文件。2.创建N个线程,扫描磁盘文件,获取可加密文件列表。3.创建N个线程,用于加密文件,具体线程数根据本机的配置。4.创建一个隐藏窗口,用于通知加密完毕。5.修改主机桌面背景,打开提示文件并显示。6.主线程等待执行完上述操作后,等待窗口结束。3. 流程分析3.1 自解压和IAT重建病毒使用了加壳技术对自身进行了加密,同时还进行了混淆,增加了静态分析的难度,这里我跳过了壳的分析,手动脱壳到病毒的OEP。 这时候把程序dump下来会发现系统的API都看不到,因为程序并没有直接调用API,而已通过一个全局函数数组,通过上图函数加载函数地址并写入的全局函数数组中。程序其他地方直接调用全局函数数组中的函数。这里dump有两个选择,一个是直接dump,不过因为混淆,增加静态分析的难度,另外一个做法就是执行完混淆还原部分,然后把混淆的函数调用给nop掉,接着dump下来,然后通过工具修复了IAT表,这样方便我后续使用IDA进行静态分析(本文采用了第二种)。3.2 解密配置信息接着程序运行起来了,程序获取自己的模块句柄和文件路径后,接着使用RC4算法解密获取配置信息,这部分同一放在一个函数中(另命名为f_DecryptConfigInfo)执行,该部分配置信息控制病毒后续行为和操作。 解密后的控制信息是一个json格式的文本,包含以下部分:3.2.1 黑名单包含感染文件类型黑名单、某些特定文件和特定目录以及部分使用地区。 3.2.2 关闭进程可以看出主要是某些大众应用和数据库服务进程,关闭这些进程的目的是为了避免文件被占用导致加密操作失败。 3.2.3 加密设置包含加密文件后缀,文件大小,是否启动多线程,核心线程数等等,不过部分参数会根据感染主机的情况进行适度调整。 3.2.4 RSA公钥 内容是经过了Base64加密后的内容,结果也验证猜想正确。下面是解密后的内容: 3.2.5 用户提示这里有及部分组成,分别是语音提醒,壁纸更换提醒以及用户引导操作帮助文件,这里看出作者实在实在是用心良苦啊。 帮助文件也是使用了Base64进行了加密,解密后内容是HTML文件,具体样式如下: 3.2.6 服务器服务器这块有两部分,一部分是接收感染主机的信息和通知。另外一部分是给用户用于交付勒索款的。 3.2.7 白名单特别关照的目录。 3.3 读取机器信息3.3.1 读取机器的GUID病毒从注册表的HKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptography中读取值名称为MachineGuid的值,本测试机器的GUID值为:98abd045-77bf-4e0f-b5d2-3c805156c566这里的以‘-’为分隔符,前4个字符串都有特定的用途:- 病毒创建临时目录%temp%98abd045
- 在前面的临时目录中创建两个文件,分别是77bf和4e0f,这两个都是后面加密算法用到的key。
- b5d2作为加密文件的后缀名
3.3.2 读取电脑名读取电脑名,然后和字符串CERBER_CORE_PROTECTION_MUTEX通过计算生成类似下面格式的互斥对象名: shell.{3817596D-ADF3-6E49-63ED-931789067A56} 3.4 网络信息发送在进行加密前,会发送感染主机的信息,信息的格式见配置文件的data_start,同样使用了Base64进行加密,解密后内容如下:{MD5_KEY}{PARTNER_ID}{OS}{IS_X64}{IS_ADMIN}{COUNT_FILES}{STOP_REASON}{STATUS}测试环境win7 32位系统生成的内容如下:"e80ab90e699a 00064 7 0 1 0 0 0"然后会对上面的字符串进行MD5加密,得到的MD5串为:808A4018E134F0629A88F82940969DF9然后取前2字节'80',作为校验码,服务器使用它来验证收到上面部分的正确性,合成字符串'e80ab90e699a0006470100080'发送为服务器。3.5 加密模块3.5.1 加密文件名文件文件名是由一个函数统一生成的,和原始文件并没有任何规律可言,后缀是3.3.1中所说的GUID的第4部分,本测试机为b5d2.3.5.2 加密文件内容从配置信息加载扫描配置,然后对每个磁盘创建一个扫描线程,获取符合加密条件的文件列表。 接着准备加密了,在加密之前会针对机器情况调整加密线程数,同时关闭部分进程,保证加密的运行。 接下来就是文件加密,加过过程有点蛋疼。 为了减少码字,我画了一张渣渣图,思路大致是清楚的。 4. 总结算是补充完整了,本来应该是上个星期发的,不过生病状态不太好,所以晚了点。有些细节没有深入,有兴趣的朋友可以自行研究。嗯,这种加密的病毒感觉真蛋疼。本人技术有限,如果分析有问题,请直接问指出来,谢谢 ^_^。
|