BITS Jobs

Adversaries may abuse BITS jobs to persistently execute or clean up after malicious payloads. Windows Background Intelligent Transfer Service (BITS) is a low-bandwidth, asynchronous file transfer mechanism exposed through Component Object Model (COM). [1] [2] BITS is commonly used by updaters, messengers, and other applications preferred to operate in the background (using available idle bandwidth) without interrupting other networked applications. File transfer tasks are implemented as BITS jobs, which contain a queue of one or more file operations.

The interface to create and manage BITS jobs is accessible through PowerShell [2] and the BITSAdmin tool. [3]

Adversaries may abuse BITS to download, execute, and even clean up after running malicious code. BITS tasks are self-contained in the BITS job database, without new files or registry modifications, and often permitted by host firewalls. [4] [5] [6] BITS enabled execution may also enable persistence by creating long-standing jobs (the default maximum lifetime is 90 days and extendable) or invoking an arbitrary program when a job completes or errors (including after system reboots). [7] [4]

BITS upload functionalities can also be used to perform Exfiltration Over Alternative Protocol. [4]

ID: T1197
Sub-techniques:  No sub-techniques
Tactics: Defense Evasion, Persistence
Platforms: Windows
Permissions Required: Administrator, SYSTEM, User
Data Sources: Packet capture, Process command-line parameters, Process monitoring, Windows event logs
Defense Bypassed: Firewall, Host forensic analysis
Contributors: Red Canary; Ricardo Dias
Version: 1.1
Created: 18 April 2018
Last Modified: 25 March 2020

Procedure Examples

Name Description
APT41

APT41 used BITSAdmin to download and install payloads.[8]

BITSAdmin

BITSAdmin can be used to create BITS Jobs to launch a malicious process.[9]

Cobalt Strike

Cobalt Strike can download a hosted "beacon" payload using BITSAdmin.[10]

JPIN

A JPIN variant downloads the backdoor payload via the BITS service.[11]

Leviathan

Leviathan has used BITSAdmin to download additional tools.[12]

Patchwork

Patchwork has used BITS jobs to download malicious payloads.[13]

UBoatRAT

UBoatRAT takes advantage of the /SetNotifyCmdLine option in BITSAdmin to ensure it stays running on a system to maintain persistence.[7]

Mitigations

Mitigation Description
Filter Network Traffic

Modify network and/or host firewall rules, as well as other network controls, to only allow legitimate BITS traffic.

Operating System Configuration

Consider reducing the default BITS job lifetime in Group Policy or by editing the JobInactivityTimeout and MaxDownloadTime Registry values in HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\BITS. [2]

User Account Management

Consider limiting access to the BITS interface to specific users or groups. [6]

Detection

BITS runs as a service and its status can be checked with the Sc query utility (sc query bits). [14] Active BITS tasks can be enumerated using the BITSAdmin tool (bitsadmin /list /allusers /verbose). [2]

Monitor usage of the BITSAdmin tool (especially the ‘Transfer’, 'Create', 'AddFile', 'SetNotifyFlags', 'SetNotifyCmdLine', 'SetMinRetryDelay', 'SetCustomHeaders', and 'Resume' command options) [2]Admin and the Windows Event log for BITS activity. Also consider investigating more detailed information about jobs by parsing the BITS job database. [4]

Monitor and analyze network activity generated by BITS. BITS jobs use HTTP(S) and SMB for remote connections and are tethered to the creating user and will only function when that user is logged on (this rule applies even if a user attaches the job to a service account). [2]

References