Webshell冰蝎4.1流量解密、流量特性与检测规则
本文最后更新于100 天前,其中的信息可能已经过时,如有问题可在评论区留言

一. 流量解密

  1. 捕获流量并追踪流
  1. 使用UTF-8查看数据(因为魔法尾巴使用ascii码无法显示)
  1. 整段复制
  1. 使用冰蝎自带的传输协议功能解密
  • 注意选择对应的协议名称,然后把第三步复制的内容粘贴到中间的框内即可获取请求数据明文,响应是base64编码后的内容,base64解码后得到明文。
  • 请求数据和响应数据都是这样解密,解密出来的请求中的一长串未知字符并没有实际作用,应该是用来迷惑分析者的。

二. 流量特征

  1. 请求正文的长度很长,通常大于4000。
  2. 正文不存在key=value&key=value格式。
  3. 冰蝎的流量全部是Base64编码(先加密,再Base64),此类情况通常只出现在一种情况下:文件上传时。但是,在响应当中,通常也不太会使用Base64编码,所以可以检测Base64的特征。
  4. 请求头的referer可能是一个不存在的网址,或来自webshell文件。
  5. 通常请求头会带有Connection: Keep-Alive。
  6. 请求头的Content-type的值大概率为application/x-www-form-urlencoded。

三. 检测规则

1. Suricata规则

alert http any any <> any any (msg:"Chr1s:检测到冰蝎流量"; http.method; content:"POST"; http.content_type; content:!"multipart/form-data"; nocase; file.data; content:!"&"; http.content_len; byte_test:0,>=,4000,0,string,dec; http.header; content:"Connection|3a 20|Keep-Alive"; nocase; http.accept_enc; content:"gzip"; nocase; filestore; sid:66601001; rev:1;)
  • 请求为POST
  • content-type不为multipart/form-data
  • 正文中不存在&
  • 正文大小大于4000
  • 头部存在Connection: Keep-Alive
  • 数据使用gzip压缩
  • 存储流量数据,以便于流量分析

注意,此规则仅适用于默认配置的冰蝎shell

2. 雷池waf规则

这里已经开启雷池waf的防护,但冰蝎正常连接:

也就是说雷池的社区版默认是不防冰蝎webshell的!

其他webshell还没试过,菜刀应该是肯定能防。

然后我们添加自定义黑名单规则:

(?:[A-Za-z0-9+/]{4}){1001,}(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?
  • 此正则用于严格匹配Base64字符

开启自定义规则后冰蝎无法连接:

查看攻击日志可以看到流量已被拦截:

自此,完美防住冰蝎。

但需要注意,这个规则存在误报和被绕过的可能性,需要自己根据具体业务进行调整。

作者:Chr1s
本文版权归作者所有,未经允许,禁止转载、复制或以其他方式使用。若需引用或转载,请与作者联系。

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