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

上传人:29 文档编号:242622327 上传时间:2024-08-29 格式:PPTX 页数:44 大小:860.38KB
返回 下载 相关 举报
第7章-ClamAV软件分析与使用课件_第1页
第1页 / 共44页
第7章-ClamAV软件分析与使用课件_第2页
第2页 / 共44页
第7章-ClamAV软件分析与使用课件_第3页
第3页 / 共44页
点击查看更多>>
资源描述
单击此处编辑母版文本样式,第二级,信息安全工程学院,School of Information Security Engineering,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,信息安全工程学院,College of Information Security Engineering,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020/5/9 Saturday,#,#,本章学习目标,了解,ClamAV,引擎的框架,了解,ClamAV,的核心代码,掌握,ClamAV,使用方法,本章学习目标了解ClamAV引擎的框架,本章内容,ClamAV,的总体结构,ClamAV,的使用说明,安装配置,源代码分析,章节实验,本章内容ClamAV的总体结构,1 ClamAV,的总体结构,ClamAV vs OAV,相同点:,ClamAV,和,OAV,两个防病毒软件非常类似,二者都是使用匹配特征代码的方式来检查病毒,甚至它们的病毒特征代码库都是一样的,1 ClamAV的总体结构ClamAV vs OAV,不同点:,ClamAV,是在,clamd,启动时将病毒特征代码库加载入内存,并且根据文件类型把特征代码库进行了分类。在内存中,为每种文件类型对应的特征代码库建立了一棵庞大的树,然后,在这棵树为核心数据结构,使用有限自动机来进行匹配。,而,OAV,则是对每个特征码做一个,HASH,,匹配的时候先匹配,HASH,,从而缩小了匹配范围,最后再逐个匹配。,ClamAV,使用,C,语言编制,而,OAV,使用,java,语言,不同点:,ClamAV,的组件,ClamAV的组件,main.cvd,:计算机病毒特征代码库,该部分为主库。,daily.cvd,:计算机病毒特征代码库,该部分为日常更新的库。,clamd,:基于多线程开发的查杀引擎守护进程,通过,socket,,,streams,,,file descriptor,进行扫描操作。,clamdscan,:调用,clamd,进行病毒扫描的客户端程序。二者通过,Socket,进行通信。,clamscan,:可独立响应用户请求(在,clamd,未运行时)的客户端程序。,clamscan,读取病毒特征代码库的信息,并进行病毒扫描。其效率不如,clamdscan,和,clamd,的组合高。,main.cvd:计算机病毒特征代码库,该部分为主库。,freshclam,:更新病毒特征代码库的程序。,libclamav,:病毒扫描函数库,这是核心算法部分。,sigtool,:,clamav,管理工具,可以查看病毒特征代码库文件(,.cvd,)的信息、解压病毒特征代码库,.cvd,文件、制作病毒特征代码库文件等。,clamav-milter,:,email,扫描器。在该组件的配合下,,ClamAV,可以完成对邮件服务器的病毒扫描工作。,clamuko,:在,Linux/FreeBSD,系统中,为了实现,on-access,病毒扫描功能,必须安装,dazuko,组件,这就是所谓的,clamuko,。,freshclam.conf,:用于配置病毒特征库升级程序(,freshclam,)。,clamd.conf,:用于配置,clamd,和,clamscan,程序。,freshclam:更新病毒特征代码库的程序。,2 ClamAV,使用,命令,命令解释,PING,检查守护进程的状态,VERSION,输出版本信息,RELOAD,重新加载数据库,SHUTDOWN,正常退出,SCAN file/directory,扫描文件或目录,同时支持压缩文件,RAWSCAN file/directory,扫描文件或目录,但是考虑文件类型,CONTSCAN file/directory,扫描文件或目录,并且找到病毒后仍继续扫描,MULTISCAN file/directory,使用多线程扫描文件或目录,INSTREAM,扫描流,输入的格式如下:,,其中,用无符号四字节整数表示数据的字节数,,是实际的数据。扫描以,=0,表征结束,另外总长度不能超过配置文件中设置的流最大长度,,否则连接将被关闭,FILDES,Unix,特有的,根据文件描述符进行扫描,STATS,返回服务端的队列状态信息以及内存的使用情况,IDSESSION, END,用来发起或结束一个会话,这样,就能在一个连接中,进行多次不同的扫描,省去建立新的连接。,STREAM,(deprecated, use,INSTREAM,instead),废弃,2 ClamAV使用命令命令解释PING检查守护进程的状态V,工具名,功能介绍,Clamscan,最简单的扫描工具,它是一个独立的程序,可以单独运行而无须,Clamd,支持。但是的它的缺点是不能与其它,Clamscan,实例共享内存线程等。它适合于对单个文件进行临时的扫描,Clamdscan,功能与,Clamscan,一样,但是它依赖于,Clamd,,它是通过将请求通过,Socket,发给,Clamd,让,Clamd,做实际的扫描工作,再从,Clamd,取回结果即可。它的效率高,推荐使用。,Clamuko,这并不是一个工具,而是,Clamd,中的一个重要模块,开启了它才能进行访问时扫描。但它不支持,NFS,,原因是其底层模块没有捕获,NFS,请求,工具名功能介绍Clamscan最简单的扫描工具,它是一个独立,3,安装配置,软硬件环境:,硬件:普通,PC,机,操作系统:,Fedora 7,软件版本:,ClamAV 0.94.2,3 安装配置软硬件环境:,安装准备,安装前要先创建用户,clamav,和用户组,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/etc/clamd.conf,。根据,man clamd.conf,的信息来设置,clamd.conf,。特别要注意的是,要把,Example,这一行注释掉,否则,clamd.conf,不生效。,2,、修改配置文件,freshclam.conf,该文件默认路径为,/usr/local/etc/freshclam.conf,。如果英文阅读能力较强,可以非常容易理解各个配置项的意思。同样,也要把,Example,这一行注释掉,否则,freshclam.conf,不生效。最关键的配置项包括:,配置,Checks,:配置特征代码库的更新频率,ProxySettings,:设置代理服务器的地址,账号,口令等,MaxAttempts,:最大尝试联网次数,3,、下载特征代码库,读者可以从, 源代码分析分析顺序,(,1,),ClamAV,配置,ClamAV,的配置选项记录在,/etc/clamd.conf,文件中。,配置选项的数据结构如下:,(1)ClamAV配置ClamAV的配置选项记录在/etc/,shared/optparser.c,函数名:,optparser(),功能:对参数进行解析,以链表形式返回选项,,函数名:,optfree(),功能:释放选项链表,函数名:,optaddarg(),功能:向选项链表中加入新的选项,shared/optparser.c函数名:optparse,(,2,)病毒特征代码库,ClamAV,有两个官方病毒特征代码库文件:,main.cvd,和,daily.cvd,。这种文件实际上是带有数字签证的压缩文件,它包含了一个或多个真正的病毒代码库文件。,main.cvd,的内容:,main.db,main.fp,main.hdb,main.info,main.mdb,main.ndb,main.zmd,(2)病毒特征代码库 ClamAV有两个官方病毒特征代码库文,main.db,文件中病毒特征代码的形式是:,MalwareName=HexSignature,其中,HexSignature,可以由*,数字分隔成一个一个的,part-signature,。,main.ndb,文件中的病毒特征代码的形式是:,MalwareName:TargetType:Offset:HexSignature:MinEngineFunctionalityLevel:Max,main.mdb,文件中的病毒特征代码的形式是:,PESectionSize:MD5:MalwareName,main.db文件中病毒特征代码的形式是:,(,3,),clamd,初始化,ClamAV,执行过程的第一步就是进行执行环境的初始化,其主要工作包括解析命令、载入配置文件、解除特权、初始化日志、选择,socket,类型、配置对可疑程序类别的检测处理、设置临时文件夹等。这些工作主要涉及的文件:,calmd/clamd.c,calmd/server-th.c,calmd/readdb.c,(3) clamd初始化 ClamAV执行过程的第一步就是进,clamd/clamd.c,函数名称:,main(),函数功能:,这是入口函数,主要完成对引擎的初始化。工作包括解析命令、载入配置文件、解除特权(如果不是,windows,或,os2,系统)、初始化日志、选择,socket,类型、配置对可疑程序类别的检测处理、设置临时文件夹、编译引擎和初始化,socket,可能有多个、转入后台工作调用,acceptloop_th(),等待客户端连接。,clamd/clamd.c函数名称:main(),clamd/server-th.c,函数名称:,acceptloop_th(),函数功能:,该函数主要功能是拦截消息,添加消息处理函数,调用,reload_db(),加载数据库,利用,thrgmr_new(),创建线程池,等待客户端连接,调用,thrmgr_dispatch(),函数分发工作。,clamd/server-th.c 函数名称:acceptl,函数名称:,reload_db(),函数功能:,检查病毒特征代码库状态或者调用,cl_load(),加载病毒特征代码库,重新加载后调用,cl_engine_compile(),为开始扫描作最后的准备。,函数名称:reload_db(),函数名称:,scanner_thread(),函数功能:,本函数是服务器收到客户端请求的处理函数。它主要的功能是添加消息处理函数。然后调用,command(),来处理客户端的请求,并处理,command(),的返回结果。,函数名称:scanner_thread(),readdb.c,函数名称:,cl_load(),函数功能:根据输入的参数,决定如何装载病毒特征代码库。,函数名称:,cli_loaddbdir(),函数功能:在指定的文件夹内加载特征代码库,函数名称:,cli_load(),函数功能:根据病毒特征代码数据库文件的扩展名加载、解析病毒库文件,并向扫描引擎(,engine,)里添加由解析病毒库文件得到的病毒特征码、病毒名等。,readdb.c 函数名称:cl_load(),函数名称:,cli_initroots(),函数功能:初始化各种文件类型匹配的根结构,函数名称:,cli_dbgets(),函数功能:从病毒特征代码库中读取数据。病毒特征代码库既可能是个普通文件,也可能是压缩包,通过这个函数对上层屏蔽了这个区别。,函数名称:cli_initroots(),db,文件的加载,为了使读者进一步清晰病毒特征代码库的加载过程,本节仅以,.db,文件为线索,详细讲解病毒特征代码库的加载过程。,db文件的加载为了使读者进一步清晰病毒特征代码库的加载过程,,函数名称:,cli_loaddb(),函数功能:该函数完成对,.db,文件的解析,并加载到引擎中。它首先初始化各种类型的匹配器的根结构。然后从文件中读入部分数据到缓存中,调用,cli_parse_add(),将其加入引擎。,函数名称:,cli_parse_add(),函数功能:解析病毒特征代码库中的一条记录,并通过,cli_ac_addsig(),将其加入到引擎。,函数名称:cli_loaddb(),函数名称:,cil_ac_addsig(),函数功能:该函数完成添加一个段的工作。,函数名称:,cli_ac_addpatt(),函数功能:更新转移矩阵,添加匹配模式。,函数名称:cil_ac_addsig(),(,4,),clamdscan,模块,clamdscan,的运行流程是:读取并解析命令行参数、读取并解析,clamd.conf,配置文件的参数、建立到服务端(,clamd,)的,socket,、向,socket,写入待扫描的文件名(或者,file descriptor,)和扫描方式。该模块主要涉及,clamdscan.c,和,clinet.c,两个文件。,(4) clamdscan模块 clamdscan的运行流程,clamdscan.c,函数名称:,main(),函数功能:该函数主要是解析一些配置信息,创建连接,clamd,的信息,然后通过,client(),函数与,clamd,交互,并打印最后的统计信息。,函数名称:,reload_server_database(),函数功能:通过该函数重新加载,clamd,的病毒特征代码库。,clamdscan.c 函数名称:main(),client.c,函数名称:,client(),函数功能:根据扫描类型的不同,调用不同的函数进行扫描,如果是文件或文件夹则调用,dsfile(),,,dsstream(),用于发送数据流给,clamd,扫描。如果支持对文件描述符进行扫描,则调用,clamd_fdscan(),。这些函数都返回扫描到的病毒的个数。,client.c函数名称:client(),(,5,),clamd,响应模块,Clamd,程序的功能之一是响应,clamdscan,的命令,其实现方式是通过监听,clamdscan,的,socket,连接做到的。,clamd,对,clamdscan,的响应源代码实现主要放在,clamd/thrmgr.c,文件中。在这个文件里,主要完成线程池的操作,包括线程的创建和分配。涉及到的主要函数包括,thrmgr_dispatch,()和,thrmgr_worker,()。,(5) clamd响应模块 Clamd程序的功能之一是响应c,函数名称:,thrmgr_dispatch(),函数功能:使用,work_queue_add,()将指定的客户请求加入到工作队列,并适时地安排工作给,thrmgr_worker,()。,函数名称:,thrmgr_worker(),函数功能:创建并管理客户端连接线程池。,函数名称:thrmgr_dispatch(),(,6,),clamd,扫描模块,Clamd,扫描模块是,ClamAV,软件的核心部分,它向读者展示了如何在一个染毒文件中发现病毒的具体过程。,(6) clamd扫描模块 Clamd扫描模块是ClamAV,session.c,函数名称:,command(),函数功能:判断客户端的请求类型并调用相应函数予以执行,函数名称:,recvfd_and_scan,(),函数功能:接收文件描述符,调用,scanfd,()进行扫描,session.c 函数名称:command(),scanner.c,函数名称:,scan,(),函数功能:该函数主要是对要扫描的对象做初步鉴定,并决定是否进行扫描。,scanner.c 函数名称:scan(),scanners.c,函数名称:,cl_scanfile(),函数功能:打开文件,调用,cl_scandesc,()通过文件描述符扫描文件,返回扫描结果。,函数名称:,cl_scandesc(),函数功能:初始化,cli_ctx,上下文,调用,cli_magic_scandesc,()进行扫描,如果扫描结果是,CL_CLEAN,则表示正常。如果发现了可疑程序,则返回,CL_VIRUS,。所有的根据文件类型的调用,最终都要调用此函数进行病毒扫描。,scanners.c 函数名称:cl_scanfile(),函数名称:,cli_magic_scandesc(),函数功能:根据文件类型,进行区别扫描。,函数名称:,dirscan(),函数功能:该函数主要是对文件夹进行处理,然后对其中的文件逐一扫描。,函数名称:cli_magic_scandesc(),matcher.c,函数名称:,cli_scandesc(),函数功能:通过文件描述符进行扫描。,函数名称:,cli_validatesig(),函数功能:验证特征码起始偏移是否有效。,函数名称:,cli_caloff(),函数功能:计算特征码偏移的范围,matcher.c 函数名称:cli_scandesc(),matcher-ac.c,该文件主要实现了,AC,(,Aho_Corasick,自动机)多模式匹配算法,该算法在,1975,年产生于贝尔实验室。,函数名称:,cli_ac_initdata(),函数功能:初始化,struct ac_data,。,matcher-ac.c 该文件主要实现了AC(Aho_Co,函数名称:,cli_ac_scanbuff(),函数功能:对,buffer,中的数据进行扫描。,函数名称:,ac_findmatch(),函数功能:匹配一个,pattern,。,函数名称:cli_ac_scanbuff(),5,章节实验,【,实验目的,】,掌握,ClamAV,杀毒工具的使用,【,实验平台,】,Fedora 7,ClamAV 0.94.2,【,实验步骤,】,详细参考本书,7.2,、,7.3,两个章节。,【,实验素材,】,解压目录,AttachmentCh07,5 章节实验【实验目的】,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!