учебники, программирование, основы, введение в,

 

Сканеры уязвимостей

Вы защитили свой периметр с помощью межсетевого экрана и просканировали порты внутренней и внешней сетей. Что еще можно сделать, чтобы повысить безопасность сети? Межсетевые экраны не позволят легко проникать во внутреннюю ЛВС извне. Сканирование портов выявит запущенные сервисы и даст возможность исключить ненужные. Однако, как быть с сервисами, которые необходимы? Вы должны поддерживать Web-серверы и серверы электронной почты для общения с внешним миром. Могут понадобиться и другие приложения, такие как FTP, SSH, Telnet и индивидуальные приложения баз данных. Как узнать, безопасны ли эти сервисы? Чтобы оценить риски, необходимо знать угрозы и методы осуществления несанкционированного доступа к информации и ресурсам организации.

Что чаще всего делает систему уязвимой? Приложения. Взглянув на эталонную модель ВОС, вы увидите, что уровень приложений находится на вершине стека сетевых коммуникаций, что делает его самым сложным и изменчивым. Сканеры уязвимостей позволяют проверить различные приложения в системе на предмет наличия дыр, которыми могут воспользоваться. Сканер уязвимостей может также использовать низкоуровневые средства, такие как сканер портов, для выявления и анализа возможных приложений и протоколов, выполняющихся в системе.


Номер уровня модели ВОС

Название уровня

Примеры протоколов

Уровень 7

Прикладной уровень

DNS, FTP, HTTP, SMTP, SNMP, Telnet

Уровень 6

Уровень представления

XDR

Уровень 5

Уровень сеанса

RPC

Уровень 4

Транспортный уровень

NetBIOS, TCP, UDP

Уровень 3

Сетевой уровень

ARP, IP, IPX, OSPF

Уровень 2

Канальный уровень

Arcnet, Ethernet, Token ring

Уровень 1

Физический уровень

Коаксиальный кабель, оптоволокно, витая пара

Выявление дыр в безопасности ваших систем
Необходимо помнить, что компьютерная безопасность сродни другим видам безопасности. Средний компьютерный нарушитель предпочитает цели подоступнее и попроще. Существуют, конечно, мастера взлома систем, которые охотятся за определенными целями и разрабатывают их в течение месяцев или даже лет, применяя физические, морально-психологические и технические средства. И, как в случае физической безопасности, если кто-то действительно захочет проникнуть в ваш компьютер, и имеет для этого достаточно денег, времени и ресурсов, то он, вероятно, добьется успеха. Однако, если вы не работаете в банке, правительственном учреждении или компании из Fortune 500, то вам, скорее всего, не стоит волноваться, что такой оберхакер будет вас преследовать. Вам надо опасаться рядовых компьютерных преступников, автоматических "червей" и вирусов. Ваша работа состоит в том, чтобы в вашей сети было меньше дыр, чем у соседа, чтобы хакеры обошли вас стороной при выборе цели для взлома. Это как автомобиль с хорошей сигнализацией - только по-настоящему опытный и мотивированный угонщик будет пытаться украсть его.
В действительности только очень небольшой процент компьютерных преступников исследуют и разрабатывают собственные методы атак. Большинство хакеров действуют с помощью опубликованных и известных дыр в безопасности и средств, показывающих, как проникнуть в ваши компьютеры. Подобную информацию можно найти на бесчисленных web-сайтах, а хакерские инструменты, использующие эти дыры, доступны для загрузки.
Все основные сбои в работе Интернета, вызванные компьютерными преступлениями, возникали в результате использования дыр в безопасности, известных за некоторое время до инцидента. Обычно эпидемия распространяется через месяцы или даже годы после того, как становится известна лежащая в ее основе уязвимость. При нашествии Code Red в 2001 г. использовалась уязвимость, корректирующая заплата для которой была доступна более года; то же с "червем" Nimda. "Червь" SQL Slammer, атаковавший базы данных SQL в феврале 2003 года, действовал спустя полгода после выпуска программной коррекции. Факт состоит в том, что большинство вторжений в компьютеры используют хорошо известные методы и уязвимости, для которых доступны заплаты или защитные решения. Так называемое мгновенное использование уязвимостей и неопубликованных дыр в безопасности - относительная редкость.
Почему люди пренебрегают простыми вещами и не заделывают дыры в безопасности своих систем? Если бы они это делали, то было бы значительно меньше компьютерных преступлений и книги, подобные этой, возможно, не существовали бы. Однако множество систем с множеством уязвимостей продолжает существовать по тысяче причин:

  • Нехватка времени или персонала. Организации сокращают расходы и в трудные времена увольняют технический персонал (информационные технологии (ИТ) не приносят прибыли). Иногда функции ИТ полностью передаются сторонним организациям. И хотя зачастую это практичное решение, внешние организации, поддерживающие локальные сети, далеко не всегда считают информационную безопасность своей первейшей обязанностью. Главное для них - бесперебойная работа сети. Удовлетворение запросов пользователей оказывается важнее безопасности.
  • Опасения в отношении стабильности системы. Хорошо известно, что производители систем при выпуске заплат порой исправляют одну вещь и портят две других. Для критически важных систем затраты времени и ресурсов для надлежащего тестирования программных коррекций зачастую превышают выгоды от обновления.
  • Слишком много заплат, чтобы с ними управиться. Если вы являетесь подписчиком Windows Update, сервиса коррекций Microsoft, то вы, вероятно, как минимум раз в неделю получаете уведомление о необходимости обновить или залатать систему. Для занятых системных администраторов это может быть слишком большой нагрузкой в дополнение к их обычным обязанностям. Действительно, было проведено исследование, показавшее, что расходы на корректировку программного обеспечения нередко превышают его начальную цену.
  • Невежество. Системные администраторы многих организаций просто не знают о существовании проблемы и наличии заплаты. Теперь, при автоматическом обновлении от Microsoft, эта проблема для систем Windows стала менее острой, но она остается для других производителей и менее известного программного обеспечения. Даже для Windows существует несколько несовместимых менеджеров заплат. Это одна из причин, почему SQL Slammer так быстро распространился, - стандартный сервис обновления Windows просмотрел его.

Еще один момент, облегчающий жизнь хакерам, состоит в том, что обычно имеется несколько различных путей проникновения в систему. На самом деле, для множества выполняемых сервисов может существовать десяток или больше потенциальных окон для входа в подключенный к Интернету сервер. Если атака одного типа не работает, всегда можно попробовать другую. В следующих разделах описаны некоторые возможные способы, с помощью которых знающий человек может вызвать разрушение системы организации. Некоторые из них могут быть неприменимы к вашей сети, но вполне возможно, что найдется по крайней мере два или три потенциальных источника уязвимости.
Переполнение буфера
Как упоминалось в, переполнение буфера является, несомненно, наиболее популярным способом взлома систем. Первым документированным использованием переполнения буфера был Интернет-"червь", выпущенный Робертом Моррисом 2 ноября 1988 г. Он был назван "червем" Morris по имени автора, и создан только для того, чтобы доказать, что это можно сделать. Он работал, используя ошибку в программе finger и распространяя себя с одной машины на другую. Для своего тиражирования он использовал плохую конфигурацию Sendmail и rsh. Предполагалось, что он скопирует себя только на несколько систем. Но при программировании "червя" Моррис сделал ошибку, и тот быстро распространился по всей Сети, состоявшей тогда лишь из нескольких тысяч систем. "Червь" поставил на колени крупнейшие университеты и другие организации, пытавшиеся справиться с быстро распространяющейся ошибкой. Это стало зарей новой эры для компьютерных хакеров и открыло глаза многим из тех, кто считал Интернет безопасным и дружественным местом. С тех пор возможность переполнения буфера была найдена почти во всех важных программах и часто использовалось теми, кто пытался получить несанкционированный доступ к системам.
Как защитить себя от переполнения буфера? Если вы не хотите отлаживать все применяемое вами программное обеспечение (что, между прочим, подразумевает доступ ко всем исходным текстам!), остается ждать, когда кто-то обнаружит ошибку и сообщит о ней, а затем - когда программистская компания выпустит заплату. К сожалению, отслеживание выпускаемых заплат и определение того, какие из них имеют к вам отношение, не говоря уже об их тестировании и установке, способно занять все рабочее время. Многие организации предпочитают просто не беспокоиться, а организации, прилежно устанавливающие все заплаты, зачастую не успевают делать это вовремя. Даже несколько собственных систем корпорации Microsoft пали жертвой эпидемии SQL Slammer, так как на некоторых SQL-серверах не были установлены программные коррекции, которые корпорация сама выпустила! Одним из хороших способов узнать, имеются ли условия для переполнения буфера в ваших приложениях, является их тестирование с помощью программного обеспечения сканирования уязвимостей. Это позволит обнаружить большинство известных переполнений буфера, существующих в системе, и своевременно применить корректирующие заплаты, необходимые для устранения этих условий.

Слабые места маршрутизаторов и межсетевых экранов

Эти устройства являются первой линией обороны против посторонних, пытающихся проникнуть в вашу корпоративную сеть. Однако, в связи с возрастающей сложностью устройств и изощренностью атакующих, при некорректном конфигурировании этот рубеж может оказаться слабым. Владение языком маршрутизатора для Cisco IOS - по сути отдельная специальность. Если в организации нет технических специалистов по оборудованию Cisco, то, вероятно, маршрутизаторы Cisco с точки зрения безопасности сконфигурированы не оптимально. А межсетевые экраны конфигурировать еще сложнее. Как вы узнали из, одна неверная строка конфигурации может свести на нет межсетевую защиту. Замотанный технический специалист, пытающийся побыстрее настроить доступ для сотрудников или внешних пользователей, чаще будет ошибаться в сторону расширения доступа, а не лучшей защиты.
Даже когда наборы правил написаны правильно, на маршрутизаторах нередко выполняются слабые или опасные сервисы. Многие маршрутизаторы для интерактивного входа по-прежнему полагаются на Telnet, а не на безопасное приложение, такое как SSH. Это открывает дверь для атак с помощью сетевого анализатора путем перехвата комбинации входного имени и пароля. На некоторых маршрутизаторах до сих пор выполняются finger и другие службы, способные стать каналом утечки информации.
Даже межсетевые экраны - наиболее защищенные устройства - не обладают абсолютной невосприимчивостью к атакам. Некоторые межсетевые экраны строятся поверх обычных операционных систем, таких как Windows или UNIX, и поэтому могут быть уязвимы для всех обычных атак уровня ОС. Даже если операционная система межсетевого экрана является собственной, в ней могут существовать уязвимости. Многие межсетевые экраны взаимодействуют с пользователями при помощи web-сервера, а значит, могут быть использованы дыры в web-интерфейсе. Обеспечение собственной безопасности этих средств передовой линии обороны критически важно и должно считаться одним из высших приоритетов.
Межсетевые экраны имеют также свойство обеспечивать безопасность, которая, по выражению Билла Чезвика, "тверда снаружи, мягка внутри". Это означает, что через них трудно проникнуть извне, но против атак изнутри сети почти никакой защиты не предусматривается. Необходимо добиться, чтобы внутренние системы были по крайней мере минимально защищены, а сетевая безопасность не зависела целиком и полностью от межсетевых экранов.

