Malicious Software logo

Борьба со зловредами штатными средствами Windows: быстро, недорого, эффективно

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

Анатомия зловреда

Зловреды (или malware, т.е. malicious software, что переводится как раз как «Зловредное ПО») – широкий класс программ, цель которых – сделать что-то нехорошее на вашем компьютере или с применением его. К этому классу относятся вирусы, трояны, шпионские программы – все то, чего любой пользователь (особенно тот, который хранит на компьютере результаты своей работы или конфиденциальную информацию) боится как огня. Зловреды могут зашифровать ваши файлы и требовать оплаты для их расшифровки, может отправлять кому-то файлы с вашего рабочего стола, скриншоты, может осуществлять с вашего компьютера пересылку запрещенной информации или атаки на другие сети – все эти варианты в конечном итоге ничего хорошего пользователю не принесут.

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

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

Инструменты борьбы – что выбрать?

Сразу оговоримся — если вы пользуетесь компьютером крупной компании, где весь интернет-траффик проверяется корпоративными антивирусами с использованием вирусных баз разных поставщиков антивирусных решений и строгим списком клиентских приложений, имеющих права на доступ в Интернет, то все нижеописанные меры предосторожности излишни – все уже сделано за вас. В случае же, когда ваша компания не позаботилась должным образом о безопасности сети (или же никакой компании нет, а о безопасности заботитесь вы сами), самым простым и действенным способом  защиты является настройка локального файрвола (firewall) – системной программы, чьей основной задачей является контроль за трафиком и его ограничение.

На рынке представлено достаточно много платных и бесплатных firewall-решений с большим или меньшим функционалом и более или менее удобным интерфейсом. Но здесь есть несколько «но». Во-первых, платные программы стоят денег, что уже для кого-то является ограничивающим фактором. Во вторых, существует ненулевая вероятность, что эти программы (особенно бесплатные, хотя и с платными никто ни от чего не застрахован, читайте, например, информацию Bloomberg про продукты Kaspersky) сами выполняют шпионские функции. Что в принципе логично:  т.к. работа антивируса и файрвола никакими другими программами не контролируется, они постоянно передают на сервера производителей информацию с компьютера на котором установлены, скачивают новые обновления и имеют доступ к чтению файлов пользователя, интернет-траффика, оперативной и видеопамяти, то разновидность шпионажа – их нормальное поведение, и доказать то, что эта активность служит каким-либо зловредным целям, практически невозможно.

Что же делать в этой непростой ситуации? Для пользователей операционных систем Microsoft ответ лежит на поверхности – во все экземпляры MS Windows уже встроен локальный файрволл, он бесплатный и вполне поддается настройке. Конечно, вопрос о том, что этот файрволл тоже может шпионить за пользователями, остается в силе. Но, выбрав эту операционную систему, пользователь уже на 100% доверился корпорации Microsoft, так что если Корпорация шпионит за пользователем, то использование еще одной программы от Microsoft вряд ли драматически повлияет на этот факт.  Так что основная часть нашей статьи будет посвящена настройке встроенного в Windows файрволла с целью решить обозначенные выше задачи безопасности.

Запрещаем и разрешаем

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

Для настройки файрволла можно использовать его GUI настройки, а можно пользоваться командной строкой. Второй способ особенно хорош для тех случаев, когда вы хотите создать распространяемый командный файл, который сможет разом применить все эти настройки на другом компьютере (в сетях, где компьютеры объединены в домен, есть более эффективные способы распространять политики, но это уже за рамками нашей статьи). Мы будем рассматривать оба способа.

Итак, первое, что нам нужно сделать – это создать правило, которое просто запретит всем программам доступ в Интернет. В интерфейсе настройки файрволла это делается так:

  • Открываем оснастку Windows Firewall with Advanced Security и на главной странице смотрим активный профиль.

Windows Firewall with Advanced Security

  • Далее в окне Actions выбираем Properties.

img-2

  • В открывшемся диалоговом окне напротив Inbound и Outbound connections – Block.

img-3

В командной строке команда для запрета трафика будет выглядеть следующим образом:

Set-NetFirewallProfile -all -DefaultInboundAction Block -DefaultOutboundAction Block

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

