Системный администратор
0,0
рейтинг
21 августа 2010 в 03:36

Администрирование → Windows XP Home без антивирусов tutorial

Недавно прочитал топики "Windows-компьютер без антивирусов" и "Настройка групповых политик ограниченного использования программ в Windows 7"… И подумал «А ведь не мало мелких и средних компаний используют Windows XP Home Edition, а там такие трюки не прокатят.» Поэтому сегодя хочу поделиться, как я настраивал Windows XP Home Edition, чтобы не использовать антивирусы, а точнее свести к минимуму вероятность заражения.

Все началось с того, что в одной конторе, что я до не давнего времени обслуживал, постоянно были проблемы с вирусами. На антивирусы начальство денег давать не хотело, везде стояли хоумы, автозапуски с дисков и флешек были заблокированы, IE тоже… Но это не помогало. В конце концов мне все это надоело и я пошел на «крайний шаг»…

В Windows есть возможность создать «белый» или «черный список». «Черный список» подразумевает, что программы занесенные в него запускаться не будут, а «белый», что запускаться будут только те программы, которые занесены в него + необходимые для работы системы.


«Белый список»


Основываясь на «белом списке», можно сделать не плохую защиту от малвари. Чтобы его создать нужно выполнить, как минимум, два шага:
  1. В ветке реестра HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVerson\Policies\Explorer нужно создать параметр RestrictRun типа DWORD (REG_DWORD) со значением 1.
  2. В ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ создать ключ RestrictRun, а в нем параметр 01 типа STRING (REG_SZ) со значением regedit.exe.
Чтобы изменения вступили в силу, нужно перезагрузить компьютер.

ВАЖНО! Если выполнить пункт 1, но НЕ выполнить пункт 2, то после перезагрузки вы не сможете запустить никакую программу. Чтобы это исправить, вам нужно будет войти под другим пользователем с админскими правами, открыть редактор реестра, найти в ветку HKEY_USERS, выделить ее, выбрать меню Файл -> Загрузить куст..., в диалоге открытия файла найти файл NTUSER.DATв каталоге юзера, под именем которого был сделан этот косяк, и нажать кнопку «Открыть». После чего найти и удалить параметр RestrictRun либо присвоить ему значение 0, а потом перезагрузиться.
Спасибо xn__p2a

В дальнейшем можно добавлять программы в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun аналогично пункту 2. При этом перезагрузка уже не нужна, изменения вступают в силу сразу.

Чтобы не лезть в редактор реестра каждый раз, я создал reg-файл, в который занес список программ и в дальнейшем, по мере необходимости, подправлял его, а после правки запускал.
Ниже приведу небольшой кусочек этого файла:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"RestrictRun"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
"0"="regedit.exe"
"1"="notepad.exe"
"2"="wupdmgr.exe"
"3"="cleanmgr.exe"
"4"="wordpad.exe"
"5"="calc.exe"
"6"="mstsc.exe"
"7"="taskmgr.exe"
"8"="7zFM.exe"
"9"="7zG.exe"
"10"="7z.exe"
"11"="firefox.exe"
"12"="java.exe"
"13"="FlashUtil10d.exe"
"14"="NPSWF32_FlashUtil.exe"
"15"="thunderbird.exe"
"16"="soffice.exe"
"17"="soffice.bin"
"18"="python.exe"
"19"="sbase.exe"
"20"="scalc.exe"
"21"="sdraw.exe"
"22"="simpress.exe"
"23"="smath.exe"
"24"="swriter.exe"
А сам файл целиким можно скачать тут. Однако, стоит имейть ввиду, что мой вариант вряд ли подойдет вам. У меня же файлы различались от компа к компу, но обычно первые 24 проги были всегда.


Недостатки

  1. Данный метод не защитит компьютер от вирусов, которые не создают файлы на диске (например, мс-бласт), а также от проникающих путем «запуска» динамической библиотеки2 (например, конфикер).
  2. Сложность реализации. Приходится исследовать3 программы, выяснять какие файлы они запускаю при старте и в процессе работы, чтобы их так же включить в «белый список».
  3. Неудобство внесения изменений. В ключ RestrictRun юзер писать не может, не смотря на то, что изменения призводятся в ветке HKEY_CURRENT_USER. Поэтому приходится выходить из под учетной записи юзера, входить под админом, давать юзеру админские права, входить под юзером, вносить правки в реестр, опять выходить, снова входить админом, отбирать админские права у юзера %) Либо же из под админа через ветку HKEY_USERS, как было описано выше.
  4. Нельзя указать полные пути. Если файл вируса будет называть так же, как какая-нибудь программа из «белого списка», то он (вирус) будет запущен. Так же юзер может сам переименовать файл в разрешенный и запускать таким образом (почти) любые программы.

Практика


За два года использования данного «трюка» вирусов замечено не было. На каждом компе стоял ClamWin, который по вечерам сканировал диски. Так же раз в месяц я проверял системы антивирусами в оффлайне. Единственная проблема — недовольство юзеров, которое было быстро пресечено путем объяснения начальству «что, для чего да как».


«Черный список»


Раз заикнулся в начале о «черном списке», то расскажу немного и про него. Он может быть полезен, когда надо запретить запуск нескольких программ. Создается он так же, как и «белый список», в два шага:
  1. В ветке реестра HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVerson\Policies\Explorer нужно создать параметр DisallowRun типа DWORD (REG_DWORD) со значением 1.
  2. В ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ создать ключ DisallowRun, а в нем параметр 01 типа STRING (REG_SZ) со значением, например, чтобы запретить запуск калькулятора, calc.exe.
Чтобы изменения вступили в силу, нужно перезагрузить компьютер.




1 Названия параметров должны состоять из чисел. Отсчет начинается с нуля. Числа должны идти по порядку.
2 Винда контролирует запуск прог за счет того, что функции ShellExecute и ShellExecuteEx, которые являются «оберткой» для CreateProcess, проверяю ключ RestrictRun. Таким образом предложенный метод защитит только от несанкционированного запуска программ только самим пользователем, а так же от тех вирусов, которые пытаются что-то запустить через ShellExecute (коих большинство). Подробнее про ShellExecute и RestrictRun можно почитать тут (там речь идет про LockWin, но сам механизм работы RestrictRun описан хорошо).
Спасибо shiko_1st.
3 Для исследования я использовал программы Process Explorer и Process Monitor от Марка Руссиновича (Mark Russinovich).

UPD1: Для ограничения запуска программ только из Program Files можно использовать утилиту SteadyState от Microsoft. Спасибо kondorkm

UPD2: Для управления правами доступа в домашней винде в состав входит консольная утилита cacls.exe, а так же:
xcacls.vbs — скачивается с сайта MS
xcacls.exe — входит в пакет Windows Support Tools
subinacl.exe — входит в пакет Windows Resource Kit Tools
Спасибо xn__p2a
Angel2S2 @Angel2S2
карма
119,0
рейтинг 0,0
Системный администратор
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (98)

  • +31
    Недели чистых окон на хабре
  • +2
    > Нельзя указать полные пути. Если файл вируса будет называть так же, как какая-нибудь программа из «белого списка», то он (вирус) будет запущен. Так же юзер может сам переименовать файл в разрешенный и запускать таким образом (почти) любые программы.

    Всегда радовал этот идиотизм.

    А вообще это так удобно, когда можно юзеров деражать под собственно юзерами… На прошлой работе использовалась какая то странная программа, представляющая собой обертку для базы данных, которой для работы категорически необходимы были административные права…
    • 0
      Их куча, на самом деле.
      Запсибкомбанк, клиент для работы с пластиковыми картами — ставится исключительно в корень системного диска, требует прав на запись в свою папку и в windows/system32
      Маленькая утилитка проверки валидности отчетов для налоговой (представляет собой, насколько я понял, просто парсер XML-файлов, который проверяет синтаксис) — при установке требует прав на запись в windows/system32, в процессе работы меняет файлик, записанный туда, стало быть — тоже требует прав на запись.
      Тысячи их.
      • +2
        Не пробовали виртуализовать приложения, например, с помощью App-V или ThinApp? Говорят, помогает.
      • +1
        Можно дать права на запись только этого файла, а не на всю папку system32
        • 0
          Интересно, как вы дадите права на запись в Windows XP Home? Речь же о нем…
          • +1
            В Windows Home Edition нет просто вкладки в GUI (а именно в свойствах папок/файлов в Explorer) для настройки разрешений NTFS. А у самих объектов файловой системы при этом таблицы доступа (ACL) всё равно есть. А значит и настроить права доступа к файлам/папкам можно.

            В частности это можно сделать родными виндовыми утилитами командной строки или скриптами: cacls.exe, xcacls.exe, xcacls.vbs, subinacl.exe и др.
            • 0
              Спасибо, не знал. Поставил щас хоум на виртуалку… calcs.exe действительно есть о_О
              Но остальных нету.

              Т.ж. проверил безопасный режим… Все верно. Еще раз спасибо. Сэкономили мне кучу времени и нервов на будущее :)))
              • 0
                > calcs.exe действительно есть
                > Но остальных нету.

                Что-то вы не то нашли, с порядком буковок повнимательнее. В основе названия утилит аббревиатура ACL (access control list), а вовсе не calc (калькулятор).

                cacls.exe — есть в базовой поставке системы, начиная с Win2k;
                xcacls.vbs — скачивается с сайта MS;
                xcacls.exe — входит в пакет Windows Support Tools;
                subinacl.exe — входит в пакет Windows Resource Kit Tools;
                ну или всё скачивается по отдельности с сайта MS.
                • 0
                  Все в порядке :) Это я тут не верно написал, а в винде вводил cacls :)

                  Теперь понятно все. Спасибо. Плюс вам в карму :)
                  (не являюсь пользователем винды, поэтому не знал)
                  • 0
                    Да я в общем-то тоже дома под линуксом сижу. Винды щупаю только на работе.
          • 0
            ктстаи, в home вкладка «безопасность» появляется, если загрузиться в безопасном режиме.
            • 0
              ну вот, долго писал
          • +1
            Кстати, вкладки Security в свойствах папок и файлов не видно потому, что в Explorer включен режим Simple File Sharing. В WinXP Pro этот режим тоже включен по умолчанию, но там его можно отключить в настройках вида Explorer'а. А в WinXP Home режим Simple File Sharing по умолчанию включен и штатно не выключается.

            Однако, можно загрузить WinXP Home в безопасном режиме (Safe Mode), а в этом режиме Simple File Sharing отключен. Т.е. таким образом даже в WinXP Home можно будет настроить разрешения объектов NTFS через вкладку Security в свойствах папок/файлов в Explorer'е.
      • 0
        да поставь ты эту хуйню налоговую в виртуальную машину и не парься
        • 0
          На виртуалку отдельная лицензия нужна ;)
          • 0
            я не знаю почему здесь на хабре все прикидываются добрыми и пушистыми и делают вид и пишут о том, что они юзают только лицензионный софт
            я ведь знаю что все эти люди блефуют
            • 0
              Ваше мнение = ваше право ;)
              Лично мне свобода дороже халявы!
              • 0
                вот не верю я что у вас все лицензионное
                особенно дома
                • 0
                  В том офисе, о котором речь в посте, только лицензионное ПО. Винду и 1С купили, а остальное либо бесплатное либо OpenSource. Сервера там не в моей компетенции, поэтому не знаю как с ними дела. Хотя те что я поднимал были на Linux'е.

                  Дома у меня два ноута, оба шли с виндой. На текущем стоит виста (просто не стал сносить) и Linux. На втором ноуте сейчас стоит только Linux, ноут юзает мама.
                  Вот щас подумывают над тем, чтобы содрать со второго ноута наклейку винды и перелепить на текущий и поставить винду домашнюю в виртуалку. Знаю, что это будет нарушением лицензии (oem), но все же винде не пиратская будет.
                  • 0
                    ну то что на ноутах лицуха это стопудово, да
                    а на стационарниках никогда лицуха не стоит, если только стационарник не от hp? dell или еще кого-нить брендированного
                    • +1
                      А в чем проблем купить самому? Или когда комп покупаешь, сказать чтобы лицуху поставили?
                      • 0
                        проблема в отсутствии лишних денег на необязательные товары
                        • +1
                          Если ты юзаешь винду, то она не может быть не обязательным товаром. А если нет денег, то юзай бесплатную/свободную альтернативу. Юзать пиратский софт — тоже самое, что воровать.

                          // на правах имхо
                          • 0
                            вы так говорите, как будто и правда так считаете
                            я думаю вы просто на публику так говорите
                            неужели вы станете винду покупать для дома?
                            • 0
                              Да, я именно так считаю.
                              Для дома я ее не стану покупать, ровным счетом, как и использовать!
                              • 0
                                вы и начинали с линукса сразу что ле?
                                • 0
                                  Нет. Лет 10 я пользовался виндой. На первом компе была пиратка. Тогда просто не где было купить лицензионную, а про покупки через инет я еще не знал. Потом комп сломался. Полгода просидел без компа, а потом купил свой первый ноут, на котором была домашняя хрюшка лицензионная. 2.5 года назад перешел на линукс, в чем ничуть не жалею.

                                  Почему вас удивляют люди, которые используют только лицензионный софт? Это хе тоже самое, что покупать, например, продукты питания в магазине. Вы ведь их не воруете, а именно покупаете. ПО, музыка, фильмы да и любой другой цифровой товар это же точно такой-же продукт, хоть и не имеет объема, массы, веса (носители информации не в счет, их можно сравнить с упаковкой). Если бы продукты питания можно было закачать себе в холодильник через интернет, вы бы использовали пиратские продукты?
                                  • 0
                                    конечно использовал бы
                                    да и если бы на улице куча продуктов лежала бы то брал бы оттуда
                                    и другие люди я уверен то же брали
                                    деньги и так найдется куда тратить
                                    • +1
                                      Ну вот… Как всегда… О последствиях думают в последнюю очередь. На примере продуктов: «пиратские» продукты могут быть вредны для здоровья (и, наверняка, будут)! А софт… За него можно за решетку попасть.

                                      Ключевое слово «лежала-бы»! Софт то не лежит, он продается, как и продукты питания. Ваш пример можно ассоциировать только(!) с бесплатным и свободным софтом, но ни как не с платным (та же винда).
                                      Другой пример — вы сядете в машину, которая будет стоять на улице с открытыми дверями и, в которой будут висеть ключи в замке зажигания?

                                      А на счет большинства людей… Большинство людей никогда не думают о последствиях заранее и не умеют правильно распоряжаться своим временем и деньгами. А так же большинство мучает «жажда» денег. Так же большинство не могут четко и сразу ответить на простой вопрос — зачем им куча денег. Им их хочется и все, как ребенку хочется новую игрушку.
                                      • 0
                                        На счет машины подразумевал «сесть и уехать», т.е. забрать себе.
                                      • 0
                                        лицензия стоит дороже пираток вот и проигрывает чисто экономически
                                        будет наоборот — все будут покупать лицуху
                                        just bussiness
                                        • +1
                                          Знаете, «лицензионная» жена/девушка тоже довольно часто обходится дороже «пиратской» (проститутки). Ведь жену/девушку надо кормить, одевать, выхаживать, дарить подарки и т.д. и т.п. Но вы же не пользуетесь проституткой.
                                          Так же и с софтом. Покупая лицензионный софт вы получаете (в большинстве случаев) бесплатную поддержку, обновления и т.п. А так же экономите свои нервы (до моего знакомого как-то в аэропорту менты докопались на счет ноута и лицензионности софта на нем, благо он юрист и у него все лицензионное). С пираткой одни нервотрепки. Никаких обновлений нормальных (та же винда), с антивирями постоянно приходится искать ключи, и т.д. и т.п.

                                          Вы не правы, имхо. Например, в Германии 90-95% всех людей используют лицензионное ПО, а цены там на софт почти такие же как у нас (ну немного ниже). Почему? Потому что они воспитаны по другому, они с детства приучены, что воровать не хорошо. А в России, к сожалению, нет.

                                          На этом предлагаю свернуть нашу дискуссию ибо не вижу смысла ее продолжать…
              • 0
                да только хомяка в конторе нельзя использовать!!! объяснять почему не надо я надеюсь?
                так что на счет всего лицового вы простите не правы
        • 0
          Да я так и сделал :-)
    • 0
      Еще можно контролировать процессы можно с помощью *.vbs сценариев. Проверять эти файлы на размер и много много другой байды-самопальный антивирус можно слепить
      • 0
        Проще, на мой взгляд, написать не большую программку, которая будет проверять по списку запускаемые exe'шники (md5, полный путь). Ее добавить в правила запуска *.exe файлов. И все дела. Получаем тот же RestrictRun, только понавороченнее. Хотя работать это будет, как мне кажется, медленнее.
  • 0
    Простите, а есть корпоративные версии Home Edition до сих пор?
    А не проще было бы обновить версии до Pro? )
    • +4
      >На антивирусы начальство денег давать не хотело

      На Pro думаю тем более
      • 0
        Правильно думаете! :)
    • 0
      А чем лучше Про?
      • 0
        > А чем лучше Про?

        — не кастрированная (по набору утилит, групповым политикам и ряду других возможностей);
        — может без шаманств и нелегальных хаков присоединяться к Windows-домену (AD).
        • 0
          а кому ваш этот домен надо? как не зайду в тему про винду -так везде домен и суют…
          • +1
            Ну если речь про корпоративную среду, где инфраструктура построена на AD, то там это нужно. В таких средах обычно вся аутентификация и доступ к ресурсам, задачам и информационным системам построены на AD-аутентификации.
          • +1
            AD без домена не работает. Для винды AD оооочень удобная штука для ценрализованного управления.
    • 0
      Эммм, так подождите, а разве Home по лиц.соглашению можно использовать на предприятиях? Вроде как только Pro
      • +1
        Можно.
      • +3
        habrahabr.ru/blogs/it-infrastructure/101786/#comment_3157389
        «Согласно лицензионному соглашению с конечным пользователем (End User License Agreement) настольной операционной системы Windows XP Home Edition, нет ограничений на использование данного программного продукта в организациях. Однако нужно иметь в виду, что данный продукт предназначен в первую очередь для домашних пользователей и не имеет необходимых для бизнес-пользователей функциональных и технических возможностей, например, возможности работы в домене. » C уважением, Леонтьева Марина Центр Информационной и Технической поддержки Microsoft
    • +3
      Корпоративной Windows XP Home Edition отродясь не было. Этот вариант лицензии доступен только для версии Windows XP Professional.
      • +3
        Надо же, кому-то не понравилась правда жизни.
  • +2
    а злобный код, переименованный в firefox.exe такая схема пропустит
    • 0
      Все верно. Об этом было сказано в пункте 4 раздела «Недостатки».
      • 0
        к счастью, такая защита отлично подойдет для бухгалтерии. и вероятность совпадения названия злобного файла с одним из вышеперечисленных стремится к нулю.
        к тому же, бухгалтера никогда не будут экспериментировать. для них — «не работают другие файлы», значит что они не работают совсем ни при каких обстоятельствах :)
        • 0
          Да, верно. Вероятность стремится к нулю. А те, которые называют себя, например, svchost.exe не запустятся, т.к. их нет в белом списке, а родные свои винда знает и запускает без проблем :)

          Когда запускаешь файл, которого нет в белом списке, выскакивает диалоговое окно «Запуск запрещен администратором» (дословно не помню).
          • 0
            я б залез в библиотечку и поменял надпись «Запуск запрещен администратором» на чтонибудь вроде «сегодня отличный денёк остаться без работы». действует безотказно :)
            • +3
              мне всегда нравился вариант с автоматическим распечатыванием в кабинете директора заявлением на увольнение при попытке запуска того, чего нельзя. делается элементарно несколькими строчками кода в script host.

              здесь, понимаете, эффективнее играть на страхах пользователей, нежели пытаться построить вавилонскую башню.
            • 0
              Никто не мешает, делайте =)
              Если не ошибаюсь, то это в ресах user32.dll или shell32.dll
  • 0
    Хорошая статья для не больших офисов. Если род деятельности компании обширный и количество ПК велико, то к сожалению такой вариант не поможет. За статью спасибо попробую такое на моей второй работе)
  • –1
    Хороший фак, а можно огласить список, без которых Windows вообще не запустится и не даст юзеру войти под своим логином?

    Я правильно понял, что юзер может в любой момент модернизировать данный файл или стоят ограничение на его правку?
    • 0
      > юзер может в любой момент модернизировать данный файл

      только при наличии админских прав. а весь суповой набор для запуска системы, по идее, стартует без проблем, только без добавления в в белый список хотя бы редактора реестра, сделать дальше с компом мало что получится.
      • 0
        Вы верно ответили.

        У юзера нет прав на запись в данный ключ реестра (по дефолту). А необходимые для работы системы проги и так будут запускаться без лишних проблем.
  • 0
    статья интересная, однако, далеко не всегда вирус или троян — исполняемый файл, гораздо чаще они лезут через уязвимости того софта, который вы добавили в белый список.
    кроме того, перспектива использования home edition на предприятии очень сомнительна, поскольку машину нельзя ввести в домен, применять политики безопасности и оперативно орудовать учетками пользователей.
    • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Надо спросить хабранарода нет ли софта который реализует чёрные/белые списки,
    ещё бы централизованное управление реализовать, и проверку по md5.
    • 0
      Я лично не видел из бесплатных (платные не смотрел и названий уже не вспомню, но что-то такое было). Написать подобную прогу не сложно. Об этом я черкнул пару строк в комментах выше — habrahabr.ru/blogs/sysadm/102298/#comment_3176688
    • 0
      Jetico Personal Firewall можно использовать для этого (он использует SHA1).
      Правда он не бесплатный, и насчёт централизованного управления не уверен.
  • 0
    Большое спасибо за статью — с сентября на добровольных началах (в основном с целью получения опыта администрирования на практике) иду в свою бывшую школу админить, уверен, что это один из наилучших вариантов для защиты тех компьютеров, ибо ресурсов на антивирь там недостаточно однозначно)
    • 0
      Да, для школы это не только от вирей будет не плохо, но и от детишек, чтобы не запускали все подряд ;)
    • 0
      Shadow User отлично подойдёт для школы. Если денег на софт нет, функционалитет можно реализовать самостоятельно.
      • 0
        Shadow User латный и стоит не дешево и стоит от $90. Да, и кстати, его переименовали в ShadowProtect, если не ошибаюсь.
        • 0
          *платный
  • 0
    По примечанию 2.

    Запускает _любой_ процесс функция CreateProcess.

    ShellExecute — это обертка из shell32.dll, которая при передаче ей имени произвольного файла в зависимости от записей в реестре определяет, как с ним поступить (в общем случае это запуск ассоциированной программы для открытия файла).

    Таким образом, предложенный Вами метод защитит только от несанкционированного запуска пользователем, ну и от тех вирусов, которые пытаются что-то запустить через ShellExecute.
    • 0
      Все верно! Вы это даже лучше меня объяснили. Спасибо :)

      Кстати, большинство вирусов как раз через ShellExecute запускаются, т.к. программы используют стандартные возможности языка программирования. Просто CreateProcess не всем вирусмейкерам, а большинство из их, как известно, пионеры, по зубам.
      • 0
        Ну если только от ShellExecute, то проще прописать в реестр свой shell execute hook, там вам и пути к файлам, и параметры и все печенюшки.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Поправил, спасибо.
      Да, все верно. О чем я и отметил в п.4 в недостатках.
  • –1
    не большой
    не довольство

    уберите пробелы — глаза режет.
    • 0
      Исправил. Спасибо.
  • 0
    спасибо, очень нужные сведения. добавил в избранное. спасибо, что не пожалели времени и ннаписали эту статью.
  • +2
    лишать пользователей Солитера не ок
  • +2
    есть такая софтина у мелкософта windows steadystate, после установки можно запустить только то что будет находится в папке Program Files и никакой возни с реестром + ещё куча настроек
    • 0
      Ух ты… Не знал. На днях затестю. Спасибо.
  • +2
    Если честно, то этот способ защиты просто никакой.
    Способ этот существет ещё со времён Win9x и NT4, но в реальности он практически бесполезен.
    Т.е. геморроя по поддержке и регулярному изменению белого списка много, а защиты от этого мало. Всё обходится элементарным переименованием, внедрением подключаемых библиотек и т.п.
  • +1
    > В ветке HKEY_CURRENT_USER…
    > Чтобы изменения вступили в силу, нужно перезагрузить компьютер.

    Если изменения делаются в HKEY_CURRENT_USER, то перезагружать компьютер обычно нет необходимости, скорее всего достаточно будет просто перелогиниться пользователем в систему.

    > Чтобы это исправить, вам нужно будет войти под другим пользователем
    > с админскими правами, открыть редактор реестра, найти в ветке HKEY_USERS
    > подветку пользователя, под именем которого был сделан этот косяк и удалить параметр

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

    Пользовательский хайв реестра хранится в файле ntuser.dat, который лежит в корне папки с профилем соответствующего пользователя. Когда пользователь интерактивно логинится в систему (т.е. сидя локально за этим компьютером или удалённо в терминальную сессию), то его хайв реестра из его файла ntuser.dat монтируется в дерево реестра этой системы в ветку HKEY_USERS, а для именования точки монтирования обычно используется SID пользователя. Плюс тот же пользовательский хайв для удобства отображается в ветке реестра HKEY_CURRENT_USER (отображается персонально, только для данного юзера, т.е. все одновременно залогиненные пользователи видят в HKEY_CURRENT_USER свой персональный пользовательский хайв реестра, каждый свой).

    Когда же пользователь выходит из системы (делает log off), то его пользовательский хайв реестра отмонтируется от HKEY_USERS.

    Например, если вы посмотрите ветвь реестра HKEY_USERS на терминальном сервере, где одновременно залогинены много пользователей, то там вы увидете примонтированные хайвы реестра всех залогиненных в данный момент пользователей (но только залогиненных!).
    Или если в редакторе реестра вы подключитесь по сети удалённо к реестру другого компьютера, где сейчас работает один пользователь, то его пользовательский хайв реестра вы тоже увидите в HKEY_USERS.
    Но если вы на локальном компьютере завершите сеанс одного пользователя и залогинитесь другим, то в HKEY_USERS будет виден только хайв текущего залогиненного пользователя, но не завершившего только что сеанс.

    Поэтому, если вы перелогинились на той же машине под админом, то прежде, чем открывать в HKEY_USERS хайв реестра другого незалогиненного сейчас пользователя, вам его нужно будет ручками туда примонтировать. Делается это прямо в редакторе реестра regedit.exe. У меня сейчас нет машин с Windows под рукой, но поищите там в меню File пункт, в котором упоминается hive (в русской версии, возможно, «улей» или «куст»). Дальше укажете файл ntuser.dat в папке с профилем соответствующего юзера, укажете в какую ветвь реестра монтировать (рекомендуется в корень HKEY_USERS) и укажете имя точки монтирования (можете указать там имя юзера или вообще произвольный текст, главное чтобы вам понятно было). А у же далее всё, как вы написали, раскрываете эту подключенную ветвь и редактируете.
    Потом аналогичным образом (через меню редактора реестра) отключаете этот пользовательский хайв.

    Ещё можно не монтировать хайв реестра, а просто редактировать его удалённо. Т.е. в тот момент, когда на этой машине залогинен интерактивно нужный пользователь, с другой машины в сети удалённо подключиться редактором реестра к целевой машине (разумеется, от имени административной учётки целевой машины) и там уже раскрывать в HKEY_USERS ветвь залогиненного интерактивно юзера.
    Но для этого нужно, чтобы на целевой машине был запущен сервис Remote Registry, а я вообще сомневаюсь, что на WinXP Home Edition он есть.

    > Неудобство внесения изменений. В ключ RestrictRun юзер писать не может,
    > не смотря на то, что изменения призводятся в ветке HKEY_CURRENT_USER.
    > Поэтому приходится выходить из под учетной записи юзера, входить под админом,
    > давать юзеру админские права, входить под юзером, вносить правки в реестр,
    > опять выходить, снова входить админом, отбирать админские права у юзера

    Экий вы затейник. Зачем столько лишних действий?
    Что вам мешает в вашем reg-файле (допустим, RestrictRun.reg) прописать пути не через ветку HKEY_CURRENT_USER, а через ветку HKEY_USERS\{User's-SID}? SID же у одного юзера в рамках машины (или домена) единожды выдаётся и более со временем не меняется, поэтому достаточно один раз его посмотреть и прописать в reg-файле путь к соответствующей монтируемой ветке.
    А потом без всяких перелогинов и завершений сеансов текущего пользователя просто запускать на его машинке через runas от имени администратора команду: regedit.exe /s RestrictRun.reg

    Кроме того, можно юзеру дать права на изменение его ветки реестра:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
    Тогда он сможет вносить эти изменения вообще под своим юзером, без запуска через runas от имени админа.
    Но разбирающийся юзер тогда сможет сам менять эти разрешения запуска, даже не зная админского пароля. Впрочем, разбирающийся юзер и так в большинстве случаев сможет обойти эти игрушечные ограничения.
    • 0
      Можно из под админа загрузить пользовательский хайв ещё и так:
      REG LOAD HKU\Temp "C:\Documents and Settings\Username\NTUSER.DAT"
      rem do something here
      REG UNLOAD HKU\Temp
      Правда не уверен, что reg.exe присутствует во всех версиях windows. Но его можно таскать на флешке вместе с bat'ником.
    • 0
      Да, вы правы! Спасибо. Поправил статью :)
  • –1
    По моему, на дворе август 2010 и операционная система 2003 года не должна уже вспоминаться, пора использовать современное ПО, у всего есть свой срок годности.
    • 0
      Windows XP появилась в 2001 (sic!) году. :)
  • 0
    Знаю возможно глупый вопрос, на 7ке прокатит такой трюк?
    • 0
      Думаю прокатит. Но точно сказать не могу, т.к. 7-ку толком и не знаю (не пользуюсь виндой).
  • 0
    Как я понял, использование функции CreateProccessA это не ограничивает?
    • 0
      Если не изменяет память, CreateProccessA вызывает CreateProccessEx (или просто CreateProccess). Поэтому ограничивает.
      • 0
        Судя по тому как работают другие опциии эксплорера это ограничивает только ShellExecute. Можно протестировать — делов на 10 минут.
        • 0
          Этот метод работает только если программа использует ShellExecute, которая является оберткой CreateProccess, для запуска других прог.

          В предыдущем комменте я тупанул… Если прога запускает другие проги через CreateProccess (-A, -Ex), то данное ограничение работать не будет.
  • 0
    У меня большие сомнения насчёт надёжности встроенных в Windows средств ограничения на выполнение процессов. В конце концов есть куча других способов выполнить вредоносный код, кроме собственно запуска EXE.
    Первым и основным шагом должно быть ограничение прав пользователя в системе.
    • 0
      Да, у меня тоже. Но когда не дают денег это все же лучше чем ни чего.
      А про ограничения прав в домашней винде я не знал, до сегодняшнего дня (этого топика). К тому же данный топик тоже относится к ограничению прав ;)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.