欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Clamav使用及规则库详解

程序员文章站 2022-05-27 13:32:18
...

Clamav作为一款开源的病毒引擎,能够探测木马、病毒、恶意软件及其它的恶意威胁。

官方地址:http://www.clamav.net/
Github上维护的开源代码:https://github.com/Cisco-Talos/clamav-devel/
官方可以下载最新的开源代码及使用的病毒库。
从下载地址看,现在还支持exe文件的下载及使用,这里就不再做介绍。

安装clamav时,会自动安装sigtool。
Sigtool是一款针对clamav病毒库的读取工具。
查看帮助文档,可以明确各参数的具体使用方法
sigtool --help

                      Clam AntiVirus: Signature Tool 0.100.0
           By The ClamAV Team: https://www.clamav.net/about.html#credits
           (C) 2007-2018 Cisco Systems, Inc.

    sigtool [options]

    --help                 -h              Show this help
    --version              -V              Print version number and exit
    --quiet                                Be quiet, output only error messages
    --debug                                Enable debug messages
    --stdout                               Write to stdout instead of stderr
    --hex-dump                             Convert data from stdin to a hex
                                           string and print it on stdout
    --md5 [FILES]                          Generate MD5 checksum from stdin
                                           or MD5 sigs for FILES
    --sha1 [FILES]                         Generate SHA1 checksum from stdin
                                           or SHA1 sigs for FILES
    --sha256 [FILES]                       Generate SHA256 checksum from stdin
                                           or SHA256 sigs for FILES
    --mdb [FILES]                          Generate .mdb (section hash) sigs
    --imp [FILES]                          Generate .imp (import table hash) sigs
    --html-normalise=FILE                  Create normalised parts of HTML file
    --ascii-normalise=FILE                 Create normalised text file from ascii source
    --utf16-decode=FILE                    Decode UTF16 encoded files
    --info=FILE            -i FILE         Print database information
    --build=NAME [cvd] -b NAME             Build a CVD file
    --max-bad-sigs=NUMBER                  Maximum number of mismatched signatures
                                           When building a CVD. Default: 3000
    --flevel=FLEVEL                        Specify a custom flevel.
                                           Default: 91
    --cvd-version=NUMBER                   Specify the version number to use for
                                           the build. Default is to use the value+1
                                           from the current CVD in --datadir.
                                           If no datafile is found the default
                                           behaviour is to prompt for a version
                                           number, this switch will prevent the
                                           prompt.  NOTE: If a CVD is found in the
                                           --datadir its version+1 is used and
                                           this value is ignored.
    --no-cdiff                             Don't generate .cdiff file
    --unsigned                             Create unsigned database file (.cud)
    --hybrid                               Create a hybrid (standard and bytecode) database file
    --print-certs=FILE                     Print Authenticode details from a PE
    --server=ADDR                          ClamAV Signing Service address
    --datadir=DIR                          Use DIR as default database directory
    --unpack=FILE          -u FILE         Unpack a CVD/CLD file
    --unpack-current=SHORTNAME             Unpack local CVD/CLD into cwd
    --list-sigs[=FILE]     -l[FILE]        List signature names
    --find-sigs=REGEX      -fREGEX         Find signatures matching REGEX
    --decode-sigs                          Decode signatures from stdin
    --test-sigs=DATABASE TARGET_FILE       Test signatures from DATABASE against 
                                           TARGET_FILE
    --vba=FILE                             Extract VBA/Word6 macro code
    --vba-hex=FILE                         Extract Word6 macro code with hex values
    --diff=OLD NEW         -d OLD NEW      Create diff for OLD and NEW CVDs
    --compare=OLD NEW      -c OLD NEW      Show diff between OLD and NEW files in
                                           cdiff format
    --run-cdiff=FILE       -r FILE         Execute update script FILE in cwd
    --verify-cdiff=DIFF CVD/CLD            Verify DIFF against CVD/CLD

下载的病毒库cvd是由zlib压缩库压缩的文件,前512个bytes是一个特殊的头文件,记录引擎病毒库的简单信息,包括名字、创建时间、版本号、签名数量等,然后一个接着一个存储病毒库文件。clamav提供了一个签名工具sigtool,可以查看、生成和解压缩病毒库,在clamav的运行代码中会通过cli_untgz函数解压缩cvd文件,可以通读代码了解详细过程。
几个使用事例:

  1. 查看规则库的详细信息sigtool -i main.cvd
File: main.cvd
Build time: 07 Jun 2017 17:38 -0400
Version: 58
Signatures: 4566249
Functionality level: 60
Builder: sigmgr
MD5: 57462fd73f1cfdb356b9dca66da2b732
Digital signature: KWRdhTG+Own6ohh0wn5+vqg1d8ULKCxxxQeKuSA155B3ijxBKgf+bV3IXPcmZrIBUDn1xi8FmyvB63UieykwN/Avq5mTjHIVO8zFnC7wVF7dhdcEYn9Nt+Pmk/HXXx0voylYkidvgZmrxI8jx4a/Re6n3hHQJoCZrkHM15GER8j
Verification OK.
  1. 使用sigtool –unpack对病毒库文件进行解压缩解压缩出来的文件都是明文,可直接进行查看。对main.cvd进行解压缩后可以看到如下文件:
    COPYING main.crb main.fp main.hdb main.hsb main.info main.mdb main.msb main.ndb main.sfp
  2. 很多人解压缩后想打包回去,sigtool提供了–build参数。生成cvd的过程需要证书,当前只供维护人员使用。因为当前用不到,所以没有深究源码是如何实现的。

针对不一样的文件后缀,库的功能是不一样的。
病毒库签名文件总结如下:

签名文件后缀名 签名类型
*.hdb 基于md5 hash的签名
*.hsb 基于sha1和sha256 hash的签名
*.mdb 基于PE section hash的签名
*.db Body-based的基本签名
*.ndb Body-based的扩展签名
*.ldb Body-based的逻辑签名
*.idb PE文件的图标签名
*.ndb PE文件版本信息元数据签名
.crb, .crtdb 信任和撤销的证书签名
*.cdb 容器元数据签名
.zmd(zip)和*.rmd(rar) 只基于ZIP/RAR元数据的签名
.fp(md5)和.sfp(sha1和sha256) 白名单数据库
*.pdb 钓鱼url/host签名
*.gdb 钓鱼URL hash签名
*.wdb 钓鱼URL白名单签名
相关标签: clamav sigtool