Вы можете использовать возможности теневых подключений (Remote Desktop Shadowing) для удалённого подключение к сессиям пользователей на компьютерах Windows. Это функционал является по сути аналогом Remote Assistance и позволяет администраторам удаленно просматривать и взаимодействовать с рабочим столом пользователей как на десктопных версиях (Windows 11 или 10), так и на RDS серверах Windows Server.
Настройка клиентов Windows для удаленного подключения через теневые сессии
Вам нужно определенным образом настроить компьютеры, к которым вы хотите подключаться через теневое подключение.
- Включите удаленный рабочий стол (RDP) на компьютерах пользователей (вручную или через GPO);
- Ваша учетная запись должна обладать правами локального администратора на компьютере пользователей (вы можете добавить пользователя в группу администраторов вручную или с помощью групповых политик);
- Настройте режим теневого подключения (нужно ли запрашивать подтверждение пользователя, и возможно управления в сессии или только наблюдение). Можно настроить режим через групповую политику “Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов” (Set rules for remote control of Remote Desktop Services user sessions) в разделе Конфигурация компьютера -> Административные шаблоны –> Компоненты Windows –> Службы удаленных рабочих столов –> Узел сеансов удаленных рабочих столов –> Подключения (Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections).
Доступны 5 режимов:0 – запретить удаленное управление;
1 — полный контроль с разрешения пользователя;
2 — полный контроль без разрешения пользователя;
3 — наблюдение за сеансом с разрешения пользователя;
4 — наблюдение за сеансом без разрешения пользователя. - Вы можете включить нужный режим напрямую в реестре. Отредактируйте реестр вручную или с помощью команды (в этом примере мы установили 4 режим – разрешить просмотр сеанса пользователя без уведомления):
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 4
По умолчанию данный теневое подключение выполняется в режиме полного контроля с разрешения пользователя.
- Настройте правила Windows Defender Firewall, разрешающие трафик теневых подключений по сети. Для трафика session shadowing в Windows вместо стандартного порта 3389/RDP используются порты 139/TCP, 445/TCP и диапазон динамических RPC портов (49152 по 65535). Чтобы разрешить входящий трафик теневых подключений, нужно включить два преднастроненных правила в Windows:
File and Printer Sharing (SMB-In)
и
Remote Desktop - Shadow (TCP-In)
. Последнее правило разрешает удаленный доступ к процессу
RdpSa.exe
. Вы можете включить правила Windows Defender на компьютерах пользователей через GPO или с помощью PowerShell командлета Enable-NetFirewallRule.
Удаленное подключение к сессии пользователя Windows через RDP Shadowing
Рассмотрим, как удаленно подключиться рабочему столу сессии другого пользователя на удаленном компьютере Windows через теневые подключения RDP. В этом примере я покажу, как подключиться с компьютера Windows 11 к сессии пользователя на рабочей станции пользователя с Windows 10.
Для теневого подключения к сессии пользователя используется стандартная RDP утилита mstsc.exe. Формат команды такой:
Mstsc.exe /shadow:<ID сессии> /v:<Имя или IP адрес компьютера>
Также можно использовать одну из опций:
- /prompt – запросить имя и пароль пользователя, под которым выполняется подключение (если не указано, подключение выполняется под текущим пользователем).
- /control – режим взаимодействия с сеансом пользователя. Если параметр не задан, вы подключитесь в режиме просмотра (наблюдения) сессии пользователя, т.е. вы не сможете управлять его мышью и вводить данные с клавиатуры;
- /noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.
Теперь нужно узнать имя пользователя и ID его сессии на удаленном компьютере (если пользователь работает непосредственно за консолью компьютера, то ID его сессии всегда будет равно 1).
Выведем список сессий пользователей на удаленном компьютере (это может быть как десктопный компьютер с Windows 11/10 или Windows Server с ролью Remote Desktop Services Host (RDSH).
Чтобы подключиться к рабочему столу этого пользователя через теневое подключение, выполните команду:
mstsc.exe /shadow:1 /v:wks-w10b01
На экране пользователя Windows появится запрос подтверждения подключения администратора к его сеансу: Запрос на удаленное подключение Username запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос.
Если служба TermService на удаленном компьютере отключена, то при попытке удалённого подключения через RDP shadow появится ошибка:
The version of Windows running on this server does not support user shadowing
В данном случае вы подключились непосредственно подключиться к консольной сессии пользователя без блокировки его сеанса. При удаленном подключении к Windows 10 через обычный RDP, то сессия локального отключается (даже если вы включите возможность использования нескольких одновременных RDP сессий в Windows 10).
Если сессия пользователя заблокирована, или появляется запрос повышения привилегий UAC, то без исопльзования режима
mstsc /control
окно с теневой сессией становится черным и на нем появляется символ паузы.
Теневая сессия переходит в приостановленное состояние, если у пользователя появляется запрос UAC на Secure desktop. После того, как пользователь подтвердит действие UAC, ваша сессия возобновится.
Чтобы развернуть окно теневой сессии во весь экран, воспользуйтесь комбинацией клавиш Ctrl + Alt + Break.
Для завершения теневой сессии нажмите на компьютере
alt+*
(или
ctrl+*
на RDS сервере).
}
В данном примере мы оповещаем пользователя звуковым оповещением, но вы можете вывести всплывающее уведомление на рабочий стол. Можно запустить этот PowerShell скрипт как службу Windows.
Вы можете получить историю теневых подключений к компьютеру пользователя из журнала событий Windows. Все интересующие вас логи находятся в разделе Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational:Event Viewer
- Event ID 20508 — Shadow View Permission Granted
- Event ID 20503 — Shadow View Session Started
- Event ID 20504 — Shadow View Session Stopped
Вы можете получить логи теневых подключений к компьютеру с помощью PowerShell:
Функционал теневого подключения Remote Desktop Shadowing работает в Windows 11/10/ 8.1 и Windows Server 2022/2019/2016/2012 R2. Таким образом Remote Desktop Shadowing можно использовать как аналог Remote Assistance (Удаленный помощник) или TeamViewer/Anydesk для локальной или корпоративной сети.
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами устранили ошибку 0xc0000098 при установке Windows, там пришлось, конечно, попотеть, но оно того стоило. Идем дальше и сегодня поговорим опять про ошибки, да, да и еще раз, да. Есть в Windows служба Volume Shadow Copy, вот на ряде серверов она просто перестала работать без видимых причин. При попытке сделать VSS снимок выскакивало окно с предупреждением 0x80042306.
Описание проблемы 0x80042306
Давайте я опишу подробнее инфраструктуру. Есть файловый кластер построенный на виртуальных машинах ESXI 8, в качестве гостевых операционных систем на них используется ОС Windows Server 2022. Там настроены роли, которые при необходимости могут перемещаться между нодами кластера, давая 100% время работы файловым шарам. На каждом разделе кластера настроены снимки VSS, для сохранения промежуточной работы пользователей в течении рабочего дня перед основным резервным копированием.
Настроено отслеживание создания снимков в виде PowerShell скрипта, который присылает эти данные на почту. Меня привлекло сообщение, что на некоторых дисках отсутствовали данные, о VSS снимках, хотя я точно знал, что они там были настроены.
Я зашел по RDP на те ноды, где отсутствовали VSS снапшоты. Попытался сделать их в ручном режиме, но получил ошибку:
Изучив логи системы я обнаружил вот такую ошибку:
ID 1: The shadow copy of volume E: could not create shadow copy storage on volume E:.
Очень много было предупреждений на NTFS с ID 50.
A corruption was discovered in the file system structure on volume E:. A corruption was found in a file system index structure. The file reference number is 0x2000000a051d1. The name of the file is “\DFS\AppData\Roaming\Microsoft\ Windows\Recent\CustomDestinations”. The corrupted index attribute is “:$I30:$INDEX_ALLOCATION”.
Volume Shadow Copy Service error: Unexpected error calling routine IVssAsrWriterBackup::GetAsrMetadata. hr = 0x8007000d, The data is invalid.
.
Operation:
PrepareForBackup event
Error-specific details:
ASR Writer: The data is invalid. (0x8007000D)
Я отложил дальнейшие действия по устранению ошибки 0x80042306 на вечер и стал спокойно его дожидаться. В какой-то момент мне пришло уведомление на почту от скрипта, который мониторит переезд DFS ролей на другую ноду, я ранее рассказывал, как это делать. И через пол минуты прилетело событие в мониторинге, что данная нода была перезагружена.
После подключения к ней я увидел, что у нее был синий экран смерти, при его диагностике я получил вот такую информацию.
SYSTEM_THREAD_EXCEPTION_NOT_HANDLED: Bug Check Code: 0x1000007e. Виной стал драйвер VeeamVolumeCT.sys.
FAILURE_BUCKET_ID: AV_VeeamVolumeCT! unknown_function
BUCKET_ID: AV_VeeamVolumeCT! unknown_function
Как устранить ошибку VSS 0x80042306 через установку обновлений
Приступив к изучению проблемы я стал вспоминать, что до этого было сделано на сервере. Из последних изменений была установка .Net Framework 4.7 и установка октябрьских обновлений KB5031364 и KB5031361. Framework 4.7 отмел сразу, так как он был раскатан и на других серверах, а вот с обновлением KB5031364 тут все веселее.
Меня привлекли публикации “Виртуальные машины не удалось запустить после установки обновления за октябрь 2023 г. (KB5031364)” – https://community.veeam.com/blogs-and-podcasts-57/virtual-machines-failed-to-start-after-installing-oct-2023-update-kb5031364-5796 или “Обновление KB5031364 для Windows Server 2022 вызывает BSoD на гипервизорах VMware ESXi” – https://habr.com/ru/news/773364/
Я решил проверить эту гипотезу и установил поверх KB5031361, ноябрьские обновления KB5032196. Буквально сразу после перезагрузки все ошибки связанные с VSS и повреждением диска ушли из системы.
Перезапуск службы теневого копирования
В некоторых случаях вы можете попытаться исправить ошибку 0x80042306 через банальный перезапуск службы VSS.
- 1️⃣Для этого нажмите сочетание клавиш Win + R, чтобы открыть окно “Выполнить”.
- 2️⃣Далее введите services.msc и нажмите “Enter“
- 3️⃣У вас откроется оснастка со списком служб, найдите там “Volume Shadow Copy”. Вызовем у нее контекстное меню, в котором выберите свойства.
- 4️⃣В свойствах выберите автоматический старт и запустите службу. Далее проверьте создаются ли снапшоты VSS вручную, если повторяется ошибка 0x80042306, то переходим к следующему методу.
- 5️⃣Так же можно все сделать через PowerShell. Выставить для службы VSS автоматический запуск службы:
Set-Service -Name VSS -StartupType Automatic
Запустить службу VSS:
Вывести статус службы VSS:
Ошибка 0x80042306 возникает при настройке теневых копий на ClusterStorage дисках
При попытке настроить VSS снимки в Windows Server для кластерных дисков, смонтированных как папки на другом томе, может произойти сбой. Кроме того, вы можете получить следующее сообщение об ошибке:
Failed to create the storage area association.
Error 0x80042306: The shadow copy provider had an error.
Чтобы в данном случае попытаться устранить данную ошибку, можно попытаться создать ключ реестра ClusterOfflineTimeout. Ключ реестра ClusterOfflineTimeout определяет время ожидания для перехода кластера в состояние офлайн, если узел кластера не отвечает. Когда кластер обнаруживает, что узел стал недоступным или не отвечает на запросы, он инициирует процесс перехода этого узла в состояние офлайн. Это означает, что кластер перестает использовать данный узел для обработки запросов и перенаправляет их на другие доступные узлы.
Этот ключ реестра позволяет настроить время ожидания в миллисекундах. Значение по умолчанию обычно составляет несколько минут, но его можно изменить в соответствии с требованиями и конфигурацией кластера. Изменение значения ключа ClusterOfflineTimeout может быть полезным в случаях, когда требуется ускорить переход недоступных узлов в состояние офлайн или, наоборот, увеличить время ожидания для более длительного тестирования доступности узлов. Однако следует быть осторожным при изменении этого ключа, так как неправильные настройки могут привести к нежелательным последствиям, таким как неправильное определение доступности узлов или задержки в обработке запросов.
Откроем PowerShell ISe от имени администратора и запросим текущее значение ключа:
$regPath = “HKLM:\SYSTEM\CurrentControlSet\Services\VSS\Settings”
$regName = “ClusterOfflineTimeout”
Write-Host “Значение ключа ClusterOfflineTimeout: $regValue”
Теперь давайте его заменим:
# Для форсированного пересоздания ключа реестра ClusterOfflineTimeout с десятичным значением 2000000000, выполните следующую команду в PowerShell:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\VSS\Settings” -Name “ClusterOfflineTimeout” -Value 2000000000 -Force
# Для вывода текущего значения ключа ClusterOfflineTimeout, выполните следующую команду в PowerShell:
(Get-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\VSS\Settings”).ClusterOfflineTimeout
Обязательно перезагрузите систему.
Перерегистрация компонентов VSS
Логично предположить, что служба теневого копирования VSS построена на различных компонентах, от работы которых зависит ее стабильность. При повреждении этих компонентов иногда может возникнуть ошибка 0x80042306. Создайте обычный текстовый файл, включите у него отображение расширения, как это делать посмотрите по ссылке. Далее измените txt на bat.
После чего с помощью текстового редактора измените его внеся в него вот такие команды:
cd /d %windir%\system32
net stop vss
net stop swprv
regsvr32 /s ole32.dll
regsvr32 /s oleaut32.dll
regsvr32 /s vss_ps.dll
vssvc /register
regsvr32 /s /i swprv.dll
regsvr32 /s /i eventcls.dll
regsvr32 /s es.dll
regsvr32 /s stdprov.dll
regsvr32 /s vssui.dll
regsvr32 /s msxml.dll
regsvr32 /s msxml3.dll
regsvr32 /s msxml4.dll
vssvc /register
net start swprv
net start vss
Далее в командной строке перейдите через команду cd в нужный каталог и запустите bat файл. Вот так выглядит процесс самой перерегистрации библиотек.
Перезагрузитесь и проверьте работу службы VSS. Если ошибка “Error 0x80042306: The shadow copy provider had an error” сохраняется, то пробуем дальше.
Пробуем проверить и отремонтировать системные файлы
У ОС Windows бывают сложности, что могут повредиться системные файлы, от которых могут зависеть различные службы и компоненты, у нас уже было такое при ошибке 0x8007050a. Для того, чтобы попробовать отремонтировать Volume Shadow Copy, запустите командную строку от имени администратора и выполните вот такую команду:
sfc /scannow & DISM /Online /Cleanup-Image /ScanHealth & DISM /Online /Cleanup-Image /CheckHealth & DISM /Online /Cleanup-Image /RestoreHealth
Как видите в моем примере было обнаружено повреждение системных файлов и утилита их автоматически устранила.
Windows Resource Protection found corrupt files and successfully repaired them.
For online repairs, details are included in the CBS log file located at
windir\Logs\CBS\CBS.log. For example C:\Windows\Logs\CBS\CBS.log. For offline
repairs, details are included in the log file provided by the /OFFLOGFILE flag.
Перезагрузите вашу систему и проверьте работу Volume Shadow Copy.
Удаление или переименовывание точек восстановления
В Windows есть механизм, который позволяет делать некое состояние системы до внесения изменений и если, что-то пошло не так откатиться к нему. За это отвечают как раз точки восстановления, когда Windows их создает, она задействует службу Volume Shadow Copy. Вы легко можете получать ошибку 0x80042306 из-за сбойно созданной точки восстановления или поврежденной. Попробуйте переименовать файлы точек восстановления по пути:
Тут будет файл SR без расширения. Выберите его и нажмите F2, после чего дайте название SR.old.
После того, как вы переименуете этот файл, перезагрузите компьютер, чтобы проверить результат.
Удаление или переустановка других VSS провайдеров
Еще одним из методов починить службу Volume Shadow Copy и устранить ошибку 0x80042306, это удаление или обновление сторонних VSS провайдеров, которые есть могут быть у вас в системе. Например у меня в системе для резервного копирования используется Veeam VSS Hardware Provider, если бы я ранее не узнал, что проблема в обновлении Windows, то я 100% бы попробовал его удалить или обновить до самой актуальной версии при ее наличии, что я вам и советую проверить.
Для того, чтобы в Windows посмотреть какие зарегистрированы и имспользуются VSS провайдеры выполните в cmd команду:
У меня список выглядел вот так:
Нехватка места для VSS копий
Когда создается VSS снимок, то для этого используется выделенное под это дисковое пространство. Оно задается при включении, например для точек восстановления это делается в оснастке systempropertiesprotection. На вкладке “Защита системы” нажмите внопку “Настроить”. Тут вы увидите размер выделенного пространства, попробуйте его увеличить, еще как вариант можно попробовать тут все удалить, это то же может решить ошибку 0x80042306.
Если мы говорим про несистемные диски, то там чаще всего настраивают с помощью оснастки “Управление компьютером“. Вам нужно выбрать нужный диск и перейти в его свойства, тут есть пункт “Use limit” в рамках которого вы можете в мегабайтах задать размер.
Как видите, тут будет список дисков, текущий размер VSS копий и максимальный.
Если захотите увеличить или изменить максимальный размер, то можн воспользоваться командой:
Замените “e:” на правильный диск. Вы можете использовать больше или меньше 15%.
Если вы любите PowerShell, то так же можно получить эти данные.
Или для ряда серверов, где их имена мы получаем из файла.
# Шаг 1: Получить список компьютеров из файла
$computers = Get-Content -Path “C:\Temp\servers.txt”
На этом у меня все. Надеюсь, чт овам удалось восстановить работу VSS службы и исправить ошибку 0x80042306. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.
Если вы случайно удалили файл или папку мимо корзины, не впадайте в панику. Программы для восстановления данных от вас никуда не денутся, поэтому попробуйте сначала средства системы. В Windows можно восстановить предыдущие версии файлов и папок, даже если в графическом интерфейсе этой возможности нет.
В Windows 8 в свойствах дисков, папок и файлов стало на одну вкладку меньше. Обратите внимание, что пропали предыдущие версии.
Статья обновлена в контексте Windows 10 и Windows 11.
Сегодня в программе
Статья была написана во времена Windows 8, а в Windows 10 вкладка «Предыдущие версии» вернулась в свойства папки. Тем не менее материал актуален для Windows 10 и 11, потому что в нем демонстрируются способы восстановления файлов напрямую из теневых копий.
В Windows 10 и новее на вкладке написано, что предыдущие версии образуются из истории файлов и теневых копий. Однако это больше не относится к теневым копиям, которые создает защита системы! Поэтому при стандартных настройках предыдущие версии могут быть доступны только из истории файлов, если она включена, конечно.
Так, мой эксперимент в Windows 10 версии 1511 (и позже в 1709) показал, что на вкладке отображаются только версии из истории файлов, даже если защита системы включена!
На этой картинке:
- Свойства папки скриншотов в ОС. Последняя версия от 27 февраля. Вероятно, это дата последнего копирования в историю файлов, которая у меня сейчас не работает (диск отключен физически)
- Последняя теневая копия от 11 мая (появилась при создании точки восстановления перед установкой обновлений WU), создаю символическую ссылку на п.3
- Содержимое теневой копии. Видно, что в ней есть файлы, созданные незадолго до появления теневой копии от 11 мая. Однако они отсутствуют в п.1
Таким образом, лучший шанс восстановить предыдущие версии у вас есть в том случае, если включена история файлов или тенeвые копии создаются командной wmic. Тогда версии доступны на вкладке в свойствах папки.
Как работают предыдущие версии, и почему убрали вкладку в Windows 8
Такая картина в свойствах файлов и папок является лишь следствием того, что в параметрах защиты системы Windows 8 теперь нет опции восстановления файлов.
Я не знаю, почему убрали опцию защиты файлов и вкладку предыдущих версий. У меня есть лишь обоснованные предположения, которыми я поделюсь с вами, заодно объяснив принцип работы предыдущих версий.
Во многих системах на этой вкладке всегда было пусто
Это заставляло тысячи людей озадачивать форумы сообщества и поддержку Microsoft наболевшим вопросом. Но вы-то уже догадались, в чем была их проблема, не так ли? У этих людей была полностью отключена защита системы!
Людям был непонятен принцип хранения и отображения предыдущих версий
Действительно, почему для одних папок есть несколько версий, а для других – ни одной? Дело в том, что разные редакции файлов в этих папках могли быть созданы только не раньше самой старой точки восстановления.
Согласитесь, при взгляде на вкладку не совсем очевидно, что сохранение версий личных документов и медиа-файлов привязано к созданию точек восстановления (хотя это описано в справке Windows, пусть и не без огрехов).
О точках принято думать как о средстве отката системных параметров, тем более что личные файлы при этом не восстанавливаются (за исключением этих типов файлов).
Между тем, точки восстановления и предыдущие версии файлов (не относящиеся к истории файлов) хранятся в одном месте – теневых копиях тома.
Механизм восстановления системы попросту делает снимок тома в нужное время и сохраняет его в теневой копии. Именно пространство, выделенное для теневых копий, вы контролируете в параметрах защиты системы.
Теперь становится понятно, почему количество версий у файлов и папок может варьироваться. Состояние файла записывается на момент создания точки восстановления. Если между точками он изменялся, в теневой копии сохраняется его версия. Если же файл оставался неизменным в период, охваченный точками восстановления, у него вообще не будет предыдущих версий.
В Windows 8 появилась история файлов
Когда понятен принцип применения технологии, из нее можно извлечь пользу. В Windows 7 это было непонятно большинству людей, поэтому в Windows 8 внедрили более наглядную систему резервного копирования данных – историю файлов.
Она не опирается на теневые копии, а количество версий файлов вы можете контролировать, указав частоту резервного копирования. Все зависит от ваших нужд и места на целевом диске.
Вкладку же доступа к «непонятным» предыдущим версиям в Windows 8 просто убрали, вместе с сопутствующей опцией в параметрах защиты системы. Что же касается ИТ-специалистов, то они должны быть хорошо знакомы с понятием теневых копий – ведь в серверных ОС для управления ими есть одноименная вкладка в свойствах тома. Потому в Windows Server 2012 вкладка «Предыдущие версии» находится на своем привычном месте.
В Windows 8+ точки восстановления создаются по особому алгоритму, а вместе с ними сохраняются предыдущие версии ваших файлов и папок. Дальше я расскажу, как их открыть.
Как открыть предыдущие версии файлов и папок из теневых копий
Здесь способы, которые сработают в случае, если вы создаете теневые копии командой wmic. Они могут не помочь, если у вас только включена защита системы. Первый способ подходит для всех поддерживаемых Windows, а второй имеет смысл лишь в Windows 8/8.1 и сохранен в блоге для истории.
Способ 1 — символическая ссылка в теневые копии (Windows 7 и новее)
Постоянные читатели блога уже видели этот трюк в статье про функцию обновления ПК без удаления файлов (Refresh Your PC). Она тоже использует теневые копии для промежуточного сохранения диска, когда вы создаете свой образ для отката.
Тогда мне этот фокус был нужен для понимания технологии, зато теперь он вам может понадобиться для решения вполне конкретной задачи. В командной строке, запущенной от имени администратора, выполните:
vssadmin list shadows
Вы увидите список теневых копий на всех томах. Для каждой из них указана буква диска, поэтому вам будет легко сориентироваться. Кроме того, каждая теневая копия соответствует по дате одной из точек восстановления (чтобы вывести их список, выполните в консоли rstrui).
Выберите нужную дату и скопируйте идентификатор тома теневой копии. Теперь используйте его во второй команде (не забудьте добавить обратный слэш в конце):
mklink /d %SystemDrive%\shadow \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\
В корне системного диска у вас уже появилась символическая ссылка shadow, ведущая в теневую копию! Перейдя по ссылке, вы увидите знакомую структуру файлов и папок – это и есть их предыдущие версии.
Способ 2 — вход в общий диск по сети (Windows 8 и 8.1)
Добавлено 15.01.2013. В комментариях читатель Алексей поделился более простым способом доступа к теневым копиям по сравнению с описанным в статье изначально. Сначала способ работал, но позже Microsoft закрыла лазейку каким-то из обновлений. Однако читатель Ника в итоге подсказал обходной путь.
Сначала нужно сделать диск общим, а потом зайти в него «по сети». В окне «Этот компьютер» откройте «Сеть» и зайдите на свой ПК, либо под учетной записью администратора вставьте сетевой путь в адресную строку проводника или в окно «Выполнить»:
\\%computername%\C$
где C — буква желаемого диска. В сетевых папках вкладка «Предыдущие версии» присутствует:
Поскольку я несколько раз прибегал к извлечению данных из теневых копий, мне немного жаль потери в графическом интерфейсе. Ведь вкладка «Предыдущие версии» была удобна тем, что сразу позволяла добраться до нужных файлов.
Впрочем, я уж не настолько часто пользовался этой возможностью, чтобы ввод двух команд в консоль доставлял мне жуткие неудобства. Ведь главное – это наличие предыдущих версий файлов, а добраться до них я смогу! Теперь сможете и вы 😉
А вам хоть раз доводилось восстанавливать предыдущие версии файлов из теневых копий? Расскажите в комментариях, почему возникла необходимость и удалось ли все восстановить.
Я все-таки думаю, что большинство читателей ни разу не прибегали к этой возможности на домашних системах, а посему ее исчезновение из графического интерфейса их не слишком расстроит. В следующей записи мы поговорим о том, почему различные функции Windows исчезают или подвергаются изменениями, и как вы можете повлиять на ситуацию.
Привет, Хабр! Меня зовут Илья Буймистров, я занимаюсь исследованиями в области информационной безопасности в команде CICADA8 центра инноваций МТС.
Чтобы защищать пользователей, надо понимать, где слабые места в их ИТ-системах. Сегодня я расскажу, как можно обойти ввод пароля в достаточно известной программе Shadow Defender. Если вы росли в 2000-х, наверняка сталкивались с ней в компьютерных клубах и других местах, где ПК доступен большому количеству людей. Иногда её называют антивирусом, но не совсем точное определение. Обо всём по порядку.

