从事渗透测试的朋友,应该都遇到过这种情况:从他人那里获取到一个功能齐全的Webshell,顺手就拿来用了。但你是否想过,这个Webshell本身可能暗藏后门?如今很多大马都经过加密处理,打开后全是乱码。那么,你自己编写的Webshell,是否也该考虑加密?加密Webshell不仅能防止被他人捡现成,还能顺便绕过一些安全检测。ASP木马加密的门槛其实不高,今天就来聊聊这个话题。
一、人工加密方法
1. 核心加密函数的编写
1) 解密函数与加密函数详解
对大马进行加密,关键在于编写一个加密函数,再配套一个对应的解密函数。首先需要熟悉几个ASP内置函数:
CHR:将ASCII码转换为字符
REPLACE:替换字符串中的指定内容
ASC:获取字符串第一个字符的ANSI码
Len:获取字符串长度
此外,还需要掌握IF语句以及VBScript中的一些基本函数。Windows脚本技术文档中有详细说明,如有疑问可查阅。
先看一个最常见的解密函数:
dim ShiSan,ShiSanNewstr,ShiSanI
Function ShiSanFun(ShiSanObjstr)
ShiSanObjstr = Replace(ShiSanObjstr, "╁", """")
For ShiSanI = 1 To Len(ShiSanObjstr)
If Mid(ShiSanObjstr, ShiSanI, 1) <> "╋" Then
ShiSanNewStr = Mid(ShiSanObjstr, ShiSanI, 1) & ShiSanNewStr
Else
ShiSanNewStr = vbCrLf & ShiSanNewStr
End If
Next
ShiSanFun = ShiSanNewStr
End Function
该函数负责将加密后的代码还原。具体流程:首先将加密字符串中的“╁”替换为引号,得到中间字符串Str1;然后循环遍历该字符串,逐个取出字符,但注意——取出的字符是倒序拼接,遇到“╋”则替换为换行符。这种加密思路在很多场景中都有应用,华夏免杀Webshell也采用了相同的方法。
理解原理后,就可以自行编写加密函数了。ASP中的加密函数可以直接参考上述代码进行改写,但需要有一个可运行的环境(如本地IIS或上传至服务器)。下面分享一段用JavaScript编写的加密页面,放在本地HTML文件中即可运行:
上一页1 2 下一页 阅读全文
