网络钓鱼攻击的防御技术及防御框架设计_赵跃华_胡向涛
网络出版时间:2013-02-19 16:26
网络出版地址:http://www.cnki.net/kcms/detail/51.1196.TP.20130219.1626.052.html
网络钓鱼攻击的防御技术及防御框架设计
赵跃华,胡向涛
(江苏大学 计算机科学与通信工程学院,江苏 镇江 212013)
摘 要:现有的反钓鱼技术多是通过检测可疑网站与真实网站的URL和网页相似度来检测钓鱼攻击,而对于新出现的在网页中嵌入恶意代码的钓鱼攻击防御效果不佳。本文在分析当前的网络钓鱼攻击防御技术的基础上,针对传统防御方法不能防御的新型钓鱼攻击给出了解决方法及融合传统的防御技术提出了一个防御钓鱼攻击的整体框架,弥补现有防御方法的不足,从而提高钓鱼攻击的检测率,降低漏报率。实验结果表明,所提出的防御方法是有效的。
关键词:网络钓鱼;跨站脚本;木马;键盘记录 中图分类号:TP393.08 文献标志码:A
Defense technology of phishing attack and the design of
defense framework
ZHAO Yue-hua,HU Xiang-Tao
Abstract: The current anti-phishing technologies detect the phishing comparing similarity of attacks by the insertion of malicious code to web pages. This of defense technologies of phishing attacks, came up with solutions to by traditional methods, the further a new overall defensive the traditional ones, making up the defects of the original the rate of phishing attacks, and decreases the false negative rate. the proposed defense methods are effective.
Key Words: Phishing; XSS; Trojan; keylogger
1 购物安全报告》指出鱼攻击的方法主要是在客户端浏览器上嵌入网络
[1]
钓鱼防御机制,这种方法要求每个用户都添加防损失已由2009御措施,为了不降低服务器性能,从保护潜在受很大的实用价值。 害者本身出发,大部分的防御方法将防御放在了
网络钓鱼(和客户端。
客户端防御的方法研究有: phone,起源于组(APWG)是一种在1)通过对URL地址进行识别,检测是否是钓鱼网站。包括基于URL黑名单技术和基于机器学
习的URL检测技术。Ma, Justin 等人提出的通过学习检测一个可疑的URL是否为恶意网站[2]。黄
传统的网络钓鱼攻击利用域名欺骗、URL隐华军等人提出的基于异常特征的钓鱼网站URL藏、IP地址欺骗、欺骗性的超链接、Unicode编检测技术[3]通过分析钓鱼网站URL地址的结构特
征和词汇特征,抽取URL中的12个特征向量,码等欺骗技术进行伪装,通过欺骗性的电子邮件、
用SVM进行训练和分类。郑礼雄等人提出的基假冒网上银行等形式将受害者引诱到一个与真实
网站及其相似的仿冒网站,从而使受害者泄露自于域名信息的钓鱼URL探测[4]使用编辑距离寻找己的银行卡账号密码等隐私信息。 与已知正常域名相似的域名,根据域名信息提取
域名单次最大匹配特征、域名分割特征和URL分随着网络钓鱼攻击技术的不断发展,网络钓
割特征,利用上述特征训练分类器,由此判断其鱼又出现了新的攻击形式,通过在真实的网站中
嵌入恶意代码来进行钓鱼攻击,这种新型网络钓他URL是否是钓鱼URL。 鱼攻击主要有两种表现形式,一种是利用XSS漏2)通过对Web页面的识别进行网络钓鱼检
测,包括对页面的异常特征分析判定和EMD视洞以合法的身份将一段恶意的XSS脚本上传到
Web服务器,或者把一个同样含有恶意脚本代码觉相似识别技术进行检测。郭敏哲等人提出了基的URL链接发送给目标用户,这些脚本将被攻击于页面文档对象模型分析的网络钓鱼页面异常检
测算法[5],将其与改进后的黑名单技术和已知攻者引向一个精心构造的钓鱼网站,或者直接利用
击特征检测进行结合构建出一个较为完整的网络脚本构造一个收集用户信息的对话框,另一种是
钓鱼检测机制。Pan等人提出的基于文档对象模型的Web页面异常检测的方法[6],该方案不需要用户具有专业的反钓鱼知识,具有较低的误报率和漏报率。曹玖新等人提出了一个基于嵌套EMD的网页相似度判定算法[7],对Web图像进行分割,抽取子图特征并构建网页的ARG,在计算不同ARG属性距离的基础上采用嵌套EMD方法计算网页的相似度。
3)对网址URL和Web页面内容综合特征进行识别、分类,判断钓鱼攻击。何高辉等人提出了一个基于SVM主动学习的网络钓鱼检测方法[8]。该方案对网址URL进行黑/白名单库过滤后,对既不在黑名单库中也不在白名单库中的可疑URL进行检测分类,采用网址URL和Web页面的综合特征,确保网络钓鱼检测的全面性,从URL中提取出7个敏感特征,从Web页面中提取出6个敏感特征,然后将这些特征数据转化为SVM所需的向量形式,在分类器中对这些敏感特征进行学习,然后对得到的SVM分类器进行评估。当SVM分类器达到一定的性能时可以用该分类检测模型对可疑的URL进行检测。
基于黑名单的检测技术具有很高的效率,但是漏报率很大,并且具有很大的滞后性,基于机器学习的URL检测技术可以检测未知的钓鱼网站而且具有很高的效率,但是这两种URL的检测技术具有较高的误判率和漏判率,因为URL户信息的手段。基于Web效率都不是很高[8]。基于对网址和有异常。
2
络钓鱼攻击的防御方法:型钓鱼攻击和利用木马进行钓鱼攻击。
2.1 XSS型网络钓鱼攻击的防御 2.1.1 防御方法的分析
XSS型网络钓鱼攻击主要是利用反射型XSS漏洞和保存性XSS漏洞将一段恶意的脚本代码上传到Web服务器,或者把一个同样含有恶意脚本代码的Web站点的URL链接发送给目标个人用户,而这些恶意脚本将用户引诱到一个精心设计的钓鱼网站或者将直接构造一个收集用户信息的表单。当个人用户访问了含有恶意脚本代码的页面或者打开收到的URL连接时,恶意脚本就会执行,从而遭受钓鱼攻击。
XSS漏洞的种类和形式繁多,通过寻找一个网页中是否存在跨站漏洞进而判断是否是钓鱼攻击的工作量繁多,同时一个网站中存在跨站漏洞
不一定被攻击者所利用了,有可能攻击者尚未发现这个潜在的漏洞,但是这类钓鱼攻击的发生必须将XSS脚本通过注入点注入到网页中,从攻击者可能注入恶意脚本的注入点出发,判断这些注入点注入的内容是否是用于钓鱼攻击的恶意脚本,而所有的注入脚本即会出现在HTTP请求中,又会出现在HTTP响应中,因此只需在一个恰当的近似度量下匹配含有特殊关键词的用户输入数据即请求参数与服务器响应中的可疑字符串,当相似度超过一定的阀值就认定是XSS攻击,然后再检测这些脚本是否是用于钓鱼攻击的。这样可以检测几乎所有的反射型和部分存储型的XSS钓鱼攻击,对于部分存储型攻击只需检测截获响应中的显示内容的标签看是否有脚本,然后检测这些脚本是否用于钓鱼攻击,最后将这些脚本进行编码以文本的形式显示。
对于提取可以通过截获HTTPGET方式POST请求头的15个字符,并且数
URL连接、事件句柄、
然后将之与可疑脚本进行匹配,求出两者的最长公共序列,若最长公共序列的长度达到阀值则进一步检测该公共序列是否用于钓鱼攻击。由于一次有效的反射型的攻击的字符串长度不小于15,因此阀值选取15。
目前一些攻击者为绕过过滤通常将请求参数进行编码(URL编码、JavaScript编码、HTML编码之一)处理,而可疑脚本也可能进行编码,所以为防止漏报,本方法可将提取的请求参数和可疑脚本进行解码处理。
具体流程图如图1所示。 2.1.2 防御方法的测试
通过样本测试对本方法的正确性进行测试。样本为一个利用XSS构造的钓鱼URL,http://localhost:8090/login.aspx?param=%3C%69%66%72%61%6D%65%20%73%72%63%3D%22%68%74%74%70%3A%2F%2%77%77%77%2E%68%78%74%2E%63%6F%6D%20%22%65%72%66%6C%6F%77%3D%68%69%64%64%65%6E%20%3E,当用户提交了该URL后,就会向服务器发送HTTP请求,通过截获该HTTP请求获取输入参数,截获的参数如图2中阴影部分所示,该参数是经过编码的,通过解码后为http://localhost:8090/login.aspx?param=。当浏览者点击该URL后会被引向
一个收集用户信息的页面,通过截获HTTP响应并做解码提取可疑字符串,提取的字符串如图3中阴影部分所示,通过匹配,他们的公共字符串为
标签,进一步认定为XSS型钓鱼攻击,提示用户。由于利用iframe标签,恶意URL地址和真实地址一样,所以传统的检测方法无法检测到这种钓鱼攻击,但本方法可以检测到这种攻击。
图2 截获HTTP请求参数
图3 HTTP响应中提取的可疑字符串
2.2 利用木马进行网络钓鱼攻击的防御方法 利用木马进行钓鱼攻击是指恶意攻击者利用网站漏在正常的网页中嵌入恶意代码进行网页挂马,当用户访问了这样的网站之后,就会在后台将木马服务器端下载到本地并自动运行,而木马的键盘监控功能对用户输入的信息进行记录,从而窃取用户的隐私信息。根据键盘记录位置的不同将键盘记录分为用户层键盘记录和内核层键盘记录。
2.2.1 用户层键盘记录及其防御方法的分析 用户层键盘记录的方法有很多种,归纳起来有如下方法SetWindowsHookEx、GetKeyboardState、GetKeyState、GetAsyncKeyState、GetRawIn
2.2.2 内核层键盘记录及其防御方法的分析 内核层键盘记录的方法主要有IDT Hook、安装键盘过滤驱动、Hook键盘类驱动的分发函数、Hook KeyboardClassServiceCallback函数。
通过对这些键盘记录方法的分析发现,这些方法大部分是Hook可以获取键盘记录的函数,将原始的函数地址替换成自己的函数地址,然后在自己的函数中实现过滤从而获取键盘记录。为此通过检测这些Hook点的地址,与原始地址进行比对,如果地址不一致则被挂钩了,用原始地址进行恢复。为了进一步提高隐蔽性,部分键盘记录并不在函数调用点就替换原函数地址,而是使用inlinehook技术,即在原函数中修改代码,用一个跳转指令或其他指令跳转到自己的函数
图4 用户层反键盘记录流程图
2.2.3 键盘记录防御方法的测试
通过键盘记录样本测试对本方法的正确性进行验证。应用层样本为WH_KEYBOARD键盘钩子,内核层样本为分别采用IDT Hook、键盘过滤驱动、Hook键盘类读分发函数、Hook KeyboardClassServiceCallback四种技术的键盘记录程序。测试环境为虚拟机,OS为XP SP3采用本方法后会对应用层调用键盘记录的函数进行监控,图6所示,当该应用层样本通过调用SetWindowsHookEx进行键盘记录时,就会被监控函数处理,发现是非本身进程所调用就会向用户
发出报警。内核层测试过程为首先用上述样本对用户的输入进行记录,然后开启本反键盘记录功能,内核层键盘记录检测的结果如图7所示,图中阴影部分表明本方法成功的发现了这四种样本攻击。通过测试表明,本方法可以很好地防御这些类型的键盘记录从而保护了利用木马形式的网络钓鱼攻击。
两种测试结果表明,本文所提出的防御方法可以很好的防御利用XSS和木马两种形式的新型网络钓鱼攻击。
图6
图7 内核层键盘记录检测结果
3 分析
本文所提出的防御方法仅针对新型网络钓鱼攻击,对于传统的网页模仿形式的攻击不能检测,而传统的防御方法对新型的钓鱼攻击无能为力,为了更全面的防御各种钓鱼攻击,本文在综合新旧防御方法的基础上,通过互相弥补各自的缺陷提出了一个综合性防御框架,该框架在传统的反钓鱼方法的基础上添加抵御在网页中嵌入恶意代码形式的钓鱼攻击的模块,XSS检测模块和反键盘记录模块用于防御新型钓鱼攻击,为了管理的方便使用人机交互模块,通过黑名单数据库、地址分析模块、异常检测模块防御传统的钓鱼攻击。整体防御框架如图8所示。
详细检测过程如下:采用多线程方法每当用户打开了一个网页后,首先判断请求的网址是否
在黑名单数据库中,如果在黑名单数据库中,则通过人机交互模块提示用户并关闭页面;否则由异常检测子系统对用户请求的页面进行检测,首先由地址分析模块对用户请求的地址进行分析,初步判断是否是通过各种域名欺骗技术进行的伪装,如果是则通过人机交互模块提醒用户并,关闭页面并将该网址加入到黑名单数据库中;否则将该页面提交给XSS攻击检测模块,判断是否是利用XSS脚本进行的钓鱼攻击,如果是则提示用户XSS形式的钓鱼攻击,关闭页面,并将该地址加入到黑名单数据库中。如果没有检测到XSS形式的钓鱼攻击,则将该页面提交给页面异常检测模块,判断是否是传统的通过网页模仿进行的钓鱼攻击,本文采用基于SVM主动学习和适合小样本集的分类方法对网站进行分类判断,如果是则提示用户网络钓鱼攻击,关闭页面并更新黑名单数据库。否则判断页面中是否有表单进行交互,如果有则开启反键盘记录模块,对用户的输入进
行保护,否则结束该线程。
采用多线程和黑名单的技术可以提高判断速度,采用SVM主动学习的方法提高了分类的性能,但由于新增加了新型钓鱼攻击检测模块势必会降低一点效率,但相对于用户的重要隐私信息,牺牲一部分的效率是值得的。
攻击给出了防御方法并通过样本测试证明了防御方法的可行性,最后在传统反钓鱼方法的基础上通过添加防御模块提出了一个综合性的反钓鱼框架,弥补新旧防御方法的各自缺陷,从而提高检测率,降低漏报率。 参考文献:
URL检URL探[J].