在QQ群中,有人兜售所谓的“网马”,一位网友付费购得后分享给我,希望我分析其奥秘。既然样本到手,便顺手进行逆向分析,于是写下这篇关于网马破解与ASC加密技术的文章。
1. 网马初探
通过浏览器直接打开该网马,发现其功能并不复杂——核心目标是上传一个功能更强大的“大马”。有趣的是,它还能自动检测目标页面的上传漏洞,并自行修改配置以适应环境。查看源代码时,发现代码已被加密,属于典型的ASC加密方式。
500)this.width=500" title="点击这里用新窗口浏览图片" />
2. 网马分析
尽管核心功能代码被ASC加密层层包裹,但脚本的整体框架仍然清晰可见,一眼即可识别。代码及其详细注释如下:
3. 网马解密
既然加密原理已经明晰,编写一个ASC解密工具并非难事。我从网上下载了一份现成的ASC解密代码,然后根据该网马的具体加密逻辑进行了针对性修改,重新编译后,便得到了专属的解密工具。
运行该工具,将网马源代码中t变量后面的数字串复制进去,点击“解密”按钮,源代码便立即显现。
500)this.width=500" title="点击这里用新窗口浏览图片" />
解密后的代码片段如下:
4. 解密效果
将解密后的HTML代码保存为test.htm文件,直接用浏览器打开,测试上传功能,结果成功。这表明该网马的ASC解密工作已顺利完成。
500)this.width=500" title="点击这里用新窗口浏览图片" />
5. 加密利用
既然能够破解,反过来也可以加以利用。借助该网马的加密原理,我们能够为自己的网页代码进行加密,从而起到一定的保护作用。ASC加密主要适用于保护静态页面的代码——动态代码在服务器端执行,客户端仅能看到运行结果,本身不存在源码泄露的风险。此处以“IT专家网”的页面为例进行演示,尽管它是动态生成的,但原理相通。
操作方法非常简单:查看并复制目标网页的源代码,利用“ASCCII速查器”将每个字符转换为对应的ASC数值。接着,将这些生成的ASC数值替换到我们之前破解的网马代码中,作为变量t的值。这样一来,他人查看网页时只能看到一串ASC数字,源代码被有效隐藏,而页面的运行效果与加密前完全一致。
500)this.width=500" title="点击这里用新窗口浏览图片" />
总结:ASC加密是当前静态网页加密的主流方式之一,然而从本次网马逆向分析的过程来看,这种防护手段实际上相当脆弱,无法真正保障代码安全。结合长期维护网站的经验,以下推荐几种更为有效的网页加密思路:
1. 脚本加密:利用VB、JavaScript等脚本实现封锁鼠标右键、禁止查看源文件、链接调用地址加密等功能,从用户交互层面增加破解门槛。
2. IIS安全加固:通过对IIS的安全配置、身份验证和访问控制进行部署,防止非授权的访问和文件上传。
3. ASP程序加密:借助数据库和ASP程序逻辑来实现页面加密。这种方式对Web服务器没有特殊要求,是目前多数网站采用的主流方案。
4. 软件加密:市面上有很多网页加密软件,原理基本都是利用JavaScript代码自动生成加密脚本。使用者只需将源码粘贴进去,点击“加密”按钮即可完成,操作门槛极低。
