ToB企服应用市场:ToB评测及商务社交产业平台

标题: Webshell混淆免杀的一些思路 [打印本页]

作者: 张春    时间: 2024-1-15 08:39
标题: Webshell混淆免杀的一些思路
1、简介

为了避免被杀软检测到,黑客们会对Webshell进行混淆免杀。本文将介绍一些Webshell混淆免杀的思路,帮助安全人员更好地防范Webshell攻击。静态免杀是指通过对恶意软件进行混淆、加密或其他技术手段,使其在静态分析阶段难以被杀毒软件或安全防护产品所检测出来的方法。静态免杀的目的是为了规避杀毒软件的检测机制,使恶意软件能够在目标系统上长时间地存活和执行。也就是说让webshell尽量和原本的代码不一致。
2、混淆字符

混淆字符是最基本的混淆webshell手段之一,混淆字符集可以使得杀毒软件无法检测到其原有的代码特征。具体实现就是将webshell的原本的字符编码成另外的字符。这里以哥斯拉的jspwebshell示例。因为java是默认支持unicode编码的。
Java代码示例:
[img=720,199.69604863221883]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658195.png[/img]
然后可以上传vt查杀可以看到还是会被挺多杀软识别的。
[img=720,511.14933541829555]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658198.png[/img]
现在可以通过给个提到的编码进行替换原有的关键字,再次上传vt可以发现少报毒了几个杀软。当然这个只是最简单的方法而已,只是证明能够通过一些字符编码使得特征不那么明显,实战中并不能完全靠字符编码绕过杀软,字符编码主要在实际混淆webshell中只能够起到一个辅助作用。
[img=720,340.8510638297872]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658199.png[/img]
[img=720,122.17194570135747]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658200.png[/img]
3、利用注释

利用注释这种方法是目前较为常用的方法之一,其利用的是部分杀软不识别webshell中的注释的特性,比如杀软匹配的规则是eval()这个函数,那么我们就可以利用注释符号将原本的代码修改成eval/*xxxxx*/()这种写法去进行绕过,这使得杀软的规则匹配失败的同时原本的代码还能够正常运行。
Java示例:
[img=720,145.48453608247422]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658201.png[/img]
然后这边是给原本的webshell加上注释之后,丢到vt上的查杀效果。
[img=720,345.0887573964497]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658202.png[/img]
[img=720,493.92111368909514]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658203.png[/img]
值得注意的是,现在大部分杀软会匹配程序注释规则,但是并不意味着我们无法使用注释符号去进行绕过。比如杀软会匹配出/*注释内容...*/然后选择性无视注释内部的东西。那么我们就可以使用Strings = "/*"; code...; String ss = "*/";code...就是webshell的一行正常代码。这样杀软可能会把两个字符串/* */中间的值认为是注释内容从而匹配恶意代码失败。
【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】
 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
4、改变代码特征

改变代码特征是指修改代码原本的写法但是不改变其功能,因为大部分杀软静态查杀webshell会有一个语句的特征,比如单纯的php一句话木马eval($_POST['x']);很容易就会被杀软查杀,但是服务器上运行的php代码有一些文件含有eval,然后其参数是根据一系列的函数调用进行传递的就不会被杀软注意到。这也就是最容易绕过杀软的一个特性,可以改变程序的代码特征用于绕过杀软。具体就是比如可以用函数封装webshell某段代码,用三元表达式代替ifelse,用一些代替写法比如java中的int类型1可以写作0x1或者是10000-9999这种写法代替,用for循环代替while循环,也可以是添加任意无用垃圾代码等。
部分代码截图:
[img=720,629.6470588235294]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658205.png[/img]
[img=720,482.7522935779817]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202311271658206.png[/img]
可以看到免杀效果其实还不是很理想,因为实际过程中的免杀并不是单一的方法就能够完成的,往往都需要很多种方法混合使用效果才会达到令人满意的地步。以下代码是以上三种方法混合使用混淆的。
全部代码:
[code]​




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4