Почему Shadow Defender?
Моё первое знакомство с Shadow Defender произошло около десяти лет назад. Помню лето на даче, когда я каждый день устанавливал Quake III с внешнего жёсткого диска на ноутбук. И каждый раз при выключении компа Shadow Defender безжалостно стирал все изменения. Уверен, что не у меня одного остались «тёплые» воспоминания о встрече с этим ПО, зато я хорошо его запомнил.
Основное преимущество Shadow Defender — свобода экспериментов с компьютером. Вы можете скачивать и запускать все, что не запретит (или не заметит) тезка от Microsoft — Windows Defender, включая вирусы и майнеры.
Фокус в том, что все внесенные пользователем изменения удаляются после перезагрузки компьютера. Это правда может спасти, так как антивирусы иногда пропускают вредоносный софт. Он добавляется в автозагрузку и закрепляется в операционной системе. Понятное дело, Shadow Defender не защитит от утечки чувствительной информации и злонамеренного использования ПК в текущей сессии, но помешает вирусу закрепиться.
Shadow Defender появился в 2007 году и часто применялся в компьютерных клубах и общественных местах – в библиотеках, школах и государственных учреждениях. Везде, где важно, чтобы любой желающий мог сесть за компьютер и использовать его по своему усмотрению. Конечно, есть и другая целевая аудитория этого ПО — любители экспериментов, для которых важно вернуть работоспособность личной машины при любом поведении исследуемого ПО.

