论坛: 病毒专区 标题: QQ病毒分析报告 复制本贴地址    
作者: jacker [jacker]    论坛用户   登录

   
  QQ病毒分析报告

Author:  路小佳
web  : http://www.cqsec.com  
Date :2003.9.20-凌辰2点

篇首语:
    该QQ病毒使用金山毒霸最新版查杀无效,分析后发现,该病毒主要是利用多处自启动项负责监视内存,保证系统启动时加栽,且生成几个不同的文件名以迷惑中毒用户. 程序采用Borland Delphi编写,ASPack v2.11加壳处理.  感染方面主要利用了IE Frame 预览运行控件漏洞,单击即触发其运行.(由于该程序并没有进行网络数据的处理,故不存在传播性,而且从程序本身的功能及结构来看,这应该是作者练习的版本,主要练习目的在于处理程序隐藏及如何保证病毒在系统驻留.不过,大家也不要有所忽略,因为前面说了,该程序感染系统的原理主要利用了IE漏洞,所以,还是存在QQ秘密被泄露的危险)...
    虽然在分析程序前进行了脱壳处理,但杀毒软件却仍然没有反应,如果完全依靠杀毒软件来保护系统的话,那么,又有几个系统是安全的呢?  大家的水平如果没有提高,安全防范没有提高的话,那么,又谈何保证在互联网如此发达的今天保护自己的密秘呢???

分析过程:

    该程序中的主要输入函数(如下表),从中可看出:写注册表、文件处理、使用计时器监视获取一些系统信息进行处理...但无相关操作网络的功能?
Import Module 001: kernel32.dll
Import Module 002: user32.dll
Import Module 003: advapi32.dll
Import Module 004: oleaut32.dll
Import Module 005: kernel32.dll
Import Module 006: advapi32.dll
Import Module 007: kernel32.dll
Import Module 008: user32.dll

    由于篇幅的原因,只选择了一些关键代码加以分析,该程序使用了"RegisterServiceProcess"函数把程序注册成服务,用于在Win9x中的'任务管理器"中隐藏进程显示(Win Nt/2000以上系统该函数功能无效),病毒激活后,立即加载至注册表中自启动项及系统初始化文件中

注册表项:
HKLM\software\microsoft\windows\currentversion\run  Intrenat==C:\WIN98\intrenat.exe
HKLM\software\microsoft\windows\currentversion\runservices  ;以下是在此键中出现的两次加载项,@表示默认值
Intrenat==C:\WIN98\intrenat.exe      @  ==winhelp.exe ; 路径在'x:\windows\system'
文件属性在创建时设置为'隐藏',文件名倒取得像模像样(很难让人正确判断). :)

    配置system.ini初始化文件,将"x:\windows\DirectX.exe"路径信息绑定至[boot]块下的shell系统外壳解释程序中,explorer.exe加载而加载!( 注: 'x:\windows'为系统安装盘符及目录)

以下是配置system.ini的反汇编代码:(相同的方法配置win.ini系统初始化文件,代码略)
* Possible StringData Ref from Code Obj ->"system.ini"   
                                  |   
:0040F61A B964F84000              mov ecx, 0040F864   
:0040F61F B201                    mov dl, 01

* Possible StringData Ref from Code Obj ->"��@"
                                  |
:0040F621 A1D8E34000              mov eax, dword ptr [0040E3D8]
:0040F626 E855EEFFFF              call 0040E480
:0040F62B 8BD8                    mov ebx, eax

* Possible StringData Ref from Code Obj ->"Explorer.exe " ; shell=explorer.exe x:\windows\DirectX.exe
                                  |
:0040F62D 6878F84000              push 0040F878
:0040F632 FF75FC                  push [ebp-04]

* Possible StringData Ref from Code Obj ->"\DirectX.exe"
                                  |
:0040F635 6890F84000              push 0040F890
:0040F63A 8D45F0                  lea eax, dword ptr [ebp-10]
:0040F63D BA03000000              mov edx, 00000003
:0040F642 E89541FFFF              call 004037DC
:0040F647 8B45F0                  mov eax, dword ptr [ebp-10]
:0040F64A 50                      push eax

