简介
本文档介绍如何在Windows上使用ClamAV sigtool.exe创建自定义检测 — 高级。
关于高级自定义检测
高级自定义检测类似于传统的防病毒签名,但它们由用户编写。为了检测恶意软件和其他基于文件的威胁,ClamAV依靠签名来区分干净和恶意/不需要的文件。ClamAV签名主要是基于文本的,并且符合与给定检测方法相关的ClamAV特定签名格式之一。这些签名可以检查文件的各个方面,并且具有不同的签名格式。一些可用的签名格式包括:
· MD5签名
·基于MD5、PE部分的签名
·基于文件的正文签名
·扩展签名格式(偏移、通配符、正则表达式)
·逻辑签名
·图标签名
ClamAV项目以CVD(ClamAV病毒数据库)文件的形式分发签名集合。CVD文件格式提供数字签名的容器,用于封装签名,并确保恶意第三方无法修改签名。此签名集由Cisco Talos主动维护,并可使用ClamAV随附的更新程序进行下载
为什么选择ClamAV
我们使用ACD匹配复杂检测/文件属性,这些属性无法使用SHA256散列检测,如下例所示:
基于主体的签名内容格式
ClamAV以十六进制格式存储所有基于正文的(基于内容的)签名,ClamAV YARA规则支持除外。 十六进制签名是指恶意软件主体的一部分转换为十六进制字符串,该字符串可以使用各种通配符进行额外扩展。
逻辑签名允许使用逻辑运算符以扩展格式组合多个签名。它们可以提供更详细和灵活的模式匹配。
扩展签名格式是ClamAV基于主体的签名的最基本类型,因为原始.db数据库格式已被弃用。
扩展签名允许指定超出十六进制内容的其他信息,例如文件“目标类型”、病毒偏移量或引擎功能级别(FLEVEL),从而使检测更加可靠
网络钓鱼签名
当显示文本是不同于实际URL的域的URL时,ClamAV可以检测看起来可疑的HTML链接。遗憾的是,公司经常会签订Web服务并使用HTML链接显示文本使其看起来像公司网站的链接。由于这种做法很常见,因此ClamAV只对经常成为网络钓鱼攻击目标的特定网站进行网络钓鱼检查
字节码签名
Bytecode Signatures是通过编写C代码来解析文件提取各个阶段的样本内容,从而执行更复杂匹配的方法。
基于容器元数据的签名
ClamAV 0.96允许创建通用签名,以匹配存储在满足特定条件的不同容器类型中的文件。签名格式为:
VirusName:ContainerType:ContainerSize:FileNameREGEX:
FileSizeInContainer:FileSizeReal:IsEncrypted:FilePos:
Res1:Res2[:MinFL[:MaxFL]]
其中对应的字段为:
VirusName:签名匹配时显示的病毒名称。
ContainerType:包含目标文件的文件类型。例如:
CL_TYPE_ZIP、
CL_TYPE_RAR、
CL_TYPE_ARJ、
CL_TYPE_MSCAB、
CL_TYPE_7Z、
CL_TYPE_MAIL、
CL_TYPE_POSIX_TAR、
CL_TYPE_OLD_TAR、
CL_TYPE_CPIO_OLD,
CL_TYPE_CPIO_ODC、
CL_TYPE_CPIO_NEWC,
CL_TYPE_CPIO_CRC
等等。
本文档重点介绍散列签名。
注意:为ClamAV创建签名的最简单方法是使用文件哈希校验和,但是此方法只能用于防范静态恶意软件。
注意:请注意,本文档中的信息可能会随着更新版本的ClamAV而更改。请务必与ClamAV官方指南关联并进行验证。
有关签名格式的更多信息,请访问:ClamAV网站
这些签名将编译为下载到终端的文件。要创建高级自定义检测,请转至Outbreak Control > Advanced。单击Create Signature Set创建新的高级自定义检测集,为其指定一个名称,然后单击Create。
创建高级自定义检测集后,点击Edit,即可看到Add Signature链接。输入您的签名名称,然后点击Create。
列出所有签名后,选择从签名集构建数据库。如果意外添加了不需要的签名,可以点击Remove将其删除。
警告:无论何时添加或删除签名,都必须点击Build a Database from Signature Set
注意:当您为文件创建高级自定义检测时,该文件需要缓存一小时。如果将文件添加到高级自定义检测集,则缓存时间必须到期,检测才会生效。例如,如果在未知文件缓存5分钟后为其添加高级自定义检测,则检测在另外55分钟内不会生效。
如何使用sigtool.exe创建自定义检测 — 高级
第1步:首先,我们需要导航到ClamAV网站下载来获取sigtool
在本例中,我下载ZIP软件包clamav-1.1.0.win.x64.zip
第2步:将文件解压到首选位置。我使用C:/ClamAV
请注意突出显示的文件夹和文件。
clamscan.exe — 是一种命令行工具,用于扫描文件和/或目录中的病毒。与clamdscan不同,clamscan不需要运行中的clamd实例即可运行。相反,Clamscan会创建一个新引擎,并在每次运行时加载到病毒数据库。它会扫描在命令行中指定的文件和/或目录,创建扫描报告并退出。
sigtool.exe -用于创建和格式化签名并写入*.hdb文件的工具。hdb扩展名引用基于哈希的签名。sigtool提取libclamav,并提供执行clamscan在幕后执行的任务的快捷方式。在写入签名或尝试获取有关可能导致FP或性能问题的签名的信息时,这些命令非常有用。
VirusVault — 这是我自己的文件夹,创建该文件夹的目的是删除我想为其创建自定义签名的文件。
VirusRV.hdb — 此文件包含格式化的签名。我将此文件命名为VirusRV,但您可以使用任何有意义的名称。
第3a步:启动CMD行并导航到您之前解压缩ClamAV的位置。
第3b步执行此行。
C:\ClamAV>sigtool —md5 location-of-the-custom-file > name-of-output-file.hdb
您可以更改名称(默认情况下,sigtool使用文件的名称),并将其放入*.hdb文件中。单个数据库文件可以包含任意数量的签名。要每次启动clamscan/clamd时自动加载它们,只需将数据库文件复制到本地病毒数据库目录(例如/usr/local/share/clamav)中。
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRV.hdb
在这种情况下,这会为名为TestVirusRV.exe的文件创建签名,然后将签名写入名为VirusRV.hdb的文件
注:如果您想要根据SHA值创建签名,则相应的文件将另存为*.hsb
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\TestVirusRV.exe > VirusRVsha256.hsb
注意:基于哈希的签名不得用于文本文件、HTML和任何其他在模式匹配之前在内部预处理过的数据。如果在这种情况下确实要使用哈希签名,请运行带有 — debug和 — leave-temps的clamscan,并为保留在/tmp中的预处理文件创建签名。请记住,一旦目标文件中的单个字节发生更改,哈希签名将停止匹配。此处可找到更多信息
以下sigtool标志对于签名编写特别有用:
—md5 / —sha1 / —sha256:生成MD5/SHA1/SHA256散列并计算文件大小,将两者作为格式正确的.hdb/.hsb签名输出
签名名称
ClamAV签名只能使用字母数字字符、短划线(-)、点(.)和下划线(_)来分隔单词。切勿使用空格、撇号、冒号、分号或引号。
在官方签名数据库中找到的ClamAV签名名称通常使用以下格式:
{platform}.{category}.{name}-{signature id}-{revision}
第三方数据库中的命名规则各不相同。您可以在此处找到用于为官方数据库命名签名的Cisco-Talos指南。
提示:如果您想对您先前在我案例中创建的目录中名为VirusVault的文件创建多个签名,您可以使用通配符运行命令。在本例中,我运行我的命令为:
C:\ClamAV>sigtool —md5 C:\ClamAV\VirusVault\ wildcard\ > VirusRV.hdb
C:\ClamAV>sigtool --md5 C:\ClamAV\VirusVault\*\ > VirusRV.hdb
哪项针对目录VirusVault中的每个文件创建了签名
第4步:运行此命令验证签名。
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\TestVirusRV.exe
要验证所有签名,可以再次使用通配符掩码。
C:\ClamAV>clamscan -d VirusRV.hdb C:\ClamAV\VirusVault\*\
第5步:打开新创建的*.hdb文件并复制创建的签名,然后导航到Outbreak Control > Advanced下的安全终端控制台,然后点击Edit,即可看到Add Signature链接。
第6步:确保点击Build a Database from Signature Set,然后将新的Custom Detections应用到策略。
第7步:在终端上同步您的策略,并使用手动扫描测试您的新签名。您可以看到如下所示的结果。
手动扫描
安全终端控制台中的检测
活动已展开
在安全终端控制台中保存签名的要求
如果只有MD5哈希值,并且不知道文件的大小,您仍然可以创建签名集,但您必须使用以下规则:
答:MD5不能包含所有大写字母
正确的MD5散列:
5b852928a129d63dc5c895bd62cf2ab7
MD5哈希不正确:
5B852928A129D63DC5C895BD62CF2AB7
使用所有大写字母的安全终端控制台出错
B:命名必须使用大写字母,大写字母可以是自己的名称。
正确名称:
Dm-launcher.msi
名称不正确:
dm-launcher.msi
C:可以使用通配符表示大小,但必须使用:73表示最小FLEVEL
正确的通配符:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi:73
不正确的通配符:
5b852928a129d63dc5c895bd62cf2ab7:*:dm-launcher.msi
Secure Endpoint Console中所有小写名称都出现错误,并且未指定FLEVEL
注意:大小未知的哈希签名 — ClamAV 0.98还增加了大小未知但哈希为的哈希签名支持。使用具有特定大小的签名更加高效,因此使用此功能时要谨慎。对于这些情况,大小字段中可以使用“*”字符。为确保与旧版本的ClamAV的正确向后兼容性,这些签名必须具备最低功能级别73或更高。使用通配符大小但不使用此级别集的签名会因格式错误而被拒绝。