Msmap内存马生成框架(二)
在太阳系以太阳为中心,可以用较为简洁的数学公式拟合出周围行星的运动规律,牛顿定律解释不了时就升级为广义相对论(比如水星近日点进动)。Msmap经过三天三次更新迭代,兼容了三个常用WebShell管理客户端,适配的过程修正了一些解藕不充分的问题。
对于俗称的WebShell连接密码,蚁剑用来从请求参数中取数据,冰蝎用作解密请求体数据的密钥,哥斯拉则拆分为了Password
和Key
,Password
取数据、Key
用作密钥。为了生成体验不割裂,设计上让蚁剑的密码哈希作为密钥,冰蝎密码从哈希改为明文,哥斯拉的Password
和Key
用同一个值。这应该并没有降级工具在原本设计上的安全性,冰蝎密码是在客户端取的哈希、哥斯拉回显时密钥也是确定的,也就是说这些机制并不是为防止骑马设计的,主要是对抗纯流量审查,严防骑马害得上RSA。但这是内存马,相对来说更难看到类属性值。
要支持哥斯拉自定义
Key
也好改,生成设置Password时用逗号分隔拆分一下就行了,只是目前感觉不是很必要
关于执行体,蚁剑是传入response
对象内部处理输出,冰蝎是将response
对象封装进Map传入内部处理输出,哥斯拉是传入用来接收执行结果的对象,在内存马中自定义处理输出。关于回显编码/加密器,蚁剑和冰蝎是跟着流量走的,哥斯拉是写在内存马中自定义处理的,所以Stub代码片段中会多一个Base64编码函数。
可以看出哥斯拉在这块耦合度更低,且在第一次流量类初始化后保存对象,后续只用发出简短的指令而非完整类字节码。我有点一根筋,不想因为一个Stub要存对象,就往所有组件类里新增属性,所以复用了注入时的线程锁对象,让被冷落的小可怜活了回来。
还有一点结构性调整是,感觉冰蝎没有回显界定符和抢占输出,如果访问路径本身有内容输出的话,会干扰到冰蝎拿回显结果。同时也是为了兼容WsFilter及各个stub
,将原本在hook
中处理的回显输出部分改放到了stub
中。
这个兼容的过程,似乎也与用更精准的数学公式去拟合物理规律 异曲同工(技术没啥长进,倒是越来越会胡说八道了