linux下clamav的一次制作特征码杀毒的过程

我用的clamav引擎版本是0.97.6。

1、首先,必须了解clamav病毒特征码格式。这个官方文件有很多了。百度文库里面有一篇应该是从官方文档摘抄下来的,地址是http://wenku.baidu.com/view/93d875d5360cba1aa811daac.html。当然也有中文版的,不过比较简洁,熟悉的人可以看看。地址:http://www.docin.com/p-70733193.html

clamav格式有很多,每一种都是有一个数据库存放的。比如*.db 是用来存放Basic signature format。*.ndb是存放的extended signature format。还有*.mdb,*.ldb,*.idb等等。

2、制作特征码

首先我随意选了一个exe文件。然后计算了它的程序入口点(这个方法我的另一篇文章有提到)。当然之后我知道我自己做了无用功。然后选取了128byte的长度作为特征码。我选择的格式是*.ndb。根据格式,MalwareName我随意填写了一个。TargetType选择1。offset偏移量本该是我的之前计算的程序入口点的地址。但是这个clamav支持一个EP+0。EP+n表示的意思就是程序入口点plus n bytes。这样之前计算的入口点完全没有用了。最后一个是HexSignature。这个比我想象的要简单,我以为要做成MD5或则其他什么的。这个直接就是把这一段的16进制用来填写即可。这个你可以在linux下这么进行:

首先vim -b a.exe,以二进制打开文件,然后:%!xxd转换到十六进制。选取入口点的128bytes,这就是HexSignature了。

我另外做了一个test.ndb。然后写入我之前所说的,制作一个clamav的特征码。保存。

3、杀毒

用clamscan a.exe对文件进行扫描。但是很遗憾的是结果是a.exe:OK。没有杀到毒。我开始以为特征码哪里错了,没有错,然后以为是offset错了,可是也是没有错。最后是我自己的扫描命令出错。

clamscan -d test.ndb a.exe。OK,成功了。成功扫描出来这个a.exe有毒。

忙了一个下午,对杀毒软件的原理更加熟悉了。留一个记录。


你可能感兴趣的:(ClamAV,特征码制作)