Использование уязвимостей Web-серверов

В наше время практически каждая компания должна иметь web-сервер. Отсутствие такового приравнивается к отсутствию телефона или факса. web-серверы печально известны наличием ошибок и дыр в безопасности. Сама идея web-сервера - возможность брать с сервера файлы без какой-либо аутентификации - создает потенциал для брешей в защите. Большое число дыр обусловлено все возрастающим числом и разнообразием протоколов и команд, с которыми приходится иметь дело web-серверам. Когда web-страницы состояли только из HTML, держать все по контролем было значительно легче. Однако сейчас Web-серверы должны интерпретировать ASP, PHP и другие типы трафика, содержащего исполнимый код, и по мере того как web-приложения становятся все сложнее, проблемы безопасности будут только обостряться.
Некоторые web-серверы защищены лучше, чем другие, но у каждого есть свои недостатки. А взлом web-сервера может вызвать не только смущение из-за обезображенной web-страницы, если этот сервер осуществляет также доступ к базе данных и другим внутренним системам, что в наше время является общепринятым.

Использование уязвимостей почтовых серверов

В электронный век электронная почта жизненно важна для взаимодействия организаций. Однако почтовые серверы традиционно служили излюбленными целями атакующих. Самый первый агент передачи почты, Sendmail, был нашпигован уязвимостями и продолжает вызывать конвульсии у профессионалов в области информационной безопасности. Немногим лучше флагманский почтовый сервер Exchange корпорации Microsoft. Обычно именно серверы Web и электронной почты оказываются наиболее уязвимыми точками организаций.

Серверы DNS

Серверы, которые управляют и поддерживают доменные имена вашей организации, являются привлекательной целью для хакерам. Основной DNS-сервер, BIND (Berkeley Internet Name Domain), постоянно находился в первой десятке наиболее эксплуатируемых хакерами сервисов. DNS - старая программа, и сама ее структура способствует наличию дыр (вместо модульной архитектуры - один монолитный бинарный файл). DNS часто запускается от имени суперпользователя, что делает его взлом еще более опасным. Кроме того, поскольку DNS трудно настраивать и его плохо понимают, он зачастую сконфигурирован неправильно и защищен плохо. Настройки межсетевых экранов для DNS нередко сконфигурированы неверно - большинство системных администраторов разрешают нефильтрованный доступ внутрь и наружу.
Web, электронная почта и другие сервисы более заметны, и технический персонал уделяет им больше внимания; в то же время, дыры в DNS предоставляют самый быстрый и легкий способ стереть вашу организацию с карты Интернета. Даже если сохраняется IP-связность с внешним миром, без корректной работы сервиса DNS для ваших доменов никто не сможет добраться до ваших web-серверов, и ни одно электронное сообщение до вас не дойдет. На самом деле, DNS считается самым слабым местом всей инфраструктуры Интернета и потенциальной целью для атак кибертеррористов. Вместо того чтобы взламывать серверы или прорываться через межсетевые экраны, атакующий может просто организовать атаку на доступность вашего сервиса DNS, эффективно отключая вашу организацию "от эфира". Или, хуже того, используя атаку типа "отравление кэша DNS", хакер может по своему выбору перенаправить потенциальных посетителей вашего web-сайта.

Использование уязвимостей баз данных

Многие web-сайты организаций предоставляют внешний доступ к своим базам данных. Например, можно дать клиентам возможность помещать и оперативно проверять статус заказов, разрешить служащим получать через Web информацию по программам социальной поддержки или предоставить поставщикам доступ к системе, чтобы автоматически обновлять время поставки. Такие функции обычно обращаются к внутренней базе данных организации. Это выводит web-сайты за рамки одномерных оперативных изданий, какими они были в ранние дни Интернета, и делает их расширением ваших систем для внешних пользователей. Однако, поступая так, вы активизируете большой потенциальный источник уязвимостей. Зачастую дополнительных мер безопасности для внешнего использования подобных систем не предпринимается. Иными словами, предполагается, что пользователи будут добропорядочными и не будут совершать явно враждебных действий. Было обнаружено, что программное обеспечение внешнего интерфейса Web, такое как ColdFusion и PHP, не обладает достаточными средствами аутентификации и содержит ошибки, приводящие, в частности, к переполнению буфера. Специально созданный универсальный локатор ресурсов может направить SQL-инструкции или другие команды базы данных прямо в сердце вашей системы. "Червь" SQL Slammer, быстро распространившийся по всему миру в начале 2003 г. и использовавший слабые места в SQL Server корпорации Microsoft, показал, как это может случиться.

Управление пользователями и файлами

Эта область является одной из самых болезненных для информационной безопасности. Вы должны предоставить пользователям доступ к системам и программам, которые нужны им для выполнения работы. Однако, ключевым принципом хорошей защиты является принцип минимизации привилегий, то есть предоставление пользователям минимально достаточного для работы доступа - и не больше. Определение этого уровня - хитрая задача. Предоставьте им слишком мало прав, и вас задергают звонками из службы помощи пользователям и жалобами; дайте слишком много прав, и вы ослабите защиту своей системы. Большинство администраторов будут отклоняться в сторону смягчения правил доступа, так как это уменьшает объем сваливающейся на них работы.
К сожалению, системы, дружественные пользователям, такие как Windows, также делают крен в эту сторону, давая много прав на самом слабом уровне: низкий уровень безопасности по умолчанию. В Windows есть несколько встроенных системных счетов и разделяемых ресурсов, применяемых для операций на системном уровне и имеющих больше прав, чем им на самом деле требуется. Одним из примеров служит подразумеваемый разделяемый ресурс IPC (Inter-Process Communication - межпроцессное взаимодействие), который может использовать любой пользователь, чтобы получить информацию о машине или домене. Аналогичным образом может применяться гостевой системный счет. Можно отключить или ограничить эти системные счета, но вы должны сделать это вручную после установки. К чести Microsoft, эти типы подразумеваемых системных счетов ограничены в Windows XP, но все еще существуют (поскольку они нужны для простых одноранговых сетей, которые допускает Windows). Немногим лучше системы UNIX. Недостает гранулярности в управлении системными счетами, то есть существуют только супер- и обычные пользователи, а в результате права суперпользователя получают слишком многие.
И, разумеется, поддержка актуального списка пользователей для больших сетей может требовать ежедневных усилий. Бездействующие или неиспользуемые системные счета - ценная цель для хакеров, так как их можно использовать, не беспокоясь о том, что реальный владелец заподозрит неладное.
Хороший сканер уязвимостей выявит подразумеваемые и слабые пароли, такие как стандартная комбинация входного имени и пароля "administrator/administrator" в системах Windows. Сканер будет также брать набор удостоверений и проверять, как далеко он сможет зайти. Он может выявлять неиспользуемые системные счета и пользователей, которые никогда не меняли свои пароли (в системах Windows). Это поможет разглядеть трещинки в вашей броне с точки зрения управления счетами пользователей.

Подразумеваемые системные счета производителей
Пытаясь облегчить вам жизнь, производители зачастую существенно усложняют вашу работу по обеспечению информационной безопасности. Многие производители оборудования поставляют его со стандартными подразумеваемыми входными именами и счетами пользователей для облегчения настройки. Некоторые из них добавляют также счета для технического и обслуживающего персонала. Предполагается, что сразу после установки оборудования или программного обеспечения вы измените подразумеваемые пароли, но далеко не все это делают. В результате во многие машины можно попасть после простого перебора некоторого числа комбинаций подразумеваемых входных имен и паролей. Подобные уязвимости наиболее характерны не для систем UNIX и Windows, а для маршрутизаторов, коммутаторов, телефонных систем и других типов оборудования. Однако есть и исключения. Существует целый протокол, основывающийся на идее подразумеваемых паролей. SNMP (Simple Network Management Protocol - простой протокол управления сетями) был создан для того, чтобы дать возможность программному обеспечению автоматически опрашивать устройства и получать базовую информацию о них (например, состояние включено/выключено). В некоторых случаях SNMP позволяет даже выполнить простые конфигурационные операции. В принципе, это была хорошая идея, и многие компании создали системы управления сетями на основе этого протокола. Однако при реализации производители использовали два основных подразумеваемых системных счета - "public" и "private" как цепочки символов или пароли своего сообщества. Зная эти пароли, любой имеющий доступ к сети может опросить состояние ваших устройств.
SNMP позволяет также посылать на устройства основные команды, такие как возврат маршрутизатора в исходное состояние или отключение интерфейса. Очень немногие пользователи SNMP удосужились изменить подразумеваемые цепочки символов сообщества, поскольку делать это на каждой машине - утомительно. В результате хакеры с простым инструментарием, таким как snmpwalk, который свободно доступен в Интернете, могут собрать информацию о сети, построить ее карту и, возможно, даже отключить ее, если вы применяете SNMP с подразумеваемыми строками сообщества. Чтобы подлить масла в огонь, добавим, что новые программы использования переполнения буфера в реализациях протокола SNMP позволяют хакерам полностью подчинить себе удаленную машину. Многие выполняют SNMP на своих машинах, даже если не используют его, потому что производители часто включают его по умолчанию, чтобы облегчить сетевую идентификацию.
Другим примером из области программного обеспечения является подразумеваемый системный счет sa, встроенный в SQL Server корпорации Microsoft. Этот счет используется межсистемными процессами, но он может также быть доступен командному файлу или "червю", что наглядно доказали разрушения, вызванный "червем" SQL Slammer. В Интернете существуют сайты, где перечислены все основные производители оборудования и программного обеспечения и все подразумеваемые пароли, которые могут существовать. И, конечно, имеются автоматические программы, которые могут очень быстро и без больших усилий все их проверить.
Пустые или слабые пароли
Хотя иметь системный счет с пустым паролем кажется безумием, во многих сетях делается именно это. И, хотите верьте, хотите нет, но некоторые поступают так даже со счетом администратора. Также неожиданно распространено использование комбинации пользователь/пароль вида administrator/administrator, которая служит подразумеваемой настройкой Windows. Нет ничего удивительного, что "черви" и программы взлома автоматически проверяют это условие. Если они его находят, то получают золотой приз: полный административный доступ к системе. Аналогично, когда пользователи задают пароли, они могут просто оставить их пустыми. Это дает шанс любому, имеющему список пользователей, попытаться найти счета с пустым паролем. Вы можете задать свою политику управления паролями, запрещающую подобное легкомыслие, и предъявляющую дополнительные требования к длине и сложности паролей. Целесообразно также потребовать регулярного изменения паролей и избавиться от неиспользуемых системных счетов. При сканировании уязвимостей перечисленные условия будут проверяться.
Ненужные сервисы
Подобно рудиментарному хвосту, на машинах нередко выполняются приложения, которые больше не служат никакой полезной цели. Эти сервисы могли использоваться прежними версиями библиотек, и программисты просто не удосужились своевременно их удалить. Это одна из отрицательных сторон все возрастающей вычислительной мощности и емкости памяти. Раньше программисты тщательно распределяли каждый используемый байт и не оставляли в программах ненужных строк. Однако в наш век раздутых до гигабайтных размеров операционных систем часто легче оставить устаревшие сервисы, чем рисковать нарушить функционирование некоторых программ, которые от этих сервисов зависят. Неприятный момент состоит в том, что нередко эти сервисы включены по умолчанию. В перечислены вышедшие из употребления сервисы, которые, как правило, могут быть безболезненно отключены.


