第7章-ClamAV软件分析与使用课件.pptx

上传人(卖家):三亚风情 文档编号:2882596 上传时间:2022-06-07 格式:PPTX 页数:44 大小:798.85KB
下载 相关 举报
第7章-ClamAV软件分析与使用课件.pptx_第1页
第1页 / 共44页
第7章-ClamAV软件分析与使用课件.pptx_第2页
第2页 / 共44页
第7章-ClamAV软件分析与使用课件.pptx_第3页
第3页 / 共44页
第7章-ClamAV软件分析与使用课件.pptx_第4页
第4页 / 共44页
第7章-ClamAV软件分析与使用课件.pptx_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、本章学习目标 了解ClamAV引擎的框架 了解ClamAV的核心代码 掌握ClamAV使用方法本章内容 ClamAV的总体结构 ClamAV的使用说明 安装配置 源代码分析 章节实验1 ClamAV的总体结构 ClamAV vs OAV 相同点: ClamAV和OAV两个防病毒软件非常类似,二者都是使用匹配特征代码的方式来检查病毒,甚至它们的病毒特征代码库都是一样的 不同点: ClamAV是在clamd启动时将病毒特征代码库加载入内存,并且根据文件类型把特征代码库进行了分类。在内存中,为每种文件类型对应的特征代码库建立了一棵庞大的树,然后,在这棵树为核心数据结构,使用有限自动机来进行匹配。 而

2、OAV则是对每个特征码做一个HASH,匹配的时候先匹配HASH,从而缩小了匹配范围,最后再逐个匹配。 ClamAV使用C语言编制,而OAV使用java语言ClamAV的组件 main.cvd:计算机病毒特征代码库,该部分为主库。 daily.cvd:计算机病毒特征代码库,该部分为日常更新的库。 clamd:基于多线程开发的查杀引擎守护进程,通过socket,streams,file descriptor进行扫描操作。 clamdscan:调用clamd进行病毒扫描的客户端程序。二者通过Socket进行通信。 clamscan:可独立响应用户请求(在clamd未运行时)的客户端程序。clamsc

3、an读取病毒特征代码库的信息,并进行病毒扫描。其效率不如clamdscan和clamd的组合高。 freshclam:更新病毒特征代码库的程序。 libclamav:病毒扫描函数库,这是核心算法部分。 sigtool:clamav管理工具,可以查看病毒特征代码库文件(.cvd)的信息、解压病毒特征代码库.cvd文件、制作病毒特征代码库文件等。 clamav-milter:email扫描器。在该组件的配合下,ClamAV可以完成对邮件服务器的病毒扫描工作。 clamuko:在Linux/FreeBSD系统中,为了实现on-access病毒扫描功能,必须安装dazuko组件,这就是所谓的clamu

4、ko。 freshclam.conf:用于配置病毒特征库升级程序(freshclam)。 clamd.conf:用于配置 clamd和clamscan程序。 2 ClamAV使用命令命令命令解释命令解释PING检查守护进程的状态VERSION输出版本信息RELOAD重新加载数据库SHUTDOWN正常退出SCAN file/directory 扫描文件或目录,同时支持压缩文件RAWSCAN file/directory 扫描文件或目录,但是考虑文件类型CONTSCAN file/directory 扫描文件或目录,并且找到病毒后仍继续扫描MULTISCAN file/directory 使用多线

5、程扫描文件或目录INSTREAM 扫描流,输入的格式如下: ,其中用无符号四字节整数表示数据的字节数,是实际的数据。扫描以=0表征结束,另外总长度不能超过配置文件中设置的流最大长度,否则连接将被关闭FILDES Unix特有的,根据文件描述符进行扫描STATS 返回服务端的队列状态信息以及内存的使用情况IDSESSION, END 用来发起或结束一个会话,这样,就能在一个连接中,进行多次不同的扫描,省去建立新的连接。STREAM (deprecated, use INSTREAM instead) 废弃工具名功能介绍Clamscan最简单的扫描工具,它是一个独立的程序,可以单独运行而无须Cla

6、md支持。但是的它的缺点是不能与其它Clamscan实例共享内存线程等。它适合于对单个文件进行临时的扫描Clamdscan功能与Clamscan一样,但是它依赖于Clamd,它是通过将请求通过Socket发给Clamd让Clamd做实际的扫描工作,再从Clamd取回结果即可。它的效率高,推荐使用。Clamuko这并不是一个工具,而是Clamd中的一个重要模块,开启了它才能进行访问时扫描。但它不支持NFS,原因是其底层模块没有捕获NFS请求3 安装配置 软硬件环境: 硬件:普通PC机 操作系统:Fedora 7 软件版本:ClamAV 0.94.2 安装准备 安装前要先创建用户clamav和用户

