对混淆变形的Webshell分析是怎样的

WebShell是什么?

在最初的时候,Webshell经常被用来作为Web服务器管理员对服务器进行远程管理的一类脚本的简称。后来,随着一些Webshell管理工具的诞生,使得获取Web权限的过程被很大程度地简易化,于是逐渐被称为Web入侵的工具脚本。

Webshell不同于漏洞,而是利用应用漏洞或服务器漏洞(文件上传漏洞、文件包含漏洞等)将脚本文件上传到服务器进行后续利用,属于渗透测试的后续利用和ATT&CK的TA0002 Execution(执行)阶段。

对混淆变形的Webshell分析是怎样的

图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这三个函数,或许可以从这三个函数入手寻找分析的突破口。

对混淆变形的Webshell分析是怎样的

图 2 脚本内容

函数解释

str_rot13()

ROT13 编码把每一个字母在字母表中向前移动13个字母。数字和非字母字符保持不变(凯撒加密)。

base64_decode()

对字符串内容进行base64编码。

Gzinflate

对数据默认使用ZLIB_ENCODING_RAW编码方式,使用deflate数据压缩算法,实际上是先用LZ7压缩,然后用霍夫曼编码压缩。

分析

1.内容解析

对混淆变形的Webshell分析是怎样的

图 3 调用echo命令

使用echo命令对内容进行解析,结果发现str_rot13()被执行了,于是重复这种思路,尝试一层一层将原有内容剥离出来。

对混淆变形的Webshell分析是怎样的

图 4 解析结果

2.重复解析

经过三次echo命令的重复解析之后,出现的终于不再是单调的代码了,证明分析的方向很可能是正确的,而且从代码的量来看感觉像是个拥有多种功能的木马,俗称大马。

对混淆变形的Webshell分析是怎样的

图5 多次解析

3.调用eval函数运行代码内容

好家伙,果然是一个大马。

经过究发现,该木马的功能包括了系统信息获取、目录读取、文件下载、文件上传等功能。

对混淆变形的Webshell分析是怎样的

图6 大马原貌

看完上述内容,你们对对混淆变形的Webshell分析是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

文章标题:对混淆变形的Webshell分析是怎样的,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/28870

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月22日 下午10:09
下一篇 2022年9月22日 下午10:10

相关推荐

  • mysql substring()函数如何用

    在mysql中,substring()函数用于截取字符串,可以从字符串从特定位置开始返回一个给定长度的子字符串,语法为“SUBSTRING(字符串,n)”,参数“n”的值需要是一个整数,用于指定子串的起始字符,可以为负值。若参数“n”为负值,则子串的位置起始于字符串结尾的第n个字符,即倒数第n个字符…

    2022年9月26日
    1.6K00
  • mysql如何实现分组求和

    在mysql中,可以利用“GROUP BY”关键字和SUM()函数来实现分组求和,语法为“SELECT SUM(进行求和的字段名) FROM 表名 GROUP BY 需要进行分组的字段名;”。“GROUP BY”关键字可以根据一个或多个字段对查询结果进行分组,而SUM()函数根据分组情况分别返回不同…

    2022年9月21日
    2.2K00
  • 如何解决mysql深分页问题

    日常需求开发过程中,相信大家对于limit一定不会陌生,但是使用limit时,当偏移量(offset)非常大时,会发现查询效率越来越慢。一开始limit 2000时,可能200ms,就能查询出需要的到数据,但是当limit 4000 offset 100000时,会发现它的查询效率已经需要1S左右,…

    2022年9月13日
    1.7K00
  • windows xgp下载进度消失如何解决

    解决方法: 1、首先点击任务栏中的“Windows”打开开始菜单。 2、然后找到并打开其中的“Microsoft Store” 3、打开后,点击左下角的“库” 4、在其中就可以看到你获取的所有游戏。 5、最后点击右边的“下载”按钮就可以继续下载了。 目前xgp就是有这个bug,只能通过这种方法暂时解…

    2022年9月22日
    69600
  • windows edge浏览器广告如何关闭

    edge浏览器广告关闭方法: 1、打开浏览器,点击右上角的三个点选择“设置”。 2、点击左侧高级设置在右侧“网站设置”中关闭“使用Adobe flash player”(这会导致浏览器无法打开视频和小游戏,解决方法在下面)。 3、点击浏览器右上角的三个点,在“更多工具”选择“使用 Internet …

    2022年9月8日
    71800
  • 如何利用深度链接方式后门化Facebook APP

    近期,作者发现了Facebook安卓APP应用的一个深度链接漏洞,利用该漏洞,可以把用户手机上安装的Facebook安卓APP应用转变成后门程序(Backdoor),实现后门化。另外,利用该漏洞还可以重打包Facebook APP,并将其发送给特定目标受害者安装使用。下面就来看看作者对该漏洞的发现过…

    2022年9月10日
    80400
  • web文件上传漏洞的示例分析

    文件上传功能模块 文件上传功能是大部分WEB应用的必备功能,网站允许用户自行上传头像、一些社交类网站允许用户上传照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似不起眼的文件上传功能如果没有做好安全防护措施,就存在巨大的安全风险。 文件上传漏洞原理…

    2022年9月22日
    1.3K00
  • IDEA类存在但找不到如何解决

    1.刷新maven项目 2.清理idea缓存 3.maven clean install 4.重新bulid 5.如果使用了lombok插件开启之后重新build 6.maven依赖冲突导致 1.打开当前maven模块或者,父类模块对应的pom,哪个模块有冲突进入那个模块!2.ctlr+alt+sh…

    2022年9月21日
    1.8K00
  • MySQL死锁怎么检测和避免

    在我们使用锁的时候,有一个问题是需要注意和避免的,我们知道,排它锁有互斥的特性。一个事务或者说一个线程持有锁的时候,会阻止其他的线程获取锁,这个时候会造成阻塞等待,如果循环等待,会有可能造成死锁。 这个问题我们需要从几个方面来分析,一个是锁为什么不释放,第二个是被阻塞了怎么办,第三个死锁是怎么发生的…

    2022年9月10日
    1.1K00
  • Mysql中锁的使用场景是什么

    Mysql中锁的使用场景主要有:常见锁类型、Mysql引擎介绍、常用引擎间的区别、共享锁与排他锁、排他锁的实际应用、共享锁的实际应用、死锁的发生、另一种发生死锁的情景、死锁的解决方式、意向锁和计划锁、乐观锁和悲观锁。 一、常见锁类型 表级锁,锁定整张表 页级锁,锁定一页 行级锁,锁定一行 共享锁,也…

    2022年6月29日
    72700
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部