Таблица 5.1. Бесполезные сервисы

Сервис

Обычный номер порта

Функции

chargen

19

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

daytime

13

Возвращает время дня. На самом деле не требуется ни для каких функций современных систем

discard

9

Молча отбрасывает все, что ему посылается. Применяется в основном в тестовых целях

echo

7

Возвращает назад то, что было ему послано. Как и chargen, может использоваться в атаках на доступность, если посылать ему постоянный поток данных для эхо-отражения

finger

79

Об этом сервисе было достаточно сказано ранее. Очень полезен для хакеров

qotd (quote of the day - цитата дня)

17

При входе пользователя в систему посылает ему небольшую цитату или фразу, заданную системным администратором

Утечка информации
В поисках способа проникнуть в систему хакеры или взломщики начинают с некоторой базовой разведки. Они пытаются как можно больше узнать о вашей системе и сети, прежде чем попытаться взломать их. Подобно тому как вор-домушник осматривает объект проникновения, они ищут электронные эквиваленты выключенного света, накопившихся газет, незакрытых окон и т.д. Делается это с помощью ряда инструментов, таких как сканеры портов, или других средствах взлома, доступные в Интернете. К сожалению, многие операционные системы охотно помогают этим незаконным сборщикам информации. Как болтливый портье, они выдают жизненно важную системную информацию, не спрашивая удостоверение личности.
Особенно грешит этим Windows. Поскольку эта ОС создавалась как самонастраивающаяся сетевая система, она предлагает всевозможную информацию любой системе, которая опрашивает ее с помощью подходящей команды. Как упоминалось выше, неправильно сконфигурированные серверы DNS могут также выдавать много информации о конфигурации сети. Наконец, огромный объем информации можно собрать при использовании общедоступных поисковых машин, таких как Google. Информацию нередко оставляют в общедоступных каталогах web-серверов, считая, что раз на нее нет ссылок с web-страниц, то она не видна поисковым машинам. Это не так, и желательно регулярно "гуглить" название вашей организации и универсальные локаторы ресурсов, чтобы посмотреть, не всплывет ли что-то интересное.
На основе этих данных внешний пользователь может сгенерировать списки пользователей, разделяемые диски и каталоги, имена систем и сотрудников и другую информацию, полезную для взлома методом грубой силы, когда с помощью автоматизированных программ пробуются различные комбинации паролей, а также для применения методов морально-психологического воздействия (см. врезку о взломе систем).


Анатомия взлома системы
Здесь приведен пример, показывающий, как взломщик может применять некоторые из перечисленных в данной лекции методов для получения несанкционированного доступа. Предположим, что хакер захотел взломать Example.com и получить доступ к данным о служащих.
  1. Для начала хакер оконтурил цель. При кратком посещении web-сайта Example.com для просмотра информации о персонале он смог определить, какие IP-диапазоны используются, и узнал имена некоторых системных администраторов из раздела о технических контактах.
  2. Затем он просканировал порты в выявленном диапазоне IP-адресов и определил, как системы отвечают и какие службы они выполняют.
  3. Используя более сложный инструмент, такой как сканер уязвимостей из данной лекции, гипотетический хакер собрал дополнительную информацию о системах, а именно, какие из них уязвимы и для каких атак.
  4. Применяя сканер портов или программу анализа защищенности, хакер смог определить, что один из серверов допускает сеансы NetBIOS null, что помогло сгенерировать список всех пользователей системы. Хакер также обнаружил, что web-сервер уязвим по отношению к переполнениям буфера и для Windows-программы использования уязвимости, открывающей доступ к любому каталогу на этом сервере.
  5. Затем хакер произвел поиск в Интернете, задав ключевые слова для средств, эксплуатирующих выявленные слабые места. Он смог найти инструмент, предоставивший ему административный доступ через дыру с переполнением буфера.
  6. Даже если бы оказалось, что системы не содержат уязвимостей, открывающих непосредственный доступ, хакер мог бы использовать собранную им информацию для атаки методом грубой силы на файл паролей или для применения методов морально-психологического воздействия. Он мог бы позвонить пользователю, представиться системным администратором и спросить пароль. Или позвонить в службу поддержки, заявить, что он пользователь, который забыл свой пароль, и попросить их сменить пароль на указанный им. Вариации здесь ограничиваются только изощренностью фантазии взломщика.

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

Сканеры уязвимостей спешат на помощь
Как можно видеть, современные компьютерные сети содержат множество потенциальных областей небезопасности. Как закрыть все эти пути для атак? Вы чувствуете себя одиноким стражем, пытающимся защитить гигантский замок с множеством окон, дверей и других путей проникновения. Невозможно быть сразу везде. Можно тратить день за днем, просто проверяя вручную дыры в безопасности. Даже если попробовать автоматизировать эту деятельность с помощью командных файлов, придется использовать десятки программ. К счастью для вас и вашей психики, существуют пакеты, называемые сканерами уязвимостей, которые автоматически выявляют наличие слабых мест и помогают в решении других проблем.

Nessus - действительно изумительная программа. Это великолепный пример того, как хорошо могут работать проекты с открытыми исходными текстами. Он надежен, хорошо документирован, отлично поддерживается, он лучший в своем классе. Nessus постоянно попадает в число лучших среди всех сканеров уязвимостей - коммерческих и некоммерческих. Это поразительно, если принять во внимание его конкурентов, стоящих тысячи долларов и созданных крупными компаниями. Он продолжает впечатлять и постоянно совершенствоваться и, самое главное, защищать тысячи сетей организаций. Ряд проектных решений делают Nessus уникальным и превосходящим другие сканеры уязвимостей.
Глубина тестирования
В настоящее время Nessus предлагает более 2000 отдельных тестов уязвимостей, которые охватывают практически все области потенциально слабых мест в системах. Очень немногие существующие сканеры могут конкурировать с достигнутым в Nessus уровнем тестирования, и новые тесты добавляются ежедневно всемирной сетью разработчиков. Скорость выпуска новых тестов для выявляемых уязвимостей обычно измеряется днями, если не часами. Его архитектура на основе встраиваемых модулей позволяет легко добавлять новые тесты. Ниже представлен перечень всех категорий тестов, которые выполняет Nessus:

  • Потайные входы;
  • Ненадлежащее использование CGI;
  • Cisco;
  • Атаки на доступность;
  • Ненадлежащее использование Finger;
  • FTP;
  • Удаленный доступ к командному интерпретатору;
  • Удаленное получение прав суперпользователя;
  • Общие;
  • Прочие;
  • Netware;
  • NIS;
  • Сканеры портов;
  • Удаленный доступ к файлам;
  • RPC;
  • Настройки;
  • Проблемы SMTP;
  • SNMP;
  • Непроверенные;
  • Бесполезные сервисы;
  • Windows;
  • Windows: управление пользователями.

Можно отключить целую категорию тестов, если они неприменимы к вашей системе или могут быть опасны для нее. Если вас беспокоят отдельные тесты, можно отключить только их. Например, естественно отключить категорию "Непроверенные", которая содержит тесты, еще не полностью оттестированные (клиент, конечно, всегда прав, но должен соблюдать разумную осторожность). В приложении E приведен полный список всех проверок безопасности. Помните, однако, что этот список соответствует указанной дате и постоянно изменяется по мере добавления новых встраиваемых модулей.
Архитектура клиент-сервер
Для выполнения проверок безопасности Nessus опирается на архитектуру "клиент-сервер". Сервер выполняет проверки, а клиент конфигурирует и управляет сеансами. Тот факт, что клиент и сервер могут быть разделены, предоставляет несколько уникальных преимуществ. Во-первых, сканирующий сервер можно расположить вне вашей сети, но обращаться к нему изнутри сети через клиента. Во-вторых, различные клиенты могут поддерживать разные операционные системы. В настоящее время существуют доступные клиенты UNIX и Windows, и ведутся работы по созданию дополнительных. В настоящее время предоставляется также интерфейс web-клиента, который делает Nessus полностью платформно-независимым (по крайней мере, на стороне клиента).
Независимость
Поскольку исходные тексты Nessus открыты, а встраиваемые модули написаны разнообразными группами специалистов по информационной безопасности, не приходится опасаться каких-либо конфликтов интересов, возможных в коммерческих компаниях. Например, если поставщик коммерческого сканера уязвимостей тесно связан с крупнейшим производителем ОС, то они могут быть настроены менее критически к своим продуктам и медленнее выпускать тесты для них. Проект с открытыми исходными текстами, такой как Nessus, не имеет финансовых причин не разрабатывать и не выпускать тесты немедленно. И, опираясь на его расширяемость, вы всегда можете написать собственный модуль, не дожидаясь официального.
Встроенный язык сценариев атак
В дополнение к архитектуре со встраиваемыми модулями, в Nessus имеется собственный язык сценариев атак, называемый NASL (Nessus Attack Scripting Language). Этот простой в изучении служебный язык позволяет легко и быстро писать собственные встраиваемые модули безопасности, не зная Си или всей внутренней кухни основной программы. (Далее в данной лекции приведен пример написания пользовательского встраиваемого модуля на языке NASL.)
Интеграция с другими средствами
Сканер уязвимостей Nessus можно применять сам по себе или совместно с некоторыми другими защитными средствами с открытыми исходными текстами. Часть из них рассмотрена в этой лекции, и все они являются лучшими из имеющихся. Вместо встроенного можно применить лучший в мире сканер портов Nmap. Сканер портов в Nessus быстрее и немного экономнее в расходовании памяти, но Nmap, как вы узнали из, предоставляет значительно больше возможностей и настроек. Почти все параметры Nmap можно конфигурировать из клиента Nessus. Nessus также работает с Nikto и Whisker - средствами, которые выполняют более сложные проверки на web-серверах; с программами CGI; а также с Hydra - средством для проведения парольных атак на употребительные сервисы методом грубой силы. Функциональность этих средств напрямую задана в Nessus, поэтому можно вносить изменения в конфигурацию в рамках единого интерфейса.
Интеллектуальное тестирование
Nessus можно настроить так, чтобы он не выполнял автоматически все тесты уязвимостей на всех хостах. На основе результатов сканирования портов или других исходных данных, таких как результаты предыдущих тестов уязвимостей, Nessus будет запускать только тесты, подходящие для данной машины. Например, если на сервере не запускается web-сервер, то и тесты web-сервера выполняться не будут. Nessus также достаточно интеллектуален, чтобы не предполагать автоматически, что web-серверы будут использовать порт 80; он будет проверять все возможные порты на наличие признаков web-сервера. Nessus найдет даже несколько экземпляров сервисов, подключенных к разным портам. Это особенно важно, если вы нечаянно запустили web-сервер или другой общедоступный сервер на необычных портах.
База знаний
Nessus может сохранять все результаты сканирования в базе данных, называемой базой знаний. Это позволяет использовать результаты прошлых сканирований для определения того, какие тесты выполнять, что избавляет, например, от сканирования портов при каждом запуске, так как Nessus будет помнить, какие порты были открыты в последний раз на каждом хосте, и проверять только их. Он может помнить также, какие хосты он видел в последний раз, и проверить только новые. Я не рекомендую поступать так всякий раз, поскольку можно пропустить новые порты, открывшиеся на машинах, или новые уязвимости, проявившиеся на просканированных ранее хостах. Однако, это позволяет выполнять сканирование чаще и с меньшими требованиями к полосе пропускания и процессору, при условии, что вы регулярно проводите полное сканирование.
Множество форматов отчетов
Nessus входит в число лучших программ с открытыми исходными текстами и по возможностям генерации отчетов. Хотя они не совершенны, данные сканирования можно выдать почти в любом формате. Базовый HTML и HTML с круговыми диаграммами и графиками - два наиболее популярных формата. В отчеты входят итоговые данные, так что почти без редактирования их можно разместить на внутреннем web-сайте. Поддерживаются также форматы отчетов XML, LaTeX и обычный текст. Клиент Windows предлагает дополнительные форматы отчетов. Доступны и другие средства, обсуждаемые в последующих лекциях, которые позволяют производить дальнейшие манипуляции с данными.
Сеть надежной поддержки
Nessus имеет обширную сеть поддержки для получения помощи как по базовой установке и использованию, так и по более сложным вопросам программирования и индивидуальной настройки. Существует не менее пяти списков почтовой рассылки Nessus, каждый из которых ориентирован на свою область. Подписчики отметят, что сам главный автор, Renaud, отвечает на многие вопросы. Попробуйте получить такую поддержку от коммерческой компании! Имеется архив всех прошлых сообщений, в котором можно проверить, не давался ли уже ответ на ваш вопрос. Ниже перечислены основные списки почтовой рассылки Nessus:

  • nessus: конечно же, список общей дискуссии о Nessus;
  • nessus-devel: обсуждение разработки будущих версий;
  • nessu-cvs: информирует о фиксациях CVS, сделанных в дереве Nessus;
  • nessus-announce: модерируемый список с небольшим трафиком, предназначенный для объявлений о доступности новых выпусков;
  • plug-ins-writers: список, посвященный написанию новых встраиваемых модулей Nessus. Если вы хотите писать собственные проверки безопасности, вам следует подписаться на него.

