Введение
В далеком 2020 году независимый исследователь Imre Rad опубликовал статью с уязвимостью в компоненте операционной системы Windows — msdt.exe (тот самый =) ). Microsoft посчитала найденную уязвимость недостаточно критичной, чтобы на нее реагировать. Однако после истории с Follina вендор решил выпустить патч, закрывающий уязвимость DogWalk.
Коротко о msdt.exe и пакетах диагностики
MSDT (Microsoft’s Diagnostic Troubleshooting Wizard) — мастер диагностики и устранения проблем Windows, информация о работе msdt.exe. Если вы желаете использовать msdt.exe по назначению, то здесь список доступных пакетов для решения проблем в Windows.
Пакет устранения неисправностей состоит из следующих компонентов:
-
Манифест устранения неполадок— указывает на основные проблемы, которые может обнаружить пакет, и сценарии, используемые для их обнаружения, устранения и проверки их устранения. Расширение файла: .diagpkg.
-
Скрипты устранения неполадок — сценарии, используемые для определения наличия основной причины. Расширение файла: .ps1.
-
Скрипты разрешения — сценарии, используемые для устранения основной причины, обнаруженной сценарием устранения неполадок. Расширение файла: .ps1.
-
Скрипты проверки — сценарии, используемые для проверки того, смогли ли сценарии решить проблему. Расширение файла: .ps1.
-
Локализация ресурсов — строки локализованных ресурсов, используемые манифестом устранения неполадок и сценариями. Расширение файла: .psd1, .dll.mui.
Для удобства использования пакетов диагностики есть возможность создания файлов — DIAGCAB. DIAGCAB-файлы позволяют создать портативный архив, который будет использовать пакет диагностики размещенный на каком-либо ресурсе или включающий все файлы в себя.
Пакеты диагностики должны быть подписаны, чтобы пользователи msdt могли удостовериться в их подлинности. Пакеты, расположенные по пути %WINDIR%\diagnostics\system являются стандартными и не подлежат проверке сертификата.
Об уязвимости
Для описания уязвимости использовалась статья с Medium. Рассмотрим порядок запуска пакета диагностики, расположенного на удаленном ресурсе:
-
Копирование файла во временную директорию, путь который известен заранее C:\Users\John Doe\AppData\Local\Temp\SDIAG_0636db01-fabd-49ed-bd1d-b3fbbe5fd0ca
-
Проверка цифровой подписи пакета
-
Если проверка подписи успешна, то запуск пакета диагностики
Для копирования пакета во временную директорию используется уязвимая функция SdpCopyDirectory из sdiageng.dll, код которой представлен ниже. Функция уязвима к Path Traversal.
TCHAR attackerControlledSourcePath[MAXPATH]; // this is the "user input" TCHAR tempDirectory[MAXPATH]; GetTempPathW(MAXPATH, tempDirectory); TCHAR allFilesFromAttackerControlledSourcePath[MAXPATH]; StringCchPrintfW(allFilesFromAttackerControlledSourcePath, MAXPATH, L"%s\\*.*", AttackerControlledSourcePath); hFind = FindFirstFile(allFilesFromAttackerControlledSourcePath, &FindFileData); do { TCHAR srcFile[MAXPATH]; TCHAR dstFile[MAXPATH]; StringCchPrintfW(srcFile, MAXPATH, L"%s\\%s", attackerControlledSourcePath, FindFileData.cFileName); StringCchPrintfW(dstFile, MAXPATH, L"%s\\%s", tempDirectory, FindFileData.cFileName); CopyFileW(srcFile, dstFile, TRUE); while (FindNextFile(hFind, &FindFileData) != 0);FindClose(hFind);
Мы можем определить имя файла, в пакете диагностики, следующим образом: ..\..\..\..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\evil.exe, и закрепиться в директории автозагрузки.
Разбор таска LetsDefend: SOC174 — DogWalk 0-Day Activity
В LetsDefend есть два уровня тасков:
-
Security Analyst (кейсы для аналитиков 1-го уровня, по логам нужно определить является ли обнаруженная активность вредоносной)
-
Incident responder (кейсы ориентированы на реагирование, добавляется возможность подключаться к машинам по VNC и проводить анализ артефактов)
Также доступны следующие источники событий:
-
сетевые соединения
-
электронная почта
-
список запущенных процессов
-
выполняемые команды в терминале
-
сетевые соединения на хосте
-
история браузера
-
подключиться к хосту через VNC
Исходные данные
Нам известно следующее:
-
имя машины/ip: Jack-dev-server / 172.16.17.81
-
название правила, которое сработало: SOC174 — DogWalk 0-Day Activity
-
ID CVE: CVE-2022-34713
-
записка от L1 SOC: I saw that the diagcab file was run with msdt.exe at 11.08.2022 07:58. But I did not understand how this happened and what happened next.
-
причина реагирования: Running a diagcab file with msdt.exe
Просмотр электронной почты
Я предположил, что вредоносный файл был доставлен вложением в электронном письме.
В теле письма мы видим ссылку hxxps://52e9-3-17-146-251[.]ngrok[.]io/config/hotfix895214.diagcab, которая содержит в доменном имени ngrok, и указывает на файл hotfix895214.diagcab. Следующим шагом нужно убедиться, получилось ли пользователю установить сетевое соединение с вредоносным сервером.
Сетевые соединения
В сетевых подключениях, связанных с нашим хостом мы видим четыре сессии:
1-2 — пользователь запросил A-запись для доменного имени 52e9-3-17-146-251.ngrok.io и получил ответ от DNS-сервера:8.8.8.8 — A: 3.134.39.220
3 — пользователь запросил директорию /package
4 — пользователь запросил файл /AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/calc.exe
Из вышесказанного делаем вывод, что пользователь перешел в директорию /package и загрузил файл /AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/calc.exe
Анализ событий на хосте
Первым делом я проверил журнал Microsoft-Windows-Sysmon/Operational. События, связанные с Image = msdt.exe:
<QueryList> <Query Id="0" Path="Microsoft-Windows-Sysmon/Operational"> <Select Path="Microsoft-Windows-Sysmon/Operational">*[EventData[Data[@Name='Image'] and Data='C:\Windows\System32\msdt.exe']]</Select> </Query> </QueryList>
В результате мы видим четыре события:
В событии ниже мы видим, что chrome запустил процесс msdt.exe с параметрами /cab «C:\Users\LetsDefend\Downloads\hotfix895214.diagcab. Теперь мы знаем, что файл с пакетом диагностики находился в директории Downloads пользователя LetsDefend.
В следующих двух событиях мы видим, что процесс msdt.exe создал два файла в директории автозагрузки:
Проверим события chrome.exe:
<QueryList> <Query Id="0" Path="Microsoft-Windows-Sysmon/Operational"> <Select Path="Microsoft-Windows-Sysmon/Operational">*[EventData[Data[@Name='Image'] and Data='C:\Program Files\Google\Chrome\Application\chrome.exe']]</Select> </Query> </QueryList>
Также убедимся в наличии файлов в директории автозагрузки:
Командой certutil.exe -hashfile .\<имя файла> MD5 получим хеш-суммы файлов и проверим их репутацию на virustotal.
Анализ пакета диагностики
С помощью 7zip откроем пакет диагностики hotfix895214.diagcab.
Посмотрим содержимое файла custom.diagcfg
Обратим внимание на ключ Package, который указывает на расположение файлов пакета диагностики:
\\52e9-3-17-146-251.ngrok.is@ssl\DavWWWRoot\Package
В директории выше должен располагаться файл с именем ..\..\..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\calc.exe2. К сожалению туннель ngrok больше недоступен.
Sigma Rules
В репозитории Sigma были правила основанные на создание процесса msdt.exe или загрузки модуля sdiageng.dll.
Добавлено правило детектирующие создание файлов в директории автозагрузки
Правила Sigma для детектирования аномалий msdt.exe:
sigma/rules/windows/file_event/file_event_win_msdt_autorun.yml sigma/rules/windows/image_load/image_load_msdt_sdiageng.yml sigma/rules/windows/process_creation/proc_creation_win_lolbins_by_office_applications.yml sigma/rules/windows/process_creation/proc_creation_win_msdt_susp_cab_options.yml sigma/rules/windows/process_creation/proc_creation_win_msdt_diagcab.yml:description sigma/rules/windows/process_creation/proc_creation_win_possible_applocker_bypass.yml sigma/rules/windows/process_creation/proc_creation_win_lolbin_msdt_answer_file.yml sigma/rules/windows/process_creation/proc_creation_win_msdt.yml:description sigma/rules/windows/process_creation/proc_creation_win_msdt_susp_parent.yml sigma/rules/windows/process_creation/proc_creation_win_renamed_msdt.yml sigma/rules/windows/process_creation/proc_creation_win_outlook_shell.yml
ссылка на оригинал статьи https://habr.com/ru/post/684940/
Добавить комментарий