Войти

Показать полную графическую версию : Запуск переименованных exe


oji
16-01-2013, 14:03
Подскажите, есть ли способ ограничить в Windows 2003 Server следующее поведение:

Если переименовать исполняемый .exe-файл, поменяв у него расширение на .cmd, приложение всё равно запускается. Из-за этого в сети огромная брешь.

Iska
16-01-2013, 14:37
oji, пока что непонятно из-за чего «огромная брешь». По умолчанию и то, и другое — исполняемые файлы, наряду с прочими (pathext). Как у Вас организованы текущие ограничения?

oji
16-01-2013, 14:54
В папке разрешён запуск нескольких приложений, и запрещено их изменение. Но! В этой же папке программа генерирует и запускает .cmd и .vbs скрипты, присваивая имена, которые сложно подогнать под шаблоны, поэтому разрешён также запуск *.cmd и *.vbs из указанной папки, а также запись в неё новых файлов. Повлиять на разработчика у меня лично нет возможности, поэтому приходится мириться с таким поведением ПО

Проблема в том, что если взять любой .exe-файл и поменять у него расширение на .cmd и положить в папку с программой, то он запустится. При этом, например, в Windows 7 такого не происходит — переименованный .exe не выполняется.

oji
16-01-2013, 15:32
И я не соглашусь, что и то, и другое — исполняемые файлы.

.exe да, исполняемый, но .cmd — это скриптовая последовательность для интерпретатора cmd.exe. В Windows 7 и, вероятно, в более новых ОС от Microsoft интерпретатор cmd.exe закрывается, наткнувшись на некорректный скрипт (в данном случае это переименованный исполняемый файл), в то время как в Windows 2003 и в XP (проверил только что) интерпретатор запускает исполняемый файл. Вопрос в том, можно ли как-то повлиять на такое поведение и запретить скриптовому интерпретатору запускать исполняемые файлы.

Iska
17-01-2013, 00:55
В папке разрешён запуск нескольких приложений, и запрещено их изменение. »
Повторяю — каким образом?

И я не соглашусь, что и то, и другое — исполняемые файлы. »
Если Вы не поняли — в данном контексте трактовка «исполняемые» такая:
set pathext
Не более.

oji
17-01-2013, 01:38
Ограничение организовано через групповые политики, стандартными средствами MS:
Несколько правил для SRP (Software Restriction Policies):

Разрешение на запуск двух .exe приложений
Разрешение запуска *.cmd
Разрешение запуска *.vbs
Запрет на запуск всего остального


И правила для File & Folder Permissions:

Разрешение на запись в папку
Запрет на изменение двух исполняемых .exe-файлов


Однако к решению это не имеет отношения, так как проблема на уровне cmd.exe, который вместо остановки при запуске некорректного скрипта (переименованного в .cmd из .exe), всё равно запускает его — неожиданное лично для меня поведение системы, которого нет в более новых версиях ОС. И вопрос в том, возможно ли изменить поведение интерпретатора cmd.exe на то, которое наблюдается в Windows 7 — не запускать файлы, являющиеся не последовательностью команд, а переименованными .exe? Потому как это неочевидное поведение создало брешь в системе безопасности, позволив непривилегированному пользователю запускать любые программы из папки с этим приложением, просто изменив расширение.

Кардинально запретить пользователю cmd.exe также нет возможности, иначе перестаёт работать указанная выше программа.

WindowsNT
17-01-2013, 08:32
Попробуйте переорганизовать разрешение на *.cmd во что-то более конкретное. Скажем, на хэш нужных cmd.

oji
17-01-2013, 09:31
К сожалению, cmd генерируются с случайными именами и различным содержимым.

WindowsNT
17-01-2013, 12:26
Тогда никак.




© OSzone.net 2001-2012