Максимальная Безопасность:

Руководство Хакера по Защите Вашего Internet Сайта и Сети

Предыдущая главаСледующая главаСодержание


9

Сканеры

В этой главе я исследую сканеры. Структура этой главы проста и очень похожа на предыдущие главы. Она ответит на некоторые основные вопросы, включая:

После ответа на эти вопросы, я исследую историю сканеров.

Затем я опишу сканеры с более практической точки зрения. Я дифференцируюсь между истинными сканерами и другими диагностическими сетевыми инструментальными средствами. Я исследую различные типы сканеров, особенно очень популярные из них (типа SATAN и Strobe). С этого момента Вы поймете что составляет сканирование и какие компоненты необходимы для создания сканера.

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

Сканеры

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

Что Такое Сканер?

Сканер это программа, которая автоматически обнаруживает слабости безопасности на удаленном или локальном узле. Используя сканер, пользователь в Лос-Анджелесе может раскрыть слабости безопасности сервера в Японии не выходя из своей комнаты.

Как Сканеры Работают?

Истинные сканеры это сканеры TCP портов, программы, которые нападают на TCP/IP порты и службы (Telnet или FTP, например) и записывают ответы от адресата. Таким образом, они собирают ценную информацию об узле адресата (например, может ли на узел войти анонимный пользователь?).

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


Ссылка: rusers собирает информацию о пользователях, в настоящее время зарегистрированных на целевом узле, и таким образом, очень походит на UNIX утилиту finger. host также утилита UNIX, предназначенная, чтобы в интерактивном режиме делать запрос серверов имен для всей информации, хранимой на целевом узле.

Для Каких Платформ Доступны Сканеры?

Хотя сканеры обычно пишутся для выполнения на рабочих станциях UNIX, теперь они написаны для использования в почти любой операционной системе. Не UNIX утилиты сканирования становится более популярными теперь, когда оставшаяся часть мира обращается к Internet. Существует специальный рынок Microsoft Windows NT, потому что NT теперь становится более популярной платформой для сервера Internet.

Каковы Системные Требования Для Работы Сканера?

Системные требования зависят от сканера, вашей операционной системы и вашего подключения к Internet. Некоторые сканеры написаны только для UNIX, делая UNIX системным требованием. Имеются, однако, более общие требования, которые нужно знать:

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

Трудно Создать Сканер?

Нет. Однако Вам потребуется сильные знания TCP/IP алгоритмов и вероятно C, Perl, и/или одного или большего количества языков оболочек. Разработка сканера честолюбивый проект, который вероятно принесет программисту много удовлетворения. Все таки, существует много сканеров (и свободных и коммерческих), спроектированных для прибыли.

Вам также потребуется некоторые основы программировании разъемов, метода, используемого в разработке приложений клиент/сервер.


Ссылка: Имеются много сетевых ресурсов, чтобы помочь Вам начать. Я укажу на два из них здесь. Первое это поверхностное введение программирование разъемов, созданное Reg Quinton из Университета Западного Онтарио. Оно может быть найдено на
http://tecstar.cv.com/~dan/tec/primer/socket_programming.html.

Другой превосходный источник информации по программированию разъемов поддерживается Quarterdeck Office Systems как сетевой ресурс по программированию. Он поддерживает все BSD 4.3 алгоритмы разъемов и является очень всесторонним. Он расположен на
http://149.17.36.24/prog/sockets.html.


Что Сканер Сообщит Мне?

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

Что Сканер Не Сообщит Мне?

Сканер не сообщит Вам следующее:

Сканеры Законны?

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


ПРЕДУПРЕЖДЕНИЕ: Не относитесь к сканированию небрежно. Если Вы намереваетесь сканировать широкую область, проверьте законы в вашем штате. Некоторые штаты имеют чрезвычайно специфическое законодательство. Формулировка таких статей (нередко) рассматривается в пользу обвинения. Например, штат Вашингтона имеет статью для компьютерного нарушения границ. (Wash. Rev. Code Sec. 9A.52 110-120.) Если Вы используете сканер, который пытается захватить passwd (файл паролей на платформе UNIX, расположенной в каталоге /ETC), Вы можете фактически совершить правонарушение. Я буду обсуждать юридические проблемы проникновения и взлома в Главе 31, "Действительность: Компьютерная Безопасность и Закон".

Почему Сканеры Важны Для Безопасности в Internet?

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

История

Сканеры наиболее общие утилиты, используемые современным взломщиком. И в этом нет никакой тайны: Эти программы, автоматически обнаруживающие слабости в структуре безопасности сервера, быстры, универсальны и точны. И что более важно, они свободно доступны в Internet. По этим причинам многие источники упорно утверждают, что сканер наиболее опасный инструмент среди программ для взлома.

Чтобы понять, что сканеры делают и как они используются, Вы должны взглянуть на начало компьютерного взлома. Перенеситесь в 1980-ые, когда персональный компьютер ещё не стал элементом домашнего обихода. Средняя машина имела 10МБ жесткого диска и 640КБ памяти. Фактически, наши более зрелые читатели помнят времена, когда жесткие диски не существовали. В те далекие дни работа делалась чередованием ряда дискет; одной для операционной системы, одной для текущей программы и одной для сохранения вашей работы.

Те далекие дни довольно забавно вспоминать. Связь проводилась, если вообще проводилась, по модемам на скорости от 300 до 1200bps. Невероятно, мы довольно хорошо уживались с этими скудными возможностями.

Большинство пользователей никогда не слышало об Internet. Она существовала, это так, но использовалась прежде всего военным, исследовательский и академический персоналом. Ее интерфейс, если это можно так назвать, был полностью основан на командной строке. Но это не были единственные ограничения, предотвращающие Америку от стекания в Сеть. Машины, которые могли работать в качестве серверов, были невероятно дороги. Рабочие станции Sun Microsystems продавали за пяти или шестизначные суммы. Сегодня, те же рабочие станции, которые не намного мощнее чем 386 25МГц, отдают в Usenet меньше чем за $800.

Гражданские жители с доступом в Internet были чаще всего студентами с учетными записями UUCP. Модемная связь была примитивна, полностью отличаясь от современного более устойчивого доступа по SLIP, PPP и ISDN. В сущности, Internet была в зачаточном состоянии, существование которой в значительной степени зависело от тех ранних авторов программного обеспечения, заинтересованных в разработке системы.

Безопасность в тот момент была настолько слаба, что некоторые читатели зададутся вопросом, почему Internet полностью не захватили взломщики. Ответ прост. Сегодня существуют огромные интерактивные базы данных и списки рассылки, которые содержат слабости дюжины различных операционных систем. Таблица 9.1 перечисляет несколько примеров.

Таблица 9.1. Интерактивные списки рассылки лазеек в безопасности.

Ресурс Расположение
Список рассылки Firewalls Firewalls@GreatCircle.COM
Список рассылки Sneakers Sneakers@CS.Yale.EDU
Список безопасности в WWW WWW-security@ns2.rutgers.edu
Список безопасности в NT Ntsecurity@ISS
Bugtraq BUGTRAQ@NETSPACE.ORG

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


Регистрация в списке: Регистрация в таком списке чаще всего простой процесс. Большинство списков требуют, чтобы Вы послали сообщение электронной почты по специальному адресу. Этот адрес принимает команды из первой строки вашего сообщения электронной почты. Структура этой команды может меняться. В некоторых случаях, эта команда столь же проста, как subscribe. В других случаях Вам может потребоваться задать команде параметры. Один такой параметр имя списка. Например, список рассылки Firewalls на GreatCircle.com требует, чтобы Вы послали subscribe firewalls в первой строке вашего электронного письма.

Пожалуйста обратите внимание, что это должна быть первая строка сообщения электронной почты, а не строка темы. Это сообщение затем посылается на
majordomo@greatcircle.com.
Адрес majordomo довольно общий для обработки запросов подписки на список рассылки. Конечно, все списки различны. Чтобы быстро определить требования для каждого списка по безопасности, я предлагаю Вам в качестве трамплина использовать Web страницу Eugene Spafford. Господин Spafford на своей странице имеет список ссылок на наиболее известные списки рассылки по безопасности.



Ссылка: Страница Spafford'а находится на
http://www.cs.purdue.edu/homes/spaf/hotlists/csec-top.html.
На странице Spafford'а Вы можете получить инструкции того, как подписаться на любой из списков.

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

Так что этап установлен. Представьте маленькое, буржуазное общество с величественными домами и приятно подстриженными газонами. Около полночи. Улицы пусты. Большинство окон в окрестностях темны. Все же одно окно ярко освещёно, и за ним молодой человек 15 лет; перед ним компьютер (пусть это будет старый переносной CoreData).

Парень набирает телефоны из списка, данного ему другом. Это известные UNIX машины, разбросанные на расстоянии нескольких миль отсюда. Большинство из них принимают подключение. Общий ответ это приглашение на вход в систему. Каждый раз, когда парень соединяется с такой машиной, он пробует ряд имен входа в систему и паролей. Он проверяет сотню или больше прежде чем, наконец, получает оболочку входа в систему. What happens then is up to him.

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

Боевой диалер (war dialer) состоит из программного обеспечения, которое набирает номер указанного пользователем диапазона телефонных номеров, и ищет способных к подключению (машины, которые позволят удаленному пользователю подключиться). Используя эти утилиты, взломщик может просмотреть большой диапазон номеров за несколько часов, идентифицируя все узлы в этом диапазоне. Таким образом, задача обнаружения адресатов была автоматизирована.

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


