RDPInception — атака через подключенные диски
Life-Hack [Жизнь-Взлом]/ХакингПротокол RDP на сегодняшний день является одним из основных протоколов удаленного доступа к машинам под управлением ОС Windows.

Помимо взаимодействия с удаленным компьютером он позволяет подключить к удаленной машине локальные диски, порты и другие устройства.
На основании этого становится возможна атака, которая получила название RDPInception, позволяющая захваченному RDP серверу атаковать клиентские машины. Если атакованная машина подключается по цепочке через несколько серверов и везде монтируются локальные диски, становится возможным атаковать все машины в цепочке.
Как работает RDPInception
Для проведения атаки можно воспользоваться скриптом
а именно файлом run.bat.
Если вы пользуетесь Cobalt Strike, то можете использовать aggressor script, который так же доступен на гитхабе.
Посмотрим на содержимое bat-файла и разберем по порядку, что происходит:

Отображаем пользователю какой-нибудь неподозрительный текст. Делаем небольшую задержу, чтобы убедиться, что локальные диски клиента примонтировались.

Создаем директорию temp в корне примонтированного диска и диска машины, на которую подключается жертва.

Самокопирование скрипта в эти директории

Убеждаемся, что такого файла нет в TEMP (на всякий случай)

Ищем директории со словом startup

В них ищем уже более детально и записываем в файл temp_00.txt
После этого файл будет выглядеть примерно так

Далее в каждую директорию из файла пытаемся размножить скрипт run.bat

Очищаем временные файлы

Выполняем пейлоад (изначально закомментирован)
В качестве cradle должен выступать «достаточно умный» powershell скрипт, способный по максимуму использовать права пользователя, который подключился по RDP и всех последующих пользователей в цепочке RDP подключений.
Для алгоритма можно использовать имя пользователя, его группы, подсеть, другими словами, все, что мы можем узнать о пользователей, запустившем скрипт.
В примере выше будет выполнен код в скобках только если пользователь состоит в домене WINDOMAIN.
Атака становится возможна, поскольку при входе в систему выполняются скрипты, расположенные в Startup директории.
Таким образом, при следующем входе в систему, все зараженные пользователи выполнят этот скрипт. Дальнейшее зависит от того, как хорошо написан powershell cradle.
Практический пример
Для того чтобы начать атаку нужно получить доступ к пользователю на одной из машин, к которым он подключается по RDP, положить скрипт run.bat в его Startup директорию и ждать подключения.
В качестве powershell кредла я буду использовать powershell empire агент.
Запускаем powershell empire, настраиваем листнер

Генерируем код агента

Изменяем в run.bat последнюю строку таким образом

Для демонстрации я указал, что если имя пользователя будет Admin, то будет выполнен код powershell empire, а если Administrator, то будет запущен калькулятор.
Положим файл на захваченный терминальный сервер или машину с RDP доступом, выполним, чтобы размножить на все Startup директории пользователей, к которым имеем доступ.

И подключимся к этой машине с другой Windows машины, подключив диск C в настройках RDP клиента.

После успешной аутентификации получаем powershell empire сессию с машины, к которой подключилась жертва.

Одновременно с этим, run.bat появляется и в Startup директориях пользователей на машине, с которой произошло подключение. В частности файл появляется в директории пользователя Administrator.

Теперь, если мы перелогинимся на RDP-клиента под Administrator, то автоматически запустится калькулятор.

Другие пользователи которые регулярно логинятся на эту машину по RDP или физически потенциально могут заразить те машины, локальные диски которых примонтировали при подключении. И так далее.
В заключении
Приведенный скрипт является в большей степени Proof-of-Concept. В действительности, основываясь на этой технике можно выполнять сложные атаки в условиях, когда другие методы продвижения в сети становятся не эффективными.