0x00前言
此样本是GlobeImposter勒索病毒早期版本,它会加密磁盘文件并篡改后缀名..doc。由于其采用高强度非对称加密方式,受害者在没有私钥的情况下无法恢复文件。
分析工具:DIE、火绒剑、IDA、OD
分析环境:Win7 x86 Vmware
0x01样本信息
File name: lGGtcrugME.exe
File Size: 155 KB
File Type: Win32 EXE
File Version:1.0.0.1
MD5: 2908715EEC754ABA1AD21414B23CAFB6
SHA1: 4AF27F4B95F29F877D0ABB1167E6B1148C1849BD
CRC32: 64CAEB77
Packers: none
0x02样本分析
一、 lGGtcrugME分析
申请了一段大小0x8668的堆内存,并将经加密的shellcode数据复制到该内存中,然后完成解密,修改堆内存的保护为可读可写可执行,最后执行这段shellcode:
此处解密ShellCode:
用的应该是TEA算法:
二、 shellcode分析
获取进程环境块(PEB),使用PEB数据结构来定位基址的加载Kernel32.dll。
通过加载Kernel32.dll,获取GetProcAddress和LoadLibraryA。
通过GetProcAddress和LoadLibraryA加载需要的各种API。
申请内存,释放PE,修改0x400000属性。
将PE头拷贝至0x400000。
将PE数据区段拷贝至0x401000(内存对齐 0x1000)。
循环遍历并加载dll。
循环遍历导入函数并获取函数地址,修复导入地址表(IAT)。
最后 JMP EAX 跳转到 OEP 执行 PE:
三、PE文件分析
复制自身至 C:\Users\xxx\AppData\Roaming,创建 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\BrowserUpdateCheck 键值。
遍历进程,获取进程名,通过 taskkill /F /T /PID 命令强杀进程名中含有 “sql”、“outlookt”、“ssms”、“postgre”、“1c”、“excel”、“word”的进程。
在 C:\Users\xxx\AppData\Local\Temp 创建.bat批处理脚本,删除卷影,清理远程连接记录,删减日志记录。
启动cmd,完成自删除。
1.加密用户ID
通过 sub_408F24 计算出 黑客公钥(hacker_rsa_pub) 的 sha256:AE09C984DF6E74640B3271EADB5DD7C65FDE806235B2CDA478E0EFA9129C09E7,以此作为文件名,在 C:\Users\Public 创建文件,写入user_rsa_pub + userID.
通过RSA生成用户公钥(user_rsa_pub)用户私钥(user_rsa_pri),将 用户公钥(user_rsa_pub) 写入hash名文件,并将密钥和字符串进行拼接 rsa.P+rsa.Q+“..doc.Read___ME.html...doc.P:\00Read___ME.html...doc.P:\00\!!!!!” 使用 黑客公钥(hacker_rsa_pub) 加密得到 userID,最后将userID也写入文件。
2.加密文件
过滤驱动器,创建加密线程。
遍历当前驱动分区,过滤不需要加密的文件(毕竟勒索病毒,还要收钱呢,玩玩不能把电脑搞死了),过滤勒索相关文件,对只读文件修改属性完成加密。
获取通用唯一识别码(UUID),并得到文件大小并做运算,作为AES的前置准备。
利用文件大小运算值和UUID获取AES key。
利用key,AES完成对文件内容加密,将加密后的内容写入文件(加密文件第一部分),继续追加两段hash值(加密文件第二、三部分),继续用 黑客公钥(hacker_rsa_pub) 加密UUID,写入加密的文件(加密文件第四部分),最后再写入userID(加密文件第五部分)。
0x03总结
用户最好能安装杀毒软件,并保持监控开启,且能及时更新病毒库,毕竟老的勒索病毒各大安全厂商还是能防御的。对于新型勒索病毒那就需要用户提高安全意识,不要随意打开来源不明的文件,也不要随意点击可疑的链接,并对重要的数据文件定期进行非本地备份。