Недавно прочитал топики "Windows-компьютер без антивирусов" и "Настройка групповых политик ограниченного использования программ в Windows 7"… И подумал «А ведь не мало мелких и средних компаний используют Windows XP Home Edition, а там такие трюки не прокатят.» Поэтому сегодя хочу поделиться, как я настраивал Windows XP Home Edition, чтобы не использовать антивирусы, а точнее свести к минимуму вероятность заражения.
Все началось с того, что в одной конторе, что я до не давнего времени обслуживал, постоянно были проблемы с вирусами. На антивирусы начальство денег давать не хотело, везде стояли хоумы, автозапуски с дисков и флешек были заблокированы, IE тоже… Но это не помогало. В конце концов мне все это надоело и я пошел на «крайний шаг»…
В Windows есть возможность создать «белый» или «черный список». «Черный список» подразумевает, что программы занесенные в него запускаться не будут, а «белый», что запускаться будут только те программы, которые занесены в него + необходимые для работы системы.
Основываясь на «белом списке», можно сделать не плохую защиту от малвари. Чтобы его создать нужно выполнить, как минимум, два шага:
В дальнейшем можно добавлять программы в
Чтобы не лезть в редактор реестра каждый раз, я создал reg-файл, в который занес список программ и в дальнейшем, по мере необходимости, подправлял его, а после правки запускал.
Ниже приведу небольшой кусочек этого файла:
За два года использования данного «трюка» вирусов замечено не было. На каждом компе стоял ClamWin, который по вечерам сканировал диски. Так же раз в месяц я проверял системы антивирусами в оффлайне. Единственная проблема — недовольство юзеров, которое было быстро пресечено путем объяснения начальству «что, для чего да как».
Раз заикнулся в начале о «черном списке», то расскажу немного и про него. Он может быть полезен, когда надо запретить запуск нескольких программ. Создается он так же, как и «белый список», в два шага:
1 Названия параметров должны состоять из чисел. Отсчет начинается с нуля. Числа должны идти по порядку.
2 Винда контролирует запуск прог за счет того, что функции
Спасибо 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
Все началось с того, что в одной конторе, что я до не давнего времени обслуживал, постоянно были проблемы с вирусами. На антивирусы начальство денег давать не хотело, везде стояли хоумы, автозапуски с дисков и флешек были заблокированы, IE тоже… Но это не помогало. В конце концов мне все это надоело и я пошел на «крайний шаг»…
В Windows есть возможность создать «белый» или «черный список». «Черный список» подразумевает, что программы занесенные в него запускаться не будут, а «белый», что запускаться будут только те программы, которые занесены в него + необходимые для работы системы.
«Белый список»
Основываясь на «белом списке», можно сделать не плохую защиту от малвари. Чтобы его создать нужно выполнить, как минимум, два шага:
- В ветке реестра
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVerson\Policies\Explorer
нужно создать параметрRestrictRun
типа DWORD (REG_DWORD) со значением1
. - В ветке
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
создать ключRestrictRun
, а в нем параметр0
1 типа 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 проги были всегда.Недостатки
- Данный метод не защитит компьютер от вирусов, которые не создают файлы на диске (например, мс-бласт), а также от проникающих путем «запуска» динамической библиотеки2 (например, конфикер).
- Сложность реализации. Приходится исследовать3 программы, выяснять какие файлы они запускаю при старте и в процессе работы, чтобы их так же включить в «белый список».
- Неудобство внесения изменений. В ключ
RestrictRun
юзер писать не может, не смотря на то, что изменения призводятся в веткеHKEY_CURRENT_USER
. Поэтому приходится выходить из под учетной записи юзера, входить под админом, давать юзеру админские права, входить под юзером, вносить правки в реестр, опять выходить, снова входить админом, отбирать админские права у юзера %) Либо же из под админа через веткуHKEY_USERS
, как было описано выше. - Нельзя указать полные пути. Если файл вируса будет называть так же, как какая-нибудь программа из «белого списка», то он (вирус) будет запущен. Так же юзер может сам переименовать файл в разрешенный и запускать таким образом (почти) любые программы.
Практика
За два года использования данного «трюка» вирусов замечено не было. На каждом компе стоял ClamWin, который по вечерам сканировал диски. Так же раз в месяц я проверял системы антивирусами в оффлайне. Единственная проблема — недовольство юзеров, которое было быстро пресечено путем объяснения начальству «что, для чего да как».
«Черный список»
Раз заикнулся в начале о «черном списке», то расскажу немного и про него. Он может быть полезен, когда надо запретить запуск нескольких программ. Создается он так же, как и «белый список», в два шага:
- В ветке реестра
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVerson\Policies\Explorer
нужно создать параметрDisallowRun
типа DWORD (REG_DWORD) со значением1
. - В ветке
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\
создать ключDisallowRun
, а в нем параметр0
1 типа 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