К программам, которые должны иметь доступ в Интернет, в первую очередь можно отнести веб-браузеры – Internet Explorer, Google Chrome, Mozilla Firefox. На примере Internet Explorer рассмотрим создание соответствующего исключения в интерфейсе файрволла.

  • В уже упомянутой оснастке, в секции Outbound Rules (В статье все правила применяются к исходящему трафику) щелкаем правой кнопкой мыши и выбираем “New Rule”

img-4

  • В открывшемся окне выбираем тип правила – Program.

img-5

  • Указываем путь к исполняемому файлу, в нашем примере это Internet Explorer.

img-6

  • Далее разрешаем подключение.

img-7

  • Указываем профиль, для которого данное правило применится, по умолчанию выбраны все сетевые профили.

img-8

  • В конце указываем имя для данного правила.

img-9

В командной строке команда открытия трафика для Internet Explorer будет выглядеть так:

netsh advfirewall firewall add rule name="Internet Explorer" dir=out action=allow program="%ProgramFiles% (x86)\Internet Explorer\iexplore.exe" enable=yes

Аналогичным образом (покажем это в тексте скрипта в конце статьи) настраивается доступ для Chrome, Firefox и других программ (например, для Skype). Кроме этого, для стабильной работы веб-обозревателей необходимо поддерживать их актуальные версии, для этого сделаем отдельные исключения для обновлений, примеры для командной строки указаны ниже (как добавить соответствующие исключения через GUI, вы, наверное, уже догадаетесь сами):

netsh advfirewall firewall add rule name="Chrome Update" dir=out action=allow program="%ProgramFiles% (x86)\Google\Update\GoogleUpdate.exe" enable=yes
netsh advfirewall firewall add rule name="Mozilla Firefox Updater" dir=out action=allow program="%ProgramFiles% (x86)\Mozilla Firefox\updater.exe" enable=yes

Так как браузер Internet Explorer поставляется вместе с операционной системой, то разрешим обновления для ОС командами:

netsh advfirewall firewall add rule name="SVCHOST" dir=out action=allow program="%SystemRoot%\System32\svchost.exe" enable=yes
netsh advfirewall firewall add rule name="WUAC" dir=out action=allow program="%SystemRoot%\System32\wuauclt.exe" enable=yes

Теперь посмотрим, как организовать доступ к расшаренным папкам. Сначала через GUI:

  • Создаем новое правило.

img-10

  • Тип правила – Predefined, в выпадающем списке выбираем File and Printer Sharing.

img-11

  • Ставим отметки напротив “File and Printer Sharing (SMB-Out) и File and Printer Sharing (NB-Session-Out).

img-12

  • Указываем разрешить подключение, нажимаем Финиш.

img-13

Теперь то же самое через командную строку:

netsh advfirewall firewall add rule name="File and Printer Sharing (NB-Session-Out)" new dir=out profile=any action=allow enable=yes remoteip=any remoteport=139 protocol=TCP program="System"
netsh advfirewall firewall add rule name="File and Printer Sharing (SMB-Out)" new dir=out profile=any action=allow enable=yes remoteip=any remoteport=445 protocol=TCP program="System"

Переносим настройки с компьютера на компьютер

Теперь мы знаем достаточно, чтобы скомпоновать все настройки в PowerShell-скрипт, который мы сможем носить с компьютера на компьютер и мгновенно применять. Типичный скрипт, который настраивает все описанные выше исключения и кое-какие еще, приведен ниже:

Set-NetFirewallProfile -all -DefaultInboundAction Block -DefaultOutboundAction Block

netsh advfirewall firewall set rule all new enable=no

netsh advfirewall firewall add rule name="All ICMP V4 - OUT" protocol=icmpv4 action=allow dir=out

netsh advfirewall firewall add rule name="Chrome" dir=out action=allow program="%ProgramFiles% (x86)\Google\Chrome\Application\chrome.exe" enable=yes

netsh advfirewall firewall add rule name="Chrome Update" dir=out action=allow program="%ProgramFiles% (x86)\Google\Update\GoogleUpdate.exe" enable=yes

netsh advfirewall firewall add rule name="Explorer" dir=out action=allow program="%SystemRoot%\explorer.exe" enable=yes

netsh advfirewall firewall add rule name="Internet Explorer86" dir=out action=allow program="%ProgramFiles% (x86)\Internet Explorer\iexplore.exe" enable=yes

netsh advfirewall firewall add rule name="Internet Explorer64" dir=out action=allow program="%ProgramFiles%\Internet Explorer\iexplore.exe" enable=yes

