主页 > 网络知识 > 冰蝎,从入门到魔改(3)

冰蝎,从入门到魔改(3)

 

冰蝎,从入门到魔改

 

ShellService代表一个Shell服务,在其构造函数中31行判断了,如果类型是php则在header中加入Content-type头。但在35行的getKeyAndCookie向服务端发送GET请求获取密钥时,也将此header头带入其中,所以发送GET请求包时也会携带此参数。

修改思路:

GET形式访问时在header中去掉此字段,POST形式访问时将值改为Content-Type值改为”text/html;charset=utf-8″以规避安全检测(值也可以不改)。

修改后的效果:

GET请求:

 

冰蝎,从入门到魔改

 

POST请求:

 

冰蝎,从入门到魔改

 

3.header中的User-Agent

User-Agent是指用户代理,会包含浏览器和操作系统等信息标志。在”冰蝎”的早期版本存在User-Agent特例化问题,最新版本已经解决了这个问题。解决方案是:每个shell连接会从17个内置的UA里随机选择一个。

 

冰蝎,从入门到魔改

 

来看下这部分的JAVA代码:

 

冰蝎,从入门到魔改

 

可以看到是随机从常量Constants.userAgents中取了一个值。

 

冰蝎,从入门到魔改

 

这块的问题是UA包含的浏览器版本比较旧,比如:Chrome/14.0.835.163是2011年发布的版本,Firefox/6.0也是2011年的版本。这种浏览器基本很少人使用,所以特征较为明显,可以作为规则参考。

修改思路:

使用较新版本的常见浏览器UA来替换内置的旧的UA常量。

修改后的效果:

2020年发布的Firefox 75.0:

 

冰蝎,从入门到魔改

 

2019年11月发布的Chrome 78.0.3904.108:

 

冰蝎,从入门到魔改

 

4.header中的Accept

在请求header中的Accept字段默认会是一个比较奇怪的值,此值在GET形式和POST形式的请求中均存在。而在正常的浏览器或其他设备访问的报文中Accept的值不会是这样的,所以此处也可以作为一个强力有效的规则检测依据。

GET请求:

 

冰蝎,从入门到魔改

 

POST请求:

 

冰蝎,从入门到魔改

 

此处产生的原因是JAVA的HTTPURLConnection库(”冰蝎”使用的HTTP通信库)在没有设置Accept值时会自动设置该值作为默认值,而源码中默认并没有对Accept进行处理。

修改思路:

修改请求header中的Accept的值。

修改后的效果:

GET请求:

 

冰蝎,从入门到魔改

 

POST请求:

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!