ПРИМЕЧАНИЕ: Термин боевой диалер по слухам взят из фильма WarGames. Сюжет фильма вертелся вокруг молодого человека, который взламывал Американские военные сети. Некоторые люди полагают, что фильм был вдохновлен проделками известного теперь взломщика Kevin Mitnik. Mitnik был молодым подростком, когда взломал ключевую военную сеть.


Ссылка: Если Вы хотите проверить боевой диалер в действии, я рекомендую получить Toneloc. Она свободно доступна в Internet и является, вероятно, лучшим боевым диалером из когда-либо созданных. Она была написана для работы в DOS, но также работает и в Windows 95 (хотя возможно не так гладко, как это должно было быть). Она доступна на
ftp://ftp.fc.net/pub/defcon/TONELOC/tl110.zip.

В сущности, сканеры работают очень подобно боевым диалерам с двумя исключениями:

Первые сканеры были вероятно очень просты. Я говорю вероятно, потому что такие программы не были доступны Internet сообществу, как утилиты сканирования сегодня (поэтому я не могу знать, на что они были похожи). Таким образом, когда я пишу первые сканеры, я подразумеваю основные программы, написанные системными администраторами с целью проверки собственных сетей. Это наиболее вероятно были shell сценарии UNIX, которые пытались связываться на различных портах, фиксируя любую информацию и, направляя её на консоль или на STDOUT. STDOUT означает вывод, который каждый видит на консоли или в DOS окне. Другими словами, это вывод данной команды. STD означает стандартный, а OUT означает вывод. Следовательно STDOUT является стандартным выводом любой данной команды. Вывод на STDOUT распечатки каталогов, например, является списком имен файлов и их размеров.

Атрибуты Сканера

Основные атрибуты сканера:

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

Расположение Потенциального Адресата

Internet обширна. Существуют буквально миллионы потенциальных адресатов в пустоте. Проблема, стоящая перед современными взломщиками, как найти этих адресатов быстро и эффективно. Сканеры хорошо подходят для этой цели. Чтобы продемонстрировать, как сканер может найти потенциального адресата, определить, какие сервисы он выполняет, и исследовать его слабости, давайте выберем Silicon Graphics (SGI) для остатка этого раздела. Здесь Вы увидите, как сканеры регулярно используются, чтобы автоматизировать человеческие задачи взлома.

Дыра Обнаружена

В конце 1995 Silicon Graphics (SGI) создала большое количество моделей WebForce. Это были чрезвычайно мощные машины, содержащие специальное программное обеспечение для производства богатых мультимедиа WWW страниц. Они работали под IRIX, собственный клон UNIX, специально разработанный для использования с графическими рабочими станциями SGI.

Некоторые версии IRIX сохранили заданный по умолчанию login для построчного принтера. То есть если пользователь инициализировал сессию Telnet с одной из этих машин SGI и входил как lp, никакого пароля не требовалось.

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


СОВЕТ: Существует множество автоматизированных утилит взлома паролей. Чаще всего они предназначены для взлома зашифрованных по DES паролей, общих для UNIX систем. Я буду обсуждать эти утилиты в Главе 10, "Взломщики Паролей".

Новости об этой уязвимости распространились быстро. SGI WebForce машины могли быть атакованы (и их безопасность скомпрометирована) с небольшим усилием. Для взломщиков следующим шагом должен был быть поиск этих машин.

Поиск Моделей WebForce

Чтобы использовать эту дыру, взломщикам необходимо было найти модели WebForce. Один способ сделать это вручную. Одно время механизмы поиска типа altavista.digital.com могли использоваться, чтобы массово искать такие машины. Это потому что многие из WebForce моделей управлялись людьми с сильным знанием графических искусств и слабым знанием безопасности. Эти администраторы часто не могли осуществлять даже самые основные меры безопасности. Также, многие из этих машин сохранили читаемые всем миром каталоги FTP. Поэтому эти каталоги были видны механизмам поиска в Internet.

Каталоги FTP этих SGI моделей содержали стандартные, фабрично установленные файлы /etc/passwd. В них содержатся имена входа в систему системных пользователей. Большинство этих имен входа в систему были общими для почти любого дистрибутива UNIX. Однако этот файлы passwd также включали уникальные имена входа в систему. Определенно, они содержали имена входа в систему для нескольких утилит и демонстрационных пакетов, которые поставлялись с программным обеспечением. Одним из них был login EZSetup. Таким образом, взломщику нужно было только задать следующую строку для поиска в любом известном механизме поиска:

EzSetup + root: lp:

Был бы возвращен список WebForce моделей. Взломщик затем брал бы этот список и пытался взломать каждую машину. Это был быстрый и очень простой способ собрать массу потенциальных адресатов. Однако эта тенденция долго не продолжалась (месяц или около того). В Сети были зарегистрированы консультации, объясняющие, что читаемые всем миром каталоги ответственны за компрометацию SGI безопасности. Так что взломщики обратились в другое место.

Некоторые используют базу данных InterNIC, чтобы найти такие машин (служба WHOIS). Служба WHOIS, размещённая на internic.net, является базой данных всех настоящее время зарегистрированных в Internet машин. Можно сделать запрос к этой базе данных (чтобы выяснить номера сетей или адрес владельца данной машины) давая команду WHOIS в приглашении к вводу команд UNIX. Структура такой команды следующая whois mci.net. Для тех, кто не использует UNIX, можно или сделать Telnet запрос непосредственно к InterNIC (internic.net) или использовать одну из утилит, описываемых позже в этой главе.

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

Термины Indy и Indigo обычно появляются или на Web сайте или структуре каталогов рабочей станции SGI. Это потому что ряд продуктов основывается на модели Indigo, которая часто упоминается как линия продуктов Indy.

Некоторые записи InterNIC включают также тип операционной системы, выполняемой на узле. Таким образом, поиск строки IRIX может обнаружить несколько машин. Однако эти методы были ненадежны. Например, многие версии IRIX не имели lp ошибки (но ни одна WebForce модель). Так, вместо этого многие взломщики применяли сканеры.

Использование Сканеров Для Вскрытия WebForce Моделей

Обнаружение WebForce моделей, используя сканер, было простой задачей. Диапазон адресов (например от 199.171.190.0 до 199.171.200.0) выбирался, возможно беспорядочно, возможно нет. Взломщик определял некоторые опции. Например, сканирование не должно иметь большую глубину (проблема, которую мы будем обсуждать чуть позже). Все, что требовалось сделать, проверить каждый адрес на возможность подключения по Telnet. Для каждого успешного подключения сканер фиксировал результат. Таким образом, типичный вход мог бы выглядеть следующим образом:

Trying 199.200.0.0
Connected to 199.200.0.0
Escape Character is "]"

IRIX 4.1
Welcome to Graphics Town!
Login:

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

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

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


СОВЕТ: Если Вы знаете SGI машину, и хотите просмотреть IP адрес последнего человека, который эксплуатировал эту уязвимость, используйте finger lp@the.sgi.box. Этот автор проследил человека из Университета A&M Штата Техас, который компрометировал машины от Лос-Анджелеса до Нью-Йорка, используя эту методику. Адрес этого молодого человека появился на 22 машинах. (Некоторые из них были хорошо известными учреждениями. Мы не можем идентифицировать их здесь. Одно это графическая дизайнерская школа в Нью-Йорке. Другое это видная организация прав геев в Лос-Анджелесе. К этому дню, эти машины могут быть уязвимы такому нападению. Увы, многие SGI пользователи являются одаренными графическими художниками, но имеют небольшое представление о безопасности. Известный университет на Гавайях пропустил эту дыру и получил внутреннюю сеть всю разорванную на части взломщиком. Хакер изменил корневые пароли и разрушил ценные данные.)



ПРИМЕЧАНИЕ: Если Вы в настоящее время имеете модель WebForce, то можете проверить уязвима ли она для этого простого нападения. Сначала, свяжитесь по Telnet с машиной. Когда будет выдано приглашение на вход в систему, введите строку lp и нажмите Enter. Если Вы немедленно зарегистрированы в оболочку, ваша машина уязвима. Если так, это можно быстро исправить, открыв файл /etc/passwd и вставив звездочку между первым и вторым полями для пользователя lp. Таким образом, начальная часть строки выглядела бы следующим образом:
lp:*:4:7:lp:/var/spool/lpd: 

вместо этого:

lp::4:7:lp:/var/spool/lpd:

Идея состоит в том, чтобы заблокировать login. Если Вы не в состоянии сделать так, проблема останется, потому что система сконфигурирована, чтобы принимать login построчного принтера не требуя пароля.


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

Сетевые Утилиты

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

Поскольку мы сосредотачиваемся на сканерах, я хотел бы немного отвлечься, чтобы проиллюстрировать различия. Этим мы достигнем две цели: Во-первых, более ясно определит сканеры. Во вторых, познакомит Вас с богатым разнообразием сетевых ресурсов, доступных в Internet.

Сетевые утилиты, обсуждаемые дальше, работают на разнообразных платформах. Большинство из них перенесено из сред UNIX. Каждая утилита ценна хакерам и взломщикам. Удивительно, такие сетевые утилиты могут сообщить пользователю весьма немного, и эти утилиты имеют тенденцию возбуждать меньше подозрений. Фактически, многие из них полностью невидимы для целевого узла. Это сильно контрастирует с большинством сканеров, которые оставляют большой след, или доказательство своего существования, после себя. В этом отношении, большинство этих утилит подходят для исследования одного целевого узла. (Другими словами, большинство этих утилит не автоматизированы и требуют различного уровня человеческого участия в управлении.)

host

host специфичная для UNIX утилита, которая выполняет по существу ту же самую операцию, как и стандартный nslookup запрос. Единственное реальное отличие, что host более всесторонняя. Обратите внимание, что различные не UNIX утилиты, обсуждаемые на следующих страницах, также выполняют подобные или эквивалентные задачи.