* Possible StringData Ref from Code Obj ->"shell"
                                  |
:0040F64B B9A8F84000              mov ecx, 0040F8A8

* Possible StringData Ref from Code Obj ->"boot"           
                                  |
:0040F650 BAB8F84000              mov edx, 0040F8B8
:0040F655 8BC3                    mov eax, ebx
:0040F657 8B30                    mov esi, dword ptr [eax]
:0040F659 FF5604                  call [esi+04]
:0040F65C B201                    mov dl, 01
:0040F65E 8BC3                    mov eax, ebx
:0040F660 8B08                    mov ecx, dword ptr [eax]
:0040F662 FF51FC                  call [ecx-04]
:0040F665 6A00                    push 00000000
:0040F667 8D45EC                  lea eax, dword ptr [ebp-14]


* Reference To: kernel32.FindFirstFileA, Ord:0000h      ;"FindFirstFileA"函数,判断是否找到指定文件
                                  |
:0040467B E8B4CAFFFF              Call 00401134
:00404680 8BD8                    mov ebx, eax
:00404682 83FBFF                  cmp ebx, FFFFFFFF  ;只要系统加载了病毒体的其中一个,即查找其他是否存在
:00404685 7467                    je 004046EE ;相等就跳转
:00404687 53                      push ebx


    从反汇编代码中,我们可以分析出病毒体有WINhelp32.exe(x:\windows\system)、intrenat.exe(x:\windows)、DirectX.exe(x:\windows\system)、winhelp.exe(x:\windows\system)(这与16进制编辑器分析的结果相同)
* Referenced by a CALL at Addresses:
|:0040F689  , :0040F6B2  , :0040F6DB 
|                ; 有三处地址调用了该"CopyFileA"函数,实现复制病毒体功能

* Reference To: kernel32.CopyFileA, Ord:0000h
                                  |
:00405828 FF256C224100            Jmp dword ptr [0041226C]
:0040582E 8BC0                    mov eax, eax

    该程序使用"SetTimer"函数设置计时器监视系统,导致感染机器系统资源耗费过大,故感染机器在使用过程中会感到鼠标有所滞销,其他程序运行缓慢。
* Referenced by a CALL at Address:
|:0040FE88 
|

* Reference To: user32.SetTimer, Ord:0000h   
                                  |
:004059F0 FF2584224100            Jmp dword ptr [00412284]
:004059F6 8BC0                    mov eax, eax


    至此,该程序的过程相必大家都已经了解啦,如前面所说,因为这可能是作者未完成的程序,故有些功能尚未实现,像发送信息,获取QQ RICHEDIT控件的敏感信息等等...但以上所说,也算是给大家一个现身说法的过程吧,以前的某些木马程序/病毒/蠕虫等非法程序都只会选择单个自动启动项中加载其自身,但这里却用到了好几个,尚从程序中还可以分析出,其还能进行可执行文件的执行绑动('冰河'木马,大家一定还记得吧,激发条件就是绑定在.txt文件关联中,只要启动txt文件就会激活木马运行啦)
    单靠检查某个特定的值,这样做是会遗漏很多细节,唯有细心、仔细观察、努力提高自身的知识,由此才能更好提高自己的识别能力!




[此贴被 路小佳(jacker) 在 06月11日14时15分 编辑过]

地主 发表时间: 04-06-11 14:13

回复: kailangq [kailangq]   版主   登录


B1层 发表时间: 04-06-11 17:53

回复: jacker [jacker]   论坛用户   登录
有何疑问?

B2层 发表时间: 04-06-12 10:59

回复: EvSpirit [aeolian]   论坛用户   登录
这是你自己的作品吗?好象看过.

B3层 发表时间: 04-07-02 16:08

回复: z7 [skyzz]   论坛用户   登录
辛苦拉  不错 怎么杀度软件杀不了 奇怪

B4层 发表时间: 04-07-02 21:01

论坛: 病毒专区

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号