Чтобы подписаться на любой из перечисленных списков, отправьте сообщение по адресу majordomo@list.nessus.org со следующим текстом в теле письма:
Subsribe имя_списка
Замените имя_списка названием списка, на который вы хотите подписаться. Чтобы отказаться от подписки, действуйте аналогичным образом, но поместите в тело текст Unsubscribe имя_списка.
На web-сайте Nessus размещено много документации, включая подробные инструкции по установке и основам применения, а также учебники по написанию собственных проверок безопасности на языке NASL. Насколько я знаю, никто еще не пытался собрать в одном документе полное описание всех возможностей и настроек клиента Nessus. В данном разделе мы попытаемся сделать это.
Nessus предоставляет быстрый и простой способ проверки сетей и систем на наличие уязвимостей почти всех видов, поэтому давайте установим его.

Установка Nessus для систем Linux
Имеется два необходимых условия, которые должны быть выполнены перед установкой Nessus, и два других, которые желательно выполнить заранее, чтобы в полной мере воспользоваться дополнительными возможностями.

  1. Необходимым условием является установка двух программных продуктов - Gimp Tool Kit (GTK) и libpcap. Если при изучении вы установили Nmap, то эти программы у вас уже имеются. В противном случае можно взять GTK по адресу

ftp://ftp.gimp.org/pub/gtk/v1.2
а libpcap по адресу http://www.tcpdump.org

  1. Двумя необязательными, но желательными программами являются OpenSSL и Nmap. Nessus может использовать Nmap в качестве сканера портов, а OpenSSL - для безопасных коммуникаций между сервером и клиентом.

Есть три способа установки Nessus в системах UNIX, как очень простых, так и несколько более сложных. В данном конкретном случае я рекомендую более длинный процесс, чтобы получить больше контроля над установкой.
Проще всего установить Nessus, запустив удаленным образом командный файл автоматической установки. Это можно сделать, набрав
lynx -source http://install.nessus.org | sh
Эта команда инициирует командный файл установки и загрузит программу в ваш компьютер. Однако на самом деле я не рекомендую делать это, так как если данный URL будет когда-либо скомпрометирован, ваш компьютер окажется открытым для атаки. Для более безопасной установки сделайте следующие шаги.

  1. Загрузите командный файл автоматической установки вручную с install.nessus.org и выполните его с помощью команды

sh nessus-installer.sh
Если процедура автоматической установки не сработает должным образом, вам придется скомпилировать программу вручную.
ПРИМЕЧАНИЕ: Я рекомендую выполнить все описанные далее шаги, даже если "процедура" автоматической установки (не совсем точный термин, поскольку этот файл на самом деле содержит целую программу и все ее элементы) вроде бы сработала. Это важно, поскольку при установке сложной программы, такой как Nessus, иногда трудно понять, что делается, и где рванет, если процедура пойдет как-то не так. По крайней мере, когда вы выполняете процесс вручную, вы лучше понимаете, как идет установка.

  1. Чтобы установить Nessus вручную, необходимо сначала получить следующие четыре файла, либо с компакт-диска, либо с web-сайта Nessus, и установить их по очереди. Если нарушить порядок установки, то Nessus не будет правильно работать.
    • Nessus-libraries: Базовые библиотеки, необходимые для работы Nessus;
    • Libnasl: Модуль для NASL, встроенного языка Nessus;
    • Nessus-core: Основная программа Nessus;
    • Nessus-plug-ins: Модуль, содержащий все встраиваемые модули, выполняющие проверки безопасности. Чтобы гарантировать, что вы располагаете самыми свежими версиями встраиваемых модулей, после установки следует выполнить процедуру nessus-update-plugins, которая произведет необходимые обновления.
  2. Перейдите в каталог nessus-libraries (используя команду cd), затем введите стандартную последовательность команд компиляции:
  • ./configure
  • make

make install
В конце каждого процесса компиляции может потребоваться выполнение специальных инструкций. Например, для nessus-libraries придется добавить /usr/local/lib в файл /etc/ld.so.conf, а затем набрать ldconfig. В результате обновится информация о каталогах с библиотеками, так что операционная система сможет найти специальные каталоги Nessus. Убедитесь, что вы выполнили эти инструкции, прежде чем переходить к следующему шагу.

  1. Сделайте то же для libnasl. В конце компиляции необходимо проверить, что /usr/local/sbin входит в список поиска PATH. Эта переменная окружения содержит список каталогов для поиска исполнимых файлов, который производится при вводе каждой команды. Программа установки должна сделать это автоматически, но для проверки наберите

echo $PATH
Команда выведет на экран значение PATH. Если там отсутствуют /usr/local/sbin и /usr/local/bin, можно добавить их, редактируя файл /etc/bash.rc (правильный путь для Mandrake Linux при использовании командного интерпретатора bash). Для других дистрибутивов маршруты могут слегка варьироваться.

  1. Повторите этот процесс для двух других модулей.

В результате выполнения этих действий Nessus будет установлен. Однако прежде чем его можно будет использовать, необходимо произвести его настройку.

Настройка Nessus
Для подготовки Nessus к работе, прежде всего необходимо создать сертификат, который Nessus будет использовать для SSL-коммуникаций.

  1. Наберите nessus-mkcert

Запустится утилита, создающая сертификат безопасности для вашей установки. Можно использовать также сторонние сертификаты, подписанные удостоверяющими центрами, такими как VeriSign.
Если вы получили сообщение об ошибке "file not found" ("файл не найден"), проверьте, что /usr/local/bin и /usr/local/sbin присутствуют в списке поиска PATH (как описано в процедуре установки).
Отвечайте на вопросы по мере их появления. Вам понадобится зарегистрировать сертификат для вашей организации. Если вы не уверены, какие значения вводить, используйте подразумеваемые.

  1. Затем необходимо создать несколько счетов пользователей, чтобы можно было входить в Nessus. Поскольку продукт имеет архитектуру "клиент-сервер", то, прежде чем запустить сканирование, требуется войти в сервер с помощью клиента. У Nessus может быть любое число пользователей с индивидуальными наборами правил, которые вы должны задать на данном этапе настройки. Если вы собираетесь использовать Nessus единолично, то нужно просто определить одного пользователя без правил, но при желании можно ограничить IP-адреса, с которых он может входить. Если будет несколько пользователей, эта функция поможет отследить, кто использует ваш сервер Nessus.

Чтобы создать нового пользователя, наберите
nessus-adduser
Вам будет предложено выполнить последовательность шагов, требуемых для создания нового пользовательского счета.

  1. Выполняйте эту команду всякий раз, когда необходимо создать нового пользователя. Для того чтобы использовать Nessus, необходимо создать по крайней мере одного пользователя и выполнить для него настройки.

Теперь, наконец, можно запустить Nessus.

  1. Убедитесь, что выполняется X-Window (графическая среда), и запустите командный интерпретатор.
  2. В командной строке наберите

nessusd &
Запустится серверный процесс Nessus. Знак & (амперсанд) предписывает выполнение программы в фоновом режиме, чтобы вы могли вводить другие команды.

  1. Затем наберите команду

nessus
Запустится клиентская часть и на экране отобразится графический интерфейс Nessus.
Теперь можно начать работать с Nessus.
Входная страница Nessus
Первое, что вы увидите, будет входная страница Nessus. Вследствие архитектуры "клиент-сервер", прежде чем начать работать с Nessus, необходимо сначала войти в его сервер. Если клиент и сервер будут запускаться на одной машине, то правильными параметрами входа будут следующие:

  • Сервер: localhost;
  • Порт: 1241;
  • Входное имя: имя, заданное при настройке Nessus;
  • Пароль: пароль, заданный при настройке Nessus.

Клиент и сервер могут также выполняться на разных машинах. В этом случае замените localhost на IP-адрес или имя хоста сервера Nessus. Это дает возможность входить из дома в серверы Nessus, функционирующие на работе, и запускать сканирование поздней ночью. Кроме того, можно разместить сервер Nessus в центре обработки данных, где доступна широкая полоса пропускания, и входить в него с внутренней настольной системы, охраняемой межсетевым экраном. Подобная гибкость - важное преимущество Nessus перед некоторыми конкурирующими сканерами, она повышает его масштабируемость для крупных организаций. Некоторые локальные функции можно выполнять на клиенте, не входя в сервер Nessus. В частности, можно вызвать результаты выполненного ранее сканирования для просмотра и манипулирования, конфигурировать опции сканирования. Однако для обращений к встраиваемым модулям или разделу предпочтений без входа в сервер не обойтись, так как соответствующие данные хранятся на серверной стороне.


