NESSUS - современный анализ безопасности, методы и типы сканирования
Автор
статьи: Бочкарев Денис
Все большее
внимание вопросам безопасности уделятся при построении и эксплуатации сетей. В
сети достаточное количество людей, которым было бы приятно навредить Вашим
хостам, испортить Вашу работу и Ваше настроение. Администраторам часто не
хватает времени для тестирования своих узлов, поиска новых инструментов и
технологий защиты, не говоря уже о раскрутке кампании на выбивание средств для
покупки дорогих, коммерческих средст защиты. Моя статья посвящена относительно
новому сканеру безопасности - Nessus, призванному прийти на помощь как
администратору, так и хакеру.
Nessus представляет
собой бесплатный современный сканер безопасности локальных и удаленных систем.
Начало Nessus Project было положено в 1998г., первый релиз вышел в
апреле. На тот период самым распространенным сканером безопасности являлся
SATAN, давно ставший устаревшим. Некоторые администраторы (да и не только
=) до сих пор используют SATAN, и его молодых последователей -
Sara, Saint и тд. Название Nessus, по словам авторов, было выбрано
случайно, т.к. такие сочетания как security scanner были абсолютно
приевшимися. Nessus - это бесплатный пакет, с открытым исходным кодом. Его
поддержкой, помимо авторов, занимаются многие энтузиасты со всего
мира.
Задачей Nessus
является определение запущеных служб и уязвимостей, включая самые последние
сообщения о дырах wu-ftpd, наличия демонов DDoS, проблемы ipfw
FreeBSD и многие другие. Nessus состоит из двух частей, сервера и
клиента. Сервер можно установить только на *nix-подобную
операционную систему. Отлично подойдут в этом случае Linux, FreeBSD,
Solaris. Клиенты, помимо *nix версий, существуют также для Windows
9x, NT, имеется клиент в java исполнении. Роль клиента
сводится к управлению и конфигурированию основного демона (сервера), сбору
результатов.
Возможности Nessus довольно велики, и намного превосходят
возможности SATAN, SARA, SAINT. Основной принцип сводиться к девизу
"НЕ ВЕРЬ ГЛАЗАМ СВОИМ" - вся информация нуждается в проверке, т.е.
информация банеров основных служб (например ftp, www, telnet и тд.) не
считается основополагающей. А кто сказал, что www всегда запускают на 80
порту? Подобно SATAN он имеет очень гибкую систему настроек как в выборе
цели (target), так и в используемых методах сканирования и атак. Nessus
производит проверку на наличие более 300 уязвимостей *nix и NT
серверов, а также различного сетевого оборудования, например, маршрутизаторов.
Принцип работы, основанный на модулях (plugins), позволяет без труда
добавлять модули для проверки новых уязвимостей, что и делают не только
разработчики, но и специалисты со всего мира. К достоинсвам Nessus можно отнести
интеграцию с предустановленной утилитой nmap - The Network Mapper,
позволяющей широко варьировать параметры и тип сканирования, например, TCP
SYN, TCP FIN, NULL, Xmas Tree scan, Fragment IP и др. Поддерживается и давно
известная, но многими недооцененная возможность анонимного сканирования по типу
FTP Bounce Attack. Все вышесказанное наглядно демонстрируют следующие
скриншоты:
Настройка плагинов
Выбор
уязвимостей
Опции сканирования
Результаты проверки
выводятся в отдельном окне. В зависимости от типа уязвимости дается некоторое
обоснование найденной проблемы, а также полное или частичное её решение. Фаил
отчета возможно сохраненить в различных форматах (text, html, LaTeX и
др.). Однако, для некоторых уязвимостей необходим определенный опыт работы в
сетях, и с ОС *nix в часности, для того, чтобы сделать правильные выводы и
принять меры. В основном, в рапорте точно указывается причина-решение. Типичная
запись может выглядеть так:
Vulnerability found on port domain (53/tcp)
The remote BIND server, according
to its
version number, is vulnerable to several
attacks that can allow an
attacker to gain
root on this system.
Solution : upgrade to bind
8.2.2-P3
Risk factor : High
Information found on port
domain (53/tcp)
The remote bind version is : 8.1.2
или
так:
Vulnerability found on port smtp (25/tcp)
The
remote SMTP server did not complain when issued the
command :
MAIL FROM:
root@this_host
RCPT TO: /tmp/nessus_test
This
probably means that it is possible to send mail directly
to files, which is a
serious threat, since this allows
anyone to overwrite any file on the remote
server.
NOTE : **
This security hole might be a false positive, since
some MTAs will not
complain to this test and will
just drop the message silently. Check for the
presence
of file 'nessus_test' in /tmp ! **
Solution :
upgrade your MTA or change it.
Risk
factor : High
Скриншот
окна отчета
Рассмотрим
различную технику сканирования представленную в Nessus, где для этих целей
используется Nmap. Не вдаваясь в тонкости протоколов TCP/IP
отметим, что заголовок TCP следует за заголовком IP и дополняет
его информацию. Напомню, что заголовок TCP включает в себя поле
Control Bits размером 6 бит, принимающего следующие значения:
URG:
активно поле срочного указателя
ACK: активно поле
подтверждения соединения
PSH: так называемое
"проталкивание"
RST: cброс или перезагрузка данного
соединения
SYN: синхронизация соединения для его
продолжения
FYN: отсутствие данных
connect () -
это самая простая форма сканирования. В этом случае с интересующим портом
устанавливается соединение в случае если он открыт (listening).
Недостатком данного метода является то, что он полностью протоколируем, т.е.
ваши попытки сканирования будет с усмешкой читать в логах либо на консоли
тамошний администратор (если он вообще их читает ;). Преимуществом является то,
что для проведения данного сканирования не нужны привилегии
root.
SYN scan -
самый распространенный метод, в котором не происходит полного соединения, иначе,
его называют half-open. Метод заключается в посылке запроса SYN, и
ожидании ответа, ACK|SYN - порт открыт, RST - закрыт. Независимо
от ответа, соединение мгновенно! прерывается (вместо того, чтобы послать
ответный ACK, т.н. "трехкратное рукопожатие"). Используя данный метод
шансов остаться незамеченным значительно больше. SYN scan остается
незамеченным для TCP-врапперов, но остерегайтесь firewall-ов и
FreeBSD c поднятым ipfw (ipfwadm). Дело в том, что многие
firewall-ы и различные synloger-ы, отслеживают и протоколиркют
подобные SYN запросы.
Cледующие методы
похожи, в ответ на запросы закрытые порты отвечают флагом RST, открытые -
вообще ничем.
FIN scan
(Stealth FIN) - использует чистый FIN запрос.
Xmas Tree -
включает в запрос флаги FIN, URG, PUSH.
Null scan -
сбрасывает
все флаги.
Отмечу, что
Micro$oft не придерживается подобных раcширений TCP, но это может
сыграть и на руку (в определении подобной ОС). Я видел удивление одного коллеги,
выбравшего FIN scan, и недоумевающего "откуда на его родной NT
столько открытых портов?" (выводы сделайте сами). Также эти методы "не работают"
применительно к ОС HP-Unix, IRIX, IOS cisco и MVS, хотя в последних
версиях возможно ситуация изменилась. Некоторое время назад подобное
сканирование могло остаться незамеченным.
Fragment IP
packets - используется как расширенный вариант SYN, FIN, Xmas, Null
сканирования. Суть заключается в разбиении заголовка на фрагменты, что может
сбить с толку некоторые IDS (Intrusion Detection Systems) и
различные пакетные фильтры, некоторые firewall-ы. Но опять же, свои
машины в период работы я бы не рискнул сканировать подобным методом в виду
непредсказуемой реакции. Отмечу, что данный метод доступен для реализации не на
всех системах.
FTP bounce
scan - метод соединения с некоторым ftp сервисом, и использованием его в
качестве proxy для проведения сканирования других хостов. Метод хорошо описан в
книге Атака на интернет, и я не буду останавливаться на нем
подробно. Отмечу, что не все ftp сервера поддерживают данный метод, сейчас тем
более. В настройках Nessus необходимо настроить аккаунт через который вы
собираетесь проводить FTP bounce scan, сам же Nessus отлично определяет
возможность подобного использования ftpd.
Ident
scan - использование легального сервиса identd
113 порта *nix, так же хорошо описано в книге Атака на интернет, идея
заключается в получении информации о соединении пользователей с сервисами на
данной машине. В нормальной ситуации вряд ли у вас будет возможность
воспользоваться этим методом.
UDP scan -
определяет открытые порты User Datagram Protocol (RFC 768). Cмысл
заключается в посылке нулевого пакета на каждый порт, и в случае если порт
закрыт, мы получим ICMP сообщение о его недосягаемости. Многие
недооценивают данный метод, забывая, что существует масса проблем с
безопасностью служб, которые используют UDP (например tftp, DNS,
bo ;). Применительно к некоторым *nix машинам сканирование может затянуться
(вследствии фильтрации UDP пакетов) , а вот для windoze все будет
OK!
Хотелось бы
отметить еще два интересных метода - ICMP ping & TCP ACK ping. Они
хороши в том случае, если необходимо лишь узнать жива ли машина или нет. Nessus
и так не будет атаковать хост который в дауне. Правильное использование TCP
ACK ping позволит вам обойти firewall. TCP ACK ping -очень красивая и
характерная черта Nmap, но при правильном администрировании сканируемой
машины вы не останетесь незамеченным.
Системы на которые
Nessus ставиться точно: Linux Red Hat 5.1-6.2, Linux Mandrake 6.0-7.0, Black
Cat 6.0-6.2, FreeBSD 3.x, 4.x. По утверждению авторов и пользователей,
Nessus ставиться почти на все *nix системы, но вышеперечисленные я проверял.
Необходимым условием является наличие cледующих компонентов, скачайте и
установите их перед сборкой Nessus, если они у вас не установлены, а также
настройте работу X-Windows.
GTK - The Gimp
Toolkit, version 1.2, иначе вы не сможете работать с клиентом на *nix
машине, Во всех последних дистрибутивах Linux, FreeBSD имеется, но не
забудте установить gtk-devel.
Nmap - The Network Mapper
желательно версии не ниже 2.52, без nmap Nessus работать
будет, но вы потеряете очень много.
Скачать Nessus
вы можете со следующих серверов:
Месторасположение -
сервер
United States
(East Coast) ftp://ftp.nessus.org/pub/nessus/nessus-1.0.4/
United States
(West Coast) ftp://mirror.arc.nasa.gov/pub/tools/nessus/nessus-1.0.4/
Germany
ftp://ftp.gwdg.de/pub/linux/misc/nessus/nessus-1.0.4/
Germany http://ftp.gwdg.de/pub/linux/misc/nessus/nessus-1.0.4/
France
ftp://nessus.via.ecp.fr/nessus/nessus-1.0.4/
France (slow)
ftp://cvs.nessus.org/pub/nessus/nessus-1.0.4/
Switzerland
ftp://sunsite.cnlab-switch.ch/mirror/nessus/nessus-1.0.4/
Russia ftp://ftp.chg.ru/pub/security/nessus/nessus-1.0.4/
Sweden
ftp://ftp.sekure.net/pub/nessus/nessus-1.0.4/
Thailand ftp://ftp.nectec.or.th/pub/mirrors/nessus/nessus-1.0.4/
Portugal
ftp://ftp.pt.nessus.org/pub/nessus/nessus-1.0.4/
Australia
ftp://ftp.au.nessus.org/pub/nessus/nessus-1.0.4/
Canada ftp://ftp.stuff.ca/pub/nessus/nessus-1.0.4/
Файлы Nessus
которые вам необходимо скачать (на момент написания статьи доступна
стабильная версия 1.0.4):
- nessus-libraries
- libnasl
- nessus-core
- nessus-plugins
Распаковка
производиться командами gzip -d имя_файла и tar -xvf
имя_файла. Компиляция должна происходить именно в вышеперечисленном
порядке. Отмечу (это не относится к пользователям DIGITAL/OS), что
компилировать Nessus необходимо пользователю root (в противном случае вам
придется править файл конфигурации include/config.h в директории
~/nessuse-core). Магические слова для *nix компилируют каждый пакет,
например для компиляции nessus-libraries:
#cd
nessus-libraries-1.0.4
#./configure
#make
#make
install
или же одной
командой, если вы не хотите читать сообщения на консоли/терминале:
#./configure &
make & make install
Тоже самое
необходимо проделать с остальными пакетами. Проблемы могут возникнуть при
компиляции libnasl. В некоторых системах необходимо экспортировать путь
#export PATH=$PATH:/usr/local/lib, либо отредактировать свой
profile. При инсталяции на FreeBSD4.x необходимо после установки
nessus-libraries отредактировать /usr/local/bin/nessus-config,
заменив строку CIPHER="-lpeks" на CIPHER="-lpeks -lgmp" (данная
проблема встречалась в версиях младше 1.0.4, и должна быть исправлена). В
некоторых версиях Linux необходимо убедится, что в файле
/etc/ld.so.conf есть строка /usr/local/lib, если её нет, добавьте,
и дайте команду ldconfig. Пользователям *BSD необходимо
перекомпилировать ядро раскомментарив строку pseudo-device bpfilter NUM
(у меня стоит 16), и создав соответственно ноды для устройств ./MAKEDEV
bpf0-16 (для каждого отдельно). Если при инсталяции возникли проблемы,
обязательно загляните в mail-list, лично я нашел там все мыслимые и немыслимые
вопросы-ответы. Можете посмотреть FAQ.
После инсталяции
необходимо создать nessusd account, т.к. nessusd имеет собственную
базу пользователей. Для этого необходимо воспользоваться утилитой
nessus-adduser (в предыдущей версии я не смог запустить nessus, т.к.
nessus-adduser запретил мне соединяться с nessusd, хотя я явно указал
обратное; решается правкой nessus-users). Далее, вам возможно захочеться
посмотреть и поправить (необязательно) конфигурацию nessusd
/usr/local/etc/nessus/nessusd.conf.
Готово!!! Теперь
можно запускать nessusd из под root: #nessusd -D. Последующий
запуск nessus выдаст интерфейс пользователя, где вы сможете после
аутентификации внести все настройки и начать сканирование.
ОГЛВЛЕНИЕ
|