Re[13]: offtop
От: TarasCo  
Дата: 18.01.07 08:41
Оценка:
Здравствуйте, Злость, Вы писали:

З>Не у меня уже дежавю начинается от чтения


Коллега, дежавю — это не наш термин, у нас — рекурсия!
Да пребудет с тобою сила
Re[12]: Блокировка запуска приложений
От: onyx2 Украина  
Дата: 18.01.07 08:50
Оценка:
IID>чудеса да и только :) Создайте, а мы всем форумом внимательно понаблюдаем. Или опять сказано не подумав ?

Ну что ж, подождем, понаблюдаем ;)
www.cubik.biz
Re[11]: Блокировка запуска приложений
От: Sergey Storozhevykh Россия  
Дата: 18.01.07 09:17
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Простите, вы про что? Я никаким, простите боком не отпираюсь ибо нет повода... Вы опять похоже хотите выдать желаемое за действительное, процитируете мои слова, где, я говорил, что-то про "файлы"? Я опять, уже похоже третий раз повторяю — "всё делается через безопасность... И этого механизма вполне достаточно... А если не удобно, то надо делать спец. тутлузу".


Хорошо, если вы настаиваете, поставим вопрос шире: возможно ли использовать модель безопасности Windows для организации замкнутости программной среды в общем случае?

AWW>Странный, вы всё-таки какой-то, зачем мне приписывать то чего я не говорил, и даже могу сказать больше... Мне это даже во сне не могло приснится! Файлы. Это вы все время с файлами боретесь, вместо того чтобы, один раз и до конца разобраться с моделью безопасности WINDOWS.


Вот давайте вместе и разберемся.

SS>>Пожалуйста, объясните мне: для каких типов объектов, кроме файловых, нужно установить атрибуты доступа, чтобы контролировать процедуру запуска процесса? Я просто не в курсе, потому и написал про NTFS.


AWW>Я вообще ничего не понял, вы простите на грубом слове несёте какой то детский лепет — Что такое "контролировать процедуру запуска процесса" Вы простите про что? Я вот уже почти 15 лет как занимаюсь системным программированием и не знал, что есть какая-то ОСОБАЯ процедура (Наверное в ядре ) которая "запускает" процессы.


Вместо того, чтоб ответить на вопрос по существу вы прицепились к слову. Несерьезно.

Мы ведь не обсуждаем вопросы процедурного программирования, но находимся в русле технической дискуссии о более общих проблемах, как-то: обсуждение механизмов защиты и способов их применения для организации замкнутости программной среды. Теперь поясню какое значение я вкладываю в термин "процедура" в предложенном контексте. Процедура — последовательность действий, необходимых к исполению для достижения какого-либо результата. Так понятно? Ну собственно, можно заглянуть в любой толковый словарь.

SS>>А, понял! Точно, надо установить запрет исполнения устройства. Блин, только вот не пойму какого. Подскажите, а?


AWW>Хотите можете явно указать "запрет", но я думаю что и просто "не разрешить чтение" будет вполне достаточно.


Для того чтобы запретить/разрешить исполнение, вполне достаточно манипуляций с атрибутом EXECUTE. Это, если хотите, необходимое и достаточное условие.

AWW>А что касается "какого" конкретно устройства, ну итдипенс...


Для какого конкретно устройства нужно настроить соответствующие атрибуты доступа, в случае необходимости блокировать запуск процессов со съемного USB-диска? Не торопитесь отвечать на этот вопрос, ниже я покажу, что это в принципе невозможно.

AWW>Ну могу только повторить — в windows, всё построено на объектах, объекты это ВСЁ и файлы и потоки и секции... Да всё, за редким-редким исключением... И как такового нет "Встроенный механизм разграничения доступа к файлам" есть к объектам...


Тут надо понимать, что есть пространство имен диспетчера обектов (device objetcs, driver objects, sections etc.), и дополнительные пространства имен: файловой системы, реестра, еще чего-нибудь. Так вот безопасностью рулит тот, кто пространство имен организует. В случае файлов — файловая система, в случае реестра — диспетчер конфигурации и т.п. Таким образом, при открытии файла диспетчер объектов не участвует в определении разрешенных прав доступа к объекту. Поэтому я сознательно опускаю в рассуждениях механизм разграничения доступа, реализованный в недрах диспетчера объектов. Расставьте любые атрибуты доступа на устройство, предствляющее том файловой системы, или физическое устройство диска, ассоциированное с устройством тома через VPB, — эти атрибуты будут просто игнорироваться при открытии файла на томе.