Вкладка встраиваемых модулей Nessus
После входа вы получаете доступ к различным вкладкам. С помощью вкладки Plugins можно выборочно включать или отключать определенные группы или отдельные встраиваемые модули. На вкладке перечислены все категории, а когда вы щелкаете мышью на некоторой категории, то ниже появляются все ее модули. Снимая флажок справа от элемента, можно отключить категорию или модуль.
Модули, которые могут вызывать проблемы у сервиса или крах серверов, отмечены треугольником с восклицательным знаком. Кроме того, в Nessus имеются кнопки, которые позволяют быстро включить все встраиваемые модули (Enable all), включить все модули, кроме опасных (Enable all but dangerous plugins), отключить все модули (Disable all), или загрузить пользовательский встраиваемый модуль (Upload plugin...). Можно использовать кнопку Filter для сортировки модулей по имени (Name), описанию (Description), сводке (Summary), автору (Author), идентификационному номеру (ID) или категории (Category). Как правило, рекомендуется запускать Nessus с отключенными опасными модулями; включайте их, только если вы готовы к настоящей проверке доступности и сознательно идете на риск краха некоторых серверов.
Вкладка предпочтений Nessus
Большинство серверных опций Nessus конфигурируются с помощью вкладки Preferences. В следующих разделах и подразделах даны подробные сведения об этих опциях.
Nmap
Настройки Nmap используются для индивидуального конфигурирования части, отвечающей при выполнении тестов за сканирование портов. Многие из них непосредственно связаны с настройками Nmap, обсуждавшимися в куда и следует обратиться за подробными сведениями о каждой опции.
  • TCP scanning technique (Метод сканирования TCP): Задает требуемый тип сканирования портов, например, SYN, FIN или Connect;
  • Timing policy (Политика управления частотой сканирования): См. раздел "Опции времени для Nmap" в

Можно также ввести маршрутное имя файла результатов Nmap, чтобы Nessus мог использовать эти данные, а не выполнять новое сканирование.
Ping the remote host (Эхо-тестирование удаленного хоста)
Этот выбор позволяет эхо-тестировать машины целевой сети, чтобы прежде всего определить, работают ли они, или просто просканировать все IP-адреса в целевом диапазоне. По умолчанию, Nessus пробует эхо-тесты ICMP и TCP на портах Web и SSL. Если хост включен, он должен ответить на один из этих запросов. Данную настройку можно рекомендовать в большинстве случаев, так как нет смысла впустую тратить время и полосу пропускания, тестируя мертвые адреса. Однако, если вы сканируете извне межсетевого экрана, может оказаться желательным выполнять Nessus без эхо-тестов хостов, чтобы заведомо ничего не пропустить. Можно также задать число попыток, после отсутствия ответа на которые хост считается неработающим. Подразумеваемое значение, равное 10, вероятно, слишком велико для большинства высокоскоростных сетей. Если сканирование производится не через коммутируемое соединение, уменьшите число попыток до 3, чтобы ускорить процесс сканирования, особенно для больших целевых сетей. Можно также указать, следует ли включать в отчет неработающие хосты. Обычно это нежелательно, поскольку искажается общая статистика сканирования, - получается, что просканировано больше хостов, чем на самом деле есть в сети. Однако включение в отчет "мертвых душ" может быть полезным, если вы хотите получить данные обо всех IP-адресах, с которыми был контакт.
Login configurations (Конфигурации входа)
В этом разделе задаются счета для входа, если вы хотите, чтобы Nessus более глубоко тестировал некоторые сервисы. Стандартное сканирование Nessus проверяет сеть без привлечения каких-либо дополнительных данных о ней, кроме IP-адресов. Однако, если задать входное имя и пароль для конкретного сервиса, то Nessus подвергнет его дополнительным проверкам. Например, если ввести входное имя для Windows-домена (SMB-счет), Nessus будет дополнительно тестировать безопасность этого домена как зарегистрированный пользователь. По умолчанию он проверяет только анонимный сервер FTP с помощью входного имени "anonymous" и стандартного пароля в виде адреса электронной почты. С действующими входными именами можно организовать тестирование FTP, HTTP, IMAP, NNTP, POP2, POP3 и SNMP.
Имеется отдельный раздел для тестирования входных форм HTTP. Можно задать определенный URL и значения заполняемых полей формы. По умолчанию будет проверяться индексный каталог с пустыми полями имени пользователя и пароля.
Brute-force login (Hydra) (Вход методом грубой силы - Hydra)
Этот раздел позволяет воспользоваться дополнительной программой Hydra, которая проверяет целостность паролей вашей системы. Вы предоставляете ей файл входных имен и паролей, а она попытается пройти по всему списку для всех указанных сервисов. Я не рекомендую применять эту опцию, если только вы не готовы иметь дело с последствиями атаки методом грубой силы, которая может блокировать счета многих пользователей после превышения максимально допустимого числа попыток входа. Предпочтительный способ проверки стойкости ваших паролей - автономное применение программ взлома к файлу паролей. Однако может быть полезно протестировать один сервис, который не часто используется, например, FTP или Telnet. Опираясь на Hydra, метод грубой силы можно применять к следующим сервисам: Cisco IOS (стандартный и разрешающий пароли), FTP, HTTP, ICQ, IMAP, LDAP, NNTP, PCNFS, POP2, Rexec, SMB (домен Windows), SOCKS 5, Telnet и VNC.
SMB use host SID to enumerate local users (Использование SMB SID хоста для перебора локальных пользователей)
В этом разделе задается диапазон числовых идентификаторов пользователей, чтобы попытаться получить дополнительную информацию об именах пользователей в домене. По умолчанию проверяются идентификаторы в диапазоне 1000-1020, который в сетях Windows всегда содержит по крайней мере счета административного и гостевого пользователей. Nessus проверит их с пустым паролем и с паролем, совпадающим с входным именем.
Services (Сервисы)
Этот раздел предназначен для тестирования сервисов SSL. Можно задать проверяемые сертификаты и получить отчет об уровне шифрования, который поддерживают ваши web-серверы. Это могут быть локальные серверы, которые все еще допускают старое 40-битное шифрование, что в наше время считается небезопасным для критически важных данных.
Web mirroring (Зеркалирование Web)
Данная настройка позволяет задать, насколько глубоко сканер будет читать web-сайт в поисках каких-либо дефектов или дыр в безопасности. Можно также изменить подразумеваемый начальный каталог.
Misc. Information on the News Server (Прочая информация о сервере телеконференций)
Если имеется сервер Network News (NNTP), расположенный на любом из IP-адресов в целевом диапазоне, Nessus проверит настройки и ограничения, установленные для посылок. Это гарантирует, что ваши серверы телеконференций не могут быть использованы для рассылки спама и иной ненадлежащей деятельности.
Test HTTP dangerous methods (Проверка опасных методов HTTP)
Тест Integrist проверяет, не допускают ли некоторые web-серверы в сети опасные команды вроде PUT и DELETE. По умолчанию данная проверка отключена, так как тест может удалить вашу домашнюю страницу, если сервер отвечает на эти команды.
Ftp writable directories (Каталоги Ftp, допускающие запись)
Проверяются серверы FTP, которые разрешают доступ для записи анонимным пользователям (что никак нельзя считать хорошей практикой). Подразумеваемая настройка означает проверку прав доступа, выданных файловой системой, и реакцию, если оказывается, что запись разрешена. Можно также задать игнорирование информации от файловой системы и пытаться в любом случае записать файл, чтобы убедиться, что доступные для записи каталоги отсутствуют. Как и с тестом Integrist, будьте осторожны с этой опцией, так как дело может кончиться перезаписью файлов на сервере FTP.
SMTP settings (Настройки SMTP)
Эти настройки используются для дополнительного тестирования почтовой системы. Nessus пытается послать поддельные сообщения, чтобы проверить, как реагирует система. Nessus.org используется как подразумеваемый домен, с которого будет приходить тестовая почта, но эту установку можно здесь изменить. Многие почтовые серверы не отвечают, если имя почтового сервера недействительно. Есть смысл изменить этот адрес, если вы являетесь внешним консультантом и хотите, чтобы ваш клиент знал, откуда приходят поддельные сообщения. Однако не используйте собственный домен, если сканируете изнутри организации; это собьет с толку почтовый сервер, который увидит поступающие от самого себя сообщения, и может повлиять на надежность результатов тестирования.
Libwhisker options (Опции Libwhisker)
Эти опции предназначены для использования с дополнительной программой Whisker, которая проверяет целостность web-серверов. Обратитесь к документации программы Whisker за объяснением данных настроек. По умолчанию эти опции отключены.
SMB use domain SID to enumerate users (Использование SMB SID домена для перебора пользователей)
В рамках этой проверки домена Windows делается попытка идентифицировать пользователей на основе их идентификаторов безопасности (SID). В типичных доменах Windows значение SID, равное 1000, назначено администратору, и несколько других стандартных назначений применяются для системных счетов, таких как гостевой. Nessus опрашивает заданный диапазон идентификаторов безопасности, пытаясь экстраполировать имена пользователей.
HTTP NIDS evasion (Обход сетевой системы выявления вторжений при тестировании HTTP)
Этот раздел предоставляет различные методы, позволяющие избежать обнаружения сетевой системой выявления вторжений (NIDS) путем создания и подделки специальных универсальных локаторов ресурсов для атак на web-серверы. Чтобы этим воспользоваться, потребуется дополнительная программа Whisker. Различные тесты пытаются послать странные URL на ваши Web-серверы, чтобы посмотреть, не дадут ли они пользователю возможность выполнить с помощью CGI-процедур ненадлежащие действия. Полное описание этих тестов можно найти в документации Whisker или в статье по адресу http://www.wiretrip.net/rfp/libwhisker/README.
По умолчанию эти методы отключены, так как они имеют тенденцию создавать большой сетевой трафик и генерировать много ложных срабатываний. Однако, если вы применяете в своей сети системы выявления вторжений и хотите понять, работают ли они на самом деле, можно выполнить эти тесты, чтобы посмотреть, будут ли они обнаружены.
NIDS evasion (Обход сетевых систем выявления вторжений)
Этот раздел аналогичен предыдущему, за исключением того что Nessus для обхода сетевых систем выявления вторжений, которые действуют по принципу сопоставления с образцом, проделывает хитрые манипуляции с реальными пакетами TCP, а не с запросами универсальных локаторов ресурсов. Большинство современных сетевых систем выявления вторжений разоблачат эти трюки, но если у вас старая или давно не обновлявшаяся система, то стоит попробовать этот тест, чтобы посмотреть, какова будет реакция. И в этом случае также в отчеты могут попасть подозрительные данные, поэтому для обычного тестирования уязвимостей применять эту опцию не рекомендуется.

