CISP-IRE 靶场实战:Linux 服务器 WebShell 排查与入侵链路还原
本篇为 CISP-IRE 应急响应靶场系列的第二篇,聚焦 Linux 服务器 WebShell 排查。所有实践步骤均有相应截图,让小白也能够理解,如果喜欢本文章,还请点赞关注一下。
场景背景
一台 Linux 网站服务器被植入 WebShell,导致页面被恶意篡改。本关目标:先定位 WebShell 文件,再从访问日志还原入侵路径,最后顺藤摸瓜找到攻击者留下的计划任务与隐藏 Key。
整体思路可以概括为三步:先固定证据 → 再检索定位 → 后日志溯源。
一、固定证据:定位网站目录并打包
1. 读取 Apache 主配置文件 httpd.conf,从中确认网站根目录的实际位置。
2. 用 cat 查看该配置文件,并用 grep -v 过滤掉注释行,快速聚焦关键配置。
3. 将整个网站目录打包,便于离线分析:
tar -zcvf source.tar.gz /var/www/html
4. 把打包好的压缩文件复制到网站根目录下,方便后续下载取回。
5. 通过浏览器访问并下载该压缩包,在本地解压。
6. 用 D 盾 对解压后的目录进行查杀,直接发现 WebShell 文件。
二、用 grep 检索 WebShell
1. 在 Linux 中可直接用 grep -r 递归搜索包含特征字符串的文件,非常适合快速圈定可疑脚本。
2. 例如,用下面的命令检索 PHP 中的一句话木马:
grep -r "eval(\$_POST["
3. 检索命中相关文件。
三、审计访问日志,还原入侵路径
1. 进入 /var/log,找到 httpd 目录,里面存放着 Web 应用日志。
2. 日志中优先关注 POST 请求,用 grep 过滤出 POST 请求行,快速锁定异常访问。
3. 根据检索到的文件信息,回看对应的 WebShell 文件,确认其落点。
四、分析入侵原因并获取 Key
1. 从日志可见,攻击者曾对 config.php 发起 POST 请求。
2. 查看 config.php 并分析,代码经过刻意混淆,可读性很差。
3. 用 var_dump($tmp2) 把相关参数打印出来,便于看清真实逻辑。
4. 直接用浏览器访问该文件,从而获取到 Key。
5. 由此可判断:入侵者是通过访问 config.conf 文件完成 WebShell 上传的。
五、计划任务审计
1. 用以下命令查看当前用户的计划任务:
crontab -l
2. 继续审计系统级计划任务:
cat /etc/crontab
3. 发现该计划任务同样使用了"分段写法"来混淆,意图躲避肉眼排查。
4. 先把这段计划任务复制为 test.sh 文件,便于逐行分析。
5. 由于是 Shell 脚本,可用 echo 把它打印出来观察内容。
6. 执行该脚本,发现它下载了 ldm 文件。
7. 在主机中查找并打开 ldm 文件。
8. 文件里包含大量干扰信息,需要耐心甄别。
9. 重点留意加密内容,发现其中存在 Base64 编码的字段。
10. 复制到 Notepad++ 中进行 Base64 解密。
11. 解密后找到 Key5。
六、复盘总结
1. 恶意文件与正常文件的本质区别:正常代码以便他人阅读为目的,而恶意文件通常用混淆手法迷惑阅读者,可读性很差。看代码"读着别扭"本身就是一个重要信号。
2. 一旦发现主机有访问/下载外部文件的行为,应同步检查本机是否已经存在攻击者预先下载好的恶意文件——别只盯当前漏洞,要把"下载器"一并挖出来。
系列导航:本文为「CISP-IRE 应急响应实战」第 2 篇 / 共 6 篇。
下一篇预告:《CISP-IRE 靶场实战:内存取证实战——从 Volatility 定位影子账户到进程 dump 提取恶意文件》 一份 Windows 内存镜像摆在面前,怎样用 Volatility 从注册表揪出影子账户,又把藏在进程里的恶意文件 dump 出来?
如果这篇复盘对你有帮助,欢迎点「在看」并分享给安全圈的伙伴;也欢迎关注本公众号,系列更新第一时间送达,更多靶场复盘与实战干货持续输出。