首页/安全/取证与溯源速查/SFTP/SCP 文件传输痕迹
Linux 取证135 条

SFTP/SCP 文件传输痕迹

文件传输是数据外带与工具投递的通道:服务端日志记录子系统启动,客户端侧进程与目标目录改动可交叉印证。

取证与溯源速查安全更新于 2026-10-13

文件传输通道的两侧痕迹

SFTP 与 SCP 都跑在 SSH 之上,是数据外带与工具投递最常用的通道。服务端的线索在于 sftp 子系统会话:sshd 会为每次文件传输启动子系统进程,相关记录出现在认证日志里。客户端侧则表现为 sftp/scp 进程与目标目录的文件变化,两侧对照可以判断一次传输的方向、目标与大致内容范围。

日志默认不记路径

sshd 的默认配置只记录会话的建立与结束,不会记录传输了哪些文件。要还原具体文件,只能结合目标目录在对应时间窗内的新增与修改记录、以及文件系统层面的变更日志来推断。这也是为什么把文件传输与目标目录时间窗放在一起分析是必要步骤。

基本信息

适用平台Linux/Unix(OpenSSH 服务端与客户端)
服务端配置sshd_config 中的 Subsystem sftp 指令
服务端日志认证日志中的子系统请求与会话开始结束记录
客户端行为进程命令行、目标目录文件变化、可能的本地临时文件
注意较新版本 OpenSSH 的 scp 也走 SFTP 协议,判定方式随之变化

典型使用场景

  • 发现数据外带:确认某时段是否存在文件传输会话及其来源地址
  • 排查工具投递:外来文件落地后紧跟执行动作,形成链条
  • 核对备份与同步作业:区分正常同步与异常外传
  • 解释目录变化:把新增文件的时间与传输会话对齐
  • 处置验证:封禁后确认不再有新的子系统会话

检索传输痕迹

检索传输痕迹
# 服务端:查找子系统与会话相关记录
grep -i 'subsystem' /var/log/auth.log | tail -20
grep -E 'Starting session|session closed' /var/log/auth.log | tail -20

# 确认服务端配置中的子系统定义
grep -E '^\s*Subsystem' /etc/ssh/sshd_config

# 目标目录侧:找出时间窗内新增或修改的文件
find /tmp /home /var/tmp -xdev -newermt '2026-01-02 03:00' ! -newermt '2026-01-02 05:00' -type f 2>/dev/null | head

# 客户端侧:确认本机是否运行过 sftp/scp(需要历史记录或审计日志)
ls -lt --time-style=long-iso ~/.ssh/ 2>/dev/null | head

线索来源对照

来源能说明什么局限
服务端子系统记录发生了文件子系统会话不含具体文件路径
会话开始与结束会话时长与来源地址需与用户名配对才准确
目标目录文件时间产生了哪些文件无法区分传输来源
客户端进程记录本机发起的传输行为需审计或历史记录支持
网络流量记录传输的数据量级加密内容不可见
scp 的实现方式随版本变化:较早版本在远端执行 scp 程序,会在进程执行记录里留下痕迹;较新版本默认走 SFTP 协议,行为更接近 sftp,判定时要结合具体版本。
内部网络的数据外带不一定走 SSH:邮件、网盘客户端、数据库导出、对象存储上传都是常见通道,排查时不要局限在文件传输协议上。

易错点

  • 指望日志给出传输的文件名:默认配置不记录路径,需靠目标目录时间窗推断
  • 忽略子系统记录的来源地址:没有来源就无法判断传输发起方
  • 只查服务端不查目标目录:无法回答「传了什么」
  • 按旧版本行为解释新版本 scp:协议实现变化会导致判定偏差
  • 把内部同步作业当外带:未与运维计划对照会产生误报

数据来源与参考

  • OpenSSH 手册(sftp-server 与 Subsystem 配置)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