计算机病毒查杀上海交通大学信息安全工程学院本章学习目标
掌握计算机病毒诊断知识
掌握杀毒引擎扫描算法
了解病毒诊断实验
理解计算机病毒清除知识本章内容:
计算机病毒的诊断
– 原理
– 方法
– 源码分析
计算机病毒的清除
典型病毒的查杀
1 计算机病毒的诊断内容:
计算机病毒的诊断原理
计算机病毒的诊断方法
高速模式匹配
自动诊断的源码分析计算机病毒的诊断原理
用什么来判断? 染毒后的特征
常用方法:
– 比较法
– 校验和
– 扫描法
– 行为监测法
– 行为感染试验法
– 虚拟执行法
– 陷阱技术
– 先知扫描
– 分析法等等比较法
比较法是用原始或正常的对象与被检测的对象进行比较。
手工比较法是发现新病毒的必要方法。
比较法又包括:
– 注册表比较法
工具 RegMon
弱点,正常程序也操作注册表
– 文件比较法
通常比较文件的长度和内容两个方面
工具 FileMon
弱点:长度和内容的变化有时是合法的病毒可以模糊这种变化
内存比较法
– 主要针对驻留内存病毒
– 判断驻留特征
中断比较法
– 将正常系统的中断向量与有毒系统的中断向量进行比较
比较法的好处:简单
比较法的缺点:无法确认病毒,依赖备份校验和法
首先,计算正常文件内容的校验和并且将该校验和写入某个位置保存。然后,在每次使用文件前或文件使用过程中,定期地检查文件现在内容算出的校验和与原来保存的校验和是否一致,从而可以发现文件是否感染,这种方法叫校验和法,它既可发现已知病毒又可发现未知病毒。
优点:
– 方法简单
– 能发现未知病毒
– 被查文件的细微变化也能发现
缺点:
– 必须预先记录正常态的校验和
– 会误报警
– 不能识别病毒名称
– 程序执行附加延迟
– 不对付隐蔽性病毒。
扫描法
扫描法是用每一种病毒体含有的特定字符串( Signature)对被检测的对象进行扫描。
如果在被检测对象内部发现了某一种特定字符串,就表明发现了该字符串所代表的病毒。
扫描器由两部分组成:
– 特征串( Signature)和扫描算法( Scanner)
选择代码串的规则是:
– 代码串不应含有病毒的数据区,数据区是会经常变化的。
– 在保持唯一性的前提下,应尽量使特征代码长度短些,
以减少时间和空间开销。
– 代码串一定要在仔细分析了程序之后才能选出最具代表性的,足以将该病毒区别于其他病毒和该病毒的其他变种的代码串。
– 特征串必须能将病毒与正常的非病毒程序区分开。
– 例如,给定特征串为,E9 7C 00 10? 37 CB‖,则
,E9 7C 00 10 27 37 CB‖和,E9 7C 00 10 9C 37 CB‖
都能被识别出来,
其优点包括:
( 1)当特征串选择得很好时,病毒检测软件让计算机用户使用起来方便快速,对病毒了解不多的人也能用它来发现病毒。
( 2)不用专门软件,用编辑软件也能用特征串扫描法去检测特定病毒。
( 3)可识别病毒的名称。
( 4)误报警率低。
( 5)依据检测结果,可做杀毒处理。
缺点:
( 1)当被扫描的文件很长时,扫描所花时间也较多。
( 2)不容易选出合适的特征串,有时会发出假警报。
( 3)新病毒的特征串未加入病毒代码库时,老版本的扫毒程序无法识别出新病毒。
( 4)怀有恶意的计算机病毒制造者得到代码库后,会很容易地改变病毒体内的代码,生成一个新的变种,使扫描程序失去检测它的能力。
( 5)容易产生误警报。只要正常程序内带有某种病毒的特征串,即使该代码段已不可能被执行,而只是被杀死的病毒体残余,扫描程序仍会报警。
( 6)不易识别变异类病毒。
( 7)搜集已知病毒的特征代码,费用开销大。
( 8)在网络上使用效率低。
行为监测法
利用病毒的特有行为特性来监测病毒的方法称为行为监测法。
常用行为:
– 占用 INT 13H
– 修改 DOS系统数据区的内存总量
– 对 COM和 EXE文件做写入动作
– 写注册表
– 自动联网请求
优点:发现未知病毒
缺点:难度大、误报警感染实验法
这种方法的原理是利用了病毒的最重要的基本特征:感染特性。观察正常程序和可疑程序的表现是非不同。
1.检测未知引导型病毒的感染实验法
a.先用一张软盘,做一个清洁无毒的系统盘,用 DEBUG
程序,读该盘的 BOOT扇区进入内存,计算其校验和,并记住此值。同时把正常的 BOOT扇区保存到一个文件中。
上述操作必须保证系统环境是清洁无毒的
b.在这张实验盘上拷贝一些无毒的系统应用程序。
c.启动可疑系统,将实验盘插入可疑系统,运行实验盘上的程序,重复一定次数。
d.再在干净无毒机器上,检查实验盘的 BOOT扇区,可与原 BOOT扇区内容比较,如果实验盘 BOOT扇区内容已改变,可以断定可疑系统中有引导型病毒。
2.检测未知文件型病毒的感染实验法
– a.在干净系统中制作一张实验盘,上面存放一些应用程序,这些程序应保证无毒,应选择长度不同,类型不同的文件(既有 COM型又有 EXE型)。记住这些文件正常状态的长度和校验和。
– b.在实验盘上制作一个批处理文件,使盘中程序在循环中轮流被执行数次
– c.将实验盘插入可疑系统,执行批处理文件,多次执行盘中程序。
– d.将实验盘放人干净系统,检查盘中文件的长度和校验和,如果文件长度增加,或者校验和变化,则可断定系统中有病毒。
对于 Windows中的病毒,感染实验法检测内容会更多一些,例如,当使用感染实验法检测“广外女生”
木马病毒时,可以采用如下步骤:
① 首先打开 RegSnap,从 file菜单选 new,然后单击 OK按钮,对当前干净的注册表以及系统文件做一个记录。如果木马修改了其中某项,就可以分析出来了。备份完成之后把它存为 Regsnp1.rgs。
② 在计算机上运行感染了“广外女生”病毒的文件,例如双击 gdufs.exe,然后等一小会儿。如果此时发现正在运行着的“天网防火墙”或“金山毒霸”自动退出,就很可能木马已经驻留在系统中了。
③ 重新打开 RegSnap,从 file菜单选 new,然后单击
OK按钮,把这次的 snap结果存为 Regsnp2.rgs。
④ 从 RegSnap的 file菜单选择 Compare,在 First
snapshot中选择打开 Regsnp1.rgs,在 Second
snapshot中选择打开 Regsnp2.rgs,并在下面的单选框中选中 Show modified key names and key
values,然后单击 OK按钮。这样 RegSnap就开始比较两次记录有什么区别了,当比较完成时会自动打开分析结果文件 Regsnp1-Regsnp2.htm。
⑤ 为找出木马的驻留位置以及在注册表中的启动项,看 Regsnp1-Regsnp2.htm,若显示如下信息:
Summary info,
Deleted keys,0
Modified keys,15
New keys,1
File list in C:\WINNT\System32\*.*
Summary info,
Deleted files,0
Modified files,0
New files,1
New files
diagcfg.exe Size,97 792,Date/Time,2001年 07月 01日
23:00:12