С 2007 года вышло 45 версий, и в 2020 году на сайте разработчика появился последний релиз — 1.5.0.762. С тех пор ПО не обновляется и даже требует костылей для запуска под Windows 11. Но оно по-прежнему удобнее многих более современных аналогов вроде Deep Freeze и ToolWiz Time Freeze. Например, Shadow Defender позволяет выбрать, какие папки «замораживаются» и изменения в них не будут обнуляться после перезагрузки.

В результате до сих пор можно найти множество обсуждений, посвященных последствиям установки Shadow Defender. Кто-то обрел новые эмоции, безвозвратно потеряв дипломную работу или фотографии. Другие — как и я — заскриптовали установку необходимых приложений после включения компьютера. Самая частая проблема у пользователей заключается в том, что они не знают или забывают пароль от Shadow Defender. В результате не могут управлять конфигурацией программы и теряют свои данные.</spoiler>
Объект исследования
При очередной встрече с Shadow Defender на одном из проектов, я убедился, что приложение всё ещё подходит для своих задач. А реальная проблема на проекте стала основным направлением исследования — обход ввода пароля Shadow Defender при удаленном подключении к компьютеру.
С одной стороны, забытые пароли — это актуальная беда для многих пользователей. С другой — приложение давно не обновлялось, сертификат на сайте разработчика устарел и мне не удалось найти новостей о планируемых релизах. А значит, если обход пароля возможен, то удалённо подключившийся злоумышленник (никто не застрахован от бэкдора) легко изменит настройки Shadow Defender и повредит данные пользователя.
Лицензии на приложение всё ещё продаются и стоят около 35 долларов. Но для эксперимента хватило 30-дневной пробной версии. Исследование проходило на компьютере под управлением Windows 10.

