“动态资源”在Web或服务场景中指Web目录下的可执行脚本(.php、.py、.sh、.jsp)、临时目录中异常脚本(/tmp、/dev/shm、/var/tmp)、被注入代码的配置/模板文件(.conf、.html、.env)及非标准路径下近期写入的可疑二进制文件。

直接用 find -mmin -10 可以快速列出过去 10 分钟内被修改的文件,但要精准定位“被入侵脚本修改的动态资源”,不能只靠时间,还得结合路径、类型和行为特征来缩小范围。
明确目标:什么是“动态资源”
在 Web 或服务场景中,动态资源通常指:
- Web 目录下的可执行脚本(
.php、.py、.sh、.jsp) - 临时目录中异常出现的脚本(如
/tmp、/dev/shm、/var/tmp) - 配置文件或模板中被注入代码的文件(如
.conf、.html、.env) - 最近被写入但非系统更新产生的二进制或 ELF 文件(尤其出现在非标准路径)
组合条件筛选可疑文件
单用 -mmin -10 容易误报(比如日志轮转、监控采集也会触发)。推荐加限定:
-
限定目录范围:避免全盘扫描,聚焦高危区域
find /var/www /tmp /dev/shm -type f -mmin -10 \( -name "*.php" -o -name "*.py" -o -name "*.sh" \) 2>/dev/null -
排除已知可信进程的修改:比如 nginx、apache 日志本身会频繁更新,但它们不改脚本。可配合
lsof -p $(pgrep nginx)粗略判断,但更实用的是先人工确认哪些服务是预期活跃的 -
检查权限异常:入侵脚本常设为可执行且属主可疑
find /var/www -type f -mmin -10 -perm /u+x,g+x,o+x 2>/dev/null
验证是否真为入侵痕迹
查到文件后,别急着删,先做三件事:
-
看内容:用
head -20 文件名或strings 文件名 | head -15检查是否有 base64、curl/wget 调用、反连 IP、eval/str_rot13 等典型混淆或恶意载荷 -
看归属:运行
ls -la 文件名,关注 UID/GID 是否为 nobody、daemon 或未知用户;mtime 和 ctime 是否一致(被篡改的文件常 mtime≠ctime) -
看进程关联:如果该文件正在运行,用
ps aux | grep 文件名或lsof -nPi | grep 文件名查 PID,再查/proc/PID/cmdline确认启动方式
补充建议:让排查更可持续
单纯依赖 -mmin 是被动响应。建议同步做:
- 对关键 Web 目录设置
inotifywait -m -e modify,create,attrib实时监听(需提前部署) - 定期用
find /var/www -type f -mmin -60 -uid +999扫描非系统用户的近期修改(UID > 999 通常是普通或应用用户) - 把
/tmp和/dev/shm挂载为noexec,nosuid,nodev,大幅降低落地脚本执行成功率


