Вкладка Scan Options (Опции сканирования)
В отличие от отдельных тестов на вкладке предпочтений, эта вкладка содержит настройки, влияющие на весь процесс сканирования.
Port range (Диапазон портов)
Данный параметр контролирует фазу сканирования портов, задавая целевой диапазон (по умолчанию - 1-15000, что должно охватить большинство обычных сервисов). Если вы желаете поискать "троянские" программы и другие сервисы, действующие на необычно больших номерах портов, подразумеваемый диапазон необходимо расширить и сканировать все 65535 портов TCP и UDP. Следует регулярно (ежемесячно или ежекваратально, в зависимости от размеров сети) выполнять полное сканирование портов всех машин.
Consider unscanned ports as closed (Считать несканированные порты закрытыми)
Данная опция заставляет Nessus объявлять несканированные порты закрытыми. Вы можете что-то пропустить, если (посредством предыдущей опции) не задали достаточно широкий диапазон портов, но зато сканирование выполнится быстрее и с меньшим сетевым трафиком.
Number of hosts to test at the same time (Число одновременно тестируемых хостов)
Задается число хостов, которые Nessus тестирует параллельно. В большой сети возникает соблазн завысить данный параметр и тестировать все хосты одновременно. Однако с некоторого момента это становится контрпродуктивным - в действительности сканирование будет длиться дольше, а может и вообще не закончиться, если завязнет на каком-то одном хосте. На самом деле, на средних серверных машинах (до 2 ГГц) я рекомендую задавать это значение равным 10 хостам вместо подразумеваемого значения 30. Для большинства сканирований это представляется оптимальным значением. Однако, если в вашем распоряжении суперсервер, а сеть очень большая, можно пытаться наращивать это значение, пока это дает видимый эффект.
Number of checks to perform at the same time (Число одновременно выполняемых проверок)
Nessus поддерживает многозадачность не только в смысле одновременного тестирования нескольких хостов, но и в смысле одновременного выполнения нескольких проверок. Подразумеваемое значение 10 представляется разумным, однако, в зависимости от производительности сервера Nessus, можно увеличивать или уменьшать его.
Path to the CGIs (Маршрут к CGI)
Подразумеваемое место, где Nessus будет искать на удаленной системе CGI-процедуры для их тестирования. Если вы используете на машине необычную конфигурацию, то необходимо задать правильный маршрут, чтобы Nessus проверил CGI-процедуры.
Do a reverse lookup on the IP before testing it (Выполнять обратный поиск IP-адреса перед тестированием)
При использовании данной настройки перед проверкой делается попытка выполнить обратный поиск DNS и определить имя хоста для каждого IP-адреса. Это существенно замедляет сканирование и по умолчанию отключено.
Optimize the test (Оптимизировать тестирование)
По умолчанию при выполнении тестов Nessus пытается поступать разумно и не делать проверок, неприменимых к конкретному хосту. Здесь эту опцию можно отключить, чтобы Nessus выполнял все тесты на всех хостах, независимо от того, что покажет сканирование портов.
Safe checks (Безопасные проверки)
По умолчанию всегда устанавливается данный режим. Это значит, что Nessus не будет выполнять никаких небезопасных проверок, которые могут вызвать аварию или как-то иначе повредить серверу. По заголовкам и другой информации определяется, имеет ли хост определенную уязвимость. Я рекомендую всегда выбирать безопасный режим, даже если это приводит к увеличению числа ложных срабатываний.
Designate hosts by their MAC address (Обозначать хосты адресами доступа к среде передачи)
Включите эту опцию, если хотите, чтобы в отчете Nessus хосты обозначались их MAC-адресами, а не адресами IP, как делается по умолчанию. Если в вашей сети имеется хорошая база данных MAC-адресов и если вам трудно соотносить IP-адреса с определенными хостами в связи с применением протокола динамического конфигурирования хостов, подобный выбор поможет вам получить более полезный отчет.
Detached scan (Обособленное сканирование)
Данная возможность позволяет Nessus выполнять сканирование без соединения с клиентом, что полезно для сканирования в необычное время без вмешательства человека. Можно указать, чтобы отчет о сканировании направлялся по определенному адресу электронной почты.
Continuous scan (Непрерывное сканирование)
При использовании этой возможности сканирование запускается на регулярной основе, что полезно для автоматического сканирования сети по расписанию. Задайте интервал между сканированиями в секундах (86400 - для ежедневного сканирования, 604800 - для еженедельного и примерно 2592000 - для ежемесячного). Организовать регулярное сканирование можно и более удобным способом, например при помощи Командного центра Nessus (Nessus Command Center, NCC), описанного в. Однако, если вы не хотите устанавливать Web-сервер и базу данных, требующиеся для NCC, рассматриваемая возможность позволяет легко и просто организовать регулярное сканирование.
Port scanner (Сканер портов)
Здесь содержится несколько глобальных настроек для фазы сканирования портов:

  • tcp connect() scan: В этом случае вместо Nmap применяется встроенный в Nessus сканер портов. Он быстрее и требует значительно меньше памяти, однако создает больше шума в сети и будет запротоколирован на большинстве сканируемых машин. Кроме того, над его настройками значительно меньше контроля, чем для Nmap.
  • Nmap: В этом случае применяется Nmap и соответствующие настройки, заданные во вкладке предпочтений для сканирования портов.
  • SYN Scan: Данная возможность была реализована в версии 2.0. Предлагается встроенное сканирование SYN в упомянутом выше режиме tcp connect. Это делает сканирование несколько менее шумным, но недостаток детального контроля по сравнению с Nmap все же остается.
  • Ping the remote host: До всех проверок выполняется эхо-тестирование хостов в целевом диапазоне, чтобы проверить, работают ли они.
  • scan for LaBrea Tar-pitted hosts: Хосты La Brea Tar-pitted служат для обнаружения сканирования портов и затягивания его до бесконечности, что может замедлить или вызвать аварию сканирования. Данная опция делает попытку обнаружить и обойти хосты с подобной защитой.

Вкладка Target Selection (Выбор цели)
На этой вкладке задаются цели сканирования . Перечислим способы задания целей сканирования:

  • Один IP-адрес: 192.168.0.1.
  • IP-адреса, разделенные запятыми: 192.168.0.1,192.168.0.2.
  • IP-диапазоны, разделенные дефисом: 192.168.0.1-192.168.0.254.
  • Стандартная нотация с косой чертой: 192.168.0.1/24 (сеть класса C из 256 .адресов)
  • Имя хоста: myhost.example.com.
  • Любая комбинация вышеприведенных обозначений, разделенных запятыми: 192.168.0.1-192.168.0.254,195.168.0.1/24.

На этой вкладке можно задать несколько опций.
Read file (Прочитать файл)
Щелкните мышью на этой кнопке, чтобы прочитать цели сканирования из файла. Это должен быть стандартный текстовый файл с адресами, отформатированными как в приведенных выше примерах.
Perform a DNS zone transfer (Выполнить передачу зон DNS)
Делается попытка извлечь файл зон для домена, представленного целевыми IP-адресами. На собственных (немаршрутизируемых) IP-адресах это не работает.
Save this session (Сохранять сеанс)
Поддерживает запись целей сканирования и настроек, чтобы их можно было восстановить в будущем. По умолчанию включено.
Save empty sessions (Сохранять пустые сеансы)
Сохранять сеансы, даже если они не содержат данных, например, IP-диапазон без единого работающего хоста в нем.
Previous sessions (Предыдущие сеансы)
Выдаются все предыдущие сеансы; можно загрузить любой из них, выбрав мышью соответствующий элемент списка.
Вкладка User (Пользователь)
На этой вкладке отображаются все пользователи сервера Nessus и все ассоциированные с ними правила (например, возможность входа только с определенного IP-адреса). Счета пользователей создаются с помощью процедуры nessus-adduser, но на этой вкладке всегда можно отредактировать или добавить правила для любого существующего пользователя.


Вкладка KB (Knowledge Base) (База Знаний)
Эта вкладка содержит конфигурацию и элементы управления для базы знаний Nessus. Это одна из самых полезных возможностей, предлагаемых Nessus. По умолчанию она отключена. Чтобы ее включить, необходимо поднять флажок "Enable KB saving". База знаний отслеживает все выполненные сканирования. Затем, когда вы захотите снова выполнить сканирование, Nessus использует сохраненные данные, чтобы определить, какие хосты сканировать и какие тесты на каждом из них выполнять. Доступные настройки описаны ниже.
Test all hosts (Тестировать все хосты)
Используется по умолчанию. Данные базы знаний будут сохраняться, но каждый хост будет тестироваться полностью.
Test only hosts that have been tested in the past (Тестировать только хосты, тестировавшиеся ранее)
Эта настройка заставляет Nessus тестировать только те хосты в целевом диапазоне, которые тестировались ранее. Это означает, что Nessus не будет искать новых хостов. Тем самым несколько снижается сетевой трафик, но машины, появившиеся в сети после предыдущего тестирования, проверены не будут.
Test only hosts that have never been tested in the past (Тестировать только хосты, не тестировавшиеся ранее)
Противоположно предыдущей настройке; в целевой сети проверяются только новые хосты. Это полезно для быстрой проверки новых машин в сети, без сканирования существовавших ранее.
Reuse the knowledge bases about the hosts for the test (Использовать при тестировании базы знаний о хостах)
Исключается выполнение определенных проверок на основе заданных параметров и того, что было найдено ранее.
  • Do not execute scanners that have already been executed (Не сканировать повторно). Пропускается фаза сканирование портов, полагаясь на результаты предыдущих сканирований.
  • Do not execute info gathering plug-ins that have already been executed (Не запускать повторно модули сбора информации). Nessus не будет запускать модули сбора информации, работавшие во время предыдущих сканирований. Все новые модули сбора информации, добавленные после предыдущего сканирования, будут запущены.
  • Do not execute attack plug-ins that have already been executed (Не запускать повторно модули атак). То же, что предыдущая настройка, но применительно к модулям атак.
  • Do not execute DoS plug-ins that have already been executed (Не запускать повторно модули атак на доступность). Аналогично предыдущей настройке.
  • Only show differences with the previous scan (Показывать только отличия от предыдущего сканирования). Выполняется дифференциальное сканирование; отчет показывает различия между двумя последними сканированиями. Полезно, если нужно посмотреть, что изменилось в сети со времени последнего сканирования. То же можно сделать и с помощью Командного центра Nessus, описанного в.

Max age of a saved KB (in secs) (Максимальный возраст сохраненной базы знаний (в секундах))
Эта настройка не позволяет серверу использовать слишком старые базы знаний сканирования. Подразумеваемый максимальный возраст - 86400 секунд (одни сутки). Можно увеличивать это значение вплоть до 60 дней (5184000 секунд). Дальнейшее увеличение возраста нецелесообразно, так как будут использоваться слишком старые данные.
При помощи базы знаний можно ускорить и упростить сканирование, однако ее возможности следует применять избирательно и регулярно (желательно - ежемесячно) выполнять полное сканирование.

Опции оперативного управления процессом сканирования
Во время сканирования Nessus выдает экран, отображающий состояние процесса сканирования. Можно видеть каждый проверяемый хост и то, насколько далеко продвинулись проверки. Показывается также выполняемый в данный момент встраиваемый модуль. Обычно элементы изображения сменяются очень быстро, но иногда картинка застревает на определенном модуле. Можно прервать тестирование текущего хоста, щелкнув мышью на кнопке Stop с правой стороны экрана. Можно также щелкнуть мышью на кнопке "Stop the whole test" внизу, чтобы полностью остановить тестирование и получить отчет о полученных на текущий момент результатах.