Официальный сайт Shadow Defender и форумы сходятся в том, что главная фишка ПО — виртуализация. Дополнительной информации мало, поэтому изучим приложение практическим путём, начнём с основных файлов.
Конфигуратором Defender.exe с графическим интерфейсом пользуется большинство пользователей. Программа позволяет настроить защиту одного или нескольких дисковых разделов, создать исключения для директорий и файлов, которые могут быть изменены во время пользовательского сеанса. Также конфигуратор позволяет защитить значения из реестра Windows. Интерфейс понятный, настройки просты. Будет несложно найти и активировать самый интересный для нас режим — Shadow Mode.
CmdTool.exe имеет близкую к Defender.exe функциональность, но управление идёт из консоли.
Также важный файл — драйвер diskpt.sys.
Вышеупомянутый Shadow Mode — это режим защиты компьютера. В нём операции чтения и записи перенаправляются в выделенное пространство на накопителе. Там и происходят изменения, которые пользователь делает во время сессии вплоть до ее завершения. Среди них — создание и редактирование папок, файлов и значений в реестре.
ПО позволяет задать исключения для объектов, результаты редактирования которых надо сохранить после перезагрузки — они останутся в «эталонном» (так назвал его разработчик) дисковом пространстве. Для этой информации всё будет как обычно, ваши работа, диплом или фото не исчезнут после выключения.
Когда пользовательская сессия закончена, выделенная область памяти стирается, и после перезагрузки компьютер возвращается в эталонное (исходное) состояние. Работу режима Shadow Mode обеспечивает драйвер diskpt. Он и обслуживает выделенную под временные изменения область памяти. Драйвером управляет приложение-конфигуратор — Defender.exe или CmdTool.exe.

