论文部分内容阅读
二进制程序安全一直是安全领域的重中之重。Shellcode是二进制程序漏洞利用的核心代码,是取得目标机器控制权进而达到攻击者想要执行的操作必不可少的一小段二进制字节。因此对shellcode的检测是二进制程序安全防护中非常重要的一部分。Shellcode可能内嵌于暗藏恶意的本地的文件中,也可能出现在注入攻击的网络流量之中。对shellcode进行检测,是网络IDS、蜜罐系统等必不可少的核心功能。常规的shellcode检测技术依靠人工提取的静态字节特征进行检测,随着网络攻击和防御技术地协同进化,不断有新的编写技术、变形技术、编码技术和多态技术被用来规避针对shellcode的检测,当今的常规检测方案已经渐渐不能适应日益复杂多变的网络安全环境。本文针对shellcode的检测问题进行了分析研究,提出并实现了一种基于数据挖掘算法的shellcode检测模型。首先,本文针对各种shellcode技术进行了说明,论证了基于指令序列建模的可行性。其次,分析和比对了静态和动态方法获取指令序列的优势劣势,论证了选取静态反汇编的可行性和必然性。再次,本文将自然语言处理中的词袋模型应用到shellcode检测的具体场景,使得本系统不依赖于特定的特征而从数据中自动学习特征,因此能实现更广范围的检测和更高的准确率。接着,本文在模型的基础上设计和实现了一个流量shellcode检测系统,通过一个统一的模型对shellcode解码段和普通shellcode进行双层检测,保证了其对各种shellcode的检测能力。最后,通过可靠来源的数据集设计实验,验证了该基于数据挖掘算法shellcode检测模型的有效性,验证了流量shellcode检测系统的检测效果。本文设计和实现的系统和shellcode检测库libemu进行了对比实验。实验表明,本文的系统有更好的检测效果和更全面的检测范围。其对采用多种技术的普通、变形、编码和多态shellcode都具有较好的检测效果和较高的检测效率。