对混淆变形的Webshell分析是怎样的
时间:2023-05-20 01:30
最初,Webshell经常被称为一种供Web服务器管理员远程管理服务器的脚本。后来,随着一些Webshell管理工具的诞生,使得获取Web权限的过程被很大程度地简易化,于是逐渐被称为Web入侵的工具脚本。 Webshell不同于漏洞,而是利用应用漏洞或服务器漏洞(文件上传漏洞、文件包含漏洞等)将脚本文件上传到服务器进行后续利用,属于渗透测试的后续利用和ATT&CK的TA0002 Execution(执行)阶段。 图1 TA0002 参考来源:https://mitre-attack.github.io/attack-navigator/(ATT&CK导航器) 攻击者为了绕过检测和防护设备、软件等的检测,都会经常变换自己的Webshell写法,可以保证功能的前提下确保自己的脚本不会被检测到,其中php脚本较为突出,由于php脚本语言存在很多可利用的函数,因此导致了php可以有千变万化的混淆和变形写法。 一句话木马也属于Webshell脚本,对一句话木马感兴趣的小伙伴可以参考上期的《一句话木马的多种变形方式》自行学习和了解,本期文章主要不再赘述。 之前分析Webshell时,发现有一类Webshell完全能绕过各种各样的检测软件,这类脚本常常在代码层面上看似乎毫无意义,也没有常见的Webshell特征,但经过层层的抽丝剥茧,就不难发现这一类混淆脚本的思路,刚好近期收到一个有趣的混淆脚本,向小伙伴分享该脚本的分析过程,也希望能起到抛砖引玉的作用。 第一眼看到这个脚本的时候就从他的内容中看到了明晃晃的eval函数,于是本能地将这一部分代码提取出来,但是还不足以证明什么,因为内容部分全是看起来毫无头绪的乱码,没有丝毫WebShell的痕迹。 仔细发现可以发现除了eval之外,还调用了gzinflate、base64_decode、str_rot13这三个函数,或许可以从这三个函数入手寻找分析的突破口。 图 2 脚本内容 str_rot13() ROT13 编码把每一个字母在字母表中向前移动13个字母。数字和非字母字符保持不变(凯撒加密)。 base64_decode() 对字符串内容进行base64编码。 Gzinflate 对数据默认使用ZLIB_ENCODING_RAW编码方式,使用deflate数据压缩算法,实际上是先用LZ7压缩,然后用霍夫曼编码压缩。 图 3 调用echo命令 使用echo命令对内容进行解析,结果发现str_rot13()被执行了,于是重复这种思路,尝试一层一层将原有内容剥离出来。 图 4 解析结果 经过三次echo命令的重复解析之后,出现的终于不再是单调的代码了,证明分析的方向很可能是正确的,而且从代码的量来看感觉像是个拥有多种功能的木马,俗称大马。 图5 多次解析 好家伙,果然是一个大马。 经过究发现,该木马的功能包括了系统信息获取、目录读取、文件下载、文件上传等功能。 图6 大马原貌 以上就是对混淆变形的Webshell分析是怎样的的详细内容,更多请关注Gxl网其它相关文章!WebShell是什么?
背景
初见脚本
函数解释
分析
1.内容解析
2.重复解析
3.调用eval函数运行代码内容