NessusWX - это Nessus-клиент под Windows. Он представляет только клиентскую часть программы. К сожалению, Nessus пока не предлагает полное решение для тестирования уязвимостей из-под Windows. Имеющая прочные позиции компания Network Security выпускает портированную под Windows коммерческую версию Nessus, называемую NeWT. Однако, если вы не можете позволить себе ее приобретение, вам придется использовать сервер Nessus на платформе UNIX для подключения своего клиента NessusWX.
NessusWX - не просто клон UNIX-клиента. Помимо доступа к серверу Nessus с Windows-машины, NessusWX предоставляет ряд возможностей, отсутствующих у UNIX-клиента. Он также реализует некоторые настройки более логичным и удобным для применения образом. На самом деле, многие считают NessusWX лучшим вариантом использования Nessus. Помните только, что для сканирований вам все равно необходимо иметь сервер Nessus под UNIX. Кроме того, поскольку NessusWX является независимым программным продуктом, его возможности иногда будут немного отставать от "родной" UNIX-платформы. Перечислим некоторые привлекательные дополнительные возможности NessusWX.

  • Поддержка MySQL: Можно экспортировать результаты сканирования Nessus в базу данных MySQL - либо прямо во время сканирования, либо сохраняя результаты в формате MySQL для последующей обработки.
  • Дополнительные форматы отчетов: NessusWX позволяет сохранять отчеты Nessus как файл PDF. Запланирована поддержка формата Microsoft Word и других форматов файлов.
  • Операции с отчетами: Можно уточнять результаты сканирования, например, помечать определенные тревожные сообщения как ложные срабатывания, чтобы они не появлялись в отчете. Это полезно, если ваш босс раздражается, когда видит отчет с несколькими дырами в безопасности, а вам необходимо объяснять, что это ложные срабатывания и на самом деле дыр нет.
  • Более простой интерфейс пользователя: По моему мнению, пользовательский интерфейс NessusWX более дружественный, чем у Nessus, а параметры и предпочтения представлены упрощенным образом. Однако, если вы привыкли к применению UNIX-интерфейса, это может вас запутать, так как некоторые вещи выглядят немного иначе. Но в целом Windows-реализация лучше, чем порой путаные и избыточные опции в UNIX-клиенте.

 

Установка NessusWX
Установить NessusWX очень просто. Возьмите файл с компакт-диска или загрузите бинарный самораспаковывающийся файл с nessuswx.nessus.org/index.html#download.
Можно также получить пакеты с исходными текстами, если вы хотите поработать с ними и посмотреть, нельзя ли их улучшить. Но если вы не намерены это делать, то для получения исходных текстов реальной причины нет. Просто щелкните мышью на файле, и программа установки будет направлять ваши действия.
Применение Windows-клиента NessusWX
По внешнему виду интерфейс NessusWX отличается от исходного UNIX-клиента. Вы не увидите описанных ранее вкладок, но все рассмотренные конфигурационные опции доступны и в этой версии. В клиенте NessusWX проведено более четкое разграничение между настройками, которые контролирует клиент, и теми, что контролирует сервер. Контролируемые сервером настройки находятся в текстовом файле nessus.rc и являются глобальными настройками, в то время как настройки клиентской стороны по большей части относятся к определенным типам сканирования. Содержимое файла nessus.rc можно просмотреть и отредактировать, выбирая пункт Server Preferences в меню Communications.
Другое удобное свойство клиента Windows - возможность интерактивного создания конфигураций сканирования, называемых сеансами (sessions), с последующим подключением к серверу Nessus. Это означает, что конфигурации можно создавать автономно, вне соединения с сервером. Однако, чтобы начать сканирование или просмотреть и сконфигурировать предпочтения серверной стороны, необходимо подключиться к серверу и войти в него. Для этого в меню Communications щелкните мышью на Connect. Можно также использовать опцию Quick Connect (Быстрое соединение) и задать подразумеваемый сервер, чтобы всегда входить в него. Клиент также запомнит ваш пароль и входное имя, чтобы их не нужно было вводить каждый раз. (Это удобно, но, несомненно, менее безопасно!)
Создание профиля сеанса
В первую очередь целесообразно создать профиль сеанса. Это цель или совокупность целей, которые вы хотите просканировать.

  1. В меню Profile (Профиль) выберите New (Новый). В появившемся диалоговом окне введите имя сеанса сканирования. Имеет смысл выбрать содержательное имя, поскольку оно будет фигурировать в шапке отчета сканирования.
  2. Затем появится окно Session Properties (Свойства сеанса). Не забудьте щелкнуть мышью на кнопке Apply (Применить) после ввода данных в каждой вкладке.
  3. Щелкните мышью на Add (Добавить), чтобы задать адреса для сканирования. Отметим простой формат ввода различных диапазонов. Можно также импортировать список целей, вводя имя содержащего их текстового файла.
  4. Щелкните мышью на Remove (Удалить), чтобы удалять хосты с экрана состояния, когда заканчивается их сканирование, или выберите режим без показа выполняемых модулей.
  5. Затем щелкните мышью на вкладке Options, чтобы задать опции сканирования, по большей части аналогичные опциям UNIX-клиента.
  6. Посредством вкладки Port scan конфигурируется фаза сканирования портов. Подразумеваемая настройка включает только общеупотребительные серверные порты (1-1024), а не диапазон 1-15000, как в UNIX-клиенте. Конечно, вы можете изменить данный диапазон по своему желанию. Доступны еще две настройки: Well-known services (Общеизвестные сервисы) и Specific range (Определенный диапазон). Последняя позволяет задать любой требуемый диапазон портов.
  7. После входа в сервер вкладка Plugins позволит выборочно включать или отключать определенные модули или целые группы модулей. На самом деле, можно сконфигурировать некоторые параметры модулей, такие как подразумеваемый пароль, подразумеваемые каталоги и т.д., прямо из клиента, что невозможно в UNIX-клиенте.
  8. Имеется также вкладка Comments. Это приятное добавление позволяет документировать различные сеансы сканирования, чтобы позднее можно было вспомнить, что вы пытались делать.
  9. Щелкните мышью на OK, чтобы закрыть окно.
  10. Сконфигурировав все параметры сканирования, сделайте двойной щелчок мышью на иконке профиля сканирования, который вы хотите использовать, а затем щелкните мышью на кнопке Execute. Должно начаться сканирование, ход которого отображается экране состояния. Можно заметить, что экран состояния сканирования для NessusWX подробнее, чем у UNIX-клиента. На нем отображается, в частности, процент выполненного сканирования портов. UNIX-клиент показывает прогресс сканирования только в виде полосы, что не является точным. Кроме того, показывается, сколько осталось до завершения тестов, а также текущее значение общего числа открытых портов, информационных сообщений, предостережений и найденных дыр в безопасности каждого хоста. Так же как в UNIX-клиенте, можно прервать сканирование отдельных хостов или весь тест.

Отчеты NessusWX
Чтобы получить, создать и просмотреть отчеты NessusWX, щелкните правой кнопкой мыши на профиле сканирования и выберите Results из контекстного меню. Несколько опций этого экрана позволяют управлять выводом отчетов. Можно выбрать сортировку отчета по хостам или по уязвимостям. Можно задать удаление из отчета ложных срабатываний или включение конфигурации сканирования, чтобы можно было вспомнить, какие настройки использовались для получения этих результатов. Не составляет труда сделать так, чтобы отчет содержал только открытые порты и сообщения безопасности низкого, среднего или высокого уровней серьезности, снимая выбор соответствующих флажков. Все это позволяет гибко управлять формой представления отчетов, что важно, если вы представляете эти отчеты нетехническому руководству, аудиторам, заказчикам или другим непрофессионалам.
Опции отчетов в NessusWX включают форматы .nsr (бывший "родной" формат Nessus), .nbe, html, обычный текст и .pdf. Все результаты хранятся в базе данных, поэтому можно легко извлечь результаты прошлых сканирований. Можно также сравнить результаты двух сканирований с помощью опции diff. Базовый отчет HTML включает ряд дополнений по сравнению с HTML-отчетами в UNIX. Он включает имя профиля, показывающее, что именно сканировалось, а также временной штамп и другие статистические данные, такие как длительность сканирования. Кроме того, результаты сканирования можно упорядочить по IP-адресам, как упоминалось ранее, что существенно облегчает поиск определенного хоста (это подтвердит любой, кто пытался упорядочить расположенные случайным образом результаты сканирования в UNIX). К сожалению, отсутствуют встроенные HTML-ссылки, которые имеются в UNIX-отчетах, что могло бы существенно облегчить навигацию в отчете. (Будем надеяться, что кто-нибудь сумеет объединить лучшее из отчетов UNIX и Windows.) Кроме того, все результаты сканирования можно поместить в базу данных и создать собственные отчеты с помощью NCC, как описано в .
Примеры конфигураций сканирования Nessus
При столь большом выборе настроек непросто сообразить, что делать при первом сканировании. Для детального изучения всех опций требуется некоторое время, но мы приведем несколько примеров конфигурации, которые должны давать хорошие результаты для наиболее типичных сетевых конфигураций.
Пример конфигурации 1: Внешнее сканирование множества IP-адресов без межсетевого экрана
Это простейшая из возможных конфигураций, которая требует наименьших изменений в подразумеваемой конфигурации Nessus.

  • Предпочтения: Оставьте все открытым настежь; никакой скрытности на самом деле не нужно, однако сканирование SYN снизит сетевой трафик.
  • Опции сканирования: При сколько-нибудь заметном числе хостов лучше применять встроенное сканирование SYN, так как сканирование с помощью Nmap может потребовать много времени.
  • Оставьте все остальные опции в подразумеваемом состоянии.

Пример конфигурации 2: Внешнее сканирование сети с одним внешним IP-адресом межсетевого экрана
Это немного сложнее и требует некоторой скрытности, чтобы пакеты сканирования попали за межсетевой экран.

  • Предпочтения: Используйте Nmap для SYN-сканирования с фрагментацией пакетов. Для единственного IP-адреса память и время не составляют проблемы.
  • Опции сканирования: Не делайте эхо-тест хоста, так как большинство межсетевых экранов отбрасывают подобные пакеты, и вы не получите никаких результатов.
  • Оставьте все остальные опции в подразумеваемом состоянии. Если вы ничего не получите в ответ, попробуйте сканирование без включенного сканирования портов.

Пример конфигурации 3: Внешнее сканирование сети с несколькими общедоступными IP-адресами - для межсетевого экрана и в демилитаризованной зоне

  • Предпочтения: Используйте Nmap для SYN-сканирования с фрагментацией пакетов.
  • Опции сканирования: Выполните эхо-тестирование хостов, чтобы исключить недействующие IP-адреса в демилитаризованной зоне. Для целевых сетей из более чем 20 хостов используйте встроенное сканирование SYN.
  • Оставьте все остальные опции в подразумеваемом состоянии. Если вы ничего не получите в ответ, попробуйте сканирование без сканирования портов.

