首页/安全/应急响应速查/按时间定位可疑 Web 文件

按时间定位可疑 Web 文件

Webshell 的落地时间通常与入侵时间吻合:按修改时间列出 Web 根目录下近几日变更的脚本文件,优先审最新的一批。

应急响应速查安全更新于 2026-10-13

按时间定位可疑 Web 文件

Webshell 的落地时间通常与入侵时间高度吻合,因为攻击者利用漏洞成功后会立即投放脚本。所以按修改时间与创建时间列出 Web 目录下最近变更的脚本文件,是一条成本很低、命中率不错的线索。用法上要注意两点:mtime 可以被 touch 篡改,所以要同时看 ctime;正常发布也会改动文件,所以要先排除业务发布窗口,再看剩下的那一批。

基本信息

时间字段mtime 最后修改时间、ctime 元数据变更时间,后者不易被伪造
范围Web 根目录、上传目录、缓存目录、模板目录
文件类型php、jsp、jspx、aspx、phtml 以及被改名的可执行脚本
配套线索同目录下新增的 .htaccess、图片目录里的脚本文件
输出组织按时间升序排列,形成人工审阅的优先级顺序
权限要求普通用户即可读取 Web 目录,涉及他人目录需相应权限

典型使用场景

  • 确认漏洞利用的时间点,与访问日志里的异常请求对齐
  • 在大量文件中快速缩小人工审阅范围
  • 排查上传目录与其他可写目录中的最新文件
  • 清理后复扫,确认没有新的脚本在观察期内落地
  • 为溯源提供「什么时候被投放」的准确时间点

按时间列出近期修改脚本

按时间列出近期修改脚本
find /www/wwwroot -type f -name '*.php' -mtime -7 -printf '%TY-%Tm-%Td %TH:%TM %s %p\n' 2>/dev/null | sort | head -n 40
find /www/wwwroot -type f -newermt '2026-10-01' ! -newermt '2026-10-13' -name '*.php' -ls 2>/dev/null | head -n 20
find /www/wwwroot/uploads -type f -mtime -30 -printf '%TY-%Tm-%Td %p\n' | sort | head -n 20   # 上传目录重点看
find /www/wwwroot -type f -name '*.php' -ctime -7 -printf '%TY-%Tm-%Td %p\n' 2>/dev/null | sort | head -n 20

时间线索与误报来源

线索说明误报来源
mtime 落在入侵窗口文件在那段时间被写入正常发布、运维改配置、日志轮转
ctime 新于 mtime元数据被改动过权限调整、复制文件、备份恢复
文件大小异常小一句话 webshell 往往只有几十字节占位文件、模板片段
扩展名与内容不符图片文件里含脚本标签,如 php 代码出现在图片里图片处理库写入的元数据
同一分钟批量新增攻击者一次投放多个脚本批量发布、缓存预热
先排除正常发布:与发布平台记录、CI 流水线记录核对时间段,把已解释的文件从候选列表里划掉,剩下的才是需要人工读内容的文件。这一步能把审阅量降低一个数量级。
别忽略上传目录与缓存目录:一个是攻击者最常投放的位置,一个常被误认为「纯数据」而被跳过。目录存在可写权限加脚本解析能力,就构成落地条件。

易错点

  • 只看 mtime 不看 ctime:修改时间可以被 touch 修改,需与创建时间对照
  • 忘记上传目录与缓存目录:这两处是 webshell 的重灾区,只扫业务代码目录会漏
  • 把发布动作当入侵:不排除正常变更窗口,候选列表会长到无法人工处理
  • 只看文件扩展名:脚本可能被改名为 .jpg 或 .txt 后再通过漏洞解析执行
  • 清理后不做时间复扫:观察期内是否还有新文件落地,是判断是否清干净的关键指标

数据来源与参考

  • SANS Webshell 排查实践
  • find(1) 手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