1.1 研究背景和意义
随着网络空间战略地位的日益提升,网络信息资产已成为网络攻击者重点觊觎的对象,世界各国在网络空间的博弈也越发激烈,当前中国面临的网络安全形势也越发严峻。根据国家互联网应急中心发布的《2020年我国互联网网络安全态势综述》,中国已成为世界上网络安全形势最为严峻的国家 [1] 。
在网络攻击活动中,攻击者往往以恶意代码作为实施攻击的利器,进行各种破坏任务。根据国家互联网应急中心发布的信息,2015年至2020年间中国境内发现的计算机恶意代码样本数量在持续攀升,如图1-1所示,恶意代码已呈泛滥之势。

图1-1 2015~2020年间中国新发现恶意代码样本数量
安全研究人员则应用相关的分析和检测技术予以防护。在这场针对恶意代码的“猫和老鼠”游戏当中,攻击者和防护人员都在力尽所能,不断采用新技术和新手段以达到各自的目的。
恶意代码制作者针对检测技术的发展,广泛应用加壳、变形和加密技术不断演化,一方面混淆或隐藏恶意代码的特征以躲避检测,另一方面则生成数量庞大的变种增加分析人员的工作负担。此外,当前的网络攻击已愈发呈现出组织化和产业化的特征,各种靶向性明确的高级持续性威胁(APT,Advanced Persistent Threat)攻击频发,攻击者通过构建复杂的、隐蔽性极强的恶意代码实施定向攻击,给网络空间的安全造成了严重威胁 [2] 。
针对恶意代码带来的安全威胁,研究人员普遍采用机器学习技术开展静态或动态分析,或者将两者予以结合的混合分析方式,从恶意代码样本中提取相关特征训练机器学习分类器,再利用训练好的分类器去自动化的检测未知代码。通过应用人工智能技术,可有效提升恶意代码分析和检测的效率和准确率 [3][4] 。但恶意代码也一直在不断地更新换代,当前的研究成果在应对恶意代码不断发展变化方面也面临诸多新的挑战:
(1)越来越多的恶意代码采用加壳、变形或多态方式混淆自身特征 [5][6] ,躲避反病毒软件的检测,增加恶意代码检测的难度,导致传统的静态分析方法难以有效应对特征混淆带来的影响;
(2)动态分析方法在检测恶意代码方面也存在诸多缺陷 [7] 。比如,有些恶意代码在运行过程中会检测所运行的环境,如果发现处于虚拟机环境中,就会停止执行恶意行为。这种具备规避功能的恶意代码会致使动态分析方法失效;
(3)现有方法通常分开使用代码的动静态特征,未对恶意代码的动静态特征进行关联融合,缺乏对其内在关系的挖掘。所以,难以对程序的行为特征形成综合刻画,也无法系统理解代码的恶意性 [8] ;
(4)当前的检测方法通常仅关注检测的结果,即给出检测程序是否为恶意代码的结论。这样的检测方式可认为属于“黑盒检测”,不能对代码的恶意性部位和恶意性表现进行判断和解释,存在“重检测、轻解释”的现象,难以实现对恶意代码的系统认知 [9] ;
(5)恶意代码制作者普遍采用自动化的方式生成恶意代码变种,即代码形式不同但行为类似的不同代码,以“新瓶装旧酒”的形式制造大量样本,导致恶意代码分析工作负担剧增 [10] 。传统的分析方法在分析大规模的恶意代码样本时,一方面存在效率较低的问题,另一方面需要高性能的计算资源;
(6)当前的网络攻击行为越发朝着APT攻击的方向演化 [2] 。截止到2019年,针对中国境内目标发动攻击的APT组织至少有40个。其中,比较典型的APT攻击事件包括“白象行动”、“蔓灵花攻击行动”、“蓝宝菇行动”及“眼镜蛇行动”等,主要以我国政府部门、教育、能源、军事和科研领域为主要攻击目标 [11] 。因此,如何从未知程序中准确有效地检测出APT恶意代码,并构建APT恶意代码的知识表示,实现对APT恶意代码及APT攻击的全面认知,是防御APT攻击亟须解决的一个重要现实问题。
在此背景下,本书以PE类型的恶意代码为研究对象,开展恶意代码的系统研究,旨在从网络空间环境下大量的未知程序中,快速、准确地发现那些变形、混淆的恶意代码,并对恶意代码进行系统分析,实现对其具体恶意部位的定位和对其恶意性的合理解释,使研究人员能够建立起对恶意代码的综合认知。在此基础上,对APT攻击中的恶意代码样本进行系统分析,基于本体论生成APT恶意代码的知识表示框架,实现对APT恶意代码及APT攻击的系统认知,为安全防护人员制定APT攻击应对措施提供支撑。本书拟重点解决以下关键问题:
(1)系统分析恶意代码主要演化方式
对当前恶意代码常用的演化方式及其原理进行系统分析和研究,认清恶意代码主要的演化方式和原理过程,理解其特征及行为的演化表现,为后续有针对性地开展恶意代码检测和分类奠定基础。
(2)从未知程序中准确检测出混淆规避型恶意代码
为躲避反病毒软件的查杀,恶意代码制作者普遍采用变形、加密和混淆手段改变恶意代码的特征,以规避恶意代码的检测。因此,如何从大量的未知程序中准确有效地识别出隐藏的恶意代码,是保障网络空间安全亟须解决的问题。
(3)实现对代码恶意性部位的准确定位和对代码恶意行为的合理解释,增强对恶意代码的系统认知
在发现恶意代码的基础上,进一步对恶意代码开展系统分析,以“看病”的方式准确定位恶意代码的恶意性部位,了解其恶意性的具体行为表现,为防护人员制定更加针对性的防护措施提供有效支撑,也是保障网络空间安全亟须解决的又一问题。
(4)提升分析恶意代码的效率,以快速应对大规模的恶意代码变种
针对恶意代码变种数量剧增,导致研究人员分析负担繁重的现状,研究针对大规模恶意代码变种的并行处理方式,将恶意代码变种准确、快速划分到其所属的家族,实现对恶意代码变种的聚类分析,提升分析效率。
(5)针对恶意代码的演变态势,实现对恶意代码的家族分类和同源性分析
恶意代码的演变会导致其原始的二进制代码和自身结构发生相应的改变,研究恶意代码的可视化表示方法,展示其特征结构的变异过程,并通过提取相关纹理特征实现家族的准确分类。此外针对蠕虫的攻击传播特性,提取其敏感行为构建特征库,实现对蠕虫这一典型恶意代码类型的同源性分析。
(6)基于本体论构建APT恶意代码知识表示,在检测和认知APT恶意代码的基础上辅助开展APT攻击的检测与防护
APT恶意代码作为发动APT攻击的武器,其结构更为复杂。因此,如何从未知程序中准确有效地检测出APT恶意代码,并对其恶意性建立系统全面的认知,对开展APT攻击防护尤为重要。基于此,本书拟充分利用代码动态行为特征,并基于本体论在检测出APT恶意代码的基础上,构建APT恶意代码行为知识模型,实现对APT恶意代码的准确检测与认知。此外,基于APT样本的动态行为特征构建YARA规则,实现对APT攻击行为的检测。从分析APT恶意代码的角度研究APT攻击行为,这一点也是保障网络空间安全需要解决的一个重大现实问题。