7、组clamav。 groupadd clamav useradd -g clamav -s /bin/false -c Clam AntiVirus clamav 安装 在ClamAV代码目录下执行如下命令,进行安装。 ./configure make (as root)make install 在Linux Fedora 7系统下,ClamAV的运行文件会默认安装在“/usr/local/sbin”目录下。在这个目录下可以找到Clamd等可执行程序。 配置 安装好程序后,接下来要进行配置。配置工作主要有三件事情: 1、修改配置文件clamd.conf 该文件默认路径为/usr/local/e

8、tc/clamd.conf。根据man clamd.conf的信息来设置clamd.conf。特别要注意的是,要把Example这一行注释掉,否则clamd.conf不生效。 2、修改配置文件freshclam.conf 该文件默认路径为/usr/local/etc/freshclam.conf。如果英文阅读能力较强,可以非常容易理解各个配置项的意思。同样,也要把Example这一行注释掉,否则freshclam.conf不生效。最关键的配置项包括: Checks:配置特征代码库的更新频率 ProxySettings:设置代理服务器的地址,账号,口令等 MaxAttempts:最大尝试联网次数

9、 3、下载特征代码库 读者可以从http:/ 运行 先以root用户运行clamd(默认路径:/usr/sbin/clamd)。如果要进行例行扫描,用普通用户运行clamdscan(默认路径:/usr/bin/clamdscan)即可。clamdscan可以支持当前文件夹(递归)扫描,也支持一个特定文件的扫描。还可以指定所用的扫描特征代码库,这个功能可以用来帮助测试自己制作的病毒特征代码库的正确性。 4 源代码分析 分析顺序 循着软件的使用顺序对软件进行分析,以期对软件的使用及结构都有一定的认识。因此,我们将先讨论软件的配置和病毒特征代码库,再讨论clamd的启动,接着讨论clamdscan的

10、启动及其向clamd发送请求的过程,最后讨论clamd的对请求的响应和扫描过程。 (1)ClamAV配置 ClamAV的配置选项记录在/etc/clamd.conf文件中。 配置选项的数据结构如下:shared/optparser.c 函数名:optparser() 功能:对参数进行解析,以链表形式返回选项, 函数名:optfree() 功能:释放选项链表 函数名:optaddarg() 功能:向选项链表中加入新的选项(2)病毒特征代码库 ClamAV有两个官方病毒特征代码库文件:main.cvd和daily.cvd。这种文件实际上是带有数字签证的压缩文件,它包含了一个或多个真正的病毒代码库文

11、件。 main.cvd的内容: main.db main.fp main.hdb main.info main.mdb main.ndb main.zmd main.db文件中病毒特征代码的形式是: MalwareName=HexSignature 其中HexSignature可以由*,数字分隔成一个一个的part-signature。 main.ndb文件中的病毒特征代码的形式是: MalwareName:TargetType:Offset:HexSignature:MinEngineFunctionalityLevel:Max main.mdb文件中的病毒特征代码的形式是: PESecti

12、onSize:MD5:MalwareName(3) clamd初始化 ClamAV执行过程的第一步就是进行执行环境的初始化,其主要工作包括解析命令、载入配置文件、解除特权、初始化日志、选择socket类型、配置对可疑程序类别的检测处理、设置临时文件夹等。这些工作主要涉及的文件: calmd/clamd.c calmd/server-th.c calmd/readdb.cclamd/clamd.c 函数名称:main() 函数功能: 这是入口函数,主要完成对引擎的初始化。工作包括解析命令、载入配置文件、解除特权(如果不是windows或os2系统)、初始化日志、选择socket类型、配置对可疑程

13、序类别的检测处理、设置临时文件夹、编译引擎和初始化socket可能有多个、转入后台工作调用acceptloop_th()等待客户端连接。clamd/server-th.c 函数名称:acceptloop_th() 函数功能: 该函数主要功能是拦截消息,添加消息处理函数,调用reload_db()加载数据库,利用thrgmr_new()创建线程池,等待客户端连接,调用thrmgr_dispatch()函数分发工作。 函数名称:reload_db() 函数功能: 检查病毒特征代码库状态或者调用cl_load()加载病毒特征代码库,重新加载后调用cl_engine_compile()为开始扫描作最后

14、的准备。 函数名称:scanner_thread() 函数功能: 本函数是服务器收到客户端请求的处理函数。它主要的功能是添加消息处理函数。然后调用command()来处理客户端的请求,并处理command()的返回结果。readdb.c 函数名称:cl_load() 函数功能:根据输入的参数,决定如何装载病毒特征代码库。 函数名称:cli_loaddbdir() 函数功能:在指定的文件夹内加载特征代码库 函数名称:cli_load() 函数功能:根据病毒特征代码数据库文件的扩展名加载、解析病毒库文件,并向扫描引擎(engine)里添加由解析病毒库文件得到的病毒特征码、病毒名等。 函数名称:cl

