phpStudy隐藏后门预警

1、事件背景
近日 , 使用广泛的php环境集成程序包phpStudy被公告疑似遭遇供应链攻击 , 程序包自带PHP的php_xmlrpc.dll模块隐藏有后门 , 安恒应急响应中心和研究院随即对国内下载站点提供下载的phpStudy安装包进行分析 , 确认phpStudy2016、phpStudy2018的部分版本有后门 , 建议使用该版本的用户立即进行安全加固处理 。
2、后门分析
通过分析 , 后门代码存在于extphp_xmlrpc.dll模块中 , 至少有2个版本:
phpStudy2016和phpStudy2018自带的php-5.2.17、php-5.4.45
phpStudy20161103
phpphp-5.2.17extphp_xmlrpc.dll
phpphp-5.4.45extphp_xmlrpc.dll
phpStudy20180211
PHPTutorialphpphp-5.2.17extphp_xmlrpc.dll
【phpStudy隐藏后门预警】PHPTutorialphpphp-5.4.45extphp_xmlrpc.dll
分析过程:
对比官网的xmlrpc源代码可以知道 , 默认xmplrpc模块的几个初始化函数都是被设置为:

phpStudy隐藏后门预警

文章插图
而污染过的版本中“request_startup_func”函数被恶意攻击者自定义:
phpStudy隐藏后门预警

文章插图
用户所有的请求都会经过自定义的函数“sub_100031F0” , 
进一步分析函数“sub_100031F0” , 当攻击者(或普通用户?)发起的HTTP数据包中包含“Accept-Encoding“字段信息时 , 会进入攻击者自定的流程:
phpStudy隐藏后门预警

文章插图
当Accept-Encoding字段信息为“compress,gzip”时 , 它会触发搜集系统信息功能 , 如其中函数“sub_10004380”搜集网卡信息:
phpStudy隐藏后门预警

文章插图
同时会执行内存php代码:
phpStudy隐藏后门预警

文章插图
DUMP出PHP进一步分析:
phpStudy隐藏后门预警

文章插图
解密出Base64加密字符串:
phpStudy隐藏后门预警

文章插图
通过HTTP包构造工具测试发包 , 成功触发访问恶意“360se[.]net”域名:
phpStudy隐藏后门预警

文章插图
分析发现 , 当Accept-Encoding字段信息为“gzip,deflate”时 , 它会接着判断是否设置“Accept-Charset”字段:
phpStudy隐藏后门预警

文章插图
再判断是否设定的特定的“Accept-Charset”字段 , 在满足特定条件以后可以执行黑客给定的php命令 , 实现控制服务器的目的 , 隐蔽性非常高 。
3、影响版本
目前测试发现phpStudy2016和phpStudy2018版本存在后门 , IOC:
0f7ad38e7a9857523dfbce4bce43a9e9
c339482fd2b233fb0a555b629c0ea5d5
360se[.]net
用户可以通过搜索php_xmlrpc.dll模块中包含“@eval”关键字快速判断是否是存在后门的版本 , 命令参考:
findstr /m /s /c:"@eval" *.*
 
4、缓解措施https://windows.php.net/downloads/releases/archives/php-5.2.17-Win32-VC6-x86.zip
https://windows.php.net/downloads/releases/archives/php-5.4.45-Win32-VC9-x86.zip




    推荐阅读