Поэтому установка атрибутов на объекты устройств не может повлиять на процедуру запуска процессов. Теперь понятно, почему я все время аппелирую к файлам?

AWW>Вы вообще в какой области специализируетесь? Что никогда не слышали про WinObj?


Кстати, я пользуюсь WinObjEx, она удобней — рекомендую.

SS>>Да, можно разграничить для уже присутствующих в системе файловых объектов, но не для вновь появляющихся в следствие монтирования новых томов.


AWW>Опять какой-то детский сад — да легко! Ну ура, и не раз уже делалось...


Не верю. Можно вас попросить описать метод настройки "бесопасности", как вы выражаетесь, с тем, чтобы на впоследствии примонтированном USB-диске доступ к файлам был соответствующим образом разграничен. Для полноты ощущений представим, что файловая система на USB-диске FAT32.

SS>>Основная проблема состоит в том, что вы не можете назначить атрибуты доступа тем объектам, которые еще не присутствуют в системе.


AWW>Да откуда же такая уверенность, что "не можете"... Вы что-нибудь про наследование слышали... Все тома монтируются на каких-то устройствах, так просто "ТОМОВ" не бывает...


Наконец-то мы добрались до корня ваших заблуждений. С точки зрения системы безопасности диспетчера объектов — том, это объект, для которого разграничивается доступ. Диспетчер объектов не делает никаких предположений о содержимом тома и, тем более, атрибутах доступа к сущностям, расположенным на томе. Все, что внутри тома, отдается на откуп файловой системе, которая этот том монтирует.

SS>>Если бы все было, как вы говорите, зачем MS ввела в Windows XP политику ограниченного использования программ, о которой я уже писал выше? Они, наверное, забыли у вас спросить, как реализовать замкнутость программной среды уже существующими на тот момент средствами?


AWW>Не знаю, это бизнес... Захотели сделали, а почему 1000 и одна причина может быть для этого...


AWW>А вообще, это что аргумент в пользу невозможности? Странный однако...


Какой-никакой, а аргумент. Хочется все-таки дождаться аргументов и вашей стороны.

AWW>PS:


AWW> Да кстати, процесс можно и вообще без исполняемого файла создать... Да вообще без файла... И все будет прекрасненько работать... И для этого даже админских прав не надо... Прямо из памяти...


Это как, заклинаниями? Опустим технические нюансы, которые, насколько я знаю, вам просто не позволят это сделать. Даже если представить, что вы умеете это делать, точнее вы написали эксплоит, который умеет плодить такие процессы, то в условиях корректно настроенной замкнутости программной среду, вы просто не сможете запустить свой эксплоит.

И, если вы все-таки будете продолжать упорствовать в своем намерении запустить такой фейковый процесс, то значит и ваша хваленая "безопаснось", на которую вы, судя по всему молитесь, не всемогуща?
Re[12]: Блокировка запуска приложений
От: Sergey Storozhevykh Россия  
Дата: 18.01.07 09:33
Оценка:
SS>Хорошо, если вы настаиваете, поставим вопрос шире: возможно ли использовать модель безопасности Windows для организации замкнутости программной среды в общем случае?

Уточняю: политика ограниченного использования программ, появившаяся Windows XP, в расчет не принимается, исходя из условий оригинальной задачи. Ищем решение для всех NT-based OS
Re[12]: Блокировка запуска приложений
От: onyx2 Украина  
Дата: 18.01.07 09:40
Оценка:
SS>Кстати, я пользуюсь WinObjEx, она удобней — рекомендую.

WinObjEx — это что, то же от Руссиновича. Дайте ссылку, please.
www.cubik.biz
Re[13]: Блокировка запуска приложений
От: Sergey Storozhevykh Россия  
Дата: 18.01.07 09:48
Оценка:
Здравствуйте, onyx2, Вы писали:

O>WinObjEx — это что, то же от Руссиновича. Дайте ссылку, please.


WinObjEx
Re[11]: Блокировка запуска приложений
От: Лисенок  
Дата: 18.01.07 11:01
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW> Да кстати, процесс можно и вообще без исполняемого файла создать... Да вообще без файла... И все будет прекрасненько работать... И для этого даже админских прав не надо... Прямо из памяти...


С нетерпением жду развития темы. И про процесс из пустого места и вообще про безопасность...
Re[12]: Блокировка запуска приложений
От: Andrew.W Worobow https://github.com/Worobow
Дата: 18.01.07 11:22
Оценка:
Здравствуйте, IID, Вы писали:

IID>Демагогия. Сергей задал конкретный вопрос, а вы ему гнете пальцы про 15 лет


Знаете. я думаю, что тибетские шаманы оценят конференцию нейро-хирургов вообще как сборише шарлотанов...

AWW>> Да кстати, процесс можно и вообще без исполняемого файла создать...


IID>чудеса да и только Создайте, а мы всем форумом внимательно понаблюдаем. Или опять сказано не подумав ?


Чудак-человек это наверное для вас чудеса... Конечно если вам и под досом больше 600Кб не удавалось получить то вполне может быть...
Не все кто уехал, предал Россию.
Re[13]: Блокировка запуска приложений
От: TarasCo  
Дата: 18.01.07 12:19
Оценка: 1 (1) +2 :)
http://rsdn.ru/Info/rules.xml

"Не допускается проявление грубого или неуважительного отношения к другим участникам форума. Оскорблять и обзывать собеседника, ставить под сомнение его профессиональную квалификацию, придираться к его нику, указывать на орфографические и синтаксические ошибки и т. д. запрещается."

Предлагаю не ставить под сомнение профессионализм ув. AWW, дабы не нарушить правила, а просто обратиться к ув. модераторам с нижайшей просьбой забанить участника за нарушение правил форума. IMHO Андрей вместо того, чтобы серьезно участвовать в конференции просто прикалывается и намерено провоцирует участников на нарушения правил.
Да пребудет с тобою сила
[от модератора]
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 18.01.07 15:49
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

SS>>Пожалуйста, объясните мне: для каких типов объектов, кроме файловых, нужно установить атрибуты доступа, чтобы контролировать процедуру запуска процесса? Я просто не в курсе, потому и написал про NTFS.


AWW>Я вообще ничего не понял, вы простите на грубом слове несёте какой то детский лепет — Что такое "контролировать процедуру запуска процесса" Вы простите про что?


5. не допускается... — модератор

SS>>Да, можно разграничить для уже присутствующих в системе файловых объектов, но не для вновь появляющихся в следствие монтирования новых томов.


AWW>Опять какой-то детский сад — да легко! Ну ура, и не раз уже делалось...

убедительная просьба или разъяснять свою позицию до уровня детского сада (т.е. с примерами для детсадовцев и ссылками) или прекратить нарушать пункт правил выше — модератор
... << RSDN@Home 1.2.0 alpha rev. 655>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[13]: Блокировка запуска приложений
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 18.01.07 16:03
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

IID>>Демагогия. Сергей задал конкретный вопрос, а вы ему гнете пальцы про 15 лет

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

Андрей мне кажется я понимаю куда ты клонишь — но по-моему уже пора перестать трактовать про шаманов и провоцировать форум, а написать что именно имелось ввиду и какие там ограничения (а они есть).

IID>>чудеса да и только Создайте, а мы всем форумом внимательно понаблюдаем. Или опять сказано не подумав ?

AWW> Чудак-человек это наверное для вас чудеса... Конечно если вам и под досом больше 600Кб не удавалось получить то вполне может быть...

по всем формальным признакам стоит выписать небольшой бан в профилактических целях, но мне не хочется лишать одну из сторон права защитить свою позицию. Посему предлагаю либо прекратить флуд про детсад и шаманов либо обсудить "имеющееся уже много лет решение" нормально — без эмоций и взаимных подколок. В противном случае дискуссия будет порезана и большей частью уедет в мусор как не имеющая смысла — модератор
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re: [от модератора]
От: Andrew.W Worobow https://github.com/Worobow
Дата: 18.01.07 16:11
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