15、i_initroots() 函数功能:初始化各种文件类型匹配的根结构 函数名称:cli_dbgets() 函数功能:从病毒特征代码库中读取数据。病毒特征代码库既可能是个普通文件,也可能是压缩包,通过这个函数对上层屏蔽了这个区别。db文件的加载 为了使读者进一步清晰病毒特征代码库的加载过程,本节仅以.db文件为线索,详细讲解病毒特征代码库的加载过程。 函数名称:cli_loaddb() 函数功能:该函数完成对.db文件的解析,并加载到引擎中。它首先初始化各种类型的匹配器的根结构。然后从文件中读入部分数据到缓存中,调用cli_parse_add()将其加入引擎。 函数名称:cli_parse_ad

16、d() 函数功能:解析病毒特征代码库中的一条记录,并通过cli_ac_addsig()将其加入到引擎。 函数名称:cil_ac_addsig() 函数功能:该函数完成添加一个段的工作。 函数名称:cli_ac_addpatt() 函数功能:更新转移矩阵,添加匹配模式。(4) clamdscan模块 clamdscan的运行流程是:读取并解析命令行参数、读取并解析clamd.conf配置文件的参数、建立到服务端(clamd)的socket、向socket写入待扫描的文件名(或者file descriptor)和扫描方式。该模块主要涉及clamdscan.c和clinet.c两个文件。 clamd

17、scan.c 函数名称:main() 函数功能:该函数主要是解析一些配置信息,创建连接clamd的信息,然后通过client()函数与clamd交互,并打印最后的统计信息。 函数名称:reload_server_database() 函数功能:通过该函数重新加载clamd的病毒特征代码库。 client.c 函数名称:client() 函数功能:根据扫描类型的不同,调用不同的函数进行扫描,如果是文件或文件夹则调用dsfile(),dsstream()用于发送数据流给clamd扫描。如果支持对文件描述符进行扫描,则调用clamd_fdscan()。这些函数都返回扫描到的病毒的个数。(5) cla

18、md响应模块 Clamd程序的功能之一是响应clamdscan的命令,其实现方式是通过监听clamdscan的socket连接做到的。 clamd对clamdscan的响应源代码实现主要放在clamd/thrmgr.c文件中。在这个文件里,主要完成线程池的操作,包括线程的创建和分配。涉及到的主要函数包括thrmgr_dispatch()和thrmgr_worker()。 函数名称:thrmgr_dispatch() 函数功能:使用work_queue_add()将指定的客户请求加入到工作队列,并适时地安排工作给thrmgr_worker()。 函数名称:thrmgr_worker() 函数功能

19、:创建并管理客户端连接线程池。(6) clamd扫描模块 Clamd扫描模块是ClamAV软件的核心部分,它向读者展示了如何在一个染毒文件中发现病毒的具体过程。 session.c 函数名称:command() 函数功能:判断客户端的请求类型并调用相应函数予以执行 函数名称:recvfd_and_scan() 函数功能:接收文件描述符,调用scanfd()进行扫描scanner.c 函数名称:scan() 函数功能:该函数主要是对要扫描的对象做初步鉴定,并决定是否进行扫描。scanners.c 函数名称:cl_scanfile() 函数功能:打开文件,调用cl_scandesc()通过文件描述

20、符扫描文件,返回扫描结果。 函数名称:cl_scandesc() 函数功能:初始化cli_ctx上下文,调用cli_magic_scandesc()进行扫描,如果扫描结果是CL_CLEAN则表示正常。如果发现了可疑程序,则返回CL_VIRUS。所有的根据文件类型的调用,最终都要调用此函数进行病毒扫描。 函数名称:cli_magic_scandesc() 函数功能:根据文件类型,进行区别扫描。 函数名称:dirscan() 函数功能:该函数主要是对文件夹进行处理,然后对其中的文件逐一扫描。matcher.c 函数名称:cli_scandesc() 函数功能:通过文件描述符进行扫描。 函数名称:c

21、li_validatesig() 函数功能:验证特征码起始偏移是否有效。 函数名称:cli_caloff() 函数功能:计算特征码偏移的范围 matcher-ac.c 该文件主要实现了AC(Aho_Corasick自动机)多模式匹配算法,该算法在1975年产生于贝尔实验室。 函数名称:cli_ac_initdata() 函数功能:初始化struct ac_data。 函数名称:cli_ac_scanbuff() 函数功能:对buffer中的数据进行扫描。 函数名称:ac_findmatch() 函数功能:匹配一个pattern。5 章节实验 【实验目的】 掌握ClamAV杀毒工具的使用 【实验平台】 Fedora 7 ClamAV 0.94.2 【实验步骤】 详细参考本书7.2、7.3两个章节。 【实验素材】 解压目录AttachmentCh07

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第7章-ClamAV软件分析与使用课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|