Файл может быть:
Прочитан с диска C (эталонного дискового раздела), если в него еще не вносились изменения.
Прочитан с диска C (эталонного дискового раздела), когда файл находится в исключениях.
Прочитан из выделенного под изменения пространства памяти если файл был создан или изменен после включения режима Shadow Mode.

Файл может быть:
Записан на диск C (эталонный дисковый раздел), когда файл находится в исключениях.
Записан на выделенном под изменения пространстве памяти, если файл не попадает под исключения.
Давайте попробуем обойти ввод пароля, понимая эту схему работы Shadow Defender и используя имеющуюся в интернете информацию.
Первая попытка — методы из Сети
В интернете много решений с сомнительной функциональностью – неизвестно, работают ли они и что делают. Например, варианты доступа к файлу конфигурации без предъявления пароля включают удаление Shadow Defender из оперативной памяти путем перезагрузки Windows в безопасный режим. Этот подход нам не подходит, так как нас интересует удалённая работа с компьютером. А при работе в безопасном режиме изменения (например, софт, добавленный в автозагрузку) не сохранятся. Нужно более деликатное решение.
Продолжая поиски, я наткнулся на YouTube-инструкцию по обходу пароля Shadow Defender. В описании под ним сразу же была ссылка на патч для обхода пароля в версии 1.4.0.648. Эта версия ПО выпущена в августе 2016 года. Но, если предложенное в видео решение действительно работает, то, может, с его помощью удастся разработать методику обхода пароля и в последней версии — 1.5.0.762?
Я нечасто устанавливаю неподписанные исполняемые файлы из описания к видео на YouTube. Но отчет VirusTotal, гласящий всего о 45 обнаруженных угрозах из 60, меня «успокоил». Безусловно с таким файлом можно работать только в виртуальной машине — такой подход я счёл вполне безопасным. Проверка файла из Интернета на Shadow Defender версии 1.4.0.648 привела к успешному обходу ввода пароля конфигурации.

