您的位置  > 互联网

JSP一句话木马分析冰蝎作者对管理端这样实现

前言

有一天,一个朋友过来问我冰蝎有没有魔法修改版。 我说我的冰蝎执行命令被拦截了,于是我开始趁这个机会分析冰蝎源码,寻找它的特点。

JSP一句话木马分析

冰蝎子两端开放,先分析它的JSP

为了便于分析,带入想法并格式化。

一个名为 U 的类继承。 这里我只给大家解释一下,避免解释过多,让大家难以理解。 只需将类文件加载到 JVM 中即可。 只要读者明白这一点...

获取对象,然后通过对象获取请求方法。 如果是POST方法,则往下...

定义一个key,因为它使用AES加密,然后将这个key存储在对象中,key为u,value为key。

通过对象实现的AES加密

然后初始化加密算法

初始化(整数,)

init API 使用给定证书中的公钥初始化此密码。 那么这里就解决了一个问题。 我在这里对 aes 加密或解密感到困惑。 后来穷文档发现第一个参数支持两种模式, , or ,然后他传入了一个int类型2进行解密。

然后传入上面声明的key作为key。 这是 aes 方法声明的结尾。

然后实例化当前类。 这种链式操作大大减少了代码量,但是对于分析人员来说并不是很友好。 这种写法需要从内到外的分析。

1、调用该对象,然后逐行读取请求包的内容。

2、调用sun包下misc中的方法进行解密

3、调用上例的aes算法对象,用aes解密

4、将内容传递给声明的方法g,内部调用方法将内容动态解析为类内容。

这里主要的方法就是给出API。 您可以搜索该API文档进行深入了解。

我们来谈谈这个实现的优点

不得不承认,《冰蝎》的作者很欣赏管理这样的先驱者。 原因如下: 对于一个控件来说,它最重要的功能就是命令执行,也就是类。 客户端向服务器发送命令,服务器获取内容并带入exec。 但的作者并没有这么做。 他选择了类加载方式。 客户端将class文件发送到服务器,服务器使用它加载到jvm中。 这样做的最大优点是可扩展性。 能做的事情不再局限于班级,能做的事情可以无限扩展。 从0到1是个大问题

客户

接下来我们看一下客户端的目录结构,这让我高兴不已。 当我再次看到这样的目录结构时,我流下了久违的泪水。 那些旧建筑项目的架构是一团糟。 这种架构和分层的思维为我后续的分析减轻了很多压力,而且我可以直接从pom.xml中下载依赖。

冰蝎使用数据库

只有两个核心表,主机和外壳表。 多对多关系,保存shell记录。

1.dao层负责查询数据

2. 该层负责数据库和应用程序之间的实体映射。

3.UI负责界面

4.util工具包

5.是客户端的功能实现

可以看到函数是如何实现的。 没什么好说的了,就是创建文件和删除文件。

谈谈特点

让我用这篇文章来反驳吧。

1.-type-Type:/octet-是一个强大的功能。 这就是流式传输,很多地方都使用流式传输,所以不能作为一个特性来使用。

2.user-Agent.我看了一下源码

Ice 中默认定义的agent 经检查并没有发现包含敏感特殊词,都是正常的UA 。 如果实在担心,可以修改默认的ua 。

&Cache-,文章说如果自己不定义的话,就使用默认的。

:文本/html、图像/gif、图像/jpeg、; q=.2, /*; q=.2

缓存-:无缓存

:无缓存

用户代理:java/1.8

这是正常的,大多数请求都没有定义自己。

综上所述,以上特征均属于强制特征。 如有必要,建议仅修改 ua 标头。

总结

看完整个代码,感觉Ice 的作者开发功底不错,采用了多种设计模式,方法也比较抽象。 每个方法都放在它该在的地方,但是作为一个数据库设计者,我认为host表和shell表中有很多冗余字段。

最后一句话,

在交通特征以外的记忆特征中,关键u算作1吗? 这作为记忆马检测非常强大吗?