最近真的太忙了,天天打仗一样,感谢大家的支持和关注,稍微松口气分享篇博客,继续加油!该系列文章将系统整理和深入学习系统安全、逆向分析和恶意代码检测,文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。漫漫长征路,偏向虎山行。享受过程,一起加油~
前文详细介绍恶意代码静态分析经典工具Capa的基础用法,它是FireEye团队开源的工具,旨在自动化提取样本的高级静态特征,快速挖掘样本的恶意行为。这篇文章将详细讲解Capa批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。此外,Capa支持IDA插件操作,方便安全人员快速定位恶意代码,能与ATT&CK框架和MBC映射。基础性文章,希望对您有帮助,如果存在错误或不足之处,请海涵。且看且珍惜。
文章目录:
一.恶意软件分析与Capa四.总结
1.静态特征
2.动态特征
3.Capa简介
二.批量提取静态特征
1.数据集描述
2.文件遍历
3.CAPA批量提取静态特征
4.超时判定
三.提取Json文件API特征和ATT&CK技战术
1.读取单个Json文件内容
2.Json格式分析
3.利用jsonsearch提取ATT&CK特征
4.利用jsonsearch提取API特征
5.文件存储
四.总结
作者的github资源:
逆向分析:
https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
网络安全:
https://github.com/eastmountyxz/
NetworkSecuritySelf-study
作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔!
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。(参考文献见后)
一.恶意软件分析与Capa
恶意软件或恶意代码分析通常包括静态分析和动态分析。特征种类如果按照恶意代码是否在用户环境或仿真环境中运行,可以划分为静态特征和动态特征。
那么,如何提取恶意软件的静态特征或动态特征呢? 因此,第一部分将简要介绍静态特征和动态特征。
1.静态特征
没有真实运行的特征,通常包括:
- 字节码
:二进制代码转换成了字节码,比较原始的一种特征,没有进行任何处理
- IAT表
:PE结构中比较重要的部分,声明了一些函数及所在位置,便于程序执行时导入,表和功能比较相关
- Android权限表
:如果你的APP声明了一些功能用不到的权限,可能存在恶意目的,如手机信息
- 可打印字符
:将二进制代码转换为ASCII码,进行相关统计
- IDA反汇编跳转块
:IDA工具调试时的跳转块,对其进行处理作为序列数据或图数据
- 常用API函数
- 恶意软件图像化
静态特征提取方式:
CAPA
– https://github.com/mandiant/capaIDA Pro
安全厂商沙箱
2.动态特征
相当于静态特征更耗时,它要真正去执行代码。通常包括:
– API调用关系:比较明显的特征,调用了哪些API,表述对应的功能
– 控制流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类
– 数据流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类
动态特征提取方式:
Cuckoo
– https://github.com/cuckoosandbox/cuckooCAPE
– https://github.com/kevoreilly/CAPEv2安全厂商沙箱
3.Capa简介
Capa是FireEye(Mandiant)公司开源的静态分析工具,旨在检测和识别恶意软件的高级静态行为,同时支持IDA插件操作和安装服务及HTTP通信,方便安全人员快速定位恶意代码,且能与ATT&CK框架和MBC映射。
通常能分析的样本格式:
PE文件
ELF文
.NET模块
ShellCode文件
下载地址:
https://github.com/mandiant/capa
https://github.com/fireeye/capa
该工具运行结果如下所示,它能有效反映恶意软件在ATT&CK框架中的技战术特点,比如:DEFENSE EVASION、DISCOVERY、EXECUTION、EXFILTRATION、PERSISTENCE等。
二.批量提取静态特征
在使用Capa提取静态特征过程中,通常会遇到一个问题——如何利用Capa批量提取恶意软件的静态特征。
1.数据集描述
假设存在如下图所示的数据集,利用capa.exe提取的结果将存储在result文件夹中。
dataset:
result:
capa.exe
2.文件遍历
假设数据集“dataset”中存在不同组织的恶意软件,我们首先要解决的是遍历文件并提取一个恶意软件的静态特征,其关键代码如下:
#coding: utf-8#By:Eastmount CSDN 2023-03-14import osdef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesapt_path = r"D:\capa\dataset"apt_name = ['AAAA','BBBB','CCCC','DDDD']i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)files = getAllFiles(file_name)#创建输出文件夹write_path = r"D:\capa\result"write_name = write_path + "\\" + str(apt_name[i])print(write_name)if not os.path.exists(write_name):os.mkdir(write_name)#循环提取静态特征for name in files:peName = file_name + "\\" + nameprint(peName)name = os.path.splitext(name)[0]jsonName = write_name + "\\" + name + ".json"print(jsonName)breaki += 1break
输出结果如下所示,成功定位需要静态分析的样本,并创建要生成的目标Json文件。此时尚未分析恶意软件,生成的json文件为空。
目标文件:D:\cape\dataset\APTXX\02ddd…9ff.bin
生成文件:D:\cape\dataset\APTXX\02ddd…9ff.json
3.CAPA批量提取静态特征
接着定义函数提取静态特征,关键函数如下:
def runCAPA(peName,jsonName):cmd = "cd D://capa & capa.exe -vv " + str(peName) + " -j > " + jsonNameprint(cmd)os.system(cmd)
如果需要暂停则构建的CMD命令为:
cmd = "cd D://capa & capa.exe -vv " + str(peName) + " -j > " + jsonName + " & cmd"尝试提取一个样本的特征,比如HGZ木马。
查看对应的json文件,内容如下:
格式化显示Json文件。
自此,成功利用CAPA提取一个样本的静态特征,下图显示ATT&CK和关键API特征。
此时的代码如下,能批量提取恶意软件的静态特征并生成对应的Json文件。
#coding: utf-8#By:Eastmount CSDN 2023-03-14import osdef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesdef runCAPA(peName,jsonName):#cmd = "cd D://capa & capa.exe -vv " + str(peName) + " -j > " + jsonName + " & cmd"cmd = "cd D://capa & capa.exe -vv " + str(peName) + " -j > " + jsonNameprint(cmd)os.system(cmd)apt_path = r"D:\capa\dataset"apt_name = ['AAAA','BBBB','CCCC','DDDD']i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)files = getAllFiles(file_name)#创建输出文件夹write_path = r"D:\capa\result"write_name = write_path + "\\" + str(apt_name[i])print(write_name)if not os.path.exists(write_name):os.mkdir(write_name)#循环提取静态特征for name in files:peName = file_name + "\\" + nameprint(peName)name = os.path.splitext(name)[0]jsonName = write_name + "\\" + name + ".json"print(jsonName)runCAPA(peName,jsonName)i += 1
4.超时判定
然而,某些文件由于过大或格式错误,会导致分析过长或卡主。因此需要构建超时判定。
设置超时判定的方法很多,本文主要利用func_timeout实现。其安装命令如下:
pip install func_timeout
此时的完整代码如下:
#By:Eastmount CSDN 2023-03-14#coding: utf-8import osimport timefrom func_timeout import func_timeoutfrom func_timeout import FunctionTimedOutfrom multiprocessing import Processdef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesdef runCAPA(peName,jsonName):#cmd = "cd D://capa & capa.exe -vv " + str(peName) + " -j > " + jsonName + " & cmd"cmd = "cd D://capa & capa.exe -vv " + str(peName) + " -j > " + jsonNameprint(cmd)os.system(cmd)#超时判定def mytest(peName,jsonName):runCAPA(peName,jsonName)apt_path = r"D:\capa\dataset"apt_name = ['AAAA','BBBB','CCCC','DDDD']i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)files = getAllFiles(file_name)#创建输出文件夹write_path = r"D:\capa\result"write_name = write_path + "\\" + str(apt_name[i])print(write_name)if not os.path.exists(write_name):os.mkdir(write_name)#循环提取静态特征for name in files:peName = file_name + "\\" + nameprint(peName)name = os.path.splitext(name)[0]jsonName = write_name + "\\" + name + ".json"print(jsonName)#超时判定try:func_timeout(10, mytest, args=(peName,jsonName, ))except FunctionTimedOut as e:print(e)print('子程序超时')print("-----------------------------\n\n")i += 1break
运行结果如下图所示,样本较多时可以利用该方式提取静态特征。注意,该方法可能存在不足之处,还请读者自己完善和修改。
三.提取Json文件API特征和ATT&CK技战术
接下来,我们需要提取Json文件中的关键特征,常见的特征即:
API函数特征ATT&CK技战术
1.读取单个Json文件内容
关键代码如下所示:
02d9xxxxxxxe9ff.json
#coding:utf-8#By:Eastmount CSDN 2023-03-14import osimport jsondef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesapt_path = r"D:\capa\result"apt_name = ['AAAA']i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)files = getAllFiles(file_name)for name in files:jsonName = file_name + "\\" + str(name)print(jsonName)#打开json文件with open(jsonName) as fp:data = json.load(fp)print(data)breaki += 1break
输出结果如下图所示:
2.Json格式分析
Capa工具生成的Json文件主要由meta和rules两大块内容组织,其中,静态行为及API特征在rules部分。接下来尝试解析Json文件。
print(data.keys())# dict_keys(['meta', 'rules'])
该部分的关键代码如下:
#coding:utf-8#By:Eastmount CSDN 2023-03-14import osimport jsondef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesapt_path = r"D:\capa\result"apt_name = ['AAAA']i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)files = getAllFiles(file_name)for name in files:jsonName = file_name + "\\" + str(name)print(jsonName)#打开json文件with open(jsonName) as fp:data = json.load(fp)#print(data)print(data.keys())#dict_keys(['meta', 'rules'])#包含meta和rules两大块内容 静态行为及API在rules部分#提取ATT&CK特征behavior = data["rules"]print(behavior)breaki += 1break
输出结果如下图所示:
对应于Json文件内容,共包括34个API特征。如下图所示:
同时该样本存在8个ATT&CK攻击行为,当然也有缺失的情况。
Capa匹配规则及参数解析:
(1) namespace:表示命名空间,即匹配规则文件的位置;
(2) authors:提供规则的作者,读者可以尝试构建适用于研究领域的规则;
(3) attack包括战术(tactic)、技术(technique)、子技术(subtechnique)和序号,与ATT&CK框架对应。
逃逸行为如下图所示:
此时大家会遇到一个问题:
Json是经典的数据格式,但如果想要提取Json数据中的某个键内容,就必须要一层层往递归下去才能拿到,如果层次非常多的话,将会非常的麻烦。比如随意编写的JSON内容,想要提取某个值会非常困难,在获取请求的数据时,数组内容的数据可能会不同,无法准确定位到底是哪个目录,如果后期目录修改,甚至需要重新修改操作目录。那么,如何解决呢?本文利用Jsonsearch来提取制定键值内容。
推荐文献:python中如何对复杂的json数据快速查找key对应的value值(使用JsonSearch包)
3.利用jsonsearch提取ATT&CK特征
首先,安装jsonsearch。
pip install jsonsearch
jsonsearch的具体实现过程请读者自行学习,本文仅给出提取ATT&CK和API关键特征的重要代码,如下所示:
#coding:utf-8#By:Eastmount CSDN 2023-03-14import osimport jsonfrom jsonsearch import JsonSearchdef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesapt_path = r"D:\capa\result"apt_name = ['AAAA']i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)files = getAllFiles(file_name)for name in files:jsonName = file_name + "\\" + str(name)print(jsonName)#打开json文件with open(jsonName) as fp:data = json.load(fp)#print(data)print(data.keys())#dict_keys(['meta', 'rules'])#包含meta和rules两大块内容 静态行为及API在rules部分#提取ATT&CK特征behavior = data["rules"]print(behavior)#查找attack对应的所有值jsondata = JsonSearch(object=behavior, mode='j')attack = jsondata.search_all_value(key='attack')print(attack)print(len(attack))for n in attack:if len(n)>0:print(n,type(n))breaki += 1break
输出结果如下所示:
[[{'parts': ['Defense Evasion', 'Obfuscated Files or Information'], 'tactic': 'Defense Evasion', 'technique': 'Obfuscated Files or Information', 'subtechnique': '', 'id': 'T1027'}],[],[],[{'parts': ['Execution', 'Shared Modules'], 'tactic': 'Execution', 'technique': 'Shared Modules', 'subtechnique': '', 'id': 'T1129'}],[],[],[],[]]
接着我们还需要提取ATT&CK对应的四部分内容,包括战术(tactic)、技术(technique)、子技术(subtechnique)和序号。
最后分别提取tactic、technique和id内容,并存储至指定列表中。完整代码如下所示:
#coding:utf-8#By:Eastmount CSDN 2023-03-14import osimport jsonfrom jsonsearch import JsonSearchdef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesapt_path = r"D:\capa\result"apt_name = ['AAAA']apt_list = [] #组织名称pe_md5_list = [] #恶意软件文件名称tactic_list = [] #攻击ATT&CK框架Tactictechnique_list = [] #攻击ATT&CK框架Techniqueid_list = [] #攻击ATT&CK框架类别i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)apt_list.append("AAAA")files = getAllFiles(file_name)for name in files:jsonName = file_name + "\\" + str(name)print(jsonName)pe_md5_list.append(jsonName)#打开json文件with open(jsonName) as fp:data = json.load(fp)#print(data)print(data.keys())#dict_keys(['meta', 'rules'])#包含meta和rules两大块内容 静态行为及API在rules部分#提取ATT&CK特征behavior = data["rules"]print(behavior)#查找attack对应的所有值jsondata = JsonSearch(object=behavior, mode='j')attack = jsondata.search_all_value(key='attack')print(attack)print(len(attack))#提取tactic、technique和idtactic_str = ""technique_str = ""id_str = ""for n in attack:if len(n)>0:#print(n,type(n))value = n[0]print(value,type(value))tactic_str += str(value['tactic']) + ";"technique_str += str(value['technique']) + ";"id_str += str(value['id']) + ";"else:print("over!!!")print(tactic_str, technique_str, id_str)tactic_list.append(tactic_str)technique_list.append(technique_str)id_list.append(id_str)breaki += 1break
输出结果如下图所示,8个对应上图查询的ATT&CK数字一致,并且存在空值情况。
dict_keys(['meta', 'rules'])[[{'parts': ['Defense Evasion', 'Obfuscated Files or Information'], 'tactic': 'Defense Evasion','technique': 'Obfuscated Files or Information', 'subtechnique': '', 'id': 'T1027'}], [], [],[{'parts': ['Execution', 'Shared Modules'], 'tactic': 'Execution', 'technique':'Shared Modules', 'subtechnique': '', 'id': 'T1129'}], [], [], [], []]8{'parts': ['Defense Evasion', 'Obfuscated Files or Information'], 'tactic': 'Defense Evasion','technique': 'Obfuscated Files or Information', 'subtechnique': '', 'id': 'T1027'} <class 'dict'>{'parts': ['Execution', 'Shared Modules'], 'tactic': 'Execution', 'technique': 'Shared Modules','subtechnique': '', 'id': 'T1129'} <class 'dict'>over!!!Defense Evasion;Execution; Obfuscated Files or Information;Shared Modules; T1027;T1129;
4.利用jsonsearch提取API特征
同样的方法提取恶意软件的API特征,第一个api也是位于rules位置,即通过CAPA工具的规则匹配提取关键静态特征。
需要注意,api位于子节点下面的内容,直接用下列代码返回空值。
jsondata = JsonSearch(object=behavior, mode='j')api = jsondata.search_all_value(key='api')print(api)print(len(api))
通过“matches”来匹配。
关键代码如下:
jsondata = JsonSearch(object=behavior, mode='j')api = jsondata.search_all_value(key='matches')
但返回内容仍然有较多的键值迭代。
因此,作者直接对其进行字符串匹配处理。
#采用关键词匹配#'node': {'feature': {'type': 'api', 'api': 'CreateFile'}, 'type': 'feature'}api = str(api)print(api)start = api.find("'api':")api_lin = api[start+8:]end = api_lin.find("'},")print(api_lin[:end])
输出结果如下图所示:
完整代码如下所示:
#coding:utf-8#By:Eastmount CSDN 2023-03-14import osimport jsonfrom jsonsearch import JsonSearchdef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesapt_path = r"D:\capa\result"apt_name = ['AAAA']apt_list = [] #组织名称pe_md5_list = [] #恶意软件文件名称tactic_list = [] #攻击ATT&CK框架Tactictechnique_list = [] #攻击ATT&CK框架Techniqueid_list = [] #攻击ATT&CK框架类别api_list = [] #恶意软件关键API行为特征i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)apt_list.append("AAAA")files = getAllFiles(file_name)for name in files:jsonName = file_name + "\\" + str(name)print(jsonName)pe_md5_list.append(jsonName)#打开json文件with open(jsonName) as fp:data = json.load(fp)#print(data)print(data.keys())#dict_keys(['meta', 'rules'])#包含meta和rules两大块内容 静态行为及API在rules部分#提取ATT&CK特征behavior = data["rules"]#print(behavior)#查找attack对应的所有值jsondata = JsonSearch(object=behavior, mode='j')attack = jsondata.search_all_value(key='attack')print(attack)print(len(attack))#------------------提取tactic、technique和id-----------------tactic_str = ""technique_str = ""id_str = ""for n in attack:if len(n)>0:#print(n,type(n))value = n[0]print(value,type(value))tactic_str += str(value['tactic']) + ";"technique_str += str(value['technique']) + ";"id_str += str(value['id']) + ";"else:print("over attack!!!\n")#--------------------提取API特征 子节点-----------------------jsondata = JsonSearch(object=behavior, mode='j')api = jsondata.search_all_value(key='matches')#print(len(api))#采用关键词匹配#'node': {'feature': {'type': 'api', 'api': 'CreateFile'}, 'type': 'feature'}api = str(api)api_str = ""print(api)count = 0while len(api)>0:start = api.find("'api':")if start<0:breakelse:api_lin = api[start+8:]api = api_linend = api_lin.find("'},")api_feature = api_lin[:end]api_str += api_feature + ";"count += 1else:print("over api!!!\n")print(tactic_str, technique_str, id_str)tactic_list.append(tactic_str)technique_list.append(technique_str)id_list.append(id_str)print(api_str)print("API特征个数:", count)api_list.append(api_str)print("----------------------------------\n\n")breaki += 1break
最终输出结果如下所示:
Defense Evasion;Execution; Obfuscated Files or Information;Shared Modules; T1027;T1129;CreateFile;CreateFileEx;IoCreateFile;IoCreateFileEx;ZwOpenFile;ZwCreateFile;NtOpenFile;NtCreateFile;fopen;fopen64;fdopen;freopen;open;openat;LoadLibrary;strcmp;kernel32.GetTickCount;API特征个数: 17
5.文件存储
调用CSV实现文件存储,最终代码如下:
#coding:utf-8#By:Eastmount CSDN 2023-03-14import osimport jsonfrom jsonsearch import JsonSearchimport csvdef getAllFiles(targetDir):listFiles = os.listdir(targetDir)return listFilesapt_path = r"D:\capa\result"apt_name = ['AAAA']apt_list = [] #组织名称pe_md5_list = [] #恶意软件文件名称tactic_list = [] #攻击ATT&CK框架Tactictechnique_list = [] #攻击ATT&CK框架Techniqueid_list = [] #攻击ATT&CK框架类别api_list = [] #恶意软件关键API行为特征i = 0while i<len(apt_name):file_name = apt_path + "\\" + str(apt_name[i])print(file_name)apt_list.append("AAAA")files = getAllFiles(file_name)fw = open('aaaa_result.csv', mode='w', newline="")writer = csv.writer(fw)writer.writerow(['no', 'apt', 'md5', 'tactic', 'technique', 'tid', 'api'])no = 1for name in files:jsonName = file_name + "\\" + str(name)print(jsonName)pe_md5_list.append(jsonName)#打开json文件with open(jsonName) as fp:data = json.load(fp)#print(data)print(data.keys())#dict_keys(['meta', 'rules'])#包含meta和rules两大块内容 静态行为及API在rules部分#提取ATT&CK特征behavior = data["rules"]#print(behavior)#查找attack对应的所有值jsondata = JsonSearch(object=behavior, mode='j')attack = jsondata.search_all_value(key='attack')print(attack)print(len(attack))#------------------提取tactic、technique和id-----------------tactic_str = ""technique_str = ""id_str = ""for n in attack:if len(n)>0:#print(n,type(n))value = n[0]print(value,type(value))tactic_str += str(value['tactic']) + ";"technique_str += str(value['technique']) + ";"id_str += str(value['id']) + ";"else:print("over attack!!!\n")#--------------------提取API特征 子节点-----------------------jsondata = JsonSearch(object=behavior, mode='j')api = jsondata.search_all_value(key='matches')#print(len(api))#采用关键词匹配#'node': {'feature': {'type': 'api', 'api': 'CreateFile'}, 'type': 'feature'}api = str(api)api_str = ""print(api)count = 0while len(api)>0:start = api.find("'api':")if start<0:breakelse:api_lin = api[start+8:]api = api_linend = api_lin.find("'},")api_feature = api_lin[:end]api_str += api_feature + ";"count += 1else:print("over api!!!\n")print(tactic_str, technique_str, id_str)tactic_list.append(tactic_str)technique_list.append(technique_str)id_list.append(id_str)print(api_str)print("API特征个数:", count)api_list.append(api_str)print("----------------------------------\n\n")#--------------------------文件存储--------------------------writer.writerow([str(no), "AAAA", str(name), tactic_str,technique_str, id_str, api_str])no += 1if no>5:breaki += 1break#结束fw.close()
输出结果如下图所示:
四.总结
写到这里这篇文章就结束,希望对您有所帮助。忙碌的三月,真的很忙,项目本子论文毕业,等忙完后好好写几篇安全博客,感谢支持和陪伴,尤其是家人的鼓励和支持, 加油!
2023年3月20日,终于完成初稿,凌晨迫不及待来写一篇博客,纪念下,感恩下!娜璋白首。
一.恶意软件分析与Capa四.总结
1.静态特征
2.动态特征
3.Capa简介
二.批量提取静态特征
1.数据集描述
2.文件遍历
3.CAPA批量提取静态特征
4.超时判定
三.提取Json文件API特征和ATT&CK技战术
1.读取单个Json文件内容
2.Json格式分析
3.利用jsonsearch提取ATT&CK特征
4.利用jsonsearch提取API特征
5.文件存储
四.总结
提问:
在真实样本中,恶意软件会被加壳和混淆处理,常用脱壳工具为Unipack。那么,大家可以思考下,CAPA提取的API特征都是恶意软件中均执行的吗?同时,这些关键特征是否都被提取呢?
CAPA是经典的静态特征提取工具,那么如何提取动态特征呢?动态特征在恶意软件检测中又扮演什么角色?
请大家思考静态特征和动态特征各自的优缺点。
如何撰写代码提取Json中所需特征,比如常见的API。
CAPA能提取ATT&CK和MBC两种映射,那么,它们有什么作用呢?大家可以思考。
个人感觉静态分析和动态分析是很多年都在研究的内容,目前会与深度学习结合。那么,未来的方法将如何创新呢?怎么更好地自动化识别恶意软件行为,并且批量识别且更少依赖专家知识。
三月应该是今年最忙碌的一个月了,好多事情。希望一切顺利,更希望四月后能沉下心来读论文和写论文,继续加油,只争朝夕。
感谢大家的支持和关注。继续加油!
(By:Eastmount 2023-03-20 夜于武汉)
参考文献:
[1] https://github.com/mandiant/capa
[2] capa: Automatically Identify Malware Capabilities
[3] 自动化逆向辅助利器 – Capa工具介绍 - systemino
前文回顾(下面的超链接可以点击喔):
[系统安全] 四十五.恶意软件分析 (2)静态分析Capa经典工具批量提取静态特征和ATT&CK技战术