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

 

Сканеры портов

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



Изучаемые концепции:
  • Порты TCP/UDP
  • Идентификационные метки TCP
  • Как работает сканирование портов
  • Конфигурирование сканирования портов
  • Методы сканирования портов

Используемые инструменты:
Nmap, Nmap for Windows, Nlog

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

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

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

Уровень 7

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

DNS, FTP, HTTP, SMTP, SNMP, Telnet

Уровень 6

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

XDR

Уровень 5

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

RPC

Уровень 4

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

NetBIOS, TCP, UDP

Уровень 3

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

ARP, IP, IPX, OSPF

Уровень 2

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

Arcnet, Ethernet, Token ring

Уровень 1

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

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

Малоизвестная, но важная организация Internet Assigned Numbers Authority (IANA) присваивает номера портов TCP/UDP. Она отслеживает множество различных стандартов и систем, обеспечивающих функционирование Интернете. Среди ее обязанностей - распределение IP-адресов и назначение ответственных за имена доменов верхнего уровня. IANA обладает значительной властью, хотя по большей части остается в тени. Немногие люди за пределами инженерных подразделений коммуникационных компаний знают о существовании IANA, но она управляет значительной частью "недвижимости" Интернета. IANA отвечает также за поддержание списка сетевых портов, по которым можно подключаться к определенным сервисам, предполагая, что приложение или операционная система соответствуют этим стандартам. Разумеется, всем компаниям, производящим программное обеспечение, надлежит скрупулезно следовать этим стандартам, иначе их продукты могут оказаться несовместимыми с другими подключенными к Интернету системами. В табл. 4.1 перечислены некоторые из наиболее употребительных TCP-портов для серверных приложений.
Полный список номеров портов представлен в приложении С. Самую свежую версию этого списка можно найти на Web-сайте IANA (http://www.iana.org). Номер порта присвоен почти каждому значительному приложению. Как для TCP, так и для UDP-сервисов эти номера лежат в диапазоне от 1 до 65535. Номера портов от 0 до 1023 считаются зарезервированными для общеупотребительных приложений, обычно выполняющихся от имени пользователя root или другого привилегированного пользователя. Соответствующие им номера портов называются общеизвестными. Номера портов с 1024 по 65535 можно регистрировать в IANA для конкретных приложений. Они обычно соответствуют определенным сервисам, но подобная регистрация не имеет для производителей столь же обязательной силы, как в случае зарезервированных номеров.
Наконец, существуют недолговечные номера портов, которые операционная система выбирает случайным образом из номеров, превышающих 1024, (обычно - в верхней части диапазона). Они используются для машин, которые произвольным образом устанавливают соединения с другими машинами. Например, для загрузки web-страницы ваша машина обратится к порту 80 web-сервера. Сервер увидит входящее соединение с некоторым случайным номером порта, превышающим 1024. В таком случае сервер будет знать, что это, вероятно, пользователь, а не другое приложение, устанавливающее с ним соединение. Он также использует недолговечный номер порта для отслеживания определенного пользователя и сеанса. Например, если вы параллельно откроете два навигатора, то ваш компьютер для сеанса каждого из них создаст два разных номера порта для установления соединений, которые сервер будет считать различными.


Таблица 4.1. Общеупотребительные серверные порты

Номер порта

Протокол

Сервис

21

FTP

Протокол передачи файлов (управляющий порт)

22

SSH

Защищенный shell

23

Telnet

Telnet

25

SMTP

Почтовый сервис

53

DNS

Разрешение доменных имен

79

Finger

Finger

80

HTTP

Web-сервис

135-139

NetBIOS

Сетевые коммуникации Windows

443

SSL

Защищенный web-сервис

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

Обзор сканеров портов
Сканеры портов, не мудрствуя лукаво, опрашивают набор портов TCP или UDP и смотрят, не ответит ли приложение. Если ответ получен, это означает, что некоторое приложение слушает порт с данным номером. Имеется 65535 возможных портов TCP и столько же - UDP. Сканеры можно сконфигурировать для опроса всех возможных портов или только общеупотребительных (с номерами, меньшими 1024). Веская причина для полного сканирования состоит в том, что сетевые троянские и другие вредоносные программы, чтобы избежать обнаружения, нередко используют нетрадиционные порты с номерами в верхней части диапазона. Кроме того, некоторые производители не следуют стандартам должным образом и подключают серверные приложения к портам с большими номерами. Полное сканирование охватывает все возможные места, где могут скрываться приложения, хотя и требует больше времени и пожирает несколько большую часть полосы пропускания.
Сканеры портов предстают во множестве видов от очень сложных с множеством различных возможностей до имеющих минимальную функциональность. На самом деле, вы сами можете вручную выполнить функции сканера портов, применяя Telnet и проверяя порты по очереди. Просто подключайтесь к IP-адресу, добавляя номер порта, например:
telnet 192.168.0.1:80
Данная команда использует Telnet для соединения с машиной. Номер после двоеточия (для некоторых реализаций Telnet необходимо просто оставить пробел между IP-адресом и номером порта) говорит Telnet, что для соединения надо использовать порт 80 вместо стандартного для Telnet порта 22. Вместо того чтобы получить от Telnet обычное приглашение, которое выдается при подключении к его подразумеваемому порту, вы соединитесь с web-сервером, если таковой запущен на машине. После нажатия клавиши ввода вы получите первый ответ web-сервера навигатору. Вы увидите информацию из заголовка HTTP, которая обычно обрабатывается навигатором и скрыта от пользователя. Она выглядит примерно так, как показано на
GET / HTTP

HTTP/1.1 400 Bad Request
Date: Mon, 15 Mar 2004 17:13:16 GMT
Server: Apache/1.3.20 Sun Cobalt (Unix) Chili!Soft-ASP/3.6.2
mod_ssl/2.8.4 OpenSSL/0.9.6b PHP/4.1.2 mod_auth_pam_external/0.1
FrontPage/4.0.4.3 mod_perl/1.25
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF///DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>400 Bad Request</TITLE>
</HEAD><BODY>
<H1>Bad Request</H1>
Your browser sent a request that this server could not understand
Request header field is missing colon separator.
<PRE>
</PRE>

</BODY></HTML>
Так же можно поступить с любым открытым портом, но вы не всегда получите в ответ нечто вразумительное. По сути, именно это и делают сканеры портов: они пытаются установить соединение и ожидают ответ.
Некоторые сканеры портов пытаются также идентифицировать операционную систему на другом конце, выявляя так называемые идентификационные метки TCP. Хотя TCP/IP является стандартом сетевых коммуникаций, каждый производитель реализует его немного иначе, чем другие. Эти различия, обычно не мешающие взаимодействию, проявляются в ответах на любое воздействие, такое как эхо-тест или попытка установления TCP-соединения. Например, цифровая подпись ответа на эхо-тест от системы Windows выглядит иначе, чем в ответе системы Linux. Имеются даже различия между версиями операционной системы. На л приведен пример идентификационных меток TCP для Windows ME, 2000 и XP.
# Windows Millennium Edition v4.90.300
# Windows 2000 Professional (x86)
# Windows Me or Windows 2000 RC1 through final release
# Microsoft Windows 2000 Advanced Server
# Microsoft XP professional version 2002 on PC Intel processor
# Windows XP Build 2600
# Windows 2000 with SP2 and long fat pipe (RFC 1323).
# Windows 2K 5.00.2195 Service Pack 2 and latest hotfixes
# XP Professional 5.1 (build 2600).. all patches up to June 20, 2004
# Fingeprint Windows XP Pro with all current updates to May 2002
Fingeprint Windows Millenium Edition (Me), Win 2000, or WinXP
Tseq(Class=RI%gcd=<6%SI=<23726&>49C%IPID=I%TS=0)
T1(DF=Y%W=5B4|14F0|16D0|2EE0|402E|B5C9|B580|C000|D304|FC00|FD20|FD68
|FFFF%ACK=S++%Flags=AS%Ops=NNT|MNWNNT)
T2(Resp=Y|N%DF=N%W=0%ACK=S%Flags=AR%Ops=)
T3(Resp=Y%DF=Y%W=5B4|14F0|16D0|2EE0|B5C9|B580|C000|402E|D304|FC00|FD20|FD68
|FFFF%ACK=S++%Flags=AS%Ops=MNWNNT)
T4(DF=N%W=0%ACK=0%Flags=R%Ops=)
T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(DF=N%W=0%ACK=0%Flags=R%Ops=)
T7(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E|F%UCK=E|F%ULEN=134%DAT=E)
Тарабарщина в нижней части листинга является уникальными установками, используемыми Windows при установлении TCP-соединений. Сравнивая полученный от машины ответ с базой известных идентификационных меток TCP, можно сделать разумное предположение об операционной системе на другом конце.
Данный метод не является совершенным. Иногда программа сканера портов ошибается, поскольку некоторые производители операционных систем при реализации стека TCP заимствуют части других систем (систем UNIX в особенности). Это заставляет сканер портов считать, что перед ним - ОС-первоисточник. Существуют также необычные операционные системы, например, в коммутаторах, принтерах и сетевых устройствах, которые могут отсутствовать в базе данных сканера.
Если вашу сеть сканируют с не очень похвальными намерениями, это предоставляет злоумышленникам ценную информацию. Знание операционной системы и ее версии может послужить хорошей отправной точкой для определения того, какие зацепки и средства проникновения стоит испробовать. Это очень веская причина для регулярного сканирования своей сети, чтобы определить, какие порты в системе оставлены открытыми. Затем следует их просмотреть, закрыть неиспользуемые порты и защитить те, которые должны оставаться открытыми.

Соображения по поводу сканирования портов

При планировании сканирования портов любой сети помните, что эта деятельность создает большую нагрузку на сеть. Сканирование за короткое время десятков тысяч портов порождает в сети интенсивный трафик. Если вы используете для сканирования устаревшей сети на 10 Мбит/с мощный компьютер, это может существенно повлиять на сетевую производительность. При сканировании через Интернет данная проблема будет менее острой, так как ограничивающим фактором послужит пропускная способность промежуточных соединений, однако все равно можно снизить производительность загруженного web-сервера или почтового сервера. В крайних случаях ваша активность может даже привести к прекращению работы машин.
Независимо от способа использования, описанных выше средств обязательно получите разрешение владельца сканируемых хостов. Сканирование портов - деятельность на грани законности (в действительности вы не взламываете системы, просто опрашиваете сеть). Однако вашему начальнику может быть не до нюансов, если вы нарушите работу корпоративной сети. И прежде чем вы забавы ради решите просканировать несколько любимых web-серверов, учтите, что в контракте на предоставление Интернет-услуг могут содержаться пункты, запрещающие подобную деятельность. Операторы web-сайтов постоянно подают жалобы на поставщиков Интернет-услуг, клиенты которых регулярно позволяют себе ненадлежащее поведение. Поэтому, если вы не хотите, чтобы вас уволили или отключили от Интернета, получите письменное разрешение либо от вашего руководителя (если работаете на свою организацию), либо от клиента/добровольца (если обслуживаете третью сторону). В приложении D помещено стандартное письменное соглашение для получения разрешения от предполагаемого объекта сканирования, которое является хорошей отправной точкой для юридического прикрытия ваших позиций.
Даже при наличии разрешения необходимо принять во внимание предполагаемый эффект сканирования целевой сети. Если это интенсивно используемая сеть, вы должны выполнять сканирование ночью или в периоды наименьшей активности. Некоторые сканеры имеют возможность замедлять посылку пакетов, чтобы не очень сильно воздействовать на сеть. Это означает, что сканирование будет выполняться дольше, но в более дружественном для сети режиме.
Некоторые современные устройства, такие как межсетевые экраны и некоторые маршрутизаторы, достаточно интеллектуальны, чтобы распознать сканирование своих портов и отреагировать на него. Iptables можно сконфигурировать для этого, используя опцию multiport и устанавливая флаг приоритета. Машины могут отвечать на сканирование портов снижением скорости ответа для каждого последующего опроса. В итоге ваше сканирование может растянуться до бесконечности. Иногда можно обмануть машину на другом конце, рандомизируя порядок сканируемых портов или растягивая интервалы между запросами. Некоторые устройства, возможно, попадутся на эту удочку, другие - нет. Придется поэкспериментировать, чтобы найти работоспособный вариант.

Применение сканеров портов

Когда вы получите разрешение на сканирование, следует определить, с какой целью вы собираетесь сканировать сеть.

Инвентаризация сети

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

Оптимизация сети/сервера

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

Выявление шпионского ПО, "троянских" программ и сетевых "червей"

Активные web-серферы нередко подцепляют на web-сайтах небольшие программы, которые пытаются отслеживать их поведение или выдавать на их компьютеры специальную всплывающую рекламу. Эти программы называются шпионским ПО, потому что нередко они пытаются следить за активностью пользователя и могут передавать собранные данные обратно на центральный сервер. Эти программы обычно не опасны, но их чрезмерное количество может существенно снизить производительность труда пользователя. Кроме того, написаны они зачастую неаккуратно и могут мешать работе других программ или даже вызывать их аварийное завершение. Они могут также помогать хакерам в поиске уязвимостей.
Другим классом сетевого программного обеспечения, которое вы определенно не хотели бы иметь в своей сети, являются "троянские" программы. Эти программы специально созданы для взлома сетей. Подобно троянскому коню из греческой мифологии, эти программы открывают хакерам и взломщикам заднюю дверь в вашу сеть. Обычно их присутствие можно обнаружить только по открытому сетевому порту, а с помощью антивирусных средств выявить их крайне сложно. Оказавшись внутри компьютера, большинство "троянских" программ пытаются вступить во внешние коммуникации, чтобы дать своему создателю или отправителю знать, что они заразили машину на этих портах. В табл. 4.2 перечислены наиболее распространенные "троянские" программы и их номера портов. Многие номера портов легко распознаваемы по определенному набору цифр (например, для NetBus это 54321, а для Back Orifice - 31337, что в хакерской кодировке читается как "элита"). В целом же троянские программы стремятся использовать порты с большими, необычными, нераспознаваемыми номерами, хотя некоторые действительно хитроумные троянцы пытаются задействовать младшие зарезервированные порты, чтобы замаскироваться под обычные сервисы.
Сетевые "черви" - особо мерзкий тип вирусов. Зачастую они снабжены сетевыми средствами и открывают порты на компьютере-"хозяине". Сетевые "черви" используют сеть для распространения и поэтому иногда выявляются при сканировании портов. Сканирование портов может стать ценным подспорьем в защите от этого вида вирусов.


Таблица 4.2. Порты, используемые наиболее распространенными троянскими программами

Номер порта

IP протокол

Известные "троянские" программы, использующие эти порты

12456 и 54321

TCP

NetBus

23274 и 27573

TCP

Sub7

31335

TCP

Trin00

31337

TCP

Back Orifice

31785-31791

TCP

Hack 'a'Tack

33270

TCP

Trinity

54321

UDP

Back Orifice 2000

60000

TCP

Deep Throat

65000

TCP

Stacheldraht

Поиск неавторизованных или запрещенных сервисов

Регулирование того, что сотрудники запускают на своих компьютерах, - трудноразрешимая проблема. Хотя с помощью политик безопасности домена можно ограничить доступ к приводам гибких и компакт-дисков, остается очевидной возможность загрузки программного обеспечения из Паутины. Кроме того, сотрудникам нравится пользоваться сервисами мгновенного обмена сообщениями, такими как ICQ или AOL Instant Messenger, для общения с друзьями, родственниками и другими людьми вне вашей сети. Если разрешить эти сервисы, то необходимо учитывать риски, которые они представляют для безопасности вашей организации. Помимо снижения производительности труда сотрудников и пожирания полосы пропускания, сети мгновенного обмена сообщениями часто оказываются средой для распространения вирусов. Известно также, что в них есть ошибки, позволяющие пользователям осуществлять доступ к файлам на локальной машине. Даже если вы не разрешаете их официально, их применение бывает трудно отследить. Регулярное сканирование портов раскроет многие подобные сервисы, демонстрируя используемые ими открытые порты.
Существуют еще более вредоносные приложения, которые ваши пользователи могут пытаться запускать, например, программное обеспечение для одноранговой пересылки файлов, позволяющее связаться с тысячами других пользователей во всем мире для разделения файлов с музыкой, фильмами и компьютерными программами. Такое ПО способно потребить всю вашу полосу пропускания, если учесть, что пересылаться могут файлы размером в сотни мегабайт. Реальной становится и угроза судебного преследования вашей организации за нарушение авторских прав. В последнее время крупные медийные компании и программистские концерны все более настойчиво преследуют нелегальных распространителей файлов, а организации являются для них более крупными объектами преследования, чем отдельные люди. Разумеется, применение подобного ПО может открыть внешнему миру внутренности вашей сети, зачастую без явного уведомления сделать часть жесткого диска пользователя доступной другим пользователям. И конечно же, существует множество методов взлома и использования уязвимостей таких программ, позволяющих злоумышленникам пойти значительно дальше. Сухой остаток состоит в нежелательности использования в вашей корпоративной сети однорангового программного обеспечения. И с помощью хорошего сканера портов, к рассмотрению одного из которых мы переходим, можно идентифицировать всех пользователей подобного ПО и отключить их.

Nmap - вне всяких сомнений, лучший сканер портов. Его главный автор - программист с псевдонимом "Fyodor", разработки которого используются во многих других программах и портированы практически на все употребительные операционные системы. На Nmap опирается сканер уязвимостей Nessus, описанный в . Доступно также несколько дополнений, включая программу Nlog, рассматриваемую далее в этой лекции. Достаточно сказать, что Nmap должен входить в инструментарий каждого администратора безопасности. Перечислим некоторые из основных достоинств Nmap:

  • У него есть множество опций. Простые сканеры портов доступны с такими средствами, как Sam Spade, однако Nmap имеет огромное число опций, предоставляющих почти неограниченное число вариантов сканирования сети. Можно понизить частоту отправки зондирующих пакетов, если вы опасаетесь замедления работы сети, или, наоборот, повысить ее, если имеется запас ширины полосы пропускания. Опции невидимости - еще один элемент репертуара Nmap. Хотя некоторые критикуют эти опции, полагая, что они необходимы только хакерам, для них имеются законные применения. Например, если необходимо проверить, насколько чувствительной является система обнаружения вторжений. Nmap позволяет сделать это, выполняя сканирование с различными уровнями невидимости. Далее, Nmap выходит за рамки простого сканирования портов и осуществляет идентификацию ОС, что полезно при установлении соответствия между IP-адресами и машинами. В данном разделе будет рассмотрено большинство основных опций, но всего их так много, что охватить все не представляется возможным.
  • Он легкий, но мощный. Код Nmap невелик и будет выполняться даже на самых старых машинах (я постоянно запускаю его на Pentium 133 МГц, ОЗУ 16 МБ и уверен, что он будет работать и на более старых моделях). На самом деле, теперь он запускается даже на некоторых КПК. В небольшом объеме он концентрирует огромную энергию и без проблем сканирует очень большие сети.
Он прост в использовании. Хотя существует множество различных способов его запуска, реализуемое по умолчанию базовое сканирование SYN делает все, что требуется большинству приложений. Имеется как режим командной строки, так и графический интерфейс для UNIX и Windows, чтобы удовлетворить запросы как круглых дураков, так и тех, кому необходима графика. Он также очень хорошо документирован и поддерживается большим числом разработчиков и оперативных ресурсов.

Установка Nmap в Linux

Если вы работаете в Mandrake, RedHat или SUSE, можно взять файлы с прилагаемого к книге компакт-диска или загрузить бинарный RPM. Чтобы загрузить файлы из Web, наберите в командной строке:

rpm -vhU http://download.insecure.org/nmap/dist/nmap/dist/
nmap-3.50-1.i386.rpm
rpm -vhU http://download.insecure.org/nmap/dist/
nmap-frontend-3.50-1.i386.rpm

Вам понадобятся два пакета: собственно программа Nmap с интерфейсом командной строки и графическая оболочка для X-Window. Приведенные выше команды загрузят RPM'ы и запустят их. Можно изменить команду, чтобы воспользоваться самой последней версией (уточните на web-сайте имя файла). После выполнения обеих команд вы будете готовы приступить к работе.
Если при выполнении команд возникнут проблемы, или если у вас другой дистрибутив ОС, то придется вручную выполнить компиляцию исходных текстов (см. врезку о компиляции). Это немного сложнее, но не слишком трудно, да и научиться этому полезно, поскольку это придется делать для других средств безопасности из данной книги. Вам будут часто встречаться такие же или похожие команды.


Компиляция исходных текстов: Краткое введение
Многие важнейшие программы UNIX написаны на Си или Си++ из соображений эффективности и мобильности. Это облегчает программистам распространение единой версии исходных текстов и позволяет пользователям компилировать их для своей специфической операционной системы. Большинство систем UNIX поставляются со встроенным Си-компилятором. Си-компилятор с открытыми исходными текстами, используемый в Linux, называется Gcc. Когда требуется построить бинарную программу из исходных текстов, вы вызываете Gcc (при условии, что программа написана на языке Си).
  1. В каталоге, где были распакованы исходные тексты программы, наберите
./configure имя_программы

Запустится программа, которая проверит конфигурацию вашей системы на наличие средств, необходимых программе, и задаст так называемые параметры времени компиляции. С помощью программы configure можно задать некоторые настройки, такие как пропуск определенных частей программы или добавление необязательных элементов. При выполнении configure создается конфигурационный файл, называемый makefile, который вместе с программой make определяет, как и в каком порядке компилятор должен строить объектный код.

  1. Выполните команду make для компиляции программы:
make имя_программы

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

  1. Наконец, выполните следующую команду:
make install

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

Далее на примере Nmap показан весь процесс компиляции исходных текстов.

  • Чтобы скомпилировать Nmap из исходных текстов, выполните в каталоге nmap следующие команды:
./configure
make
make install

Отметим, что для выполнения команды make install вы должны располагать привилегиями суперпользователя, поэтому не забудьте предварительно набрать su root и затем ввести пароль пользователя root. Не рекомендуется выполнять первые две команды от имени root, так как они могут повредить вашу систему, если в программах есть ошибки или вредоносный код. Необходимо выполнить представленный набор команд для каждой программы - главной программы Nmap и графической оболочки (если только вы не намерены запускать Nmap исключительно из командной строки).

  • После того, как вы выполнили RPM или скомпилировали программу, вы готовы к применению Nmap. Запустите графический клиент, набрав
nmapfe

Если в вашем PATH отсутствует каталог /usr/local/bin, введите

s/usr/local/bin/nmapfe

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

Установка Nmap для Windows

Nmap для Windows поддерживает Jens Vogt. Он перенес эту программу в Windows и замечательным образом держится почти вровень с версиями UNIX, отставая всего на один шаг на момент написания этой книги (версия 3.0). Правда, его продукт имеет статус бета-версии, но чего еще желать для открытого ПО? Сканер для Windows не так быстр, как для UNIX, но обладает теми же основными возможностями.

  1. Возьмите файл с прилагаемого к книге компакт-диска или загрузите простой исполняемый файл установки для NMapWin с http://download.insecure.org/nmap/dist/nmapwin_1.3.1.exe
  2. Если драйвер WinPcap не загружен, его необходимо установить. Если вы не знаете, есть ли он, то его, скорее всего, нет, поскольку он не является стандартным драйвером, включаемым во все версии Windows. Библиотеки WinPcap позволяют Nmap получить низкоуровневый доступ к вашей сетевой плате, чтобы он мог перехватывать неизмененные пакеты стандартным кросс-платформным образом. К счастью, пакет установки NMapWin предоставляет эти файлы. Файл установки WinPcap находится в каталоге files/nmapwin/winpcap.

Имеются две версии WinPcap. Предпочтительно использовать более новую версию, WinPcap 3.1Beta. Если у вас многопроцессорная система, следует использовать ветвь WinPcap 3.X или отключить все процессоры, кроме одного. Если это не помогает, попробуйте более старую версию или возьмите версию, которая будет работать с вашей системой, на сайте WinPcap по адресу http://winpcap.polito.it/
WinPcap используется многими другими программами Windows, включая открытое ПО для выявления вторжений и диагностики сети, рассматриваемое в последующих лекциях, поэтому работоспособность WinPcap важна.
Примечание: в настоящее время WinPcap работает ненадежно по коммутируемым соединениям под Windows NT, 2000 и XP. Если вы собираетесь применять сканер портов через коммутируемое соединение (что в любом случае трудно рекомендовать, учитывая ограниченную полосу пропускания для отправки зондирующих пакетов), то придется найти иное решение.

  1. После установки WinPcap необходимо перезагрузить систему, чтобы все драйверы заработали. Затем запускайте NmapWin - и можно начать сканирование.

Сканирование сетей с помощью Nmap

Графический клиент Nmap предоставляет весьма простой интерфейс. Вверху имеется поле для ввода IP-адреса или диапазона IP-адресов, а чтобы начать сканирование, достаточно нажать кнопку Scan.
В табл. 4.3 приведены различные форматы для ввода IP-адресов. Адреса могут также извлекаться из файла, если выбрать пункт Input элемента File основного меню и задать текстовый файл с данными в подходящем для Nmap формате.


Флэми Тех учит:
Сетевые маски и нотация с косой чертой.
Вам будут часто встречаться обозначения IP-сетей или с сетевой маской, или с косой чертой и числом после нее. Это - два способа задать размер сети. Для их понимания необходимо представлять себе структуру IP-адреса. Стандартный адрес IPv4 состоит из 32 бит. Его обычно представляют в виде четырех частей - восьмибитных октетов. Октеты для удобочитаемости обычно преобразуют в десятичные числа. Поэтому, если вы видите 192.168.1.1, то компьютер видит
11000000 10101000 00000001 00000001
Маска сети обычно представляет собой набор из четырех чисел. Она показывает, где кончается локальная сеть и начинается глобальная. Обычно маска выглядит примерно так:
255.255.255.0
Чтобы определить размер сети, представленной сетевой маской, достаточно вычесть каждый октет из 256 и перемножить полученные разности. Например, сетевая маска 255.255.255.248 описывает восьмиэлементную IP-сеть, поскольку
(256-255) * (256-255) * (256-255) *(256-248) = 8.
Сетевая маска 255.255.255.0 представляет IP-сеть из 256 узлов, так как
(256-255) * (256-255) * (256-255) *(256-0) = 256.
Наконец, сетевая маска 255.255.0.0 описывает сеть из 65536 IP-адресов, ибо
(256-255) * (256-255) * (256-0) *(256-0) = 65536.
Нотация с косой чертой чуть сложнее для понимания, но идея остается прежней. Число после косой черты показывает, сколько бит описывают глобальную сеть. Вычитая это число из 32, получаем число бит, описывающих локальную сеть. Например, запись 192.168.0.0/24 представляет сеть, начинающуюся с 192.168.0.0 и насчитывающую 256 IP-адресов. (Это такой же размер, как и у рассмотренной выше сети с маской 255.255.255.0.)
32 бита IP-адреса минус 24 бита для префикса сети дает 8 бит для локального использования, то есть 256 возможных адресов. Если вас мутит от двоичных чисел, просто воспользуйтесь для запоминания представленной ниже небольшой таблицей.

Нотация с косой чертой

Размер сети

/24

256 IP-адресов

/25

128 IP-адресов

/26

64 IP-адресов

/27

32 IP-адресов

/28

16 IP-адресов

/29

8 IP-адресов

/30

4 IP-адреса

/31

2 IP-адреса

/32

1 IP-адрес

Таблица 4.3. Форматы IP адресов

Формат

Пример

Одиночный IP-адрес

192.168.0.1

IP- адреса, разделенные запятыми

192.168.0.1,192.168.0.2

IP-диапазон, разделенный дефисом

192.168.0.1-255

Использование стандартной нотации с косой чертой

192.168.0.1/24 (сеть класса С из 256 адресов)

Запуск Nmap из командной строки
Nmap можно запустить из командной строки как в UNIX, так и в Windows. Общий формат таков:
nmap параметры IP-диапазон
с любыми дополнительными настройками, заданными значениями параметров. Далее до конца лекции вслед за настройками или опциями графического интерфейса в скобках будут указываться эквивалентные опции для командной строки, например, SYN (-sS) и Bounce Scan (-n FTP_HOST).
Типы сканирования в Nmap
Nmap поддерживает множество различных видов сканирования. В табл. 4.4 перечислены наиболее употребительные. Указаны также параметры командной строки, если вы захотите использовать этот интерфейс.


Таблица 4.4. Типы сканирования в Nmap и параметры командной строки

Тип сканирования (параметры командной строки)

Описание

SYN (-sS)

Подразумеваемый тип сканирования, пригодный для большинства целей. Он менее заметен, чем TCP Connect, то есть не будет фиксироваться большинством простых средств протоколирования. В этом режиме в каждый возможный порт посылаются одиночные TCP-пакеты с установленным флагом SYN. Если в ответ возвращается пакет SYN ACK, то Nmap делает вывод, что здесь запущен сервис. Если ответа нет, то предполагается, что порт закрыт
SYN-сканирование не завершает трехходовое квитирование установления связи в TCP, так как не возвращает целевой машине пакет с установленным флагом ACK; с точки зрения сканируемой системы действующие соединения не устанавливаются. Однако, удаленная система будет удерживать эту "половинку сокета" открытой, пока не пройдет максимально допустимое время ответа. Некоторые современные серверы и программы выявления вторжений достаточно интеллектуальны, чтобы уловить подобные действия, но для большинства машин SYN-сканирование будет невидимым

TCP-соединение: Connect (-sT)

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

Эхо-тестирование: Ping Sweep (-sP)

Выполняется простое эхо-тестирование всех адресов, чтобы увидеть, какие из них ответят на ICMP-запрос. Если вас на самом деле не интересует, какие сервисы запущены, и вы просто хотите знать, какие IP-адреса активны, то данный тип позволит достичь цели много быстрее, чем полное сканирование портов. Однако некоторые машины могут быть сконфигурированы так, чтобы не отвечать на ping (например, новый межсетевой экран XP), но, тем не менее, выполнять некоторые сервисы, поэтому Ping Sweep - менее надежный метод, чем полное сканирование портов

UDP-сканирование: UDP Scan (-sU)

Этот тип сканирования проверяет наличие слушаемых UDP-портов. Так как UDP, в отличие от TCP, не отвечает положительным подтверждением, а отвечает на входящий пакет, только когда порт закрыт, данный тип сканирования может иногда приводить к ложным срабатываниям, однако он способен выявить троянские программы, использующие UDP-порты с большими номерами и скрытые RPC-сервисы. Он может быть весьма медленным, так как некоторые машины намеренно замедляют ответы на этот тип трафика, чтобы избежать перегрузки. Однако машины, выполняющие ОС Windows, не реализуют замедления, поэтому вы сможете использовать UDP для нормального сканирования хостов Windows.

FIN-сканирование: FIN Stealth (-sF)

Это скрытное сканирование, аналогичное SYN, но использующее пакеты TCP FIN. Большинство компьютеров, но не все, ответят пакетом RST, поэтому сканирование FIN сопряжено с ложными срабатываниями и пропуском положительных результатов, но может осуществляться под наблюдением некоторых программ выявления вторжений и при наличии других контрмер

NULL-сканирование: NULL Scan (-sN)

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

XMAS-сканирование: XMAS Tree (-sX)

Аналогично сканированию NULL, за исключением того, что все флаги в заголовке TCP установлены, а не сброшены (отсюда и название - пакет расцвечен, как рождественская елка). Машины Windows, ввиду особенностей реализации на них стека TCP, не отвечают на подобные пакеты

Сканирование через отражатель: Bounce Scan (-n FTP_HOST)

Этот хитроумный тип сканирования использует лазейку в протоколе TCP для "отражения" сканирующих пакетов от сервера FTP во внутреннюю сеть, которая обычно недоступна. Зная IP-адрес сервера FTP, который подключен к локальной сети, вы можете проникнуть через межсетевой экран и сканировать внутренние машины. Стоит проверить и свою собственную сеть на наличие данной уязвимости. В большинстве современных серверов FTP эта дыра в защите ликвидирована. Примечание: В дополнение к сканируемым IP-адресам вы должны задать действующий сервер FTP, имеющий доступ к сети

RPC-сканирование: RPC Scan (-sR)

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

Window-сканирование: Window Scan (-sW)

Данный тип сканирования полагается на аномалию в ответах на пакеты ACK в некоторых операционных системах, чтобы обнаружить порты, которые предположительно фильтруются. Известно, что к числу операционных систем, уязвимых для подобного сканирования, принадлежат некоторые версии AIX, Amiga, BeOS, BSDI, Cray, DG/UX, Digital UNIX, FreeBSD, HP/UX, IRIX, MacOS, NetBSD, OpenBSD, OpenStep, OpenVMS, OS/2, QNX, Rhapsody, SunOS 4.X, Tru64 UNIX, Ultrix, VAX и VxWorks

Реактивное сканирование: Idle Scan (-sI хост-зомби:используемый_порт)

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

Опции раскрытия для Nmap
Можно настроить способ, которым Nmap выполняет раскрытие сетей и определяет, какие хосты работают. В табл. 4.5 перечислены несколько различных вариантов.
Опции времени для Nmap
Nmap предоставляет средства для повышения или понижения частоты, с которой посылаются пакеты сканирования. Если вас беспокоит слишком большой сетевой трафик (или вы пытаетесь действовать скрытно), то можно понизить частоту. Помните только, что чем реже посылаются пакеты, тем дольше продлится сканирование. Для больших сетей время может вырасти экспоненциально. С другой стороны, если вы торопитесь и не обращаете внимание на некоторый дополнительный сетевой трафик, можно поднять частоту. Различные уровни и частоты пакетов приведены в табл. 4.6. В версии для Windows или с помощью опций командной строки можно устанавливать специальные частоты.


Таблица 4.5. Опции раскрытия для Nmap

Опция

Описание

TCP + ICMP (-PB)

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

Эхо-тестирование TCP (-PT)

Для обнаружения хостов используется только метод TCP. Многие межсетевые экраны и некоторые маршрутизаторы отбрасывают пакеты ICMP, возможно, с протоколированием. Если вы пытаетесь остаться невидимым, то метод TCP - это наилучший вариант. Однако для некоторых экзотических типов сканирования (FIN, XMAS, NULL) какие-то хосты могут остаться незамеченными.

Эхо-тестирование ICMP (-PE)

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

Без эхо-тестирования (-P0)

Если задается эта опция, то Nmap не будет пытаться сначала выяснить, какие хосты активны, а будет вместо этого посылать пакеты по каждому IP-адресу заданного диапазона, даже если по этому адресу машины нет. Это расточительно как с точки зрения полосы пропускания, так и времени, особенно когда сканируются большие диапазоны. Однако это может быть единственным способом просканировать хорошо защищенную сеть, которая не отвечает на ICMP-пакеты.

Таблица 4.6. Параметры Nmap для управления частотой посылки пакетов

Уровень частоты

Параметр командной строки

Частота пакетов

Пояснения

Параноидальный

-F 0

Раз в 5 минут

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

Исподтишка

-F 1

Раз в 15 секунд

Вежливый

-F 2

Раз в 4 секунды

Нормальный

-F 3

Со скоростью работы ОС

Используется по умолчанию

Агрессивный

-F 4

То же, что и Normal, но максимальное время ожидания пакета сокращено до 5 минут на хост и до 1,25 секунды на зондирующий пакет.

Безумный

-F 5

Время ожидания 0,75 секунды на хост и 0,3 секунды на зондирующий пакет.

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

Другие опции Nmap
В табл. 4.7 перечислены некоторые другие опции Nmap, которые управляют, например, разрешением доменных имен, идентификацией ОС и т.д., и не попадают в другие категории

Существуют дополнительные опции тонкой настройки сканирования, доступные из командной строки. Подробности можно найти в оперативной справке Nmap.

Запуск Nmap в качестве службы

По умолчанию в Windows-версии Nmap запускается как служба. Это означает, что он постоянно выполняется в фоновом режиме и может вызываться другими программами, запускаться из командных файлов или заданий cron. В Windows служба Nmap управляется и конфигурируется в меню Services Tool. Для этого в меню Control Panel выберите Administrative Tools, а затем Services. Вы увидите Nmap в списке служб; можно щелкнуть на нем мышью и сконфигурировать его свойства.
Эта возможность полезна, если вы хотите, чтобы Nmap выполнял сканирование на регулярной основе. Можно настроить Nmap для сканирования вашей сети раз в неделю или раз в месяц с представлением отчетов. Можно сканировать только серверы, чтобы не пропустить значительных изменений. Если вы не планируете использовать перечисленные возможности, лучше отключить эту службу в Windows, чтобы сэкономить ресурсы и повысить безопасность. Это можно сделать, щелкнув мышью на службе Nmap в окне просмотра служб и заменив Start-up Type (тип запуска) с Automatic (автоматический) на Manual (вручную). Это изменение вступит в силу после перезагрузки машины. Можно также вручную остановить службу, щелкнув мышью на кнопке Stop.


Таблица 4.7. Прочие опции Nmap

Опция

Описание

Не выполнять разрешение имен (-n)

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

Быстрое сканирование (-F)

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

Диапазон портов (-p диапазон_портов)

По умолчанию Nmap сканирует все 65535 возможных портов TCP. Однако, если вы хотите просканировать только определенный диапазон, можно задать его в качестве аргумента опции -p. Это полезно, если вы хотите просканировать только один тип серверов, например, порт 80 для Web-серверов, или только верхние диапазоны, чтобы найти необычные сервисы и потенциальные троянские программы.

Использование приманок (-D адрес_приманки_1, адрес_приманки_2...)

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

Фрагментация (-f)

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

Запрашивать информацию Identd (-I)

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

Разрешать все адреса (-R)

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

Идентификация ОС (-O)

Подразумеваемая опция. Как упоминалось ранее, каждая реализация стека TCP имеет свои особенности. При сравнении точной идентификационной метки ответов с базой данных известных идентификационных меток TCP, Nmap, как правило, может с высокой достоверностью (иногда - вплоть до диапазона версий) идентифицировать ОС, с которой общается.
Изредка попадается что-то незнакомое, и тогда ответ TCP печатается внизу отчета. Если вы обнаружите неопределенную сигнатуру, вы сможете помочь в построении базы данных идентификационных меток ОС. Если вы точно знаете, чему она соответствует, скопируйте ее и отправьте по электронной почте на адрес группы разработчиков Nmap. Они добавят ее в базу данных, чтобы в будущем при сканировании машины такого типа ее можно было правильно идентифицировать. Все известные Nmap идентификационные метки TCP содержатся в файле nmap-os-fingerprints в каталоге Data установки Nmap.

Отправить через интерфейс (-e имя_интерфейса)

Эта опция заставляет пакеты сканирования отправляться через определенный интерфейс. На практике это необходимо только на машине с несколькими сетевыми платами, или если Nmap не опознает ваш сетевой интерфейс автоматически.

Флэми Тех советует:
Дружественное сканирование Nmap!
Как упоминалось ранее, Nmap может вызывать проблемы в сетях при некорректном или неаккуратном применении. Вот несколько советов, которые помогут сделать сканирование безопасным:

  • Тщательно выбирайте исходную точку сканирования. Сканирование изнутри сети даст значительно больше информации, чем сканирование извне, через межсетевой экран. Поучительно выполнить сканирование обоих видов и сравнить результаты. Не страшно, если открытый серверный порт виден изнутри сети; гораздо опаснее, если он виден извне.
  • Сканирование целесообразно выполнять рано утром или поздно вечером. Таким образом вы минимизируете вероятность замедления работы жизненно важных серверов и пользовательских машин.
  • Если вы беспокоитесь о перегрузке своей сети, установите в сканирующую машину старую сетевую карту на 10 Мбит/с или подключите ее через концентратор на 10 Мбит/с. Таким образом максимальный трафик, который сканирование может создать в сети, не превысит 10 Мбит/с, что вряд ли перегрузит сеть на 100 Мбит/с.

Вывод результатов Nmap

Nmap генерирует отчет, содержащий каждый обнаруженный IP-адрес, выявленные слушающие порты по этим адресам и соответствующие общеизвестные имена сервисов (при наличии таковых). Отчет также показывает, является ли порт открытым, фильтруемым или закрытым. Строго говоря, тот факт, что Nmap получил ответ из порта 80 и напечатал в отчете "http", еще не означает, что на компьютере запущен Web-сервер, хотя, скорее всего, это так. Всегда можно проверить любой подозрительный открытый порт, подключаясь с помощью telnet к нужному IP-адресу с указанием номера порта и анализируя полученный ответ. Если там выполняется web-сервер, то обычно получают ответ, вводя команду GET / HTTP. Должна быть выдана подразумеваемая домашняя страница в необработанном HTML-виде (а не как красивая Web-страница), что послужит подтверждением функционирования сервера. То же самое можно проделать с другими сервисами, такими как FTP и SMTP. Отметим, что в UNIX-версии Nmap кодирует цветом найденные порты в соответствии с их ролью.
Как можно видеть из , формат вывода позволяет просмотреть отчет и быстро определить, есть ли какие-то сервисы или порты, о которых следует побеспокоиться. Это не означает, что нужно игнорировать все необычные номера, которые не выделены цветом или шрифтом (в версиях UNIX). Троянские программы и ПО для общения часто отображаются как неизвестные сервисы, но вы можете поискать таинственный порт в списке общеупотребительных портов в приложении С или проверить его по списку известных плохих портов, чтобы быстро определить, требует ли он особого внимания. Если его нет в списках, то странный сервис, не использующий общеизвестные номера портов, должен вас насторожить.


Таблица 4.8. Цветовое кодирование вывода Nmap

Цвет

Описание

Красный

Данный номер порта присвоен сервису, который предлагает некоторую форму прямого входа в систему (как, например, Telnet или FTP). Зачастую эти сервисы оказываются наиболее притягательными для хакеров

Голубой

Этот номер порта представляет почтовый сервис, такой как SMTP или POP. Подобные сервисы также часто являются объектами хакерских атак

Жирный черный

Эти сервисы могут предоставлять некоторую информацию о машине или операционной системе (как, например, finger, echo и т.д.)

Простой черный

Любые другие идентифицированные сервисы или порты

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

Программа Nlog помогает организовать и проанализировать вывод Nmap. Она представляет его в настраиваемом web-интерфейсе с использованием CGI-процедур. Nlog облегчает сортировку данных Nmap в единой базе данных с возможностью поиска. В больших сетях такая возможность жизненно важна, она делает Nmap действительно полезным. Остин Х.Д. Мур собрал эти программы воедино и сделал их доступными вместе с другими интересными проектами на своем web-сайте http://www.secureaustin.com.
Программа Nlog расширяема: можно добавлять другие процедуры, чтобы предоставлять больше информации и запускать дополнительные тесты на обнаруживаемых открытых портах. Автор предлагает несколько таких дополнений и инструкции по созданию новых. Nlog опирается на Perl и работает с файлами журналов, сгенерированных Nmap версии 2.0 и выше.

Установка Nlog
Для установки и подготовки Nlog следуйте представленным ниже инструкциям.

  1. Возьмите файлы с компакт-диска, прилагаемого к этой книге, или загрузите их с web-сайта Nlog.
  2. Распакуйте файлы Nlog с помощью команды tar -zxvf. Она распакует и аккуратно разложит все файлы для Nlog в каталоге с именем nlog-1.6.0 (цифры могут быть другими, они зависят от версии).
  3. Можно воспользоваться командным файлом, предоставленным для автоматической установки и подготовки программы. Отметим, что перед запуском командный файл необходимо отредактировать. Перейдите в каталог Nlog и с помощью текстового редактора, такого как vi или EMACS, откройте файл installer.sh и, где требуется, задайте значения переменных, подходящие для вашей системы.

Отредактируйте следующие параметры, задав корректные для своей установки значения.
CGIDIR=/var/www/cgi/
HTMLDIR=/var/www/
Задайте маршрут к CGI-каталогу. Выше приведены значения для подразумеваемой установки в Mandrake. Не забудьте ввести значения, корректные для вашей системы. Для других систем Linux выясните маршрут к этому каталогу, воспользовавшись командой locate. Эта полезная команда найдет любые файлы, содержащие введенный после нее текст.

  1. Сохраните файл, а затем выполните его, набрав:

./install.sh
Командный файл установки автоматически скопирует CGI-файлы в CGI-каталог и основной файл HTML в HTML-каталог. Он также изменит права доступа к этим файлам, чтобы они могли исполняться Web-навигатором.

  1. В качестве конечного шага перейдите в HTML-каталог и отредактируйте файл nlog.html. Измените инструкцию POST, указав в ней ссылку на ваши файлы cgi. Ссылка должна совпасть с приведенной выше (/var/www/cgi/). Сохраните файл. Теперь все готово к работе.

Флэми Тех советует:
Рекомендации по использованию текстовых редакторов в UNIX
При изучении этой книги вам понадобится редактировать текстовые файлы для задания программных переменных, конфигураций установок и для других целей. Имеется множество хороших текстовых редакторов для UNIX, включая vi, EMACS и Pico. У каждого из них есть свои достоинства и недостатки, но в этой книге я буду предполагать использование EMACS, так как это самый дружественный для X-Window, простой в использовании и доступный на большинстве систем редактор. В Mandrake Linux EMACS располагается в X-Window в меню Start, подменю Programming. EMACS можно запустить из командной строки, набрав emacs или emacs имя_файла, чтобы отредактировать файл с заданным именем.
Будьте осторожны при использовании текстовых редакторов для исполнимых или бинарных файлов. Любые изменения, сделанные в этих файлах, могут разрушить программу, которую они поддерживают. Бинарный файл можно распознать по нечитаемому содержимому. Обычно текстовые редакторы используют только для модификации текстовых файлов.
EMACS предоставляет вверху привычное меню для выбора операций с файлом, таких как сохранение и закрытие. Для перемещения по экрану и выбора меню или текста можно использовать мышь. Можно применять также ряд клавишных сокращений. Наиболее полезные из них перечислены ниже. Примечание: "Ctrl+" означает нажатие и удержание клавиши Ctrl при нажатии следующей клавиши. Там, где перечислены две клавишные комбинации, набирайте их по очереди.


Клавишные сокращения EMACS

Функции

CTRL+x, CTRL+c

Закрывает EMACS. Предлагает сохранить текущий файл, если это еще не сделано.

CTRL+g

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

CTRL+x, k

Закрывает текущий файл.

CTRL+x, s

Сохраняет текущий файл.

Ctrl+x, d

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

CTRL+a

Перемещает курсор в начало строки.

CTRL+e

Перемещает курсор в конец строки.

CTRL+s

Поиск введенного текста.

Имеется множество других клавишных комбинаций и макросов для продвинутых пользователей. Дополнительную информацию о EMACS можно найти на следующих сайтах:
Домашняя страница EMACS: http://www.gnu.org/software/emacs/
Краткий справочник EMACS: http://seamons.com/emacs/

Использование Nlog

В этом разделе описано использование Nlog.

  1. Прежде всего, необходимо создать для просмотра файл базы данных Nlog. Для этого нужно преобразовать существующий журнал Nmap. Не забудьте предварительно сохранить журналы Nmap в машиночитаемом виде (опция -m в командной строке), чтобы можно было использовать их в Nlog. Затем можно воспользоваться процедурой, поставляемой вместе с Nlog, для преобразования журнала Nmap в формат базы данных Nlog. Чтобы преобразовать машиночитаемый журнал Nmap, выполните процедуру log2db.pl, набрав в командной строке:
log2db.pl журнал_Nmap

Замените журнал_Nmap маршрутным именем файла журнала.

  1. Чтобы объединить несколько журналов в одну базу данных, выполните команду вида
cat каталог_журналов_Nmap/*| sort -u > сводный_журнал_Nmap
  1. Замените каталог_журналов_Nmap на маршрутный префикс журнальных файлов Nmap и final.db на имя файла, в который вы хотите свести имеющиеся журналы. Утилита sort отсортирует данные в алфавитном порядке и исключит повторения.
  2. Запустите web-навигатор и перейдите в HTML-каталог (/var/www/ из предыдущего раздела).
  3. Выберите файл базы данных Nlog, который вы хотите просмотреть, и щелкните мышью на Search.
  4. Теперь можно открыть базу данных Nlog и выполнить поиск по следующим критериям:
    • Хосты по IP-адресу;
    • Порты по номеру;
    • Протоколы по имени;
    • По состоянию порта (открытый, закрытый, фильтруемый);
    • По выявленной ОС.

Можно также использовать любую комбинацию этих критериев. Например, можно искать по любым Web-серверам (протокол http) на системах Windows с состоянием порта "открытый".

Дополнения для Nlog

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


Таблица 4.9. Встроенные расширения Nlog

Расширение

Описание

Nlog-rpc.pl

Это дополнение для каждого найденного сервиса RPC пытается определить, есть ли к нему какие-либо текущие присоединения и экспорты.

Nlog-smb.pl

Для всех узлов, выполняющих NetBIOS (таковыми будут большинство машин Windows), делается попытка выборки общих ресурсов, списков пользователей и любой другой доступной доменной информации. Используются имена пользователей, заданные в файле nlog-config.ph.

Nlog-dns.pl

Для IP-адресов выполняется стандартная команда nslookup. (Подробнее о nslookup

Nlog-finger.pl

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

Создание собственных расширений Nlog

Если вы изучите дополнительные процедуры, то увидите, что это обычные программы на языке Perl. Если у вас есть опыт работы с Perl, вы в состоянии писать собственные расширения, позволяющие выполнять для просканированных хостов практически произвольную функцию. Например, можно извлечь и вывести HTTP-заголовки для всех обнаруженных web-серверов, чтобы было легче их идентифицировать. Не стоит слишком этим увлекаться, поскольку такие программы, как Nessus (рассматривается в, могут производить значительно более обстоятельные проверки, но если вам нужен только заголовок или какой-то небольшой фрагмент информации, то применение Nlog будет хорошим решением.
Nlog поставляется с образцом пользовательского дополнения, названным nlog-bind.pl. Эта процедура предназначена для опроса сервера DNS и выдачи используемой версии BIND (Berkeley Internet Name Domain), однако она не закончена и служит лишь в качестве упражнения для создания собственных дополнений. Образец находится в каталоге /nlog*/extras/bind/. Следующие шаги помогут вам дописать процедуру. Этот подход можно использовать для самостоятельного создания любой пользовательской процедуры.

  1. Перейдите в упомянутый каталог и скомпилируйте процедуру с помощью компилятора Gcc, используя следующую команду:
gcc -o bindinfo binfo-udp.c

В каталоге будет создан бинарный файл bindinfo.

  1. Скопируйте этот файл в каталог, где хранятся ваши Nlog-процедуры.
  2. Измените у него режим доступа, сделав его исполнимым (помните, что для выполнения этой команды вы должны быть суперпользователем):
chmod 700 bindinfo
  1. Откройте файл nlog-config.ph в текстовом редакторе.
  2. Добавьте строку вида
$bindinfo = "маршрут_к_bindinfo";

Замените маршрут_к_bindinfo на маршрутное имя каталога, в который вы поместили бинарный файл.

  1. Сохраните текстовый файл.
  2. Теперь отредактируйте файл nlog-search.pl. Это Perl-процедура, которая создает страницу с результатами поиска.
  3. Найдите раздел, который выглядит следующим образом:
 1: # here we place each cgi-handler into a temp var for readability.
 2:
 3: $cgiSunRPC = "sunrpc+$cgidir/nlog-rpc.pl+SunRPC";
 4: $cgiSMB = "netbios-ssn+$cgidir/nlog=smb.pl+NetBIOS";
 5: $cgiFinder = "finder+$cgidir/nlog-finder.pl+Finder";
 6:
 7: $qcgilinks = "$cgiSunRPC $cgiSMB $cgiFinder";
  1. Между строками 5 и 6 добавьте следующую строку:
$cgiBIND = "domain+$cgidir/nlog-bind.pl+BIND";
  1. Отредактируйте строку 7, чтобы она имела следующий вид:
$qcgilinks = "$cgiSunRPC $cgiSMB $cgiFinder $cgiBIND";

В строке 7 вы можете аналогичным образом добавить ссылки на любые другие созданные вами процедуры.

  1. Скопируйте файл nlog-bind.pl из этого каталога в свой cgi-каталог (var/www/cgi в Mandrake Linux), и измените режим доступа (chmod), чтобы приложение могло его прочитать.

Теперь, когда Nmap найдет открытым порт 53 (обычно это DNS-сервер), вы можете щелкнуть мышью на ссылке, которую создает Nlog, и выяснить, какая версия BIND выполняется. Следуя логике этого примера, можно написать дополнительные процедуры для расширения Nlog.

Интересные применения Nlog и Nmap

Теперь вы умеете сканировать порты с помощью Nmap, а также сортировать и анализировать результаты с помощью Nlog. Что же можно делать с этими новыми игрушками? Существует несколько интересных приложений сканеров портов. Приведем несколько реальных примеров, которые есть смысл попробовать в вашей сети (или в чьей-нибудь еще, с разрешения хозяев, конечно!) Возможно, полученные результаты вас удивят.

Выявление малоупотребительных сервисов

Если имеется сервис или номер порта, который виден только на одной или двух машинах, то, вполне возможно, это нечто чужеродное для вашей сети. Это может быть троянская программа или запрещенный сервис (например, Kazaa, ICQ или MSN) или неверно сконфигурированная машина, выполняющая сервер FTP или иной сервер общего доступа. Можно настроить Nlog, чтобы сгенерировать список интересующих вас сущностей в порядке возрастания числа их вхождений, от самых редких к самым частым. Вероятно, вы не захотите включать в это сканирование серверы своей организации, так как на них будет обнаружено множество сервисов с одиночными вхождениями. Однако не вредно просканировать эти серверы отдельно, либо для тонкой настройки, либо для исключения посторонних сервисов.

Охота на незаконные/неизвестные Web-серверы

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


Таблица 4.10. Употребительные альтернативные порты web-серверов

Употребительный номер порта

Протокол

81

Альтернативный web-сервис

88

web-сервис

443

Https, защищенный web-сервис

8000-8002

web-сервис

8080

Web-сервис

8888

Web-сервис

Сканирование с целью выявления серверов, выполняющихся на настольных системах

Развивая предыдущий пример, ограничим диапазон IP-адресов несерверными машинами и зададим диапазон портов от 1 до 1024. В результате будут выявляться настольные машины с сервисами, которые обычно выполняются на серверах, например, электронная почта, Web и FTP. Если для этого нет уважительной причины (например, PCAnywhere), подобные сервисы на настольных машинах запускаться не должны.

Охота на "троянские" программы

Чтобы устроить в сети охоту на "троянские" программы, выполните сканирование сети и преобразуйте результаты в формат базы данных Nlog. Откройте страницу поиска Nlog, выберите порты и задайте диапазон от 30000 до 65400. Это излюбленный диапазон для троянских программ, так как он находится в стороне от обычных сервисов и поэтому троянцы зачастую остаются незамеченными - если, конечно, вы не прибегаете к сканированию портов сети. Сам по себе факт использования сервисами портов с большими номерами не доказывает, что это троянские программы, но обратить внимание на них, безусловно, стоит. Сужая поиск до машины и номера порта, можно определиться с ними, проверяя сервисы, запущенные на этих машинах, или подключаясь посредством telnet к этим портам и проверяя, выдается ли приветственная информация сервиса.

Проверка внешнего представления сети

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

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

 

 

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