Пример конфигурации 4: Несколько внешних IP-адресов с сетевой системой обнаружения вторжений

  • Предпочтения: Можно попробовать несколько методов обхода системы обнаружения вторжений. Можно также применить экзотические типы сканирования, такие как FIN и ZMAS, если общедоступные серверы не являются Windows-машинами. Стоит попробовать растягивание интервалов между пакетами сканирования, хотя это и затянет сканирование.
  • Опции сканирования: Откажитесь от сканирования портов, иначе наверняка сработает система обнаружения вторжений.
  • Встраиваемые модули: Стоит отключить самые шумные встраиваемые модули, такие как "потайные входы".

Пример конфигурации 5: Внутреннее сканирование позади межсетевого экрана
.При таком сканировании для вас важен состав генерируемых данных, а скрытность не имеет большого значения (поскольку вы уже находитесь позади межсетевого экрана).

  • Предпочтения: Сработает простое SYN-сканирование, так как не нужно заботиться о прохождении через межсетевой экран. Фрагментация пакетов не нужна, поскольку это замедлит сканирование. Если вы находитесь в сети Windows, введите свои входные данные для домена, чтобы Nessus мог проверить настройки ваших пользователей Windows. Можно выполнить одно сканирование с входными данными и одно без таковых, чтобы увидеть, что получит некто, не располагающий информацией о пользователях, при простом подключении к вашей ЛВС.
  • Опции сканирования: Для большого числа хостов используйте встроенное SYN-сканирование. Эхо-тестируйте удаленные хосты, чтобы быстро исключить недействующие IP-адреса.
  • Встраиваемые модули: Стоит отключить некоторые категории модулей, неприменимые для внутреннего сканирования, такие как подразумеваемые системные счета UNIX (если у вас нет внутренних UNIX-машин), и то же для модулей Windows, если все машины работают под управлением UNIX. Маршрутизаторы и межсетевые экраны брать в расчет не нужно, если только у вас нет внутренних сегментов ЛВС с межсетевыми экранами. Если вы не используете Novell Netware, отключите эту категорию модулей. Отключите все остальное, что не соответствует вашей внутренней среде ЛВС.

Уголок кодировщиков Флэми Теха:
Написание собственных процедур Nessus
Как упоминалось выше, Nessus можно индивидуализировать и расширить для ваших конкретных нужд, поскольку его исходные тексты открыты. На самом деле, Nessus даже легче расширять, чем другие программы с открытыми исходными текстами, так как он включает собственный встроенный интерпретируемый язык, называемый Nessus Attack Scripting Language (NASL). NASL позволяет легко и быстро писать новые тесты для Nessus-сканирования, не погружаясь во внутреннее устройство Nessus и не занимаясь сложным программированием.
Примечание: Тем не менее, прежде чем браться за NASL, необходимо владеть основами программирования (в частности, языком программирования Си). NASL очень похож на Си с многочисленными изъятиями - в нем нет, например, структур и деклараций переменных. Это облегчает быстрое написание новых процедур для проверки некоторых условий.
Процедуры NASL очень похожи на любые другие программы с переменными, условными инструкциями и функциями, которые можно вызывать. Благодаря Рено и его команде, создавшим множество функций, которые можно использовать для упрощения работы, вам не придется самостоятельно придумывать, как изготовить пакет или проверить открытый порт.
Каждая процедура состоит из двух частей. Первая является разделом регистрации, который Nessus использует для целей документирования. В нем вы информируете Nessus, какого типа эта процедура, и предоставляете некоторые сведения о ней, чтобы пользователи знали, что она делает. Второй раздел является разделом атаки. Именно здесь вы реально выполняете код по отношению к удаленной машине и что-то делаете с результатами.
Предположим для примера, что в вашей сети возникли реальные проблемы с Yahoo Messenger. Запуск Nessus или сканера портов показывает открытые порты, но вы хотите получить специальное уведомление, когда проявится порт Yahoo.
Для этой цели можно написать на NASL индивидуальную процедуру Nessus. На машинах с запущенной программой Yahoo Messenger открыт порт 5101, поэтому с помощью функции NASL get_port_state() можно легко и быстро найти машины, выполняющие эту программу, и известить об этом. Ниже представлен пример программы на NASL для решения поставленной задачи. Все строки с символом # в начале являются комментариями и не обрабатываются интерпретатором NASL.
# Это раздел регистрации
# Проверка на Yahoo Messenger
#
if(description)
{
# Это раздел регистрации и содержит информацию для Nessus
script_name(english:"Looks for Yahoo Messenger Running");
script_description(english:"This script checks to see if Yahoo Messenger is running");
script_summary(english:"connects on remote tcp port 5101");
script_category(ACT_GATHER_INFO);
script_family(english:"Misc.");
script_copyright(english:"This script was written by Tony Howlett");
exit(0);
}
# Это раздел атаки
# Проверить, открыт ли на удаленной системе порт 5101
# Если открыт, то вернуть уведомление
port = 5101;
if(get_port_state(port));
{
report = "Yahoo Messenger is running on this machine!";
security_warning(port:5101, data:report);
}
# Конец
Вот и все. В этой простой процедуре используются два предположения. Первое состоит в том, что порты удаленной машины были просканированы по крайней мере до номера 5101, так как функция get_port_state могла бы ошибочно вернуть истину для порта 5101, если его состояние было неопределенным. Предполагается также, что машина с открытым портом 5101 выполняет Yahoo Messenger, хотя это может быть и некоторое другое приложение. При желании можно добавить дополнительную логику для проверки этого, перехватывая заголовок или некоторую часть ответа и анализируя его характеристики.
Это очень простой пример. С помощью NASL можно сделать значительно больше. Обратитесь к оперативной справке NASL, чтобы получить дополнительную информацию обо всех функциях, которые можно использовать, и синтаксисе языка. Существует прекрасный учебник, написанный самим Рено, расположенный по адресу http://www.nessus.org/doc/nasl.html.

Особенности сканирования уязвимостей

Теперь, когда вы полностью понимаете все возможности, можно приступить к сканированию. Но прежде чем вы отправите пакеты, позвольте несколько слов об ответственном сканировании. Хотя я уже упоминал об этих вопросах , тестирование уязвимостей имеет некоторые особенности. Сканирование портов является довольно невинной деятельностью, хотя эта активность и раздражает, когда вы видите ее зафиксированной в журналах. Однако тестирование уязвимостей может быть существенно более разрушительным, приводя к авариям серверов, разрывая соединения с Интернетом, или даже удаляя данные (например, тест Integrist). Многие из тестов Nessus специально созданы для организации атак на доступность. Даже с включенной опцией безопасной проверки тесты могут вызывать проблемы на некоторых системах. В связи с этим дадим несколько рекомендаций.

Не сканируйте без разрешения

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

Убедитесь, что все резервные копии актуальны

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

Планируйте время сканирования

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

Избегайте избыточного сканирования

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

Правильно размещайте сервер сканирования

Если вы хотите по-настоящему проверить внешнюю (из Интернета) уязвимость вашей информационной системы, следует разместить сервер Nessus вне вашего межсетевого экрана. Это может быть домашнее соединение с Интернетом, центр обработки данных, расположенный вне сети вашей организации или в другой организации (возможно, вы сможете договориться об использовании ресурсов другой организации для сканирования и позволить им использовать ваши для той же цели). Помните, что в силу клиент-серверной архитектуры Nessus, вы сможете по-прежнему управлять сканированием, находясь под защитой межсетевого экрана. Необходимо только включить поддержку SSL для криптографической защиты коммуникаций между клиентом и сервером.
При сканировании внутренней сети сервер необходимо разместить позади межсетевого экрана. Установка Nessus на ПК-блокноте может облегчить выполнение сканирования как изнутри, так и извне вашей сети, не требуя множества машин.

Какие уязвимости тестирование не находит

Хотя тестирование уязвимостей - полезное средство в арсенале обеспечения безопасности, не следует считать его панацеей. Имеются ситуации и области, где программа тестирования уязвимостей не может помочь. Для уменьшения рисков требуются дополнительные системы и процедуры. Ниже перечислены проблемы безопасности, которые не будут обнаружены при тестировании уязвимостей.

Логические ошибки

Логические ошибки - это дыры в безопасности в виде ошибочной программной логики. Обычно это необнаруженные или неисправленные ошибки, когда программа выполняется не так, как задумано. Пример - входная Web-страница, которая проводит аутентификацию не совсем корректно. Еще один пример - ошибка, позволяющая пользователям получить больше привилегий, чем они должны иметь. Общеизвестные логические ошибки наиболее употребительных программ могут быть включены в тесты уязвимостей Nessus, но большинство из них слишком сложно обнаружить, что удается, как правило, только специально занимающимся этим хакерам.

Необнаруженные уязвимости

Тестирование уязвимостей основывается на опубликованных отчетах об уязвимостях. Обычно после сообщения об уязвимости для системы пишется специальный дополнительный модуль. Для программ с открытыми исходными текстами это может потребовать всего лишь нескольких дней. Однако в течение этого времени окно уязвимости остается открытым, так как ваш сканер не может найти дыр в безопасности, хотя они существуют. Конечно, вы можете быстро написать собственный тест, используя NASL, пока не появится официальный выпуск.

Индивидуальные приложения

Средства тестирования уязвимостей обычно ориентированы только на опубликованные программы, коммерческие или с открытыми исходными текстами. Если вы применяете программу, которая была разработана только для внутреннего использования, тестирование уязвимостей, вероятно, ничего не сможет в ней проверить. Если она опирается на стандартные протоколы или подпрограммы, такие как HTTP, FTP, или SQL, то некоторые из этих тестов будут применимы. Существуют дополнительные программы, специально созданные для тестирования кода на его безопасность, которые вы должны применить к этим приложениям. С помощью средства тестирования, такого как Nessus, для внутреннего приложения можно написать специальные проверки.

Безопасность персонала

Все имеющиеся в мире проверки не помогут, если у вас плохая политика безопасности, или таковой нет вообще, или она не доведена до сведения персонала. Как было показано во врезке, хакеры, которым не удалось получить доступ к сети техническими средствами, могут воспользоваться методами морально-психологического воздействия, то есть попытаться договориться с кем-нибудь о предоставлении доступа. Это может оказаться удивительно легко, так как хакеры играют на природе человека, его готовности помочь другим, особенно коллегам. Существует только один способ борьбы с подобными методами, и он не требует никаких технических средств. Хорошая политика безопасности, доведение ее до сведения сотрудников, проведение ее в жизнь снизят вашу уязвимость по отношению к таким атакам.

Атаки прошлые и текущие

Тестирование уязвимостей показывает только потенциальные дыры в безопасности вашей системы; оно не сообщит, использовались ли эти дыры, и не предупредит, если атака происходит в настоящий момент. (Выявление атак, когда они происходят, является целью систем обнаружения вторжений.) Такие программы, как Nessus, по своей природе предназначены исключительно для превентивных целей, и они будут эффективны только в том случае, если вы что-то предпринимаете для исправления обнаруживаемых проблем. Сканеры уязвимостей не исправляют ошибок, хотя Nessus очень полезен в том плане, что предоставляет подробные инструкции о том, как исправить любую обнаруженную проблему. И, как говорил Бен Франклин: "Грамм профилактики стоит килограмма лечения".

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика