一种基于pdb调试信息的恶意代码分析方法及系统的制作方法

xiaoxiao2021-2-27  213

一种基于pdb调试信息的恶意代码分析方法及系统的制作方法
【专利说明】一种基于PDB调试信息的恶意代码分析方法及系统
[0001]
技术领域
[0002]本发明涉及网络信息安全领域,尤其涉及一种基于PDB调试信息的恶意代码分析方法及系统。
【背景技术】
[0003]恶意代码中会包含生成过程中产生的调试信息,以PDB文件形式存在。程序数据库(PDB)文件保存着调试以及样本状态等信息,根据从PE文件中提取的调试路径分析样本,获得一些有价值的信息,如用户名、样本路径、样本名称等,有助于对恶意样本的进一步分析提供线索。
[0004]调试信息通常独立于PE程序存储,通常存储为PDB或DBG文件。程序数据库(TOB)文件保存着应用程序二进制文件的调试和项目状态信息,记录了所有的变量、主信息表的相对位置及大小,这些表可保存资源、导入、导出、重定位、调试、线程本地存储及COM运行时的有关信息。调试信息会帮助调试者分析被调试程序的内部布局,当程序重新编译时,调试信息可以正确的反映出变量和函数的修改,使用这些信息可以对程序的调试配置进行增量链接。

【发明内容】