Total positions,1
则表明两次记录中,没有删除注册表键,修改了 15
处注册表,新增加了一处注册表键值,在
C:\WINNT\System32\目录下面新增加了一个文件
diagcfg.exe。这个文件非常可疑,因为在比较两次系统信息之间只运行了“广外女生”这个木马,所以有理由相信 diagcfg.exe就是木马留在系统中的后门程序。这时打开任务管理器,可以发现其中有一个 diagcfg.exe的进程,这就是木马的原身。但这个时候千万不要删除 diagcfg.exe,否则系统就无法正常运行了。
木马一般都会在注册表中设置一些键值以便以后在系统每次重新启动时能够自动运行。
从 Regsnp1-Regsnp2.htm中可以看到哪些注册表项发生了变化,此时若看到:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\
exefile\shell\open\command\@
Old value,String,″″%1″ %*″
New value,String,
″C:\WINNT\System32\diagcfg.exe ″%1″ %*″
则说明这个键值由原来的 ″%1″ %*被修改成了
C:\WINNT\System32\DIAGCFG.EXE ″%1″ %*,
这就使得以后每次运行任何可执行文件时都要先运行 C:\WINNT\System32\ diagcfg.exe这个程序。
⑥ 找出木马监听的端口。使用 fport可以轻松的实现这一点。在命令行中运行 fport.exe,可以看到:
C:\tool\fport>fport
FPort v1.33 TCP/IP Process to Port Mapper
Copyright 2000 by Foundstone,Inc,
http://www.foundstone.com
Pid ProcessPort Proto Path
584 tcpsvcs-> 7TCP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 9 TCP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 13 TCP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 17 TCP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 19 TCP C:\WINNT\System32\tcpsvcs.exe
836 inetinfo -> 80 TCP C:\WINNT\System32\inetsrv\inetinfo.exe
408 svchost -> 135 TCP C:\WINNT\system32\svchost.exe
836 inetinfo -> 443 TCP C:\WINNT\System32\inetsrv\inetinfo.exe
8System -> 445 TCP
464 msdtc -> 1025 TCP C:\WINNT\System32\msdtc.exe
684 MSTask -> 1026 TCP C:\WINNT\system32\MSTask.exe
584 tcpsvcs -> 1028 TCP C:\WINNT\System32\tcpsvcs.exe
836 inetinfo -> 1029 TCP C:\WINNT\System32\inetsrv\inetinfo.exe
8System -> 1030 TCP
464 msdtc -> 3372 TCP C:\WINNT\System32\msdtc.exe
1176 DIAGCFG -> 6267 TCP C:\WINNT\System32\DIAGCFG.EXE
/* 注意这行! */
836 inetinfo -> 7075 TCP C:\WINNT\System32\inetsrv\inetinfo.exe
584 tcpsvcs -> 7 UDP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 9 UDP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 13 UDP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 17 UDP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 19 UDP C:\WINNT\System32\tcpsvcs.exe
584 tcpsvcs -> 68 UDP C:\WINNT\System32\tcpsvcs.exe
408 svchost -> 135 UDP C:\WINNT\system32\svchost.exe
8 System -> 445 UDP
228 services -> 1027 UDP C:\WINNT\system32\services.exe
836 inetinfo -> 3456 UDP C:\WINNT\System32\inetsrv\inetinfo.exe
虚拟执行法
为了检测多态性病毒,提出了虚拟执行法。
它是一种软件分析器,用软件方法来模拟和分析程序的运行。
如果发现隐蔽性病毒或多态性病毒嫌疑时,
启动虚拟执行模块,监视病毒的运行,待病毒自身的密码译码以后,再运用特征代码法来识别病毒的种类。
分析法
分析法的目的在于:
– 1.确认被观察的磁盘引导区和程序中是否含有
– 2.确认病毒的类型和种类,判定其是否是一种新病毒。
– 3.搞清楚病毒体的大致结构,提取特征识别用的字符串或特征字,用于增添到病毒代码库供扫描和识别程序用。
– 4.详细分析病毒代码,为制定相应的反病毒措施制定方案。
人工智能陷阱技术和宏病毒陷阱技术
人工智能陷阱是一种监测计算机行为的常驻式扫描技术。
它将所有计算机病毒所产生的行为归纳起来,一旦发现内存中的程序有任何不当的行为,系统就会有所警觉,并告知使用者。
这种技术的优点是执行速度快、操作简便,且可以侦测到各式计算机病毒。
其缺点就是程序设计难度大,且不容易考虑周全。在这千变万化的计算机病毒世界中,人工智能陷阱扫描技术是一个具有主动保护功能的技术。
宏病毒陷阱技术结合了搜索法和人工智能陷阱技术,依行为模式来侦测已知及未知的宏病毒。其中,配合 OLE2技术,可将宏与文件分开,加快扫描速度,而且可以有效地将宏病毒彻底清除。
先知扫描法
先知扫描技术将专业人员用来判断程序是否存在计算机病毒代码的方法,分析归纳成专家系统和知识库,再利用软件模拟技术( Software Emulation)伪执行新的计算机病毒,超前分析出新计算机病毒代码,
对付未知的计算机病毒。
利用原始备份和被检测程序相比较的方法适合于不需专用软件,可以发现异常情况的场合,是一种简单的基本的病毒检测方法;
扫描特征串和识别特征字的方法适用于制作成查病毒软件的方式供广大 PC机用户使用,方便而又迅速,但对新出现的病毒会出现漏检的情况,需要与分析和比较法相结合;
分析病毒的方法主要是由专业人员识别病毒,研制反病毒系统时使用,要求较多的专业知识,是反病毒研究不可缺少的方法。
计算机病毒的诊断方法
手工检测
– 工具软件( Debug,UltraEdit,EditPlus,SoftICE、
TRW,Ollydbg等)
– 优点,Aver发现并分析新病毒
– 缺点:不可能普及
自动检测
– 自动检测是指通过一些自动诊断软件来判断系统是否有毒的方法。
– 优点:易于普及
– 缺点:滞后性高速模式匹配
查找的速度是评价一个查毒引擎的关键因素之一。
算法种类:
– 单模式匹配算法,KMP\QS\BM等
– 多模式匹配算法,DFSA\基于二叉树的算法
问题描述
– 设待处理( 动态 )文本为
– 单模式匹配是从文本中查找一个模式串
– 多模式匹配就是通过一次查找从文本中发现多个
P1,P2,...,Pq
ntttT?21?
n21 xxxPi
mpppP?21?
最简单的查找算法 ——BF算法
Brute-Force算法匹配过程单模式匹配 ——BM算法
bad-character位移,字符 a在 P中出现
bad-character位移,字符 a在 P中不出现
计算公式
Pa }]1[ 10|m i n {b m _ b c[a]


否则中出现在模式如果且
m
ajmPmjj
good-suffix位移,只有 u的前缀 v在 P中重现
good-suffix位移,u的一次重现且其前一个字符与 b不同
首先定义两个条件:
cond1(j,s),对每个 k,j<k<m,s? k 或者 P[k-s]=P[k]
cond2(j,s):如果 s<j 那么,
然后对于最后,取两者最大值作为右移值
][][ jPsjP
mj0
} ),(2 ),(1|0m i n {]1[_ 成立且 sjc o n dsjc o n dsjgsbm
经典多模式匹配 DFSA算法
1,DFSA算法的预处理过程
– (1) 转向函数 g( state1,char) -> state2
– 模式集合{ he,she,his,hers}
s h e
si
sreh
{h,s}
0 98
76
543
21
(2) 失效函数 f
– 当发生字符失配时,失效函数指明下一个应处理的状态。规定:
所有第一层状态的失效函数 ;
对于非第一层的状态 s,若其父状态为 r(存在某个字符 a,
g(r,a)=s),其失效函数为,状态 为追溯状态 s的祖先状态所得到的最近一个使 存在的状态。
0)(?sf
0)(?sf
)),(()( * asfgsf? *s
)),(( * asfg
s 1 2 3 4 5 6 7 8 9
f(s) 0 0 0 1 2 0 3 0 3
(3) 输出函数 output
– Output(s) = {根节点到叶子节点路径上字符组成的字符串 }
– 当 f(s)=s’时,output(s) U= output(s’)
s 2 5 7 9
output(s) {he} {she,he} {his} {hers}
2,DFSA算法的查找过程
– ( 1) 从有限自动机的 0状态出发,逐个取出 {P}中模式 Pk中的字符 c,并按转向函数 g(s,c)或失效函数 f(s)进入下一状态。
– ( 2) 当输出函数 output(s)不为空时,输出 output(s)。
用有限自动机扫描文本串,ushers‖的过程:
– 开始为 0状态,因 g(0,u)=0,g(0,s)=3,g(3,h)=4,g(4,e)=5,而
output(5)={he,she},故输出 {he,she};
– 因 f(5)=g(f(4),e)=2,g(2,r)=8,g(8,s)=9,output(9)={hers},故输出{ hers}。
– 即文本串,ushers‖中含有 he,she,hers这三个模式串。
扫描引擎的结构自动诊断的源码分析
讨论自动诊断病毒(查毒)的最简单方法 ——特征码扫描法
自动诊断程序至少要包括两个部分:
– 病毒特征码( Virus Pattern\ Virus Signature)库
– 扫描引擎( Scan Engine)。
病毒特征码
– 意义重大
– 获得方法
– 手工
– 自动
扫描引擎
– 是杀毒软件的精华部分
– 考虑杀毒速度
– 待杀毒文件的类型
– 支持的硬盘格式
– 其他特殊技术
虚拟执行
行为识别等等简单的查毒程序
VirScan是一个简单的示例程序,其功能:
– 根据病毒特征码发现特定病毒( CIH和 Klez)。
– VirScan从程序入口点开始查找病毒特征码。
– 对抗 Klez病毒会卸载杀毒引擎的功能。
– CIH病毒不会动态地改变程序入口点处的标记,
我们可以自接从入口点处开始。
– Klez病毒会动态的改变程序入口点处的前 16个字节,所以,VirScan跳过了前 16个字节。
构造病毒库 virus.pattern
病毒库 virus.pattern的结构如下:
– Klez = {A1,00,00,00,00,50,64,89,25,00,
00,00,00,83,EC,58,53,56,57,89};
– Cih = {55,8D,44,24,F8,33,DB,64,87,03};
初始化病毒库
转化函数:
– 字符 -55; 数字 -30
经过转换后的格式为:
– unsigned char KlezSignature[]={0xA1,0x00,0x00,
0x00,0x00,0x50,0x64,0x89,0x25,0x00,0x00,
0x00,0x00,0x83,0xEC,0x58,0x53,0x56,0x57,
0x89};
– unsigned char CihSignature[]={0x55,0x8D,0x44,
0x24,0xF8,0x33,0xDB,0x64,0x87,0x03};
保护 VirScan程序
首先,编写一个普通的 DLL,该 DLL将导出一个名字为 DontAllowForDeletion的函数。
– BOOL WINAPI DontAllowForDeletion(LPSTR Str)
– {
– HANDLE hFile;
– if((hFile=CreateFile(Str,GENERIC_READ,FILE_SHARE_READ,NULL,
OPEN_EXISTING,
– FILE_ATTRIBUTE_READONLY,NULL)) ==INVALID_HANDLE_VALUE){
– return FALSE;
– }
– return TRUE;
– }
然后,在 VirScan的启动时,调用 DLL的导出函数,实现对 VirScan程序的保护。
DontAllowDeletion = (DLLFUNC *)GetProcAddress(hLib,
"DontAllowForDeletion");
DontAllowDeletion(TmpPath));
//TmpPath为 VirScan在系统中的物理位置病毒查找模块
查找前需要定位文件、定位 PE入口
//查找 Klez
– SetFilePointer(hFile,pCodeBytes+16,NULL,
FILE_BEGIN);
– ReadFile(hFile,pBytes,sizeof(KlezSignature),
&ReadBytes,NULL);
– for(i=0; i<sizeof(KlezSignature); i++){
– if(KlezSignature[i]!=pBytes[i])
– break;
– }
放在病毒库里较好
//查找 CIH病毒
– SetFilePointer(hFile,pCodeBytes,NULL,
FILE_BEGIN);
– ReadFile(hFile,pBytes,sizeof(CihSignature),
&ReadBytes,NULL);
– for(i=0; i<sizeof(CihSignature); i++){
if(CihSignature[i]!=pBytes[i])
break;
}
演示程序
2 计算机病毒的清除
清除病毒:将感染病毒的文件中的病毒模块摘除,
并使之恢复为可以正常使用的文件的过程称为病毒清除,
杀毒的不安全因素:
– 清除过程可能破坏文件
– 有的需要格式化才能清除
清除的方法分类
– 引导型病毒的清除原理
– 文件型病毒的清除原理
– 特殊病毒的清除原理引导型病毒的清除原理
引导型病毒感染时的破坏行为有:
– ( 1)硬盘主引导扇区。
– ( 2)硬盘或软盘的 BOOT扇区。
– ( 3)为保存原主引导扇区,BOOT扇区,病毒可能随意地将它们写入其他扇区,而毁坏这些扇区。
– ( 4)引导型病毒发做,执行破坏行为造成种种损坏。
根据感染和破坏部位的不同,可以分以下方法进行修复:
第一种:硬盘主引导扇区染毒,是可以修复的。
– ( 1)用无毒软盘启动系统。
– ( 2)寻找一台同类型、硬盘分区相同的无毒机器,将其硬盘主引导扇区写入一张软盘中。将此软盘插入染毒机器,将其中采集的主引导扇区数据写入染毒硬盘,
即可修复。
第二种:硬盘、软盘 BOOT扇区染毒也可以修复。
– 寻找与染毒盘相同版本的无毒系统软盘,执行 SYS命令,即可修复。
第三种:引导型病毒如果将原主引导扇区或
BOOT扇区覆盖式写入根目录区,被覆盖的根目录区完全损坏,不可能修复。
第四种:如果引导型病毒将原主引导扇区或
BOOT扇区覆盖式写入第一 FAT表时,第二 FAT表未破坏,则可以修复。
– 可将第二 FAT表复制到第一 FAT表中。
第五种:引导型病毒占用的其他部分存储空间,
一般都采用“坏簇”技术和“文件结束簇”技术占用。这些被空间也是可以收回的。
文件型病毒的消毒原理
覆盖型文件病毒清除
– 该型病毒是一种破坏型病毒,由于该病毒硬性地覆盖掉了一部分宿主程序,使宿主程序被破坏,即使把病毒杀掉,程序也已经不能修复。
覆盖型外的文件病毒
– 原则上都可以被清除干净
– 根据感染的逆过程来清除清除交叉感染病毒
交叉感染:有时一台计算机内同时潜伏着几种病毒,当一个健康程序在这个计算机上运行时,会感染多种病毒,引起交叉感染。
清除的关键:
– 搞清楚多种病毒的感染顺序
– 按感染先后次序的逆序清楚头部宿主文件尾部病毒 1
病毒 2
病毒 3
病毒 3
病毒 2
病毒 1
头部宿主文件尾部感染顺序:
病毒 1 --〉 病毒 2 -–〉 病毒 3
在杀毒时:
病毒 3 --〉 病毒 2 -–〉 病毒 1
计算机病毒的清除方法
手工清除病毒的方法使用 Debug,Regedit、
SoftICE和反汇编语言等简单工具进行跟踪,清除的方法。
– 优点:可以处理新病毒或疑难病毒( Worm等)
– 缺点:需要高技术,复杂
自动清除病毒方法使用杀毒软件自动清除染毒文件中的病毒代码,使之复原。
– 优点:方便,易于普及
– 缺点:滞后、不能完全奏效针对典型病毒的查杀方法
Outlook漏洞病毒的查杀
恶意代码查杀方法
宏病毒查杀方法
清除 W32.Spybot.Worm蠕虫病毒
Outlook漏洞病毒的查杀
Outlook漏洞病毒的查杀原理很简单,只要在附件或邮件体中搜索特定代码就可以。
但邮件病毒查杀的关键是时效性,即实时拦截邮件并处理。
病毒引擎的位置:
– 服务器端( SMTP Server)
反垃圾邮件系统
– 客户端( Outlook,FoxMail)绑定
Add-in
– 客户端独立程序
各种杀毒软件、其他客户端反垃圾软件 (邮件狗 )
服务器端技术内 嵌 于 系 统 的 防 火 墙前 置 式 邮 件 过 滤 系 统垃 圾 邮 件 初 级防 护 模 块基 于
q m a i l
实 现默 认 开 启垃 圾 邮 件 高 级防 护 模 块基 于
s m a i l
实 现用 户 选 择 开 启邮 件 内 容 智 能 过滤 模 块系 统 管 理 界 面网 络 邮 件 数 据 流流 向 原 邮 件 服 务 器垃圾邮件初级防护模块系统防火墙限 制 相 同 客 户 端并 发 连 接 数限 制 邮 件 总 长 上 限查 询 本 地 黑 名 单实 时 黑 名 单

R B L
) 查 询拒 收 非 本 地 域 名 信 件杜 绝 匿 名 转 发拒 绝 外 界 连 接 系 统
S o c k e t
,应 用 程 序 端 口垃圾邮件高级防护模块查 询 本 地 白 名 单限 制 邮 件 客 户 端 I P
限 制 相 同 客 户 端发 信 数 量客 户 端 邮 件 地 址规 范 性
/
有 效 性 检 查限 制 相 同 客 户 端发 信 ( 连 接 ) 频 率邮 件 传 输 编 码 解 码限 制 邮 件 收 信 人 数和 主 体 大 小 下 限邮 件 汉 字 编 码 解 码邮 件 内 容 过 滤限 制 邮 件 附 件 大 小恶 意 代 码 过 滤邮 件 过 滤 后 操 作客户端绑定技术( Outlook为例)
1.引入三个对象
– #import "C:\Program Files\Common
Files\Designer\msaddndr.dll"
– #import "D:\Microsoft Office\Office\Mso9.dll"
– #import "D:\Microsoft
Office\Office\Msoutl9.olb―
连接到 Outlook,监视一些事件
if(m_outlook.CreateInstance(__uuidof(Outlook::Application)) == S_OK)
{
Outlook::_InspectorsPtr inspectors;
//获得 inspectors
if(m_outlook->get_Inspectors(&inspectors) == S_OK)
{
//用 helper方法连接
CEventSink::Advice( inspectors,
GetIDispatch(FALSE),
__uuidof(Outlook::InspectorsEvents));
}
//获得 explorer(邮件列表窗口 )
new CEventSink(*this,m_outlook->ActiveExplorer());
}
当邮件在一个独立的窗口打开时,触发下列事件
– void
COutlooksampleDlg::NewInspector(IDispatch
*disp)
– {
– // 给该邮件一个事件
new CEventSink(*this,disp);
– }
//当邮件显示在预览窗口时
void CEventSink::SelectionChange()
{
long count = 0;
if(m_explorer != 0)
{
Outlook::SelectionPtr& selection =m_explorer->Selection;
if(selection->get_Count(&count) == S_OK && count > 0)
{
Outlook::_MailItemPtr mailItem = selection->Item((short)1);
//显示在控件中
m_dlg.DisplayMailItem(mailItem);
}
}
}
WEB恶意代码查杀方法
恶意代码经常通过修改注册表和系统配置来破坏系统的正常操作,影响用户的正常使用。被这种病毒感染后,要设法修复被修改和禁用各个注册表项。
检查位置:
– 网关
– 客户端(魔法兔子等)
修复方法是:
– 首先新建一个文本文件,接着把扩展名改为 reg;
– 然后,把恢复脚本填入该文件中;
– 最后,运行该文件就可以了。
网关技术
P S T N /
A D S L
M O D E M
A D S L M O D E M
E m a i l S e r v e r
D N S S e r v e r W W W S e r v e r
I n t e r n e t
工 作 站
I S P
运营商平台远 端 站
I S D N
I S D N R o u t e r
恶 意 代 码 过 滤 网 关恶 意 代 码 过 滤 网 关恶意代码过滤网关无线发射站客户端技术
实时文件监控(杀毒软件)
禁止功能
– 例如,禁止 3721
– REGEDIT5
#B83FC273-3522-4CC6-92EC-75CC86678DA4
3721's CLSID
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Int
ernet Explorer\ActiveX Compatibility{B83FC273-
3522-4CC6-92EC-75CC86678DA4}]
"Compatibility Flags"=dword:00000400
修复脚本
REGEDIT4
//修复 RUN按钮
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Poli
cies
\Explorer]
"NoRun"=dword:00000000
//修复关闭按钮
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Poli
cies
\Explorer]
"NoClose"=dword:00000000
//修复注销按钮
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Poli
cies
\Explorer]
"NoLogOff"=dword:00000000
//取消隐藏盘符
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies
\Explorer]
"NoDrives"=dword:00000000
//取消禁止注册表
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies
\System]
"DisableRegistryTools"=dword:00000000
//取消禁止运行 DOS程序
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies
\WinOldApp]
"Disabled"=dword:00000001
//取消禁止进入 DOS模式
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Poli
cies
\WinOldApp]
"NoRealMode"=dword:00000001
//取消开机提示窗口标题
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Wi
nlogon]
"LegalNoticeCaption"=""
//取消开机提示窗口信息
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Wi
nlogon]
"LegalNoticeText"=""
//重设 IE标题
[HKEY_LOCAL_MACHINE\Software\Microsoft\Internet
Explorer\Main]
"Window Title"="Microsoft Internet Explorer"
[HKEY_CURRENT_USER\Software\Microsoft\Internet
Explorer\Main]
"Window Title"="Microsoft Internet Explorer"
//重置 IE起始页
[HKEY_CURRENT_USER\Software\Microsoft\Internet
Explorer\Main]
"Start Page"=""
宏病毒查杀方法
方法 1:用 WordBasic语言以 Word模板方式编制杀毒工具,在 Word环境中杀毒。
– 优点:杀毒准确,兼容性好
– 缺点:适合手工,不宜商品化
方法 2:根据 WordBFF格式,在 Word环境外解剖病毒文档(模板),去掉病毒宏。
– 缺点:
第一,容易将原文档破坏;
第二,很容易漏杀病毒;
第三,要不断地随着 Word版本升级和病毒变化而改变程序。
– 易于商品化
杀毒和病毒入侵的原理完全相同
– 查找感染标记 ---〉 用新宏代替旧宏
– 病毒,坏 ---〉 好
– 杀毒,好 ---〉 坏
以 Maker病毒为例
在 Normal.dot的,ThisDocument‖中加入以下代码:
Private Sub Document_Open()
Dim SaveDocument,DocumentInfected As Boolean
Dim ad As Object
Dim strVirusName As String
Dim intVBComponentNo As Integer
'病毒感染标记 (如果要扫描自己,用 "&"连接字符串可以避免误判自己 )
'代码重用时,针对不同的病毒可修改以下两句
Const Marker = "〈 - this is another" & " marker!"
strVirusName = "Marker"
'将病毒所作的安全修改回来
Options.VirusProtection = True
'可能存在的宏代码数目
intVBComponentNo =
ActiveDocument.VBProject.VBComponents.Count
For i = 1 To intVBComponentNo
'获取当前激活文档的宏代码
Set ad = ActiveDocument.VBProject.VBComponents.Item(i)
'是否包含特征字符串
DocumentInfected = ad.CodeModule.Find(Marker,1,1,10000,10000)
'如果包含病毒特征字符串
If DocumentInfected = True Then
SaveDocument = ActiveDocument.Saved
'如果病毒为追加感染,请修改这一句。注意这里为全删除宏
ad.CodeModule.DeleteLines 1,ad.CodeModule.CountOfLines
ActiveDocument.VBProject.VBComponents.Remove (ad)
MsgBox ActiveDocument.FullName & "被 " & strVirusName & _
"宏病毒感染,已去除 !",vbInformation,"By:Ray.Deng"
End If
Next i
If DocumentInfected = True & SaveDocument =
True Then
ActiveDocument.Save
'如果是成批消毒,建议加上这一句,自动关闭打开的文件
ActiveDocument.Close
End If
End Sub
编好后存盘,然后查找所有 doc和 dot文件并执行打开操作。
清除 W32.Spybot.Worm蠕虫病毒
Win32.Spybot.Worm是一种在线网络聊天系统机器人( BOT)的开放性源代码蠕虫病毒,由于它的开放性和管理方式都来源于这些分布的机器人,
所以这些广泛的机器人病毒都有一些很微小的不同。
威胁:
– 搜集本地计算机的配置信息(包括连接的类型,CPU
速度和本地驱动的信息);
– 在本地计算机安装和删除的文件;
– 在本地计算机执行各色各样的命令;
– 键盘操作记录;
– 毁掉防火墙和杀毒软件程序避免被察觉等等。
利用的漏洞:
– 使用 TCP port 135 的 DCOM RPC 弱点;
– 微软本机安全性认证服务远程缓冲区弱点;
– 使用 UDP port 1434( MSSQL2000或 MSDE
2000)验证弱点;
– 使用 TCP port 80 的 WebDAV 弱点;
– UPnP通知缓冲区弱点;
– 使用 TCP port 445 的工作站服务缓冲区溢位弱点。
清除方法
感染了 Win32.Spybot.Worm病毒后,清除过程比较繁琐。商业杀毒软件和专杀工具都不能自接清除,而是需要手工干预。其清除步骤如下:
隔离计算机
清除病毒
– ( 1)关闭操作系统的“系统还原”功能。右键点击
“我的电脑” ——〉 属性 ——〉 系统还原 ——〉 关闭所有盘上的系统还原功能
– ( 2)更新杀毒软件(例如 Symantec)为最新的病毒定义码。
( 3)重新启动计算机到安全模式。
( 4)手工启动杀毒程序,对计算机做完全扫描。
( 5)记录被感染的文件名,并删除受感染的文件。
( 6)备份注册表。
( 7)检查注册表中的一下各项
Run,RunOnce,RunServices,Run
删除刚才记录的文件名键值
( 8)针对不同的操作系统,安装相应的补丁。
( 9)增强管理员账号的密码强度。