实验目的
请依据课程《JS下载者脚本木马的分析与防御技术》中的内容,利用启发式查杀的思想,尽可能多地查杀掉本次实验样本中的恶意程序。
说明:
1、《JS下载者脚本木马的分析与防御技术》完整课件下载地址:https://pan.baidu.com/s/1c2fwTBq 密码: yuhb
2、大家也可以参考《查杀带有编码的脚本木马》以及《正则表达式入门》来完成本次的实验。
3、本次样本文件都是真实的恶意程序,请在分析前关闭电脑中的杀毒软件。
4、绝对不可以在真实的计算机中运行本次的样本。
5、请提交实验报告以及你的源代码文件。实验报告中请说明你的程序可以查杀掉哪些样本(列出MD5)。
解压密码:www.52pojie.cn
实验内容
#作者:
#时间:2019/04/08
#功能:启发式查杀病毒程序
#参考:https://blog.csdn.net/LZGS_4/article/details/50371030 - Python读取文件夹下的所有文件
# https://blog.csdn.net/Together_CZ/article/details/61191528 - python 获取字符串MD5值
# https://blog.csdn.net/mighty13/article/details/77995857 - Python遍历文件夹下所有文件及目录
# https://blog.csdn.net/Cryhelyxx/article/details/45219947 - python获取指定目录下的所有指定后缀的文件名
# https://blog.csdn.net/lovemianmian/article/details/8867613 - 关于python 的re.sub用法
# https://www.cnblogs.com/xiaobeibei26/p/6481707.html - Python之threading多线程
# https://cloud.tencent.com/developer/article/1199693 - Python多线程学习
# https://cloud.tencent.com/developer/ask/134011 - 如何声明python全局列表?
import os
import re
import hashlib
import threading
from multiprocessing import Pool
from requests.exceptions import ReadTimeout
from requests.exceptions import HTTPError
from requests.exceptions import RequestException
from requests.exceptions import ConnectionError
all_virus_md5 = [] # 所有病毒的md5值
all_warn_program_md5 = [] #警告程序的md5值
program_path = [] # 程序路径集合
program_sum = [] # 程序数量下标
virus_count = 0
program_count = 0
warn_program_md5 = 0
mylock = threading.RLock()
mylock2 = threading.RLock()
mylock3 = threading.RLock()
#利用os模块system()方法获取文件的MD5值
def get_file_md5(file_path):
"""
获取文件md5值
:param file_path: 文件路径名
:return: 文件md5值
"""
with open(file_path, 'rb') as f:
md5obj = hashlib.md5()
md5obj.update(f.read())
_hash = md5obj.hexdigest()
return str(_hash).upper()
#去掉all_virus_md5中的特定元素
def all_virus_md5_remove(note):
global virus_count
global mylock
if note in all_virus_md5:
all_virus_md5.remove(note)
mylock.acquire() #加锁
virus_count = virus_count - 1
mylock.release() #解锁
print("已经执行完all_virus_md5_remove!")
#去掉all_virus_md5中的特定元素
def all_warn_program_md5_remove(note):
global warn_program_md5
globa