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 的字段更适合脚本处理。两条路都跑一遍,互相补齐遗漏的字段。