网马 解密 (下)

来源:互联网 发布:第三方登录数据库设计 编辑:程序博客网 时间:2024/05/17 00:56
这里我们就遇到一个问题。Alert根据里显示器的大小显示内容。无法完整显示出内容。怎么办?我们引入一段javascript代码:document.getElementById(’textfield’).value=cuteqq3;替换掉原来的document.write(cuteqq3);然后在页面的</head>
<body>和<script></script>之间添加一段,效果如下:
    <html>
    <head>
    <title>网马</title>
    </head>
    <body>
    <form id="form1" name="form1" method="post" action="">
    <label>
    <textarea name="textfield" cols="100" rows="50"></textarea>
    </label>
    </form>
    <script>
    ….这里省略解密部分
    </script>
    这里的意思是建立一个文本框,然后吧刚才的cuteqq3的内容赋值给文本框,Textfield是文本框的名称。可以自己修改。但是必须修改document.getElementById(’textfield’).value里对应的名称,再次运行刚才的网马得到结果:


刚才加密过代码大小是:

    解密后是:

    至于里面的/x72/x65/x73/x70/x6F/x6E/x73/x65/x42/x6F/x64/x79这样的代码,我们就可以用简单的办法突破了。

    十六进制转义字符串如下: 
    <SCRIPT LANGUAGE="JavaScript"> 
    alert("/x72/x65/x73/x70/x6F/x6E/x73/x65/x42/x6F/x64/x79") 
    </SCRIPT>

    就可以显示出来了,顺便说下。刚才的加密页面里用到了防止查看源代码的技术。就是适用下面的代码
    <noscript>
    <iframe src=*>
    </iframe>
    </noscript>

    这里的noscript元素用来定义在脚本未被执行时的替代内容(文本),此标签可被用于可识别<script>标签但无法支持其中的脚本的浏览器。但当浏览器支持javascript脚本时,就起到隐藏noscript标签中间内容的作用,所以导致无法查看源代码。很多时候我们要盗取别人的网马的时候就会遇到这样的问题,怎么办呢?简单!我们前面说道,所有网马要被执行都要先转换为浏览器可以识别的代码,另外,网马执行的同时也是要保存到浏览器的缓存中的。默认位置是:C:/Documents and Settings/Administrator/Local Settings/Temporary Internet Files,打开你要盗取的网马的页面前先清空下你的IE缓存,然后刷新网马页面,就会发现网马乖乖的躺再里面了!(本地测试的网页是不会保存到缓存的所以这里不截图了)

 

下面我们再来看一种加密方式

    这个是申通快递被挂马的时候抓到的,后来无意中得知这个加密方式用到的是JS混淆,http://www.cha88.cn/safe/JSencode.php这个网站有这个加密方式,但是没有解密方式。怎么办?简单!

    大家一起看看最后这段代码:

    t=utf8to16(xxtea_decrypt(base64decode(t), ’/x64/x63/x75/x6d/x65/x6e/x74’));//对t数组进行提取、重组、解密处理

    window["/x64/x6f/x63/x75/x6d/x65/x6e/x74"]["/x77/x72/x69/x74/x65"] (t);//输出加密后的t的内容

    是不是有什么感觉?觉得像什么?

    我们把/x64/x6f/x63/x75/x6d/x65/x6e/x74和/x77/x72/x69/x74/x65分别用我们刚才的alert的办法解密出来,他们分别对应的是document和write,也就是说最后这2行的意思就是对t数组进行提取、重组、解密处理并输出最后正确的结果。知道这个我们就很容易理解了,所有网马到最后为了输出让浏览器识别,都要进行最后的解密输出。通常就是document.write和eval里的内容了。那么我们用刚才的document.getElementById(’textfield’).value=t;替换掉window["/x64/x6f/x63/x75/x6d/x65/x6e/x74"]["/x77/x72/x69/x74/x65"] (t);并再页面顶端的<body>下面加入如下代码:
    <form id="form1" name="form1" method="post" action="">
    <label>
    <textarea name="textfield" cols="100" rows="50"></textarea>
    </label>
    </form>

    再次运行网马。即可得到第一层解密的结果:

    这还不是我们要的最终结果。还记得上面讲过的?遇到eval就替换为alert:

到的就是解密的结果,点下窗口标题,然后Ctrl+C快捷键,复制下,然后粘贴出来,就可以得到代码了!

    顺便提下最近比较流行的溢出型网马的解密方式:var shellcode = unescape("邐"+"邐"+

    这样的代码其实是可以翻译成明文的,这里使用的加密方式是将ASCII转换为unescape,对应解密方式就是反过来啦,借助工具

    就可以轻易解密了,这样你就可以再没有生成器的时候将别人的网马改为自己的了!
无意中猎取到一个Oday的话,就happy了O(∩_∩)o…
    最后终结:
    我们适用到的几个关键词和办法:
    关键词:
    1. document.write
    2. eval
    3. alert
    4. <noscript>
    <iframe src=*>
    </iframe>
    </noscript>
    5.document.getElementById(’textfield’).value=t;

    <form id="form1" name="form1" method="post" action="">
    <label>
    <textarea name="textfield" cols="100" rows="50"></textarea>
    </label>
    </form>
    用法:
    碰上document.write,我们一般把它改成“alert”,如果遇到“eval”一般改成“document.write”,遇到alert无法显示完整代码时适用document.getElementById(’textfield’).value=t;将他赋值给一个文本框,然后再<form id="form1" name="form1" method="post" action="">
    <label>
    <textarea name="textfield" cols="100" rows="50"></textarea>
     </label>
    </form>
    表单中显示出来,如果遇到使用了
    <noscript>
    <iframe src=*>
    </iframe>
    </noscript>
    而无法显示网页代码的。就到IE缓存中寻找被保存到本地的网马文件,用我提供的办法应该可以解开绝大部分的网马了,
希望大家看完知道不是盲目的套用,而是可以举一反三!这样才能不断进步。没有你做不到的,只有你想不到的!

原创粉丝点击