Упс... Прошу прошения, за некоторую резкость. Постараюсь больше не оскорблять уважаемое собрание своими "приколами" ...

Но вообще-то я всегда только респонсирую... если посмотреть внимательно...

А так я добрый... и пушистый.
Не все кто уехал, предал Россию.
Re[2]: Блокировка запуска приложений
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 18.01.07 16:30
Оценка:
Здравствуйте, Sergey Storozhevykh, Вы писали:

SS>Для того, чтобы удовлетворить условиям вашего ТЗ, достаточно перехватить операцию открытия исполняемого файла. Т.е. предлагается контролировать процедуру открытия файлов на исполнение (FILE_EXECUTE). Соответственно, корректно это решается с помощью (мини)фильтра файловой системы. Можно, конечно, и ZwCreateFile перехватить, но этот вариант обладает уязвимостью (если делать в лоб).


насколько я помню, перехват в классическом (НТ4+) фильтре IRP_MJ_CREATE с целью контролировать FILE_EXECUTE приведет к следующей проблеме: невозможно отличить когда файл, скажем executable PE Image, имеющий право быть запущенным в т.ч. — просто открывается для чтения\MMF доступа или когда его реально хотят открыть с целью запуска

лучше уж сразу смотреть за созданием process' backed section и соотв. наводить контроль в этом месте — ZwCreateSection
... << RSDN@Home 1.2.0 alpha rev. 655>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: Блокировка запуска приложений
От: Ivan Россия www.rsdn.ru
Дата: 18.01.07 18:16
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

VAB>лучше уж сразу смотреть за созданием process' backed section и соотв. наводить контроль в этом месте — ZwCreateSection

каким образом "смотреть" ? пропатчив SDT ? тогда будут проблемы с поддержкой x64 платформ,
может быть в варианте с фильтром файловой системы можно использовать какую-то эвристику для определения того, что это именно CreateProcess
Re[3]: Блокировка запуска приложений
От: IID Россия  
Дата: 18.01.07 18:19
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:


VAB>лучше уж сразу смотреть за созданием process' backed section и соотв. наводить контроль в этом месте — ZwCreateSection


а еще проще смотреть за ZwResumeThread, хоть это и хуки, которые вы нам несоветовали
kalsarikännit
Re[4]: Блокировка запуска приложений
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 18.01.07 18:41
Оценка:
Здравствуйте, Ivan, Вы писали:

VAB>>лучше уж сразу смотреть за созданием process' backed section и соотв. наводить контроль в этом месте — ZwCreateSection

I>каким образом "смотреть" ? пропатчив SDT ? тогда будут проблемы с поддержкой x64 платформ,
про 64 бита в ветке не было требования пока, хотя согласен — там делается иными способами

I>может быть в варианте с фильтром файловой системы можно использовать какую-то эвристику для определения того, что это именно CreateProcess

может быть. Согласен, вариантов решения может быть много, просто предложенный выше один из самых быстрых в реализации + собственно замечание было вызвано оригинальным текстом Сергея про решение на отлов FILE_EXECUTE в момент открытия и не более.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[4]: Блокировка запуска приложений
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 18.01.07 18:41
Оценка:
Здравствуйте, IID, Вы писали:

VAB>>лучше уж сразу смотреть за созданием process' backed section и соотв. наводить контроль в этом месте — ZwCreateSection


IID>а еще проще смотреть за ZwResumeThread, хоть это и хуки, которые вы нам несоветовали

по разным причинам может быть не проще. Кстати ZwCreateSection — естественно тоже хуки, кототорых я по-прежнему не советую
Автор: Valery A. Boronin
Дата: 16.08.06
если есть официальные пути решения, т.е. без серьезной на то причины. А причина вроде невозможности отловить нечто необходимое другим (легальным) способом, согласитесь, может тянуть на серьезную, не так ли?

