一、BMW病毒BIOS部分
增加了ISA模块BIOS部分,名为HOOK.ROM,作用主要是检测MBR部分是否被恢复。如果发现MBR部分已被修复,就将BIOS内的病毒代码约 14个扇区写入MBR中,导致用户反复格式化、高格低格,或重新分区都无效。
二、BMW病毒MBR部分
MBR部分病毒代码执行后,会从第2个扇区开始读6个扇区的病毒代码到0X7C00处,然后跳至该处执行,然后读取第7个扇区中的备份 MBR到内存中,验证扇区的有效性;
通过验证后,读取分区表中的引导扇区所在的扇区到 0X7C00处,验证引导分区的有效性;
通过验证后,判断引导分区的类型,目前该病毒支持NTFS和 FAT32,根据不同的分区类型进行不同的处理,再经过解析文件系统找到文件所在扇区,找到相应的Windows系统文件读取PE信息判断其是否被感染过。(XP/2003系统为Winlogon.exe,Win7/Vista系统为Wininit.exe)
如果Windows系统文件已被感染,则在屏幕上显示"Find it OK!",然后调入原始MBR,跳到原始MBR处执行;如果Windows系统文件没有被感染,则进行PE感染写扇区,之后在屏幕上显示"Find it OK!",然后调入原始MBR,跳到原始MBR处执行。
三、BMW病毒Windows部分(Winlogon和Wininit文件执行感染)
以Winlogon.exe为例进行说明: 毕业论文http://www.751com.cn/
由于病毒修改了该文件入口点,当文件执行时首先执行加密过的病毒代码,运行时动态解码。
病毒代码解密后加载指定文件,创建病毒调用CreateThread创建线程,同时跳回原始入口点执行。
在病毒线程里先Sleep10秒,然后调用URLDownloadToFileA从黑客服务器下载一个Downloader到本地,验证文件下载成功后,调用WinExec执行,从而下载运行多种恶意程序;该病毒还会下载驱动,命名为c:\my.sys,由之前的病毒代码通过一系列服务函数来创建加载驱动,完成后该病毒线程进入无限Sleep状态。
c:\my.sys 这个磁盘钩子驱动,会在WINLOGON的感染代码里被加载。驱动对 磁盘类驱动disk.sys 进行READ, WRITE ,DEVICEIOCONTROL , 的DISPTACH 进行 hook,防止MBR及相关病毒扇区部分被读取 ,目前看来360开机的时候不一定能拦截驱动的加载,没测试金山是否能拦截。如果驱动被加载,可能导致,无法读取MBR里的数据。所以需要进急救箱强力模式下,干掉那驱动后重启后,用专杀检测才行。
还有确保 winlogon被修复了。其实只要修复被感染的winlogon,也可以,因为病毒的所有核心代码都在感染的 winglon里,如果修复了他, 同时保持病毒的感染标志,则即使不修复MBR,和bios 也毫无影响。