瑞星“超级火焰”病毒(Worm.Win32.Flame)技术分析报告
2012-06-05 13:28:33三、技术细节
“超级火焰”病毒的注入方法
“超级火焰”病毒注入DLL的方式是采用常规的远程线程的方法。首先通过OpenProcess获取目标进程句柄,然后通过WrietProcessMemory向目标注入代码,最后通过CreateRemoteThread创建远程线程实现DLL的加载。
步骤
1. 在目标进程中注入模拟DLL卸载的ShellCode
2. 在目标进程中注入模拟DLL加载的ShellCode
3. 在目标进程中注入远程线程所要用到的数据
4. 创建远程线程,线程地址为模拟加载DLL的ShellCode起始地址,线程参数为注入到目标中的数据的起始地址
特点
1. Shellcode构造得很精妙
2. 隐藏DLL模块,通用性好
3. 内存加载,不会产生文件
4. 手动模拟DLL加载,而且还模拟DLL卸载
注入详细分析
经过分析,“超级火焰”病毒中注入DLL功能模块有两套,功能基本相同,只是在代码上有少许不一样,猜测应该是在编译的过程中有些地方没有使用最新的注入模块所造成的。
模块(一)
模块(二)
模拟系统DLL加载的功能代码分析
该功能代码在“超级火焰”病毒中发现有两个版本,一个大小为0x70C字节,另一个版本是0x603字节,经分析发现两个版本的代码实现的步骤功能相似,只是在代码上有所差别。实现功能如下:
1) 通过参数指定的配置数据中找到是否要借用系统的shell32.dll映像名来隐藏自己,如果指定,则映射shell32.dll,并将其内存数据全部清零,将要加载的PE文件按内存粒度对齐后拷贝到shell32.dll所处的那块内存中。
2) 解析PE结构,处理导入表,处理重定位表,调用新映射的病毒代码的入口点(从PE头中取得)。
3) 加载msvcrt.dll,取得当前进程的PEB,通过基地址从LDR链表中找到msvcrt.dll所在的链表入口,修改掉该链表中标记的DLL入口地址指向病毒代码,病毒线程退出后,Hook DLL入口的代码会获得执行权,实现病毒DLL的卸载。
四、 总结
从目前分析的情况看,“超级火焰”是一款从事间谍活动的病毒。它盗取的信息包罗万象,包括各种文档、截屏、录音、按键信息等,其复杂度大大超过目前已知的所有病毒。
5/5 首页 上一页 3 4 5