Кстати в FAQ
Автор: Valery A. Boronin
Дата: 16.08.06
именно об этом случае и говорится — см. когда хуки оправданны — пункт 3.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[5]: Блокировка запуска приложений
От: Andrew.W Worobow https://github.com/Worobow
Дата: 18.01.07 20:15
Оценка: 126 (13)
Здравствуйте, Valery A. Boronin, Вы писали:


VAB>А причина вроде невозможности отловить нечто необходимое другим (легальным) способом, согласитесь, может тянуть на серьезную, не так ли?


Валера, на самом деле есть совершенно легальный путь, причем начиная с 2000'ых... Вот только народ постоянно путает security и safety... А разница между ними как между замком с контролькой и навороченным банковским... А по сути, все эти "блокировки запуска" не более чем защита от дурака...


Вот если уж кому надо, но только имейте ввиду, это не безопасность!

создайте в разделе \\Registry\\MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\AppCertDlls

ключ с именем AppSecDll типа REG_EXPAND_SZ, куда положите, что-то типа %SystemRoot%\system32\<ваша>.dll... На самом деле их там может быть много, имейте это ввиду.

В этой вашей dll'ке должна быть точка входа CreateProcessNotify ...

NTSTATUS CreateProcessNotify ( LPCWSTR lpApplicationName, ULONG Reason );

Reason всегда будет —

либо APPCERT_IMAGE_OK_TO_RUN = 1
либо APPCERT_CREATION_ALLOWED = 2 или APPCERT_CREATION_DENIED = 3

при вызове с APPCERT_IMAGE_OK_TO_RUN, вас как бы спрашивают "этот имедж ОК или нет"

Если вас программа устаривает то верните STATUS_SUCCESS, не устаривает верните STATUS_UNSUCCESSFUL...

при вызове с APPCERT_CREATION_ALLOWED или APPCERT_CREATION_DENIED, вас уведомляют об результатах голосования...

То есть — если APPCERT_CREATION_ALLOWED то процесс с этим именем будет образован, ну и если APPCERT_CREATION_DENIED то соответсвенно нет.

Даже если вы вернули APPCERT_IMAGE_OK_TO_RUN, а другая после вас загруженая такая же dll на этот образ вернет APPCERT_CREATION_DENIED, то будет действовать последний резьюм. Ну и наоборот.
Не все кто уехал, предал Россию.
Re[3]: Блокировка запуска приложений
От: Sergey Storozhevykh Россия  
Дата: 19.01.07 07:30
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

VAB>насколько я помню, перехват в классическом (НТ4+) фильтре IRP_MJ_CREATE с целью контролировать FILE_EXECUTE приведет к следующей проблеме: невозможно отличить когда файл, скажем executable PE Image, имеющий право быть запущенным в т.ч. — просто открывается для чтения\MMF доступа или когда его реально хотят открыть с целью запуска


Скорее всего вы имеете в виду проблему с LoadLibraryEx(LOAD_LIBRARY_AS_DATAFILE). Это API некорректно устанавливает атрибут исполнения в DesiredAccess при открытии файла, вследствие чего возможны ложные срабатывания. Это заметно напрягает, например, когда Explorer при отображении содержимого каталога запрашивает иконки из ресурсов бинарников.

А так, корректно написанная программа должна указывать FILE_EXECUTE только если она действительно хочет исполнить файл, FILE_READ — когда читать.
Re[6]: Блокировка запуска приложений
От: Sergey Storozhevykh Россия  
Дата: 19.01.07 11:27
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>создайте в разделе \\Registry\\MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\AppCertDlls


AWW>ключ с именем AppSecDll типа REG_EXPAND_SZ, куда положите, что-то типа %SystemRoot%\system32\<ваша>.dll... На самом деле их там может быть много, имейте это ввиду.


AWW>В этой вашей dll'ке должна быть точка входа CreateProcessNotify ...


Интересно. Пожалуй, это самый простой сбособ получить требуюмую функциональность. По крайне мере, проще, чем писать файловый фильтр . Но, как и в случае фильтра, требуется разрабатывать свой модуль, реализующий защитный механизм. Так что полностью встроенными средствами, по-видимому, никак?

AWW>NTSTATUS CreateProcessNotify ( LPCWSTR lpApplicationName, ULONG Reason );


Ну остается только добавить, что соглашение о вызовах — STDCALL.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.