[0005]本发明提供了一种基于PDB调试信息的恶意代码分析方法及系统,通过获取恶意样本的PDB信息,并进行拆分处理后得到黑样本库,从而辅助恶意代码的深入检测和分析。
[0006]本发明采用如下方法来实现:一种基于PDB调试信息的恶意代码分析方法,包括: 提取恶意样本的PDB彳目息;
拆分所述PDB信息,获取相关的统计信息;
提取常用操作系统和常用软件的PDB信息,并拆分后生成白样本库;
利用白样本库对所述统计信息进行过滤后生成黑样本库;
输出白样本库和黑样本库用于恶意代码分析。
[0007]进一步地,所述提取恶意样本的PDB信息包括:基于已知样本的PE文件结构提取PDB信息和基于未知样本的totalhash提取PDB信息。
[0008]进一步地,所述基于已知样本的PE文件结构提取PDB信息包括:分析PE文件结构,获取调试目录地址;基于调试目录查找PDB信息入口,并获取PDB信息。
[0009]进一步地,所述分析PE文件结构,获取调试目录地址具体为:分析PE文件结构,查找PE文件的可选头入口 ;获取调试目录的虚拟地址和大小;基于调试目录的虚拟地址,获取调试目录的物理地址。
[0010]进一步地,所述统计信息包括:恶意样本相关的路径、家族名、程序名或者作者。
[0011]本发明采用如下系统来实现:一种基于PDB调试信息的恶意代码分析系统,包括: PDB信息提取模块,用于提取恶意样本的PDB信息;
统计信息获取模块,用于拆分所述PDB信息,获取相关的统计信息;
白样本库生成模块,用于提取常用操作系统和常用软件的PDB信息,并拆分后生成白样本库;
黑样本库生成模块,用于利用白样本库对所述统计信息进行过滤后生成黑样本库; 输出模块,用于输出白样本库和黑样本库用于恶意代码分析。
[0012]进一步地,所述PDB信息提取模块具体用于:基于已知样本的PE文件结构提取PDB信息和基于未知样本的totalhash提取PDB信息。
[0013]进一步地,所述基于已知样本的PE文件结构提取roB信息包括:分析PE文件结构,获取调试目录地址;基于调试目录查找PDB信息入口,并获取PDB信息。
[0014]进一步地,所述分析PE文件结构,获取调试目录地址具体为:分析PE文件结构,查找PE文件的可选头入口 ;获取调试目录的虚拟地址和大小;基于调试目录的虚拟地址,获取调试目录的物理地址。
[0015]进一步地,所述统计信息包括:恶意样本相关的路径、家族名、程序名或者作者。
[0016]综上所述,本发明提供了一种基于PDB调试信息的恶意代码分析方法及系统,本发明所提供的技术方案,首先,提取恶意样本的PDB信息,并对所述PDB信息进行拆分,获取统计信息;基于已知常用的操作系统和常用软件的PDB信息,进行拆分后生成白样本库;将获取的统计信息基于白样本库进行过滤后,生成黑样本库;所述白样本库和黑样本库将用于辅助恶意代码样本的检测和深入分析。
[0017]本发明的有益效果为:本发明的技术方案通过提取与恶意样本相关的调试信息,从而获取环境信息、病毒文件名、作者等信息,基于大量的恶意样本的PDB信息做关联分析,从而获取病毒家族或者病毒样本间的关联信息,有利于更加深入的分析恶意代码。
【附图说明】
[0018]为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]图1为本发明提供的一种基于PDB调试信息的恶意代码分析方法实施例流程图; 图2为本发明提供的一种基于PDB调试信息的恶意代码分析系统实施例结构图。
【具体实施方式】
[0020]本发明给出了一种基于PDB调试信息的恶意代码分析方法及系统的实施例,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明:
本发明首先提供了一种基于PDB调试信息的恶意代码分析方法实施例,如图1所示,包括:
S101提取恶意样本的PDB信息;
S102拆分所述PDB信息,获取相关的统计信息;
S103提取常用操作系统和常用软件的PDB信息,并拆分后生成白样本库; 其中,所述常用操作系统包括:windows xp、windows 7、linux等常用的操作系统; S104利用白样本库对所述统计信息进行过滤后生成黑样本库;
其中,所述过滤方式可以为:利用pdb全路径或者推断程序名为基准进行过滤;
S105输出白样本库和黑样本库用于恶意代码分析。
[0021]其中,所述白样本库和黑样本库的形式为,但不限于这一种形式:
Struct PDB_Black (或者 Struct PDB_ffHITE):
{
Pdb_name; //名称或路径 Number of samples;//样本个数 MD5 of samples;//样本 MD5
}
“net1ugc.pdf”: {
“count”:9,
“md5”:[
“8cefae2396730128c0d88f97288e31e8d9b2365f”
“8cefae2396730128c0d88f97288e31e8d9b2365f”
“8cefae2396730128c0d88f97288e31e8d9b2365f”
]
优选地,所述提取恶意样本的PDB信息包括:基于已知样本的PE文件结构提取PDB信息和基于未知样本的totalhash提取PDB信息。
[0022]其中,所述基于未知样本的totalhash提取PDB信息包括:采用网页爬虫方式,根据MD5值从totalhash的pdb搜索结果中收集html报告,进而抓取pdb信息及相关属性。
[0023]优选地,所述基于已知样本的PE文件结构提取PDB信息包括:分析PE文件结构,获取调试目录地址;基于调试目录查找PDB信息入口,并获取PDB信息。
[0024]优选地,所述分析PE文件结构,获取调试目录地址具体为:分析PE文件结构,查找PE文件的可选头入口 ;获取调试目录的虚拟地址和大小;基于调试目录的虚拟地址,获取调试目录的物理地址。
[0025]其中,分析PE文件结构,查找PE文件的可选头入口,遍历可选头末尾的DataDirectory 成员;
进而查 找调试目录的虚拟地址和大小(IMAGE_0PT10NAL_HEADER.DataDirectory [IMAGE_DIRECTORY_ENTRY_DEBUG]);调试目录存储在 PE 文件的一节中,由IMAGE_DATA_DIRECTORY结构的队列组成;进一步获取调试目录的物理地址;获取调试目录的信息后,即可获取PDB信息的真实位置。
[0026]其中,当调试信息存储在单独的Η)Β文件中时,可能采用PDB 2.0或PDB 7.0两种结构,这个可以根据调试信息的前四个字节判断:当前四个字节的值是NB10时,采用的是PDB 2.0结构,结构体为CV_INF0_PDB20;当前四个字节的值是RSDS时,采用的是PDB 7.0结构,结构体为CV_INF0_PDB70。
[0027]不论为roB 2.0结构还是为Η)Β7.0结构,其中都有成员项PdbFileName即为PDB文件名,可能是全路径也可能是部分路径;根据CV_INF0_PDB20.PdbFileName或CV_INF0_PDB70.PdbFileName的值得到PDB信息的路径信息。
[0028]优选地,所述统计信息包括:恶意样本相关的路径、家族名、程序名或者作者。
[0029]例如:提取到的PDB信息如下:
D:\Programming\CSharp\BlackBerry\UploadDownload\bin\x86\Debug\UploadDownload.pdb
D:\\Programming\\CSharp\\BlackBerry\\UploadDownload\\bin\\x86\\Debug\\UploadDownload.pdb
f:\Projects\C#\Sayad\Source\Binder\obj\Debug\Binder.pdb_x000D_F:\Projects\C#\Sayad\Source\Client\bin\x86\Debug\Client.pdb
c:\winter\Set\Bottom\Up\value\wild\industry\Support\nearcare.pdbc:\Users\ccm64\ccm_wa\saltss\tiapi_instr_agilent_4438c-l_l_0_31504\tiapi_instr_agilent_4438c\Release\tiapi_instr_agilent_e4438c.pdb
其中,通过拆分后,获取统计信息包括:程序名nearcare, pdf,用户名为winter等恶意代码信息。
[0030]本发明还提供了一种基于PDB调试信息的恶意代码分析系统实施例,如图2所示,包括:
PDB信息提取模块201,用于提取恶意样本的PDB信息;
统计信息获取模块202,用于拆分所述PDB信息,获取相关的统计信息;
白样本库生成模块203,用于提取常用操作系统和常用软件的PDB信息,并拆分后生成白样本库;
黑样本库生成模块204,用于利用白样本库对所述统计信息进行过滤后生成黑样本库;
输出模块205,用于输出白样本库和黑样本库用于恶意代码分析。
[0031]优选地,所述PDB信息提取模块具体用于:基于已知样本的PE文件结构提取TOB信息和基于未知样本的totalhash提取PDB信息。
[0032]优选地,所述基于已知样本的PE文件结构提取PDB信息包括:分析PE文件结构,获取调试目录地址;基于调试目录查找PDB信息入口,并获取PDB信息。
[0033]优选地,所述分析PE文件结构,获取调试目录地址具体为:分析PE文件结构,查找PE文件的可选头入口 ;获取调试目录的虚拟地址和大小;基于调试目录的虚拟地址,获取调试目录的物理地址。
[0034]优选地,所述统计信息包括:恶意样本相关的路径、家族名、程序名或者作者。
[0035]如上所述,传统的恶意代码检测方法局限于特征码匹配或者行为监控等手段,并没有利用PDB信息辅助进行深入分析。而本发明所述的技术方案通过对已知或者未知的恶意样本的PDB信息进行提取,进行适当拆分后获取统计信息,并基于已知操作系统和常用软件的PDB信息生成白样本库,将所述统计信息与白样本库进行匹配,对于无法匹配的统计信息生成黑样本库,所述白样本库和黑样本库都是基于PDB路径信息生成的,其中包括大量恶意样本的调试相关信息,可以进行关联分析,获得家族或者样本间的PDB路径特征,对恶意样本的深入分析提供一定帮助。
[0036]以上实施例用以说明而非限制本发明的技术方案。不脱离本发明精神和范围的任何修改或局部替换,均应涵盖在本发明的权利要求范围当中。
【主权项】
1.一种基于PDB调试信息的恶意代码分析方法,其特征在于,包括: 提取恶意样本的PDB彳目息; 拆分所述PDB信息,获取相关的统计信息; 提取常用操作系统和常用软件的PDB信息,并拆分后生成白样本库; 利用白样本库对所述统计信息进行过滤后生成黑样本库; 输出白样本库和黑样本库用于恶意代码分析。2.如权利要求1所述的方法,其特征在于,所述提取恶意样本的PDB信息包括:基于已知样本的PE文件结构提取PDB信息和基于未知样本的totalhash提取PDB信息。3.如权利要求2所述的方法,其特征在于,所述基于已知样本的PE文件结构提取信息包括:分析PE文件结构,获取调试目录地址;基于调试目录查找PDB信息入口,并获取PDB信息。4.如权利要求3所述的方法,其特征在于,所述分析PE文件结构,获取调试目录地址具体为:分析PE文件结构,查找PE文件的可选头入口 ;获取调试目录的虚拟地址和大小;基于调试目录的虚拟地址,获取调试目录的物理地址。5.如权利要求1所述的方法,其特征在于,所述统计信息包括:恶意样本相关的路径、家族名、程序名或者作者。6.一种基于PDB调试信息的恶意代码分析系统,其特征在于,包括: PDB信息提取模块,用于提取恶意样本的PDB信息; 统计信息获取模块,用于拆分所述PDB信息,获取相关的统计信息; 白样本库生成模块,用于提取常用操作系统和常用软件的PDB信息,并拆分后生成白样本库; 黑样本库生成模块,用于利用白样本库对所述统计信息进行过滤后生成黑样本库; 输出模块,用于输出白样本库和黑样本库用于恶意代码分析。7.如权利要求6所述的系统,其特征在于,所述PDB信息提取模块具体用于:基于已知样本的PE文件结构提取PDB信息和基于未知样本的totalhash提取PDB信息。8.如权利要求7所述的系统,其特征在于,所述基于已知样本的PE文件结构提取信息包括:分析PE文件结构,获取调试目录地址;基于调试目录查找PDB信息入口,并获取PDB信息。9.如权利要求8所述的系统,其特征在于,所述分析PE文件结构,获取调试目录地址具体为:分析PE文件结构,查找PE文件的可选头入口 ;获取调试目录的虚拟地址和大小;基于调试目录的虚拟地址,获取调试目录的物理地址。10.如权利要求6所述的系统,其特征在于,所述统计信息包括:恶意样本相关的路径、家族名、程序名或者作者。
【专利摘要】本发明公开了一种基于PDB调试信息的恶意代码分析方法,包括:提取恶意样本的PDB信息;拆分所述PDB信息,获取相关的统计信息;提取常用操作系统和常用软件的PDB信息,并拆分后生成白样本库;利用白样本库对所述统计信息进行过滤后生成黑样本库;输出白样本库和黑样本库用于恶意代码分析。本发明还公开了一种基于PDB调试信息的恶意代码分析系统。本发明所述技术方案通过获取恶意样本的PDB信息,对PDB信息进行拆分过滤后生成黑白样本库,从而辅助恶意代码分析。
【IPC分类】G06F21/56
【公开号】CN105488405
【申请号】CN201410815171
【发明人】姜晓楠, 康学斌, 肖新光
【申请人】哈尔滨安天科技股份有限公司
【公开日】2016年4月13日
【申请日】2014年12月25日

最新回复(0)