host одна из десяти наиболее опасных и угрожающих команд в своем классе. Чтобы продемонстрировать почему, я произведу host запрос к Бостонскому Университету (BU.EDU). Я ввел следующее в командную строку:

host -l -v -t any bu.edu

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

Found 1 addresses for BU.EDU
Found 1 addresses for RS0.INTERNIC.NET
Found 1 addresses for SOFTWARE.BU.EDU
Found 5 addresses for RS.INTERNIC.NET
Found 1 addresses for NSEGC.BU.EDU
Trying 128.197.27.7
bu.edu    86400 IN    SOA    BU.EDU HOSTMASTER.BU.EDU(
            961112121    ;serial (version)
            900    ;refresh period
            900    ;retry refresh this often
            604800    ;expiration period
            86400    ;minimum TTL
            )
bu.edu    86400 IN    NS    SOFTWARE.BU.EDU
bu.edu    86400 IN    NS    RS.INTERNIC.NET
bu.edu    86400 IN    NS    NSEGC.BU.EDU
bu.edu    86400 IN    A    128.197.27.7

Это само по себе не разрушительно. Вывод идентифицирует ряд машин и их имена. Большая часть этой информации могла быть собрана стандартным поиском WHOIS. Но как насчет следующих строк:

bu.edu    86400 IN    HINFO    SUN-SPARCSTATION-10/41    UNIX
PPP-77-25.bu.edu    86400 IN    A    128.197.7.237
PPP-77-25.bu.edu    86400 IN    HINFO    PPP-HOST    PPP-SW
PPP-77-26.bu.edu    86400 IN    A    128.197.7.238
PPP-77-26.bu.edu    86400 IN    HINFO    PPP-HOST    PPP-SW
ODIE.bu.edu    86400 IN    A    128.197.10.52
ODIE.bu.edu    86400 IN    MX    10 CS.BU.EDU
ODIE.bu.edu    86400 IN    HINFO    DEC-ALPHA-3000/300LX    OSF1

Отсюда мы немедленно узнаем, что доступна DEC Alpha, выполняющая OSF/1 (ODIE.bu.edu). И затем:

STRAUSS.bu.edu    86400 IN    HINFO    PC-PENTIUM    DOS/WINDOWS
BURULLUS.bu.edu    86400 IN    HINFO    SUN-3/50    UNIX (Ouch)
GEORGETOWN.bu.edu    86400 IN    HINFO    MACINTOSH    MAC-OS
CHEEZWIZ.bu.edu    86400 IN    HINFO    SGI-INDIGO-2    UNIX
POLLUX.bu.edu    86400 IN    HINFO    SUN-4/20-SPARCSTATION-SLC    UNIX
SFA109-PC201.bu.edu    86400 IN    HINFO    PC    MS-DOS/WINDOWS
UH-PC002-CT.bu.edu    86400 IN    HINFO    PC-CLONE    MS-DOS
SOFTWARE.bu.edu    86400 IN    HINFO    SUN-SPARCSTATION-10/30    UNIX
CABMAC.bu.edu    86400 IN    HINFO    MACINTOSH    MAC-OS
VIDUAL.bu.edu    86400 IN    HINFO    SGI-INDY    IRIX
KIOSK-GB.bu.edu    86400 IN    HINFO    GATORBOX    GATORWARE
CLARINET.bu.edu    86400 IN    HINFO    VISUAL-X-19-TURBO    X-SERVER
DUNCAN.bu.edu    86400 IN    HINFO    DEC-ALPHA-3000/400    OSF1
MILHOUSE.bu.edu    86400 IN    HINFO    VAXSTATION-II/GPX    UNIX
PSY81-PC150.bu.edu    86400 IN    HINFO    PC    WINDOWS-95
BUPHYC.bu.edu    86400 IN    HINFO    VAX-4000/300    OpenVMS

Я опустил оставшиеся записи для краткости. Запрос произвел простой текстовый файл около 70КБ (всего более 1500 строк).

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

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

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


ПРЕДОСТЕРЕЖЕНИЕ: Имеются различные способы защититься против этого. Один путь в использовании брандмауэра. Другой, необходимо ограничить запросы к серверам имен определенному набору адресов. Еще один, полностью запретить внешний доступ к вашим серверам имен.

Traceroute

Название Traceroute весьма описательно. Короче говоря, она прослеживает маршрут между двумя машинами. Как объяснено в man страницах (руководстве):

При прослеживании маршрута пакеты следуют друг за другом (или отвергаются шлюзом). Traceroute использует поле "времени жизни" IP протокола и пытается выявить ICMP TIME_EXCEEDED ответ от каждого шлюза по пути до некоторого узла.

ПРИМЕЧАНИЕ: Man страницы это страницы руководства на платформе UNIX. Они эквивалент справочным файлам. Они могут быть вызваны из приглашения к вводу команды или из оконной системы. После полной установки UNIX, эти man страницы содержат помощь по всем командам, которые можно выходить из приглашения. Они также охватывают программирование на C и C++.

Эта утилита может использоваться для определения местоположения машины. Предположим, например, что Вы пробуете проследить человека, который послал сообщение с компьютера, связанного с его ISP через PPP. Предположим, что почтовое отправление не показало ничто, кроме IP адреса, который, когда был прогнан через поиск WHOIS, не дал ничего (то есть адрес не является адресом зарегистрированного домена). Вы можете найти его машину, используя запросы Traceroute. Предпоследняя запись это сеть, из которой исходила деятельность. Например, исследуйте этот след Traceroute, ведущий от машины во Франции (freenix.fr) к источнику:

 1  193.49.144.224 (193.49.144.224)  3 ms  2 ms  2 ms
 2  gw-ft.net.univ-angers.fr (193.49.161.1)  3 ms  3 ms  3 ms
 3  angers.or-pl.ft.net (193.55.153.41)  5 ms  5 ms  5 ms
 4  nantes1.or-pl.ft.net (193.55.153.9)  13 ms  10 ms  10 ms
 5  stamand1.renater.ft.net (192.93.43.129)  25 ms  44 ms  67 ms
 6  rbs1.renater.ft.net (192.93.43.186)  45 ms  30 ms  24 ms
 7  raspail-ip2.eurogate.net (194.206.207.18)  51 ms  50 ms  58
 8  raspail-ip.eurogate.net (194.206.207.58) 288 ms311 ms 287 ms
 9  * Reston.eurogate.net (194.206.207.5)  479 ms  469 ms
10  gsl-sl-dc-fddi.gsl.net (204.59.144.199) 486 ms 490 ms  489 ms
11  sl-dc-8-F/T.sprintlink.net (198.67.0.8)  475 ms *  479 ms
12  sl-mae-e-H2/0-T3.sprintlink.net (144.228.10.42)498 ms  478 ms
13  mae-east.agis.net (192.41.177.145)  391 ms  456 ms  444 ms
14  h0-0.losangeles1.agis.net (204.130.243.45)714 ms 556 ms714 ms
15  pbi10.losangeles.agis.net (206.62.12.10) 554 ms 543 ms 505 ms
16  lsan03-agis1.pbi.net (206.13.29.2)  536 ms  560 ms *
17  * * *
18  pm1.pacificnet.net (207.171.0.51)  556 ms  560 ms  561 ms
19  pm1-24.pacificnet.net (207.171.17.25)  687 ms  677 ms  714 ms

Из этого ясно, что я расположен в Лос-Анджелесе, Калифорния:

pbi10.losangeles.agis.net (206.62.12.10)  554 ms  543 ms  505 ms

искомая машина находится в pacificnet.net:

pm1.pacificnet.net (207.171.0.51)  556 ms  560 ms  561 ms

Traceroute может использоваться для определения относительного сетевого местоположения машины в пустоте.

Обратите внимание, что Вы не должны иметь UNIX (или клон UNIX), чтобы выполнить запросы Traceroute. На всем протяжении Internet имеются шлюзы Traceroute. И, хотя они обычно прослеживают маршрут только между шлюзом Traceroute и вашим адресатом, они могут, по крайней мере, использоваться, чтобы выявить локальный узел IP адреса.


Ссылка: Попробуйте шлюз Traceroute на
http://www.beach.net/traceroute.html.

rusers и finger

rusers и finger могут использоваться вместе, чтобы подобрать информацию в сети по индивидуальным пользователям. Например, запрос rusers к домену wizard.com возвращает следующее:

gajake       snark.wizard.com:ttyp1  Nov 13 15:42  7:30 (remote)
root         snark.wizard.com:ttyp2  Nov 13 14:57  7:21 (remote)
robo         snark.wizard.com:ttyp3  Nov 15 01:04  01 (remote)
angel111     snark.wizard.com:ttyp4  Nov14 23:09       (remote)
pippen       snark.wizard.com:ttyp6 Nov 14 15:05         (remote)
root         snark.wizard.com:ttyp5 Nov 13 16:03    7:52 (remote)
gajake       snark.wizard.com:ttyp7 Nov 14 20:20    2:59 (remote)
dafr         snark.wizard.com:ttyp15Nov  3 20:09    4:55 (remote)
dafr         snark.wizard.com:ttyp1 Nov 14 06:12   19:12 (remote)
dafr         snark.wizard.com:ttyp19Nov 14 06:12   19:02 (remote)

В качестве интересного упражнение, сравните это с информацией finger, собранной сразу после предыдущей:

user S00  PPP ppp-122-pm1.wiza  Thu Nov 14 21:29:30 - still logged in
user S15  PPP ppp-119-pm1.wiza  Thu Nov 14 22:16:35 - still logged in
user S04  PPP ppp-121-pm1.wiza  Fri Nov 15 00:03:22 - still logged in
user S03  PPP ppp-112-pm1.wiza  Thu Nov 14 22:20:23 - still logged in
user S26  PPP ppp-124-pm1.wiza  Fri Nov 15 01:26:49 - still logged in
user S25  PPP ppp-102-pm1.wiza  Thu Nov 14 23:18:00 - still logged in
user S17  PPP ppp-115-pm1.wiza  Thu Nov 14 07:45:00 - still logged in
user S-1  0.0.0.0           Sat Aug 10 15:50:03 - still logged in
user S23  PPP ppp-103-pm1.wiza  Fri Nov 15 00:13:53 - still logged in
user S12  PPP ppp-111-pm1.wiza  Wed Nov 13 16:58:12 - still logged in

Первоначально, эта информация не может показаться ценной. Однако часто такими методами Вы можете безусловно идентифицировать пользователя. Например, некоторые части Internet предлагают различные степени анонимности. Релейный Разговор по Internet (IRC) это одна такая система. Человек, соединяющийся с основанной на UNIX системой, может эффективно затенять свою личность на IRC, но не может легко затенить IP адрес использующейся машины. Настойчиво используя команды finger и rusers, Вы можете выявить, кто этот пользователь в действительности.


ПРИМЕЧАНИЕ: finger и rusers широко обсуждаются в Главе 13, "Техника Сокрытия Личности". Тем не менее, я хотел бы сделать здесь краткое введение: finger и rusers используются для идентификации и проверки текущего статуса пользователей, зарегистрированных на специфической машине. Например, Вы можете выяснять реальное имя пользователя (если оно доступно), его последний login, и какой интерпретатор команд он использует. Не все сайты поддерживают эти функции. Фактически, большинство PC-основанных операционных систем не делают так без инсталляции специального серверного программного обеспечения. Однако даже многие сайты UNIX больше не поддерживают эти функции, потому что они обнаруживают информацию. finger и rusers теперь рассматривается как угроза собственной безопасности.

Однако, это объяснение не показывает значение этих утилит для взлома. Таким же образом, каким можно finger пользователя, можно finger некоторые ключевые процессы. Таблица 9.2 содержит некоторые примеры.

Таблица 9.2. Процессы, которые могут быть finger.

Процесс Цель
lp Демон печати
UUCP Копирование с UNIX на UNIX
root Корневой оператор
mail Демон Почтовой Системы

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

Таким образом, rusers вместе с finger, могут производить интересные и часто обнаруживающие результаты. Я понимаю, конечно, что Вы можете упростить эту информацию. Какое значение имеет знание того, когда и где происходят входы в систему?

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

Showmount

Showmount показывает некоторую очень интересную информацию об удаленных узлах. Наиболее важно, что вызванная с опцией командной строки -e, showmount может предоставить список всех экспортируемых каталогов на данном адресате. Эти каталоги могут быть, а могут и не быть монтируемыми с любого места в Internet.

На Других Платформах

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

На Windows 95

Windows 95 теперь поддерживает много сетевых утилит анализа. Некоторые из них прямые потомки UNIX команд, а другие это программы, созданные с нуля. В обоих случаях, большинство этих утилит shareware или freeware. Вы можете использовать эти утилиты, чтобы узнать многое об организации сети.

NetScan Tools набор программ содержит ряд утилит UNIX, перенесенных на Windows 95. Группа их разработчиков говорит, что используя ping, сетевые администраторы могут определять неавторизованные машины, использующие IP адреса в их подсетях. Пакет также содержит эквиваленты WHOIS, finger, ping и Traceroute.


Ссылка: NetScan Tools набор программ shareware и доступен на
http://www.eskimo.com/~nwps/index.html.

Network Toolbox очень похож на набор программ Netscan Tools. Он состоит из девяти отдельных портированных утилит UNIX. Этот пакет имеет интересную возможность, названную Поиск IP Адреса, которая позволяет пользователю искать машины в пределах заданного диапазона IP адресов. Пакет содержит следующее: finger, DNS, WHOIS и так далее. Одна особое достоинство этого набора программ в том, что они являются чрезвычайно быстрыми. Этот пакет обсуждается более подробно позже в этой главе.


Ссылка: Вы можете найти Network Toolbox на
http://www.jriver.com/netbox.html.

TCP/IP Surveyor (TCP/IP Инспектор). Этот инструмент весьма внушителен. Мало того, что он собирает информацию о сетях и доступных машинах, он форматирует её в графическое представление, которое отображает маршрутизаторы, рабочие станции и серверы.


Ссылка: TCP/IP Surveyor является shareware и может быть найден на
ftp://wuarchive.wustl.edu/systems/ibmpc/win95/netutil/wssrv32n.zip.

На Macintosh

Имеется большой рост разработки сетевых средств анализа на платформе Macintosh. Многие из этих приложений первоклассны, разработаны в традиционном стиле платформы Mac, и чрезвычайно удобны.

MacTCP Watcher (MacTCP Наблюдатель). Эта утилита обеспечивает ping, просмотр DNS, и общий контроль подключений, инициализированных по протоколам TCP/IP набора.


Ссылка: До версии 1.12 эта утилита была обозначена как freeware. Однако, ко времени выхода этой книги, эта ситуация может измениться. Получите её на
http://www.share.com/share/peterlewis/mtcpw/.

Query It! (Запроси Это!) является солидной утилитой, которая выполняет основные nslookup запросы. Она генерирует информацию, которая очень похожа на то, что генерирует команда host.


Ссылка: Получите Query It! на
http://www.cyberatl.net/~mphillip/index.html#Query It!.

WhatRoute это портированная популярная утилита UNIX Traceroute.


Ссылка: WhatRoute это freeware программа, доступная в различных местах Internet, включая
http://homepages.ihug.co.nz/~bryanc/.

На AS/400

Платформа AS/400, от AS/400 V3R1 (или Client Access/400), имеет превосходную внутреннюю поддержку большинства TCP/IP утилит, включая ping и netstat.


Ссылка: Для заинтересовавшимся изучением тонкостей реализации TCP/IP на AS/400, я строго рекомендую книгу "TCP/IP Connectivity in an AS/400 Environment" ("TCP/IP Связь в Среде AS/400") David Bernard. (News/400. Февраль 1996.) Она может быть найдена на
http://204.56.55.10/Education/WhitePapers/tcpip/tcpip.htm.

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

Сканеры

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

NSS

NSS (Network Security Scanner - Сканер Сетевой Безопасности) очень неясный сканер. Если Вы ищете его, используя популярный механизм поиска, Вы, вероятно, найдёте меньше 20-ти записей. Это не подразумевает, что NSS не используется широко. Скорее, это означает, что большинство FTP сайтов, содержащих его, затенено или просто недоступно через поиск по WWW архиву.

NSS отличается от своих коллег несколькими моментами, наиболее интересным из которых является то, что он написан на Perl. (SATAN также частично написан на Perl. ISS и Strobe нет.) Это интересно, потому что означает, что пользователю не требуется компилятор C. Это может показаться не значительным, но это не так. Взломщики и хакеры вообще начинают как студенты. Студенты могут приобретать учетные записи оболочки на серверах UNIX, это так, но не каждый системный администратор позволяет своим пользователям обращаться к компилятору C. С другой стороны, Perl так широко используется для программирования CGI, что большинству пользователей позволяется доступ к Perl. Это делает NSS популярным выбором. (Я должен объяснить, что большинство сканеров поступает в сырье, C исходнике. Таким образом, для их использования требуется компилятор C.)

Также, так как Perl интерпретируемый язык (в противоположность компилируемым), он позволяет пользователю делать изменения нажатием нескольких клавиш. Он также обычно легче для чтения и понимания. (Почему так? В нем пишут на простом Английском языке.) Чтобы продемонстрировать важность этого, рассмотрите факт того, что многие сканеры, написанные на C, позволяют пользователю только минимальный контроль над сканированием (если сканер поступает в двоичной форме). Без исходного текста C пользователь в основном ограничен тем, что написал программист. Сканеры, написанные на Perl, вообще не предписывают такие ограничения и поэтому более легко расширяемы (и возможно переносимы в любую операционную систему, выполняющую Perl 4 или более старшую его версию).

NSS был по сообщениям написан на платформе DEC (DecStation 5000 и Ultrix 4.4). Он в основном работает на SunOS 4.1.3 и IRIX 5.2. На других платформах он может потребовать общего или обширного перенесения.

Основное достоинство NSS его скорость. Он чрезвычайно быстр. Алгоритм проверяет, что он может выполнить, включая следующее:


ПРИМЕЧАНИЕ: NSS позволит Вам выполнить Hosts.equiv, если Вы не имеете корневых привилегий. Если это критическая проблема, и Вы в настоящее время не имеете таких привилегий, Вы можете приобрести копию Linux, Solaris X86 или FreeBSD. Получив одну из этих операционных систем и установив её дома, Вы сможете стать корневым пользователем. Это общая проблема нескольких сканеров, включая SATAN и некоторые реализации Сканера Безопасности Internet.

Как Вы можете предположить, некоторые или большинство этих проверок (кроме запроса Hosts.equiv) могут быть проведены вручную любым пользователем, даже без корневых привилегий. В основном, NSS выполняет ту же самую функцию, что и большинство сканеров: Он автоматизирует процессы, которые иначе могли бы требовать недели для своего завершения.

NSS поступает (чаще всего) как tar/gzip файл. (Другими словами, это zip архив, созданный gzip.exe, популярной утилитой сжатия, подобной pkzip.exe.) В первоначальном дистрибутиве автор предоставил большие функциональные возможности, включая следующие:

