Clamav使用及规则库详解

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的签名
*.dbBody-based的基本签名
*.ndbBody-based的扩展签名
*.ldbBody-based的逻辑签名
*.idbPE文件的图标签名
*.ndbPE文件版本信息元数据签名
.crb, .crtdb信任和撤销的证书签名
*.cdb容器元数据签名
.zmd(zip)和*.rmd(rar)只基于ZIP/RAR元数据的签名
.fp(md5)和.sfp(sha1和sha256)白名单数据库
*.pdb钓鱼url/host签名
*.gdb钓鱼URL hash签名
*.wdb钓鱼URL白名单签名
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java_ClamAV是一个Java语言实现的ClamAV API,用于在Java应用程序中集成ClamAV扫描引擎。以下是Java_ClamAV的安装和使用步骤: 1. 安装ClamAV Java_ClamAV是基于ClamAV的API,因此首先需要安装ClamAV扫描引擎。可以通过以下命令在Linux系统上安装ClamAV: ``` sudo apt-get install clamav ``` 2. 下载Java_ClamAV 可以从Java_ClamAV的GitHub仓中下载Java_ClamAV的源代码:https://github.com/solrevdev/java-clamav 3. 编译Java_ClamAV 进入Java_ClamAV的源代码目录,执行以下命令编译Java_ClamAV: ``` mvn clean package ``` 4. 导入Java_ClamAV到你的项目 将Java_ClamAV生成的jar包导入到你的Java项目中。 5. 使用Java_ClamAV 以下是一个简单的Java_ClamAV使用示例: ```java import java.io.File; import java.io.IOException; import org.clamav4j.ClamAV; import org.clamav4j.ClamScan; import org.clamav4j.ScanResult; import org.clamav4j.ScanResult.Status; public class ClamAVExample { public static void main(String[] args) throws IOException { // 初始化ClamAV扫描引擎 ClamAV clamAV = new ClamAV(); // 创建一个ClamScan对象 ClamScan clamScan = new ClamScan(clamAV); // 扫描文件 File file = new File("/path/to/file"); ScanResult scanResult = clamScan.scan(file); // 检查扫描结果 if (scanResult.getStatus() == Status.PASSED) { System.out.println("文件是安全的"); } else { System.out.println("文件可能包含病毒:" + scanResult.getVirusName()); } } } ``` 以上是一个简单的Java_ClamAV使用示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值