首页/安全/应急响应速查/BITS 任务持久化排查

BITS 任务持久化排查

BITS 传输任务重启后保留并可自动重试,被用来周期性下载载荷;任务的所有者账号与远端 URL 是定性关键。

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

BITS 任务持久化是什么

BITS(后台智能传输服务)是 Windows 自带的后台下载组件,任务具备持久性:重启后继续存在,失败后按策略自动重试,因此常被用来周期性拉取载荷。任务记录中保留创建者账号、远端 URL 与本地落盘路径,其中远端地址是追踪攻击基础设施的重要线索。

基本信息

适用平台Windows 7 及以上(BITS 服务默认运行)
PowerShell 查看Get-BitsTransfer -AllUsers
传统命令bitsadmin /list /allusers /verbose
异常特征远端为裸 IP 或临时域名、OwnerAccount 可疑、状态长期 Connecting
清理方式Remove-BitsTransfer 或 bitsadmin /cancel
取证要求先导出 RemoteName 与本地路径清单再清理

典型使用场景

  • 排查持久化项时补上「非计划任务」的下载通道
  • 主机定期外连固定地址,核实是否由 BITS 任务发起
  • 事件处置后清理攻击者的下载任务,避免载荷继续落地
  • 与计划任务、服务、注册表自启项一起做持久化清点
  • 定位恶意下载源地址,整理成 IoC 对外共享
  • 长期观察期复查任务列表,确认没有新的作业被重新创建

枚举任务与下载源

枚举任务与下载源
Get-BitsTransfer -AllUsers | Format-List DisplayName, JobState, OwnerAccount, TransferType, CreationTime
Get-BitsTransfer -AllUsers | Select-Object -ExpandProperty FileList | Select-Object RemoteName, LocalName
bitsadmin /list /allusers /verbose | Select-String -Pattern 'Job ID|Owner|Remote'
Get-BitsTransfer -AllUsers | Export-Csv C:\evidence\bits.csv -NoTypeInformation -Encoding UTF8
Get-BitsTransfer -AllUsers | Remove-BitsTransfer   # 确认留档之后再清理

任务字段读法

字段含义异常判读
DisplayName任务名称伪装成系统更新类名称需核实来源
JobState传输状态长期 Error 重试或 Suspended 都需关注
OwnerAccount创建者账号非运维账号创建的任务可疑
RemoteName远端下载地址裸 IP、随机域名高度可疑
LocalName本地落盘路径落在临时目录或 ProgramData 需重点核实
不同 Windows 版本 BITS 的默认策略与配额不同:任务可能处于 Suspended,只在网络空闲等条件满足时才继续传输,别因为当前没在传输就把它排除。
取消任务前先完整导出信息:RemoteName 指向的下载源是追踪攻击基础设施的关键线索,任务一删这些字段就再也查不回来。
命令行方式与 PowerShell 方式看到的内容并不完全等价:bitsadmin 会带上更细的传输统计,Get-BitsTransfer 的字段更适合脚本处理。两条路都跑一遍,互相补齐遗漏的字段。

易错点

  • 只列当前用户的任务:不加 -AllUsers 会漏掉其他账号名下的作业
  • 用 bitsadmin /reset 一把清:会连合法的更新任务一起清掉,同时丢失线索
  • 看到任务处于空闲就忽略:Suspended 状态随时可能恢复传输
  • 清理后不复查:后门可能通过计划任务重新创建同名 BITS 作业

数据来源与参考

  • Microsoft Learn:BITS PowerShell cmdlets
  • MITRE ATT&CK T1197 BITS Jobs

相关工具

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