netsh advfirewall firewall add rule name="Java Web" dir=out action=allow program="%ProgramFiles% (x86)\Java\jre1.8.0_25\bin\javaw.exe" enable=yes

netsh advfirewall firewall add rule name="Mozilla Firefox" dir=out action=allow program="%ProgramFiles% (x86)\Mozilla Firefox\firefox.exe" enable=yes

netsh advfirewall firewall add rule name="Mozilla Firefox Updater" dir=out action=allow program="%ProgramFiles% (x86)\Mozilla Firefox\updater.exe" enable=yes

netsh advfirewall firewall add rule name="MSTSC" dir=out action=allow program="%SystemRoot%\system32\mstsc.exe" enable=yes

netsh advfirewall firewall add rule name="Outlook" dir=out action=allow program="%ProgramFiles%\Microsoft Office\Office15\OUTLOOK.EXE" enable=yes

netsh advfirewall firewall add rule name="Skype" dir=out action=allow program="%ProgramFiles% (x86)\Skype\Phone\Skype.exe" enable=yes

netsh advfirewall firewall add rule name="SVCHOST" dir=out action=allow program="%SystemRoot%\System32\svchost.exe" enable=yes

netsh advfirewall firewall add rule name="TeamViewer" dir=out action=allow program="%ProgramFiles% (x86)\TeamViewer\TeamViewer.exe" enable=yes

netsh advfirewall firewall add rule name="File and Printer Sharing (NB-Session-Out)" new dir=out profile=any action=allow enable=yes remoteip=any remoteport=139 protocol=TCP program="System"

netsh advfirewall firewall add rule name="File and Printer Sharing (SMB-Out)" new dir=out profile=any action=allow enable=yes remoteip=any remoteport=445 protocol=TCP program="System"

netsh advfirewall firewall add rule name="Edge22" dir=out action=allow program="%SystemRoot%\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdgeCP.exe" enable=yes
 
netsh advfirewall firewall add rule name="Edge11" dir=out action=allow program="%SystemRoot%\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe" enable=yes
 
netsh advfirewall firewall add rule name="Outlook16" dir=out action=allow program="%ProgramFiles%\Microsoft Office\root\Office16\OUTLOOK.EXE" enable=yes
 
netsh advfirewall firewall add rule name="lync16" dir=out action=allow program="%ProgramFiles%\Microsoft Office\root\Office16\lync.exe" enable=yes

Скрипт вы можете сделать в любом текстовом редакторе и сохранить его с расширением .ps1 . Правда, запуск PowerShell-скрипта – не самое тривиальное действие, требующее прав администратора, поэтому проще создать .bat файл и запустить его. UAC сам запросит подтверждение прав. Так будет выглядеть наш .bat:

@echo off
cls
echo Rules of Firewall
echo.
echo press any key to continue...
pause > NUL
echo Rules of Firewall 
echo.
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dp0.\firewall.ps1""' -Verb RunAs}"
echo Rules included in Firewall...
echo.
pause

Где firewall.ps1 – имя созданного файла c Powershell-командами.

Скачать power shell скрипт

Скачать .bat файл

После того, как скрипт успешно выполнится, добавленные правила будут отображаться в  файрволле, как на скриншоте ниже:

img-14

Все так просто?

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

  1. Если уже есть существующие правила, то выполнение данного скрипта запретит их.
  2. Не каждый сервис имеет очевидный исполняемый файл, который можно просто найти или отследить. Более того зачастую возникает ситуация, когда один исполняемый файл запускает другой и так по цепочке, в таком случае определить, какому конкретно файлу нужен доступ, проблематично, даже используя специализированные утилиты типа Process Explorer или Network Monitor. Примером может служить служба Windows SmartScreen, которая затрагивает в своей работе и проводник, и веб-обозреватель.
  3. Разрешая доступ отдельным программам, мы не делаем исключения для определённого протокола, а лишь разрешаем полный доступ для исполняемого файла программы, как результат работа служебных протоколов будет ограничена и нуждается в отдельных разрешающих правилах.

Соответственно, более полный и комплексный вариант защиты требует довольно детальных разбирательств с принципами работы приложений. Впрочем, об этих принципах достаточно много написано и в (не закрытом пока на Вашем компьютере правилами) Интернете – дорогу осилит идущий. Ну, а если кому-то совсем некогда разбираться, можно обратиться к нам.