修改响应体特征
哥斯拉响应体特征主要体现在base64模式的webshell连接上,以下是哥斯拉php、java、asp三种语言的webshell连接数据包截图,可以看到特征基本一致:md5+base64+md5
这里就拿PHP的xor_base64举例了,首先得看一下生成出来的webshell,发现输出语句
在源码中搜一下相应内容
找到bin文件,根据上级目录判断,这是webshell的模板文件,对照一下刚才的webshell,确定就是根据这个模板生成的
依次点开shells下面的目录查看分析,cryptions目录就是webshell的生成逻辑所在
那么,接着找解析响应包的地方。看看与template目录同级的四个文件,根据名称判断Generate.java是生成webshell的,其它三个是加密器!
点开加密器,通读整个代码,发现处理请求和响应的地方:
下面第一张图,定义左右两边的数据,左边一个16位,右边一个16位
第二张图,定义一个findStr()方法,调用functions.subMiddleStr处理响应结果
问问GPT,大概意思就是截取两个16位MD5值之间的部分,作为结果再进行后续处理
为了不影响后续测试,我不去更改原加密器,新建一个加密器PhpXor_qh以及对应的bin文件base64_qh.bin(代码复制过来修改一下加密器名称)
打包运行看看,发现下拉菜单已经新增该加密器,没问题
首先,定义的地方改了,让它输出左右两边输出qiuhui、attack,这里仅仅举例,实战中当然要改得隐蔽一些!
其次,先不忙用新增的模板生成,先改之前的webshell看一下效果
打包,连接看看
连接没问题,看看响应包,已经成功修改
测试,功能正常
既然没问题,那再把生成模板改了,省得以后麻烦
上图改完还不行,还得关联加密器调用。先看最简单的eval那个一句话木马的bin文件是如何被调用的:
Generate就处理了原生的两个模板(一个raw,一个base64)
PhpEvalXor加密器自己处理自身的模板,里面有模板文件的加载
刚才新建的加密器,就能仿照PhpEvalXor的代码写了:注释掉原有的代码,写上自身需要的加载和替换
打包生成看看
成功生成改好的webshell
连接看看,OK!
后续可以在webshell中输出一个html页面,起一定的迷惑作用
至此,响应体特征已改!
修改请求体特征
请求体这一块,不管是asp、php还是jsp,都是这种形式:
密码=base64加上url编码,示例:
pass=fL1tMGI4YTljMX78f8Wo%2FyhTV1QCWCn3LmDlfWRkKzUxH296TG6bPHo08BeXHfTCZnOcyoPZgMMpW9Ary73Yqik8I0YIvtiQRijMG0y92Jov6iXNyy3I8K3IjIu7TUgzw1H%2BzjU4YTk%3D
这一块怎么处理呢,看一下哥斯拉的功能,可以在其真实数据左右加一下内容进行伪装
测试一下,有点效果,至少比刚才光秃秃的强一些
那就在代码里固定一下,省的每次都要手动去加
打包测试,没问题
这个部分后续可改成json形式,见后面“更改数据交互方式”的内容
未完待续