При вводе пароля, отличающегося от установленного в приложении, окно конфигурации успешно открывается. Есть важный нюанс: попытка ввести правильный пароль вызывает ошибку доступа, что наводит на мысль об изменении логики приложения после патчинга.
Для статического и динамического анализа приложений применим IDA Pro 7.7.
Декомпилируем полученный из описания к YouTube-ролику исполняемый файл и смотрим на его строки. Быстрый анализ дает понять, что в исполняемом файле спрятана статическая библиотека dup2patcher.dll и именно она используется для воздействия на приложение Shadow Defender.

Перед анализом библиотеки ее нужно достать из исполняемого файла. Самый удобный способ — сделать это через IDA Pro, с помощью которой можно сохранить файл статической библиотеки во время отладки исполняемого файла. Декомпиляция и поиск строк dup2patcher.dll в интернете без труда позволяют найти проект diablo2oo2’s Universal Patcher (dUP2). Он используется как конструктор для сборки исполняемых файлов — патчеров под различное программное обеспечение.
Одна из особенностей dUP2 — информация о вносимых в приложение изменениях сохраняется в исполняемый файл. Такой подход даёт защиту от зорких глаз исследователей. Но теперь становится окончательно ясно, что патчер вносит изменения в байты приложения Shadow Defender, а конкретнее — в исполняемое приложение «C:\Program Files\Shadow Defender\Defender.exe».
Как сильно приложение было изменено патчем? Учитывая поведение пропатченной программы, возникло предположение, что в нём может быть изменён всего один байт. Проверить это довольно легко, возьмем исполняемый файл Defender.exe до применения патча и после. На картинке для удобства исполняемые файлы расположены в папках v1 и v2 соответственно.

