在第一篇文章中我们对老版菜刀Chopper和新版菜刀Cknife做了对比分析,对比的结果是在默认配置下Cknife相比Chopper“不安全”,因为默认配置的Cknife没有对自定义的处理函数做ASCII编码,导致特征明显。Cknife作者向我们强调了这是依靠配置文件的菜刀,我们在实际使用的时候可以对配置文件进行修改从而去掉一些C刀所具有的容易被查杀的特征。比如:z1,z2参数名。
首先看下Cknife配置文件:
- SPL=->|和SPR=|<- 这两个配置的目的是为了在参数传递过程中及回显中截取所需要的内容而设定的特殊字符;
- ACTION=action 动作参数主要用来传递相应的参数内容,也可以自定义;
- PARAM1=z1 PARAM2=z2 这两个参数主要用来传递Payload;
- PHP_BASE=1 当PHP时,z1,z2参数是否开启自动base64加密,如果想自定义加密方式则关闭设置为0;
- PHP_MAKE=@eval\u0001(base64_decode($_POST[action]));生成方式,可以定义任何想要的生成方式;加密也在这里进行。
- 主要的功能代码包含在被Base64加密的内容中,例如:
则是用来进行传递系统命令的。
我们来简单的做个实验尝试修改z1 z2两个参数,笔者把参数修改为aaa,bbb。
修改之后的从流量上看已经修改成功了,并且已经没有了z1z2这两个在Chopper中被经常使用参数了。
当然除了这些我们能做的还有很多,特别是对
的修改能够起到关键性的作用,在流量中PHP_MAKE是以明文形式传递的,并且加密方式也很简单。大多数的基于流量的检测系统如IDS可以很轻易的进行检测,如果想要增加检测的难度可以参考Chopper对PHP_MAKE做加密,甚至修改加密方式,如:
当然相应的功能代码也需要修改,将解密算法放进去,这里就不再多述。