邱凌志 顾弘



1引言
恶意软件是互联网中最严重的网络安全威胁之一,受害主机一旦感染恶意软件便可能被用作发送垃圾邮件、进行拒绝服务攻击以及窃取敏感数据。作为攻击的关键步骤,攻击者需要将恶意软件安装在尽可能多的受害主机上。攻击的过程一般分为3个步骤:①注入代码,这一阶段攻击者的目的是在受害主机上执行一小段代码,这段代码通常被称为shellcode。比如,攻击者首先准备一个包含漏洞利用代码的网站,当受害者访问恶意网页后,漏洞利用代码强制浏览器执行shellcode;②注入成功后,shellcode下载真正的二进制恶意软件并加载;③恶意软件一旦启动,这一阶段将呈现其恶意行为,典型的行为比如连接远程命令控制服务器(C&Cserver)。
对于保护用户避免受到恶意软件侵害,过去的研究主要关注于第①阶段与第③阶段。一部分工作是通过对挂马网页的检测,将相关域名或url列入黑名单,阻止浏览器访问恶意页面;另一部工作则是聚焦于控制阶段,目的在于检测终端恶意代码的执行,例如,反病毒软件通过特征识别恶意软件。然而,恶意软件可以通过域名变换、文件重打包和分布式主机等手段逃避检测。
目前为止,很少有研究关注到第②阶段,即shellcode下载恶意软件安装的过程。shellcode通常利用http请求从远端服务器下载程序,并在本地安装执行恶意软件。这些请求一般通过用户浏览器进行简单的功能调用,从网络角度来说,与用户的正常软件下载请求很难区分。……