论文部分内容阅读
近两年中美国因病毒、间谍软件等网络攻击损失近85亿美元,而中国大陆更是有数以亿计的大量主机和网络被恶意攻击、破坏和篡改。一方面,种类繁多功能各异的诸如virus,worm,rootkit,spyware,botnets,adware等malware层出不穷,黑客攻击方式、手段与过程不断复杂深化;另一方面,信息系统漏洞不断增长,漏洞越来越多。强大的经济利益的驱动使得恶意代码检测(detection)与防范(defense)技术仍是信息安全届亟需解决的No.1问题。攻击者不断升级并复杂化新的攻击手段,防守者根据攻击提出防护措施,例如修补patch,注入防护疫苗(vaccin)等;进一步地,攻击者提出新的反检测(anti-detection)和规避(evasion)技术,防护者也要不断更新防护技术。攻防双方不断博弈(game),两者在动态平衡中,不断将局部的马鞍点(saddle point)向前推进。统计机器学习源于统计,长于关系推理和知识的自动学习,已在文本分析,视频分析,图像理解,语音信号识别取得极好的效果。我们把恶意代码检测与攻击比作一场猫捉老鼠的游戏,统计机器学习能不能有效的扮演“猫”的角色,能不能在已有的恶意代码检测与分析的基础上在如虎添翼?我们将通过几个具体的案例分析来回答上述问题。本文论域中的恶意代码包含两类,第一类是基于packet的恶意代码,例如多态蠕虫,通过网络传播的shellcode;第二类是基于文件的恶意代码,例如被攻陷(compromised)的exe文件或者dll文件。最后我们还给出了一个机器学习在多线程程序安全中的应用案例分析。
第二章中,提出了一种结合语义的多态蠕虫签名提取算法,用于检测多态蠕虫。字符串提取和匹配技术已经广泛的用于基于签名提取的恶意代码检测中。但是,如何快速有效的产生蠕虫签名尤其在敌手(adversarial)环境中仍然是一个十分挑战的问题。一方面,攻击者有足够的自由来操纵攻击packet中的字符分布来逃脱检测;另一方面,因为恶意流池(a suspicious flow pool)在签名产生过程中使用,攻击者可以注入噪声字节到恶意流池中,从而误导签名产生过程。为了解决上述攻击,我们提出了SAS,一种新的结合语义(semantic aware)的统计算法用于自动产生签名。当SAS处理来自于恶意流池中的packet时,它使用数据流分析技术来移除正常的packet和恶意packet中的正常字节。结果上,那些相关于语义的字节被保留下来。基于这些