Сравнение исполняемых файлов с использованием стандартной утилиты Windows fc.exe доказывает, что в результате применения патча был затронут один байт по адресу 0x00018F7B. Его значение изменилось с 0x75 на 0x74, что предварительно соответствует изменению кода операций на ассемблере.
Операция с кодом 0x75 —это JNZ, переход при условии отличного от нуля содержимого регистра памяти по адресу 0x00018F7B. Новое значение по указанному адресу — 0x74 или команда JZ соответствует переходу при равенстве нулю содержимого регистра. Прекрасно, изменяемый байт найден, остается рассмотреть контекст, в котором он располагается.
Снова используем IDA Pro и декомпилируем приложение Shadow Defender в состоянии до применения патча. Ожидаемо, изменение логики применяется к участку проверки соответствия введенного пользователем пароля и того, что задан в приложении. Обратим внимание на инструкции: в регистр RDX помещается указатель на значение, сформированное с использованием введенного пользователем пароля (ниже поясню подробнее).
В регистр RCX помещается указатель на значение, которое было сформировано на основе изначально установленного пароля. Функция sub_14005A75C принимает на вход указатели на строки регистров RDX и RCX, а потом проводит посимвольное сравнение. В случае эквивалентности строк в регистре EAX возвращается нулевое значение.
Расположенная по адресу 0x00140019B7B (адрес из вывода fc.exe со смещением) инструкция JNZ запускает функции по выводу ошибки и повторному запросу пароля. Как мы выяснили выше, байт 0x75 данной инструкции изменяется на байт 0x74, что приводит к изменению логики проверки пароля. Теперь Shadow Defender запускается при несовпадении вводимого пользователем и заданного в приложении паролей.

Дело за малым, пишем скрипт на Python, который получит значение из реестра, совместит его с новым паролем, возьмёт хэш MD5 и заменит его в конфигурационном файле Shadow Defender.
import hashlib
import winreg
import sys
# Получение значения из реестра
reg_type = winreg.HKEY_LOCAL_MACHINE
reg_dir = winreg.OpenKeyEx(reg_type, r"SYSTEM\\CurrentControlSet\\Services\\diskpt\\")
guid = winreg.QueryValueEx(reg_dir, 'GUID')[0]
winreg.CloseKey(reg_dir)
# Формирование значения
password = sys.argv[1]
data = "{}{}".format(guid, password)
# Получение хэша
hash_store = b''
for byte in data:
hash_store += byte.encode() + b'\x00'
hash = hashlib.md5(hash_store).hexdigest()
line = "hash={}\n".format(hash)
# Чтение из файла конфигурации
with open(r"C:\\Program Files\\Shadow Defender\\user.dat", 'r') as file:
data = file.readlines()
for ptr in range(len(data)):
if "hash=" in data[ptr]:
del data[ptr]
data.append(line)
# Запись в файл конфигурации
with open(r"C:\\Program Files\\Shadow Defender\\user.dat", 'w') as file:
data = file.writelines(data)

То есть мы научились обходить парольную защиту Shadow Defender, только если ПО работает не в режиме Shadow Mode. Но именно в нём нам и надо получить доступ. Миссия не выполнена.

Второй заход — используем полученный опыт
Несмотря на неудачный подход, найденный патчер познакомил нас с тем, как приложение проверяет пароль. А ещё он обнадёжил, что соответствующий участок кода не сильно меняется от версии к версии.

На изображении заметно, что функцию посимвольного сравнения заменила библиотечная функция wcsmp со схожей логикой работы. Расположенная по адресу 0x7FF7538CA5A9 инструкция JNZ совершает переход к функциям вывода ошибки и повторного ввода пароля. Как нам известно, байт 0x75 данной инструкции заменяется на байт 0x74, что приводит к извращению логики проверки пароля: переход к запуску конфигурации происходит в случае несовпадения паролей.
Напишем патч на Python под версию Shadow Defender 1.5.0.762, который заменит инструкцию JNZ на JZ по уникальному для этого бинарного файла набору байт.
defender_path = "C:\\Program files\Shadow Defender\Defender.exe"
with open(defender_path, "rb") as reader:
defender_data = reader.read()
defender_data = defender_data.replace(b"\x0F\x85\x82\x00\x00\x00\xE8\x18\x6E\xFE\xFF", b"\x0F\x84\x82\x00\x00\x00\xE8\x18\x6E\xFE\xFF")
with open(defender_path, "wb") as writer:
writer.write(defender_data)

