一种恶意代码检测方法及装置的制造方法_2

文档序号:9787709阅读:来源:国知局
br>【具体实施方式】
[0062] 本发明实施例提供了一种恶意代码检测方法及装置,用以解决现有技术中通过人 工方式对可疑代码中每条指令逐条进行特征分析,来检测可疑代码是否为恶意代码,存在 速度慢、效率低的技术问题。
[0063] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例 所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。
[0064] 如图1所示,本实施例提供了一种恶意代码检测方法,包括:
[0065] 步骤S101:通过PIN(Pin API Record 1'〇〇14?1执行记录工具),获取执行可疑代 码时该可疑代码调用的API (Application Program Interface,应用程序编程接口)函数序 列的相关信息。
[0066] 具体来讲,PIN工具是一种动态二进制检测框架,适用于X86架构、以及X64架构,一 般用于程序的动态分析,且支持多个平台(例如:windows平台、linux平台、0SX平台)HN工 具原本应用于计算机架构分析领域,而本实施例将PIN工具应用于在计算机安全领域,利用 PIN工具对恶意代码进行检测,从而提高了恶意代码的检测效率,保证了计算机的安全。 [0067]在具体实施过程中,所述可疑代码调用的API函数序列的相关信息,包括:可疑代 码调用的每个API函数的名称,以及每个API函数被调用的先后顺序。其中,不同的API函数 序列可以实现不同的功能,例如:API函数序列"OpenProcess_>WriteProcessMemory",用于 跨进程注入";再例如:API 函数序列 "SuspendThread->Setthreadcontext_> ResumeThread···",用于"恶意代码切换执行流程......"。
[0068]作为一种可选的实施方式,步骤S101中的通过PIN工具,获取执行可疑代码时该可 疑代码调用的API函数序列的相关信息,具体包括:
[0069] 在执行可疑代码过程中,在可疑代码中的每个API函数的头和尾插入PIN提供的监 控代码;
[0070] 通过该监控代码监控可疑代码调用的每个API函数,并将可疑代码调用的每个API 函数的相关信息存储到日志文件中;
[0071]从日志文件中提取可疑代码调用的每个API函数的相关信息,从而获取到可疑代 码调用的API函数序列的相关信息。
[0072] 在具体实施过程中,在执行可疑代码时,针对可疑代码中的每个API函数,可以通 过PIN工具在每个API函数的头和尾插入监控代码,具体监控代码举例如下:
[0075] 通过该监控代码即可对可疑代码所调用的每个API函数进行监控,从而获得可疑 代码调用的每个API函数的相关信息(例如:函数名称、参数、返回值、返回地址,等等),在获 得每个API函数的相关信息后,PIN工具会将每个API函数的相关信息存储到一日志文件中。 基于该日志文件就可以获取到可疑代码调用的每个API函数的名称、以及每个API函数被调 用的先后顺序,这样就可以获得可疑代码所调用的API函数序列的相关信息。
[0076] 在具体实施过程中,所述可疑代码调用的API函数序列,可以是:可疑代码所调用 的全部API函数所组成序列,或,可疑代码所调用的部分API函数所组成序列。
[0077]步骤S102:基于API函数序列的相关信息,判断API函数序列是否合法。
[0078]作为一种可选的实施方式,步骤S102中的基于API函数序列的相关信息,判断API 函数序列是否合法,具体包括:
[0079] 基于API函数序列的相关信息,判断API函数序列是否被记录在一恶意API函数序 列库中,其中,该恶意API函数序列库中记录有全部恶意代码在被执行时可能调用的API函 数序列;
[0080] 若API函数序列被记录在恶意API函数序列库中,则确定API函数序列不合法;
[00811若API函数序列未被记录在恶意API函数序列库中,则确定API函数序列合法。
[0082]在具体实施过程中,该恶意API函数序列库由专业技术人员负责维护更新,该恶意 API函数序列库中存储有现有全部已知的恶意API函数序列,这些恶意API函数序列通常存 在于恶意代码中,用于对计算机进行攻击。其中,所述恶意API函数序列库记录的恶意API函 数序列,主要分为以下几类:
[0083] (1)用于对注册表进行恶意篡改的API函数序列,例如:"RegOpenKeyEx-〉 RegSetKeyValue.··"。
[0084] (2)用于访问恶意链接的API函数序列,或,用于下载恶意程序的API函数序列,例 如:"URLDownloadToFileA_>CreateFile( % temp%/xxx · exe,…)_>Winexec( % temp%/ xxx.exe)···''。
[0085] 步骤S103:若API函数序列不合法,则将可疑代码确定为恶意代码。若API函数序列 合法,则将可疑代码确定为安全代码。
[0086]作为一种可选的实施方式,在步骤S103之后,还包括:
[0087]通过PIN工具,将恶意代码中用于调用每个API函数的指令的内存地址存储到日志 文件中;
[0088] 打开日志文,并基于恶意代码中用于调用每个API函数的指令的内存地址,在内存 中提取恶意代码中任一用于调用API函数的指令。
[0089] 在具体实施过程中,在确定可疑代码为恶意代码后,可以通过PIN工具将恶意代码 中用于调用每个API函数的指令代码的内存地址存储到日志文件中。进一步,可以通过显示 屏提供一交互式界面,在该交互式界面中显示有恶意代码所调用的全部API函数的标识。可 以通过该交互式界面获取技术人员的选择操作(该选择操作用于在恶意程序调用的全部 API中选择一个或几个API,并将用于调用这些API的指令代码进行提取并显示),并基于该 选择操作确定技术人员所选中的一个或多个API函数。之后,从日志文件中获取恶意代码中 用于调用技术人员选中的API函数的指令代码的内存地址,再根据该内存地址从内存中提 取或转存(dump)出恶意代码中用于调用技术人员选中的API函数的指令代码,并通过显示 屏将这些指令代码显示出来。这样,便于技术人员对恶意代码中用于调用每个API函数的指 令代码进行阅读和分析。
[0090] 作为一种可选的实施方式,在步骤S103之后,还包括:
[0091 ]通过PIN工具,将恶意代码的内存地址存储到日志文件中;打开日志文,并基于恶 意代码的内存地址从内存中提取恶意代码。
[0092] 在具体实施过程中,在确定可疑代码为恶意代码后,可以通过PIN工具,将恶意代 码中用于调用每个API函数的指令代码的内存地址存储到日志文件中。进一步,可以提供一 交互式界面来获取技术人员的提取操作(该提取操作用于将恶意代码整体进行提取并显 示),并基于该提取操作打开日志文件,读取日志文件中存储的恶意代码中用于调用每个 API函数的指令代码的内存地址,再基于这些内存地址将恶意代码中用于调用每个API函数 的指令代码从内存中全部提取或转存(dump)出来,并通过显示屏进行显示。这样就获得了 整段的恶意代码,便于技术人员对恶意代码进行阅读和分析。
[0093]作为一种可选的实施方式,在步骤S103中确定可疑代码为恶意代码之后,还包括:
[0094]对恶意代码进行删除;或
[0095]对恶意代码造成的破坏进行修复;或
[0096] 对恶意代码进行隔离;或
[0097]对恶意代码进行样本归类。
[0098] 在具体实施过程中,所述对恶意代码造成的破坏进行修复,包括:恢复注册表中被 篡改的信息,恢复被恶意删除的系统文件,等等。
[0099] 在具体实施过程中,可以基于多种规则对恶意代码进行样本归类,例如:根据破坏 的类型(例如:是篡改注册表还是下载恶意程序),或者根据API、及其参数判断是否有反虚 拟机(或反调试器流程)等等规则,对恶意代码进行样本归类。
[0100]相比于现有技术中通过人工方式逐条指令进行特征分析的方法,本实施例中技术 方案能够有效地提尚恶意代码的检测效率。
[0101] 基于上述恶意代码检测方法,本实施例还提供了一种恶意代码检测装置,如图2所 示,包括:
[0102] 获取模块201,用于通过PIN(Pin API Record 1'〇〇14?1执行记录工具)获取执行 可疑代码时可疑代码调用的API (Application Program Interface,应用程序编程接口)函 数序列的相关信息;
[0103] 判断模块202,用于基于API函数序列的相关信息,判断API函数序列是否合法; [0104]确定模块203,用于若API函数序列不合法,则将可疑代码确定为恶意代码。
[0105]作为一种可选的实施方式,获取模块201,包括:
[0106] 插入子模块,用于在执行可疑代码过程中,在可疑代码中的每个API函数的头和尾 插入PIN的监控代码;
[0107] 监控子模块,用于通过监控代码监控可疑代码调用的每个API函数,并将可疑代码 调用的每个API函数的相关信息存储到日志文件中;
[0108] 获取子模块,用于从
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1