Хотя это не исчерпывающий список функций NSS, имеются некоторые незначительные моменты, которые я хочу описать здесь:


СОВЕТ: Если каталог include Perl'а (где содержатся включаемые файлы Perl) не определен и не включен в переменную окружения PATH, Вы должны исправить это. Также, пользователи должны обратить внимание, что NSS требует библиотеку ftplib.pl.


Ссылка: Вы можете найти копию NSS, за авторством Douglas O'Neal (релиз 28 марта, 1995) на
http://www.giga.or.at/pub/hacker/unix.
Этот адрес был проверен 20 ноября, 1996.

Strobe

Strobe (Super Optimized TCP Port Surveyor - Супер Оптимизированный Инспектор TCP Портов) это сканер TCP портов, который регистрирует все открытые порты на данной машине. Strobe быстр (его автор заявляет, что целая маленькая страна может быть просканирована за разумный период времени).

Главной особенностью Strobe является то, что он может быстро определять, какие службы работают на данном адресате (фактически так быстро, что требуется меньше 30-ти секунд, чтобы обследовать сервер, даже с подключением к Internet через модем 28.8). Ключевой недостаток Strobe состоит в том, что такая информация ограничена. В лучшем случае нападение Strobe обеспечит взломщика основным направлением, картой служб, которые могут быть атакованы. Типичный вывод от сканирование Strobe напоминает следующее:

localhost   echo     7/tcp Echo [95,JBP]
localhost   discard  9/tcp Discard [94,JBP]
localhost   systat   11/tcp Active Users [89,JBP]
localhost   daytime  13/tcp Daytime [93,JBP]
localhost   netstat  15/tcp Netstat
localhost   chargen  19/tcp Character Generator [92,JBP]
localhost   ftp      21/tcp File Transfer [Control] [96,JBP]
localhost   telnet   23/tcp Telnet [112,JBP]
localhost   smtp     25/tcp Simple Mail Transfer [102,JBP]
localhost   time     37/tcp Time [108,JBP]
localhost   finger   79/tcp Finger [52,KLH]
localhost   pop3     0/tcp Post Office Protocol-Version 3 122
localhost   sunrpc  111/tcp SUN Remote Procedure Call [DXG]
localhost   auth    113/tcp Authentication Service [130,MCSJ]
localhost   nntp    119/tcp Network News Transfer Protocol 65,PL4

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

Комбинирование всех этих опций производит очень управляемое и конфигурируемое сканирование. Strobe чаще всего поступает в виде tar/gzip файла. В своем дистрибутиве он содержит полную man страницу и двоичный образ.


Ссылка: Вы можете найти копию Strobe, за авторством Julian Assange (релиз 1995), на
http://sunsite.kth.se/Linux/system/Network/admin/.

Замечания

В маловероятном случае, когда Вы приобретаете Strobe без man страницы, имеется известная проблема с Solaris 2.3. Чтобы предотвратить проблемы (и почти несомненно дамп ядра), Вы должны отключить использование getpeername(). Это делается добавлением -g в командную строку.

Также, хотя Strobe не выполняет обширные тесты на удаленных узлах, он оставляет столь же большой след, как и ранние дистрибутивы ISS. Узел, просканированный Strobe, будет знать об этом (это, наиболее вероятно, появится как выполнение запросов на подключение в файле /var/adm/messages).

SATAN

