基于文件完整性校验的恶意代码检测器设计

文章介绍了文件完整性破坏的原理,包括病毒感染、木马植入等,并提出了利用hash值进行文件完整性检测的技术。通过计算文件的MD5哈希值,在文件创建前设定hash值,之后对比新旧hash值来判断文件是否被篡改。当哈希值不同时,程序会逐字节比较找出差异,实现恶意代码的检测。提供的Python代码示例展示了如何实现这一功能。


1、相关原理、技术分析

1.1文件完整性破坏原理

文件完整性是指文件没有被篡改,破坏文件完整性的方式具体有如下几点:

  1. 感染病毒

    比方说你的系统中了病毒,病毒感染了某个软件安装包或者某个可执行程序。那么该文件的完整性就被破坏了。

  2. 植入木马/后门/人为篡改

    还有一种文件不完整的情况,是被别有用心的人植入木马或后门。比方说某些国内的软件下载站点,它们提供的 Windows 安装光盘镜像已经被安置了后门。

只要文件被篡改后,文件完整性就会改变,就是说文件内容被改变了,文件内容改变一般也是插入了恶意代码

1.2 文件完整性破坏检测技术

最容易想到的检测技术就是比较两个文件,如果两个文件不相同,说明文件被改变了,或者说文件被植入恶意代码,就可以说文件完整性改变,但是这种方法行不通,有些文件非常大,如果一个一个字符的比较会非常慢,这样就想到了另外一种方法,如果一个文件在被创造之前就对他进行了hash认定,那么当我们想要验证文件是否被篡改的时候,只需要计算该文件的hash值,再比较先前的hash值,就可以实现文件完整性校验

再说得具体一点如下所示:

软件开发者在发布软件(比如一个exe文件)前,使用某个校验算法计算出该exe文件的“特征值”,然后将这个特征值和exe文件一同发布到网络上。用户使用相同的校验算法计算下载到exe文件的特征值,并与软件开发者发布的特征值比较。如果两个特征值相同,则认为下载到的exe文件是正确的。如果两个特征值不同,则认为下载到exe文件是被篡改过的,这样也实现了恶意代码检测

2、设计思路、算法描述

我自己是这么想的,在每一个文件创建之前先通过hash函数给文件设置唯一一个hsah值,如果hash值对比一样,那么文件一定是没有被更改,不同的文件得出相同的hash值基本上不可能,这样的可能性太小了,在该实验中可以判断为0,如果两文件的hash值不同,再一个字符一个字符的进行比较,找出恶意代码

3、代码的详细实现

import hashlib


def get_md5(s):
   """
   把文件类容进行MD5加密,加密后为32位密文
   :param s:
   :return: 返回唯一标识符,及文件的加密值
   """
   md = hashlib.md5()  # 设置hash对象
   md.update(s.encode('utf-8'))  # 把内容进行编码后(搞成bytes类型),加进对象中
   return md.hexdigest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三年之约-第二年

你的鼓励是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值