拜读了cnrstar@四维创智
大佬关于hw的总结文章复盘攻防,再聊安全,针对他谈到的几种webshell管理工具,菜刀、蚁剑、冰蝎,我觉得有必要做一些微小的研究,识别webshell管理工具的流量特征远比识别webshell要容易得多,因为webshell千变万化,但是市场主流的webshell管理工具就只有几款,那些不自造轮子的初级黑客很大概率使用这些工具进行攻击。
一、2014版菜刀
1、连接php的webshell时
首先,菜刀会伪造X-Forwarded-For,每一次利用菜刀与webshell建立连接,X-Forwarded-For都会变化。
其次,菜刀伪造User-Agent,其UA为伪造成百度爬虫:
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
post请求体中包含明显的@eval,eval函数在php中的作用是将括号内的字符串视为语句并运行,在php里webshell运用广泛。
&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTt……
将其等号后base64解码后,得到&z0=@ini_set("display_errors","0");@set_time_limit(0);……该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据。
二、2016版菜刀
- 连接php的webshell时
2016版菜刀对比2014版有一些改进。@eavl函数分割开了,但是这一段的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTs
将其base64解码,为@ini_set("display_errors","0");@set_time_limit(0);
与2014版的base编码一致。综上看来,菜刀的流量非常好检测,除非加载自用插件做服务器能解析的编码、混淆处理。
三、Cknife
- 连接php的webshell时
c刀是由java写的客户端,所以它的适用性比较强,linux、windows平台都可以用。
cknife首先会查询服务器版本信息,接下来才是查询当前目录。由于cknife是基于菜刀改的,在流量上与菜刀是十分相似的,都包含@eval,以及base64编码后的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTs
三、蚁剑
- 连接php的webshell时
可以看到如果用默认的蚁剑测试,其请求体只是经过url编码,其中一段代码与菜刀中的相同,这段代码基本是所有WebShell客户端链接PHP类WebShell都有的一种代码,如下所示:
%40ini_set(%22display_errors%22%2C%20%220%22)%3B%40set_time_limit(0)%3B
随后,蚁剑查询当前目录的文件,参数以0x……开头的一串字符,其中也包含上述的那段代码。
四、冰蝎
冰蝎就厉害了,由于设计的时候便是利用了服务器端的脚本语言加密功能,通讯的过程中,消息体内容采用AES加密,基于特征值检测的安全产品就是“瞎子”了。
加密原理图如下:
wireshark抓取到的流量,body中全为加密的,安全产品只能基于行为模型、大数据分析发现这种异常流量,或者在服务端上部署终端检测工具。
冰蝎 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
五、Weevely
weevely是kali上集成的webshell木马管理工具,相当于linux的菜刀,不过只支持php木马连接。
连接php的webshell时
可以看到流量经过编码混淆后,基本很难基于特征值去检测了。
参考文档:
https://www.freebuf.com/column/204796.html
https://xz.aliyun.com/t/2774