SATAN (Security Administrator's Tool for Analyzing Networks - Административная Утилита Безопасности для Анализа Сетей) очень любопытна, как и её авторы. SATAN была выпущена (или отпущена) в Internet в апреле 1995. Никогда прежде утилита безопасности не вызывала так много противоречий. Газеты и журналы по всей стране издали о ней статьи. Национальные новости предупреждали о надвигающемся её выпуске. Огромная шумиха следовала за этой утилитой вплоть до момента, когда она была, наконец, зарегистрирована в Сети.

SATAN, по общему признанию, превосходный пакет. Написанный для рабочих станций UNIX, SATAN была, на момент выпуска, единственной основанной на Системе X Window программой безопасности, которая была истинно дружественной пользователю. Она предоставляет HTML интерфейс, с формами для ввода целей, таблицами для отображения результатов, и контекстно-зависимыми справочными документами, появляющимися, когда дыра найдена. Одним слов, она экстраординарна.

Авторы SATAN также экстраординарны. Dan Farmer и Weitse Venema оба были глубоко вовлечены в безопасность. Читатели, которые незнакомы с SATAN, могут помнить Dan Farmer как соавтора COPS, который стал стандартом в сообществе UNIX для проверки сетей на наличие лазеек в безопасности. Venema автор TCP_Wrapper. (Некоторые люди полагают, что TCP_Wrapper прародитель технологии брандмауэров. Он заменяет inetd как демон, и имеет сильные опции регистрации.) Они оба чрезвычайно одаренные программисты, хакеры (не взломщики), и авторитеты в безопасности Internet.

SATAN была разработана только для UNIX. Она написана, прежде всего, на C и Perl (с некоторым HTML, включенным для дружелюбия к пользователю). Она работает в широком ряде различных UNIX, в некоторых вообще без перенесения, в других с минимальным перенесением.


ПРИМЕЧАНИЕ: Существует особая проблема с работой SATAN в Linux. Первоначальный дистрибутив применяет некоторые правила, которые приводят к неправильной работе на платформе Linux. Имеется также проблема со способом вызова select(), реализованного в модуле tcp_scan. Наконец, если сканировать всю подсеть одновременно, это приведет к возврату fping бомбы. То есть буфера разъемов переполнятся. Однако, один сайт содержит не только хорошо взломанный двоичный образ SATAN для Linux, но также и diff файл. (diff файл, это файл, который близок, но не идентичен, другому файлу. Используя diff утилиту, можно сравнить эти два файла. Результирующий вывод состоит из изменений, которые должны быть сделаны.) Эти элементы могут быть найдены на ftp.lod.com или можно получить diff файл непосредственно с Sunsite (sunsite.unc.edu) из каталога
/pub/Linux/system/Network/admin/satan-linux.1.1.1.diff.gz.

Пакет имеет вид tar/zip архива и доступен во всем мире. Как предполагает название программы (Административная Утилита Безопасности для Анализа Сетей), она была написана с целью улучшения сетевой безопасности. Также, она должна не только работать в среде UNIX, но и должна работать с корневыми привилегиями.

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


Ссылка: Вы можете получить копию SATAN, написанную Dan Farmer и Weitse Venema (релиз апрель 1995), на
http://www.fish.com.

Процесс Инсталляции

SATAN разархивируется подобно любой другой утилите. Каждая платформа может слегка отличаться, но в общем, SATAN извлекается в каталог /satan-1.1.1. Первый шаг (после прочтения документации) нужно выполнить сценарий Perl reconfig. Этот сценарий ищет различные компоненты (особенно Perl) и определяет пути к директориям. Сценарий reconfig потерпит неудачу, если не сможет определить броузер. Те люди, которые установили броузер в нестандартном каталоге (и не сумели установить эту переменную в PATH) должны будут установить переменную вручную. Также, те, кто не имеют доступной DNS (они не выполняют DNS на своей машине) должны установить это в /satan-1.1.1/conf/satan.cf следующим образом:

$dont_use_nslookup = 1;

Решив все вопросы с PATH, пользователь может запустить создание дистрибутива (make IRIX или make SunOS). Я предлагаю наблюдать за компиляцией очень внимательно на предмет ошибок.


СОВЕТ: SATAN требует немного больше ресурсов, чем средний сканер, особенно в области RAM и мощности процессора. Если он выполняется медленно, имеются несколько решений, которые Вы можете попробовать. Одно из наиболее очевидных, необходимо получить большее RAM и процессор с большей мощностью. Однако, если это не выполнимо, я предлагаю два решения: Одно это уничтожить так много других процессов, насколько возможно. Другое, ограничить сканирование 100 узлами или меньшим количеством. Наконец, это имеет некоторое значение, SATAN имеет интерфейс командной строки для неимеющих сильной видео поддержки или с ограниченными ресурсами памяти.

Jakal

Jakal хитрый сканер. То есть он сканирует область (позади брандмауэра) не оставляя никаких следов сканирования. Согласно его авторам, все сайты лабораторного испытания были неспособны регистрировать любую деятельность (хотя, как сообщено в документации от авторов, "Некоторые брандмауэры позволяли SYN|FIN проходить через них").

Хитрые сканеры новое явление, их сфера действия растет без сомнения со сферой действия брандмауэров в Сети. Это относительно новая область. Так, если Вы тестируете Jakal и обнаруживаете, что появились несколько log-файлов, не будьте требовательны.

Хитрые сканеры проводят половинное сканирование, которое начинается (но никогда не завершается) SYN|ACK транзакцией с целевым узлом. В основном, хитрое сканирование обходит брандмауэр и уклоняется от детекторов сканирования портов, таким образом идентифицируя, какие службы выполняются позади этого брандмауэра. (Это включает довольно сложные детекторы сканирования типа Courtney и Gabriel. Большинство этих систем обнаружения реагирует только на полностью установленные подключения.)


Ссылка: Получите копию Jakal, написанную Halflife, Jeff (Phiji) Fay, и Abdullah Marafie, на
http://www.giga.or.at/pub/hacker/unix.

IdentTCPscan

IdentTCPscan более специализированный сканер. Он имеет дополнительные функциональные возможности выбора владельца данного процесса TCP порта. То есть он определяет UID процесса. Например, выполняя IdentTCPscan против своей собственной машины, я получил следующий вывод:

Port:   7    Service:        (?)    Userid:  root
Port:   9    Service:        (?)    Userid:  root
Port:  11    Service:        (?)    Userid:  root
Port:  13    Service:        (?)    Userid:  root
Port:  15    Service:        (?)    Userid:  root
Port:  19    Service:        (?)    Userid:  root
Port:  21    Service:        (?)    Userid:  root
Port:  23    Service:        (?)    Userid:  root
Port:  25    Service:        (?)    Userid:  root
Port:  37    Service:        (?)    Userid:  root
Port:  79    Service:        (?)    Userid:  root
Port:  80    Service:        (?)    Userid:  root
Port: 110    Service:        (?)    Userid:  root
Port: 111    Service:        (?)    Userid:  root
Port: 113    Service:        (?)    Userid:  root
Port: 119    Service:        (?)    Userid:  root
Port: 139    Service:        (?)    Userid:  root
Port: 513    Service:        (?)    Userid:  root
Port: 514    Service:        (?)    Userid:  root
Port: 515    Service:        (?)    Userid:  root
Port: 540    Service:        (?)    Userid:  root
Port: 672    Service:        (?)    Userid:  root
Port: 2049    Service:        (?)    Userid:  root
Port: 6000    Service:        (?)    Userid:  root

Эта утилита имеет очень важную функцию. Поиском UID процесса могут быть быстро идентифицированы неправильные конфигурации. Например, исследуйте этот вывод. Закаленные профессионалы безопасности увидят, что строка 12 сканирования показывает серьёзную неправильную конфигурацию. Порт 80 выполняет службу как корневую. Это случается, когда он выполняет HTTPD. Это проблема безопасности, потому что любой нападающий, который использует слабости в вашем CGI, может запускать свои процессы также корневыми.

Я пробовал много сканеров. IdentTCPscan чрезвычайно быстрый, а также мощный и острый инструмент (фаворит взломщиков). Утилита работает одинаково хорошо на разнообразных платформах, включая Linux, BSDI и SunOS. Она обычно поставляется как сжатый файл, содержащий исходный текст. Она написана на C и очень компактна. Она также требует для работы минимальные сетевые ресурсы. Она будет собрана без проблем любым компилятором C.


Ссылка: Получите копию IdentTCPscan, написанную David Goldsmith (релиз 11 февраля, 1996), на
http://www.giga.or.at/pub/hacker/unix.

CONNECT

CONNECT это bin/sh сценарий. Его цель состоит в том, чтобы сканировать подсети на наличие TFTP серверов. (Как Вы можете предположить, их трудно найти. В наши дни TFTP почти всегда отключается.) Этот сканер сканирует IP адреса рекурсивно. По этой причине, Вы должны запускать процесс в фоновом режиме (или идти пить пиво, завтракать, играть в гольф).

Этот сканер имеет относительно небольшое значение, потому что TFTP неудачный протокол. Из него нельзя извлечь пользу. (Хотя, если сисадмин этого сайта небрежен, Вы можете получить файл /etc/passwd. Однако не рассчитывайте на это. В наши дни вероятность обнаружения открытого TFTP сервера и незатененного файла passwd на этой же машине фактически равна нолю.)


Ссылка: Документация по CONNECT написана Joe Hentzel; согласно Hentzel, автор сценария анонимен, и дата выпуска неизвестна. Получите копию на
http://www.giga.or.at/pub/hacker/unix/.

FSPScan

FSPScan сканирует на обнаружение серверов FSP. FSP замещает Протокол Обслуживания Файлов, протокол Internet очень похожий на FTP. Он обеспечивает анонимную передачу файлов и по сообщениям не имеет защиты против перегрузки сети (например, FSP никогда не ветвится). Возможно самое защитное свойство FSP то, что он регистрирует имя узла входящего пользователя. Это преимущество над FTP, который запрашивает адрес электронной почты пользователя (что, в действительности, не является регистрацией вообще). FSP был достаточно популярен, теперь клиенты GUI для Windows и OS/2.

Что экстраординарно в FSPScan так это то, что он был написан одним из соавторов FSP! Но зато кто лучше написал бы такую утилиту?


Ссылка: Получите копию FSPScan, записанную Wen-King Su (релиз 1991), на
http://www.giga.or.at/pub/hacker/unix.

XSCAN

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

Другие удобства XSCAN включают возможность сканировать множество узлов за одно сканирование. Они могут быть введены в командную строку как параметры. (И Вы можете определить и узлы и подсети в своего рода реализации mix-and-match.) Исходник этой утилиты включен в CD-ROM, который сопровождает эту книгу.


Ссылка: Получите копию XSCAN (релиз неизвестен) на
http://www.giga.or.at/pub/hacker/unix.

Типовое Сканирование

Наше типовое сканирование будет сгенерировано, используя программу с именем SAFEsuite. Многие из Вас могут быть знакомы с этим изделием, которое было разработано Системами Безопасности Internet. ISS чрезвычайно известна в Сети по программе, названной ISS. Эта программа (Internet Security Scanner - Сканер Безопасности Internet) была среди первых автоматизированных сканеров, которые продавались коммерчески.

От ISS до SAFEsuite

Первый выпуск ISS расшевелил некоторые дискуссии. Многие люди чувствовали, что свободный выпуск такой утилиты Internet сообществу подвергнет опасности уже и так хрупкую безопасность сети. (Реакция на SATAN Dan Farmer'а была очень похожей.) В конце концов зачем выпускать программу, которая автоматически обнаруживает слабости на удаленном адресате? На страницах руководства ISS, автор (Christopher Klaus) обратился к этой проблеме, написав:

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

В первые дистрибутивы ISS был включен исходный текст программы. (Он иногда поступал как shar или shell файл архива, а иногда нет.) Для заинтересовавшихся изучением компонентов, которые делают сканер успешным и эффективным, полный исходник старой ISS включен в CD-ROM, который сопровождает эту книгу.

ISS имеет отличие одного из оплотов безопасности Internet. Она может быть найдена на тысячах сайтов в различных формах и версиях. Она фаворит хакеров и взломщиков, одинаково легко и просто компилируемая на почти любой UNIX-основанной платформе. Начиная с первого выпуска ISS, утилита стала невероятно популярной. Группа разработчиков с ISS принесла традицию маленьких, переносимых программ безопасности, и SAFEsuite её самое последнее усилие. Это полное усовершенствование более ранних версий.

SAFEsuite состоит из нескольких сканеров:

SAFEsuite подобна SATAN в конфигурации, управлении, реализации, и общее использование программы может быть сделано в среде GUI. Она сохраняет много времени и сил. Она также позволяет просматривать результирующую информацию быстро и удобно. Однако SAFEsuite имеет дополнительный атрибут, который делает её весьма популярной: Она выполняется на платформе Microsoft. SAFEsuite была разработана для использования в Microsoft Windows NT.

Это имеет некоторое значение. Только недавно NT была признана семейством UNIX как приемлемая серверная платформа. Это можно от части приписать новому C2 рейтингу безопасности NT. В любом случае, ISS прорвался через барьер, обеспечив протестированную утилиту безопасности для большой части семейства Microsoft. Я нахожу это довольно дальновидным решением со стороны группы разработчиков в ISS.

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

Любопытно, что группа разработчиков ISS сумела также добавить поддержку анализа уязвимости узла к нападениям "отказ в обслуживании" и IP обману. (Это впечатляет, хотя одно удивляет, какое значение имеет знание того, что вы уязвимы для DoS атаки. Немногие платформы свободны от этого типа нападений.)

Согласно людям из ISS:

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

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

Примечания о Конфигурации Сервера

С целью демонстрации и адресата и нападающего при сканировании, я установил сервер с именем узла SamsHack. Он был сконфигурирован следующим образом:

Я выбрал Linux, потому что он обеспечивает сильные возможности регистрации. Регистрация по умолчанию в Linux происходит через файл с именем /var/adm/messages. (Это может слегка различаться в зависимости от дистрибутива Linux. Red Hat Linux, например, имеет слегка отличную от Slackware структуру каталогов. В этом дистрибутиве Вы, вероятно, сосредоточитесь на файле /var/logs/messages.)

Файл /var/adm/messages содержит записи отчетов о состоянии и сообщений от системы. Они естественно включают алгоритмы начальной загрузки и любые другие процессов, которые пользователь мог бы инициализировать. (В этом случае файл /var/adm/messages будет регистрировать ответы нашего сервера на сканирование SAFEsuite.)


ПРИМЕЧАНИЕ: В некоторых версиях Linux (и действительно, в большинстве дистрибутивах UNIX), более ценная информация о регистрации может быть чаще найдена в /var/adm/syslog чем в /var/adm/messages. Это особенно так в отношении попыток пользователей получить несанкционированный доступ изнутри системы.

Системные Требования

Во время написания этой главы, версия SAFEsuite для Windows NT была всё ещё в разработке. Поэтому, пользователи NT должны войти в контакт с группой разработчиков в ISS для подробностей того, как установить утилиту на этой платформе. Системные требования показаны в Таблице 9.3.

Таблица 9.3. Инсталляционные требования для SAFEsuite.

Элемент Требование
Скорость Процессора Не определена
RAM 16МБ или больше
Организация Сети TCP/IP
Привилегии Корневые или администратора
Дисковое Пространство Приблизительно 5МБ
Броузер Любой HTML-3 броузер клиент
Разное Компьютеры Solaris требуют Motif 1.22+

SAFEsuite выполняется на многих платформах, включая, но не ограничиваясь следующими:

Установка набора программ проста. Она распаковывается подобно любой стандартной утилите UNIX. Она должно быть скопирована в каталог оп вашему выбору. Перейдите в тот каталог и распакуйте архив, используя следующую команду:

tar -xvf iss-xxx.tar

После распаковки архива Вы увидите файл iss.install. Это сценарий Bourne shell, который выполнит инсталляцию. (Инсталляция главным образом включает извлечение дистрибутивных дисков и справочной документации, которая находится в формате HTML.) Запустите этот файл, чтобы завершить основной процесс инсталляции, выполнив команду sh iss.install. Главная выполняемая программа это файл xiss, который запускает SAFEsuite в Системе X Window, OpenWindows, или любой совместимой системе управления окнами для UNIX.

Конфигурация

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

Если Вы решите использовать SAFEsuite, Вы сможете воспользоваться преимуществом этих острых опций. Если так, Вы должны вызвать окно Scanner Configuration (смотрите Рисунок 9.1). Некоторые из опций подобны опциям, прежде задаваемым через интерфейс командной строки (типа outfile, или log файла, который содержит всю информацию, полученную в течение сканирования. Прежде он назначался опцией -o). Другие опции полностью новые, типа опции для определения Web броузера.

Экран конфигурации SAFEsuite
Рисунок 9.1. Экран конфигурации SAFEsuite.


ПРИМЕЧАНИЕ: Опцию Web Browser нельзя не задать. Чтобы читать несокращенное руководство, которое поставляется с SAFEsuite, Вы должны определить броузер. То есть если пользователь не определит броузер, пункт Help в главном меню окна не будет работать. (Будет выдано сообщение об ошибках, сообщающее, что Вы не выбрали броузер.) Если имеется причина, по которой на данный момент Вы не хотите задавать броузер, или если машина, которую Вы используете, не имеет оного, Вы все равно можете просматривать справочный документ и руководство на другой машине. Просто переместите все файлы HTML в каталог по вашему выбору, запустите броузер, и откройте index.html. Ссылки будут прекрасно работать локально.

Специальные Возможности Опции для определения дополнительных портов особенно интересны. А так же возможность добавлять модули. SAFEsuite, оказывается, весьма расширяема. Таким образом, если Вы имеете специализированный код для исследования частей системы, не охваченных SAFEsuite, Вы можете включить эти модули в сканирование (как Вы можете сделать в SATAN Farmer'а и Venema'а).


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



ПРИМЕЧАНИЕ: Программа SAFEsuite включает карты сетей, которые являются удачным творением (Farmer и Venema намеревались добавить их к SATAN). Карта сети это замечательный способ быстро изолировать проблемные машины или конфигурации в вашей сети. Эти карты обеспечивают графическое представление вашей сети, визуально показывая потенциально опасные места. Использованный вместе с другими утилитами с сетевой архитектурой (многие из которых особенно не связаны с безопасностью), программы подобные SAFEsuite могут помочь Вам быстро разработать безопасную топологию сети.


Ссылка: Для получения дополнительной информации о приобретении, использовании или конфигурировании SAFEsuite, войдите в контакт с ISS на их Web странице (http://ISS).

Сканирование

Сканирование проходило приблизительно две минуты. Если кто интересуется, использованные сетевые ресурсы были относительно малы. Например, во время проведения сканирования я также выполнял несколько других приложений. Деятельность сканирования была едва заметной. Результаты сканирования просвещали. Был найден сервер SamsHack, уязвимый в нескольких местах. Эти уязвимости колебались от тривиальных до серьезных.


ПРИМЕЧАНИЕ: Для истинно любопытных, я работал с SAFESuite через стандартную конфигурацию Системы X Window MIT. Менеджер X Window был FVWM.

Ошибка rlogin

Один из тестов SAFEsuite выполнялся на предмет ошибки в программе удаленного входа в систему, названной rlogin. Был сервер SamsHack уязвим для нападения на rlogin? Нет.

# Rlogin Binding to Port
# Connected to Rlogin Port
# Trying to gain access via Rlogin
127.0.0.1: ---- rlogin begin output ----

127.0.0.1: ---- rlogin end output ----
# Rlogin check complete, not vulnerable.

Однако в других областях сервер SamsHack был уязвим для нападения. Эти уязвимости были критическими. Внимательно посмотрите на следующую запись:

# Time Stamp(555): Rsh check: (848027962) Thu Nov 14 19:19:22
# Checking Rsh For Vulnerabilities
# Rsh Shell Binding to Port
# Sending command to Rsh
127.0.0.1: bin/bin logged in to rsh
127.0.0.1: Files grabbed from rsh into './127.0.0.1.rsh.files'
127.0.0.1: Rsh vulnerable in hosts.equiv
# Completed Checking Rsh for Vulnerability

Вы увидите, что строка 6 говорит, что некоторые файлы были захвачены и сохранены. Их вывод был послан в файл по имени 127.0.0.1.rsh.files. Вы можете предположить, какой файл или файлы были сохранены в этот файл? Если Вы предположили, что файл /etc/passwd, Вы полностью правы. Вот содержание 127.0.0.1.rsh.files:

root:bBndEhmQlYwTc:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
lp:*:4:7:lp:/var/spool/lpd:
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
halt:*:7:0:halt:/sbin:/sbin/halt
mail:*:8:12:mail:/var/spool/mail:
news:*:9:13:news:/usr/lib/news:
uucp:*:10:14:uucp:/var/spool/uucppublic:
operator:*:11:0:operator:/root:/bin/bash
games:*:12:100:games:/usr/games:
man:*:13:15:man:/usr/man:
postmaster:*:14:12:postmaster:/var/spool/mail:/bin/bash
nobody:*:-1:100:nobody:/dev/null:
ftp:*:404:1::/home/ftp:/bin/bash
guest:*:405:100:guest:/dev/null:/dev/null

FTP также, как оказалось, был уязвимым (хотя важность этого сомнительна):

127.0.0.1: ---- FTP version begin output ----
 SamsHack FTP server (Version wu-2.4(1) Tue Aug 8 15:50:43 CDT 1995) ready.
127.0.0.1: ---- FTP version end output ----
127.0.0.1:  Please login with USER and PASS.
127.0.0.1:  Guest login ok, send your complete e-mail address as password.
127.0.0.1:  Please login with USER and PASS.
127.0.0.1: ANONYMOUS FTP ALLOWED
127.0.0.1:  Guest login ok, access restrictions apply.
127.0.0.1:  "/" is current directory.
127.0.0.1:  iss.test: Permission denied.
127.0.0.1:  iss.test: Permission denied. (Delete)
127.0.0.1:  Entering Passive Mode (127,0,0,1,4,217)
127.0.0.1:  Opening ASCII mode data connection for /bin/ls.
127.0.0.1:  Transfer complete.
127.0.0.1:  Entering Passive Mode (127,0,0,1,4,219)
127.0.0.1:  Opening ASCII mode data connection for /etc/passwd (532 bytes).
127.0.0.1:  Transfer complete.
127.0.0.1: Files grabbed via FTP into ./127.0.0.1.anonftp.files
127.0.0.1:  Goodbye.

Как Вы можете предположить, файл passwd для FTP был захвачен в файл. Таким образом, в этой главе мы идентифицировали, по крайней мере, три серьезных слабости безопасности в SamsHack.net:

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

Я включил полный отчет о сканировании на CD-ROM, который сопровождает эту книгу. Приведение его здесь было бы неблагоразумным, поскольку он содержит более 15-ти страниц информации.

Вы только что видели основы сканирования одного узла. Но в действительности, взломщик мог бы просканировать целых 200 узлов за один вечер. Для такой глобальной деятельности требуется большее ресурсов (большая пропускная способность, большее количество RAM и более мощный процессор). Но ресурсы это не единственное беспокойство взломщика; такое сканирование оставляет огромный след. Мы видели это сканирование со стороны взломщика. Теперь давайте посмотрим на него со стороны жертвы.

С Другой Стороны Ограждения

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

10 ноября, 1996, я провел сканирование, идентичное показанному выше, которое был выполнено 14 ноября, 1996. Единственное отличие между этими двумя сканированиями в том, что в сканировании 10-ого ноября я использовал не один, а несколько сканеров против сервера SamsHack. Эти сканирования и их действия были отображены в системном файле /var/adm/messages. Посмотрите на вывод:

Nov 10 21:29:38 SamsHack ps[159]: connect from localhost
Nov 10 21:29:38 SamsHack netstat[160]: connect from localhost
Nov 10 21:29:38 SamsHack in.fingerd[166]: connect from localhost
Nov 10 21:29:38 SamsHack wu.ftpd[162]: connect from localhost
Nov 10 21:29:38 SamsHack in.telnetd[163]: connect from localhost
Nov 10 21:29:39 SamsHack ftpd[162]: FTP session closed
Nov 10 21:29:39 SamsHack in.pop3d[169]: connect from localhost
Nov 10 21:29:40 SamsHack in.nntpd[170]: connect from localhost
Nov 10 21:29:40 SamsHack uucico[174]: connect from localhost
Nov 10 21:29:40 SamsHack in.rlogind[171]: connect from localhost
Nov 10 21:29:40 SamsHack in.rshd[172]: connect from localhost
Nov 10 21:29:40 SamsHack telnetd[163]: ttloop:  read: Broken pipe
Nov 10 21:29:41 SamsHack nntpd[170]: localhost connect
Nov 10 21:29:41 SamsHack nntpd[170]: localhost refused connection
Nov 10 21:29:51 SamsHack ps[179]: connect from localhost
Nov 10 21:29:51 SamsHack netstat[180]: connect from localhost
Nov 10 21:29:51 SamsHack wu.ftpd[182]: connect from localhost
Nov 10 21:29:51 SamsHack in.telnetd[183]: connect from localhost
Nov 10 21:29:51 SamsHack in.fingerd[186]: connect from localhost
Nov 10 21:29:51 SamsHack in.pop3d[187]: connect from localhost
Nov 10 21:29:52 SamsHack ftpd[182]: FTP session closed
Nov 10 21:29:52 SamsHack in.nntpd[189]: connect from localhost
Nov 10 21:29:52 SamsHack nntpd[189]: localhost connect
Nov 10 21:29:52 SamsHack nntpd[189]: localhost refused connection
Nov 10 21:29:52 SamsHack uucico[192]: connect from localhost
Nov 10 21:29:52 SamsHack in.rshd[194]: connect from localhost
Nov 10 21:29:52 SamsHack in.rlogind[193]: connect from localhost
Nov 10 21:29:53 SamsHack login: ROOT LOGIN ON tty2
Nov 10 21:34:17 SamsHack ps[265]: connect from pm7-6.pacificnet.net
Nov 10 21:34:17 SamsHack netstat[266]: connect from pm7-6.pacificnet.net
Nov 10 21:34:17 SamsHack wu.ftpd[268]: connect from pm7-6.pacificnet.net
Nov 10 21:34:22 SamsHack ftpd[268]: FTP session closed
Nov 10 21:34:22 SamsHack in.telnetd[269]: connect from pm7-6.pacificnet.net
Nov 10 21:34:23 SamsHack in.fingerd[271]: connect from pm7-6.pacificnet.net
Nov 10 21:34:23 SamsHack uucico[275]: connect from pm7-6.pacificnet.net
Nov 10 21:34:23 SamsHack in.pop3d[276]: connect from pm7-6.pacificnet.net
Nov 10 21:34:23 SamsHack in.rlogind[277]: connect from pm7-6.pacificnet.net
Nov 10 21:34:23 SamsHack in.rshd[278]: connect from pm7-6.pacificnet.net
Nov 10 21:34:23 SamsHack in.nntpd[279]: connect from pm7-6.pacificnet.net
Nov 10 21:34:28 SamsHack telnetd[269]: ttloop:  read: Broken pipe
Nov 10 21:34:28 SamsHack nntpd[279]: pm7-6.pacificnet.net connect
Nov 10 21:34:28 SamsHack nntpd[279]: pm7-6.pacificnet.net refused connection
Nov 10 21:34:33 SamsHack rlogind[277]: Connection from 207.171.17.199 on illegal port

Первая вещь, на которую я хочу обратить Ваше внимание, это время. Первая строка этой регистрационной выборки сообщает время как 21:29:38. Последняя строка сканирования сообщает 21:34:33. Таким образом, вся деятельность произошла в пределах пятиминутного периода. Затем я хочу, чтобы Вы хорошенько посмотрели, что же здесь произошло. Вы увидите, что почти каждый открытый, доступный порт был атакован (некоторые из них больше одного раза). И, по крайней мере, в одном случае IP адрес, с которого происходило нападение, ясно виден в log-файле (я специально поместил его в последнюю строку отрывка log-файла). Строка имеет вид

Nov 10 21:34:33 SamsHack rlogind[277]: Connection from 207.171.17.199 on illegal port

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

Так что средний системный администратор не должен делать больше, чем искать выполнение запросов на подключение в файле /var/adm/message (или его эквиваленте). Однако, Вы будете удивлены узнав, что подавляющее число системных администраторов не делает этого регулярно.

Другие Платформы

Сканеры традиционно разрабатывались для UNIX. Но как на счет других операционных систем? Имеются два аспекта для рассмотрения сканеров в отношении операционной системы. Первый, какую операционную система выполняет целевая машина. Второй, какую операционную система выполняет машина нападения. Я хочу обсудить их относительно платформ отличных от UNIX.

Целевая Машина Как Другая Платформа

Сканирование не UNIX платформ может иметь, а может и не иметь существенное значение. По крайней мере, это истинно относительно использования сканеров TCP портов. Это так, потому что большинство не UNIX платформ, которые поддерживают TCP/IP, поддерживают только некоторые его части. Фактически, некоторые из реализаций TCP/IP весьма урезаны. Откровенно, несколько реализаций TCP/IP имеют поддержку только для Web сервера. (Одинаково, даже те, которые имеют более обширную поддержку, могут не предоставлять дополнительные порты или службы, потому что они заблокированы.)

Это основная причина, по которой некоторые платформы, подобные платформе Macintosh, к настоящему времени видели меньшее вторжений, чем UNIX-основанные операционные системы. Чем меньше служб Вы фактически выполняете, тем менее вероятно, что дыра будет найдена. Это здравый смысл.

Одинаково, многие не UNIX платформы поддерживают расширенный TCP/IP. AS/400 одна такая платформа. Microsoft Windows NT (с Internet Information Server) другая. Конечно, любая система, которая выполняет любую форму TCP/IP, может потенциально поддерживать широкий диапазон протоколов. Novell NetWare, например, долго имела поддержку для TCP/IP.

Это сводится к следующему: информация, которую Вы получите от сканирования большого разнообразия операционных систем, зависит в значительной степени от конструкции файла /etc/services или его эквивалента целевой операционной системы. Этот файл определяет то, какие порты и службы являются доступными. Эта тема обсуждается позже, когда это необходимо для (и осуществлено по-другому на) различных операционных систем. Например, в Главе 18, "Novell", я исследую этот файл и его использование на платформе Novell NetWare.

Машина Сканирования на Другой Платформе

Использование платформы, другой чем UNIX, чтобы выполнить сканирование, это другой вопрос. Портированные утилиты сканирования доступны для других платформ и, как Вы можете предположить, мы собираемся немного попользоваться одной из них. Программа, которую я буду использовать для демонстрации этого процесса, выполняется в Windows 95. Она называется Network Toolbox.

Network Toolbox

Network Toolbox это TCP/IP утилита для Windows 95. (Эта программа обсуждалась ранее в этой главе в разделе сетевых утилит анализа.) Она была разработана J. River Co в Минниаполесе, Mиннесота (info@jriver.com). Утилита включает сканер портов. Я не буду проводить исчерпывающий анализ других утилит, доступных в том приложении (хотя имеются многие, включая ping). Вместо этого, я хотел бы провести быстрое ознакомление. Рисунок 9.2 показывает открытый экран приложения.

1. Перед проведением сканирования Network Toolbox, Вы должны сначала установить свойства сканирования. По умолчанию, Network Toolbox сканирует только запросы 14 TCP/IP портов. Это недостаточно для законченного сканирования. Вывод заданного по умолчанию сканирования выглядит следующим образом:
port:  9     discard     Service available
port: 13     daytime     Service available
port: 21         ftp     Service available
port: 23      telnet     Service available
port: 25        smtp     Service available
port: 37        time     Service available
port: 79      finger     Service available
port: 80        http     Service available
port:110        pop3     Service available
port:111     portmap     Service available
port:512        exec     Service available
port:513       login     Service available
port:514       shell     Service available
port:540        uucp     Service available
2. Чтобы получить более всестороннее сканирование, Вы должны сначала установить свойства сканирования. Чтобы сделать это нажмите кнопку Options, чтобы вызвать панель Options (смотрите Рисунок 9.3).

Открытый экран Network Toolbox
Рисунок 9.2. Открытый экран Network Toolbox.

Панель Options Network Toolbox
Рисунок 9.3. Панель Options Network Toolbox.

3. После того, как Вы открыли панель Options Network Toolbox, выберите вкладку Port Scanner. Вы увидите опции и установки для сканирования (смотрите Рисунок 9.4).

Вкладка Port Scanner Network Toolbox диалога Options
Рисунок 9.4. Вкладка Port Scanner Network Toolbox диалога Options.

4. Вкладка Опций Port Scanner обеспечивает ряд опций относительно портов. Одна определяет диапазон портов. Это очень полезно, хотя я вероятно сканировал бы все доступные порты.

5. Последний шаг это фактическое сканирование целевого узла. Это делается выбором кнопки Scan, показанной на Рисунке 9.5.

Выберите кнопку Scan, чтобы сканировать целевой узел
Рисунок 9.5. Выберите кнопку Scan, чтобы сканировать целевой узел.

Сканер порта в Network Toolbox быстр и точен. Среднее сканирование занимает меньше минуты. Я характеризовал бы его как хорошая программа. Кроме того, он содержит нескольких других портированных утилит UNIX, представляющих интерес.

Информация, отобранная этой утилитой, весьма похожа на полученную утилитой Strobe. Сканер портов Network Toolbox не сообщит Вам владельца процесса, и при этом он не пробует двери или окна. (Другими словами, он не делает попыток проникнуть через целевую сеть.) Тем не менее, это полезно, поскольку он может быстро определить, какие процессы работают на цели.

Итог

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

Безопасность Internet постоянно изменяется. Как только обнаруживаются новые дыры, они регистрируются в различные списки рассылки, предупреждающие списки и телеконференции. Чаще всего, такие предупреждения оседают в CERT или CIAC. Взломщики и хакеры состоят в таких списках рассылки и часто читают консультации CERT. Таким образом, новые дыры становятся хорошо известными часто за минуты или часы после того, как они зарегистрированы.

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

Системные администраторы должны изучить реализации сканеров. Это жизненно необходимо. Те, кто не в состоянии сделать это, будут иметь последствия, которые могут быть очень серьезными. Я полагаю, что сканеры могут обучить новых системных администраторов потенциальным рискам безопасности. Если нет другой причины, то сканеры важный элемент безопасности Internet. Я рекомендую испытать их столько, сколько возможно.


Предыдущая главаСледующая главаСодержание


Macmillan Computer Publishing USA

Macmillan Computer Publishing.



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz