Pull to refresh

Windows XP Home без антивирусов

System administration *
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
Tags:
Hubs:
Total votes 104: ↑80 and ↓24 +56
Views 14K
Comments 98
Comments Comments 98