原帖:
http://bbs.360safe.com/viewthrea ... p;extra=&page=1
]昨天,几个朋友,包括天月来了,电脑维修工等,在一个帖子里对新 Jvaqhc 拦截各种安全软件及诊断工具的方式发生了质疑。
具体可以参考此帖:
http://bbs.360safe.com/viewthread.php?tid=528816
这种新 Javqhc 病毒,会拦截很多安全工具,发现后即可结束其任务,并删除文件。十分恶劣。
甚至连各种诊断工具都不放过。我们惯用的命令行版都不能幸免。不管是改名,还是删除 360 的 FileVerInfo 签名,都躲不过它的追杀。
我一直也没想出病毒是如何确定的特征码,确定一个进程是 360 安全卫士及相关产品的呢?
经过简单分析,我初步确定了 Jvaqhc 判断的手段,简单说明如下:
病毒首先会判断注册表下:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad 是否存在自身,若不存在,则创建自身的 SODL 值。在 CLSID中注册自己(复制到 System32 下的随机文件名)。
SODL 可以在 360 的诊断报告中观察到。ShellServiceObjectDelayLoad 的作用就是在 Shell 执行一个可执行文件后,延迟加载动态链接库。
这样,当我们运行一个可执行文件,比如诊断报告工具的时候,就会延迟加载这个病毒链接库。
当运行至病毒链接库的入口点后,病毒会创建几个线程,具体没有认真分析,其中有一个线程会获取当前进程的完整路径和文件名。
并通过判断同一路径下的所有文件(用 FindFirstFile 枚举),与自身设定的一个特征库一一对比,如果发现符合特征,就结束当前进程,并删除进程的映像文件。
这些特征库,包括:LibDLL.dat 及其他安全软件的同一目录下的特征文件名。
引用:
KNetWch.SYS
mmskskin.dll
Iereset.dll
KASearch.DLL
Rsaupd.exe
libdll.dat
libclsid.dat
CleanHis.dll
WoptiClean.sys
kakalib.def
kakalib.def
KAVBootC.sys
Ras.exe
iehelp.exe
trojandetector.exe
KAConfig.DLL
KAVPassp.DLL
KKClean.dll
VirUnk.def
AntiActi.dll
FileAnalyser.dll
ollydbg.ini
由于 360 的很多产品,均包含这个 LibDLL.dat ,所以也就无法幸免了。
为了解决这个问题,我修改了 360 安全卫士诊断工具命令行版,将所有的 DAT 文件特征,修改成 EL 扩展名,结果成功躲避了病毒的追踪。
这个修改后的诊断报告工具命令行版,可以
在这里下载(帖子的 5 楼)
另外,病毒会将正常的 advapi32.dll 和 Kernel32.dll 复制一份到 System32 下的随机文件名。
通过 Hook 正常的函数库 advapi32 的 RegOpenKeyEx,RegEnumKeyEx等函数,导致其他安全工具,包括诊断报告工具,在枚举注册表时,被病毒 Hook,病毒会让这些枚举操作跳过自身的注册表项目,造成报告上缺失病毒的SODL 项目,因此,从报告上可能看不到病毒的加载项。
通过 Hook 正常的函数库 Kernel32 的 CreateFile,导致其他安全工具在连接文件时被 Hook,所以某些安全工具,比如 360 的诊断报告会认为这个文件不存在。报告上的 CLSID 显示为“无效”,且无法计算出病毒文件的 MD5 值等。
而病毒自身要使用这些函数的时候,就通过 LoadLibrary 和 GetProcAddress 两个函数,使用自身复制后的两个随机文件名函数库,这样自身就不会有任何影响了。
所幸的是,这些 Hook,虽然隐藏了病毒的注册表项目,我们从报告上看不到病毒的注册表项目了,但仍然可以看到它注入在别的进程中的注入信息。
[
本帖最后由 depressedboy 于 2008-7-12 22:15 编辑 ]