【发掘网征文】网页加密是做什么的呢?一般的人或者是为了不想让自己网页的代码被人剽窃,不过网页加密的大部分应用还是经常在毒网上。
毒网为什么要加密?其实现在传播病毒,很大一部分是构建恶意网页来感染没有及时打好系统补丁的系统。而很多反病毒软件不仅查杀病毒,对于此类利用系统漏洞进行传播病毒的恶意脚本文件也有查杀,脚本文件一但被杀软所拦截就发挥不了原有的功能了。而传播病毒的人此时就对此类恶意脚本进行免杀,免杀的操作一般是对代码进行加密变形,使杀软无法正常识别,无法查杀拦截。
要学反病毒,就必须会网页解密,才能从一个毒网里找出病毒的下载地址进行样本提取和挂马漏洞分析。挂马的语句大部分是IFRAME,隐蔽一点的挂在FLASH里面或者其他媒体里面用GETURL来跳转到毒网。
我们先来了解一下经常见到的加密手法:ASCII转换,escape,Base64encode,Urlencode, US-ASCII, CryptHTML。
首先来看看ASCII转换,ASCII是美国信息交换标准码,这种加密方式是对代码进行ASCII编码转换。例如:
alert("hi")经过10进制加密以后变成了97,108,101,114,116,40,34,104,105,34,41
a在这里对应了ASCII代码97,以次类推。8进制的原理就是将a的ASCII码97转换成8进制的数字,例如a的8进制ASCII码是141。16进制也是这个原理。
hello```
只要你把以上代码保存为HTM文件,执行一下就可以看到效果。所以我们遇到ASCII码加密的网页只要将那些ASCII码经过相应的进制进行转换就好了。
我们来看看unescape加密:
未加密是这样的:unescape("Hello{[World]}")
加密后:unescape("Hello%7B%5BWorld%5D%7D")
这个形式的我们称之为escape加密。这种加密的方式实际就是escape/unescape转义到反向转义的转换过程。它加密以后把符号进行了编码转换混淆代码。让人难以解读。只要将此类格式的代码进行UNESCAPE解密就好了。我附上一个网页解密的好工具:

图1
只要使用对应的功能按钮就可以进行解密操作。(下载地址)
我们再来看看Base64encode。这种加密方式是将代码通过Base64算法进行加密。
型如:YWxlcnQoImhpIik=
解密后为alert("hi")
你可以通过工具试一试。
我们再来看看Urlencode。它实际上是HTMLEncode/Decode的互转。
型如:
alert(%22hi%22)
接着我们再来看看US-ASCII。这种加密方法最近经常看到,导致乱码就是编码把7bit转换为8bit,而不是平常的gb简体编码,解密只要把每个字节的高位置0即可,其实也可以在语言选项将“西欧(windows)”改成“简体GB2312”然后另存为新的网页。这种加密的方式的解密可以用一个叫“ASCII Decoder”的工具来进行转换,也可以在网上搜索相应在线解密网页。

图2
还有就是CryptHTML了,这类加密看起来比较混乱,难以解密。
我们需要留意这么两个关键词“document.write”和“eval” 。“document.write”在JAVASCRIPT是一条打印语句,而“eval”指的是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。如果在JS的加密代码中碰上document.write,我们一般把它改成“alert”,如果遇到“eval”一般改成“document.write”。

图3
我们可以看到代码中有两个“eval”,前面的“eval”是定义运行Function()这个函数的,这个不能修改,而后面的则是调用参数用的,我们可以修改这个。将后面的“eval”改成“document.write”,然后存为脚本htm网页,打开就会得到加密前的代码。
修改后:

图4
运行后得到代码[这是一个MS06014漏洞利用代码]

图5
其实网页解密只要多练习就可以掌握,就可以在找病毒的时候得心应手了。经常可以见到反复用不同方式加密的网页,所以有必要掌握所有的解密方法。大家可以到网上下载或者使用我提供的工具进行解密。