Дополнительно, для более удобного портирования обхода пароля доступа к конфигурации можно использовать патч для CmdTool.exe. Такой подход удобнее использовать для смены пароля конфигурации. Пропатченное приложение имеет небольшой размер и совместимо с любой версией Shadow Defender. Достаточно доставить на защищенный режимом Shadow Mode компьютер исполняемый файл и запустить его с параметрами /xpwd:password, где password — новый пароль.
Повторяем вышеприведённые операции по исследованию кода CmdTool.exe. Оказывается, изменяемый участок кода, как ни странно, тоже касается сравнения установленного в приложения и введённого пользователем паролей. При этом логика сравнения отличается от приложения Defender.exe, все решает один байт. В качестве кандидата на изменение выступает возвращаемый байт со значением 0, который свидетельствует о несовпадении паролей и запускает операции по выводу сообщения о невалидном пароле. Следовательно, решением будет изменение значения байта с 0x00 на 0x01.

Напишем патч на Python под версию Shadow Defender 1.4.0.648, который заменит байт 0x00 на 0x01 по уникальному для этого бинарного файла набору байт.
defender_path = "C:\\Program files\Shadow Defender\CmdTool.exe"
with open(defender_path, "rb") as reader:
defender_data = reader.read()
defender_data = defender_data.replace(b"\xC7\x84\x24\x6C\x04\x00\x00\x00\x00\x00\x00", b"\xC7\x84\x24\x6C\x04\x00\x00\x01\x00\x00\x00")
with open(defender_path, "wb") as writer:
writer.write(defender_data)

Надеюсь, вам понравилось это интеллектуальное упражнение. К тому же оно имеет практический выхлоп — позволит восстановить доступ к приложению с забытым паролем. Что касается Shadow Defender, мы сообщили об уязвимости.
Есть гипотетическая вероятность, что появится исправленная версия. Тем, кто уже использует это ПО стоит помнить, что описанным в статье способом можете воспользоваться не только вы. Как всегда, стоит учитывать риски работе с приложениями, разработка которых остановлена.
3.5.1 Доступ к предыдущим версиям файлов с помощью shadow_copy
На время настройки сервиса переведите selinux в режим уведомлений. Для этого измените содержимое конфигурационного файла:
nano /etc/selinux/config
Заменив текст SELINUX=enforcing
на SELINUX=permissive
Выполните:
setenforce 0
Более подробно см.ссылку
Не забудьте включить selinux после завершения настройки.
Процедура настройки «теневых копий» делится на две части:
предоставление клиентам Microsoft Shadow Copy возможности просматривать снимки файловой системы как «теневые копии» в сетевых каталогах Samba;
механизм создания «теневых копий».
Настройка в samba механизма «теневых копий»
Samba позволяет вам организовать хранение предыдущих версий файла так, чтобы они были доступны механизму учёта предыдущих версий в Windows. Для этого предназначен специальный модуль vfs object
с именем shadow_copy2. Для активации этого механизма со стороны Samba просто добавьте в блок, описывающий нужную вам шару, несколько строк. Для примера создадим шару secure. Добавьте в её блок параметр, активирующий shadow_copy2, и параметр shadow:snapdir, указывающий, где будут храниться снапшоты. В данном случае, они будут храниться в скрытом каталоге с именем самой шары.
wide links = yes
unix extensions = no
allow insecure wide links = no
wide links
разрешает samba проходить по символьным ссылкам;unix extensions =
запрещает *nix клиентам создание символьных ссылок (и еще несколько возможностей, которые вам могут не понадобиться);allow insecure wide links
— эту опцию включаем вyes
только при включенныхunix extensions
, иначеwide links
останутся недоступны.
На этом настройку можно закончить. Дополнительные параметры приведены на сайте samba.org и доступны по ссылке.
Эта информация оказалась полезной? ДА НЕТ
Дата последнего изменения: 27.02.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Теневое копирование — это служба, делающая копии файлов на дисках в заданные периоды времени. Она позволяет также делать копии независимо от того используется файл или нет. Благодаря этому она позволяет быстро просмотреть состояние папки на предшествующий момент времени или, при необходимости, восстановить случайно удаленные файлы независимо от их наличия в корзине. Необходимо понимать, что теневое копирование не отменяет необходимость резервного копирования, а служит лишь дополнением к нему.
Для включения этой функции достаточно выполнить следующие операции: Открыть свойства соответствующего диска и перейти на закладку “Теневые копии”.
Встать на соответствующий диск и нажать “Включить”.
Система выдаст дополнительную информацию, предупредит что будет снята первая копия и что расписание резервного копирования будет изменено, а также запросит подтверждение операции.
После этого теневые копии активируются, при желании можно изменить их параметры, например расписание, либо отключить, а также принудительно создать соответствующими кнопками.
Теперь у каждой папки и файла на закладке “предыдущие версии” есть информация о теневых копиях откуда можно просмотреть содержимое папки на предшествующий период или восстановить файл.
Для того чтобы восстановить файл или папку, надо открыть его свойства и перейти на закладку “предыдущие копии”, выбрать нужную версию файла и нажать кнопку “восстановить”, также можно посмотреть содержимое файла или папки нажав кнопку “открыть”.
Так эта закладка выглядит для файла
А так для папки
На этом настройка теневого копирования томов на Windows Server 2016 окончена. В нашей базе знаний вы найдете еще множество статей посвящённых различным аспектам работы в Windows, а если вы ищете надежный виртуальный сервер под управлением Windows, обратите внимания на нашу услугу — Аренда виртуального сервера Windows.
Последнее обновление: 01.11.2023