Инструменты безопасности с открытым исходным кодом

Обзор сканеров портов


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

Сканеры портов предстают во множестве видов от очень сложных с множеством различных возможностей до имеющих минимальную функциональность. На самом деле, вы сами можете вручную выполнить функции сканера портов, применяя Telnet и проверяя порты по очереди. Просто подключайтесь к IP-адресу, добавляя номер порта, например:

telnet 192.168.0.1:80

Данная команда использует Telnet для соединения с машиной. Номер после двоеточия (для некоторых реализаций Telnet необходимо просто оставить пробел между IP-адресом и номером порта) говорит Telnet, что для соединения надо использовать порт 80 вместо стандартного для Telnet порта 23. Вместо того чтобы получить от Telnet обычное приглашение, которое выдается при подключении к его подразумеваемому порту, вы соединитесь с web-сервером, если таковой запущен на машине. После нажатия клавиши ввода вы получите первый ответ web-сервера навигатору. Вы увидите информацию из заголовка HTTP, которая обычно обрабатывается навигатором и скрыта от пользователя. Она выглядит примерно так, как показано на листинге 4.1.

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>

Листинг 4.1. Ответ HTTP на соединение TCP

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

Некоторые сканеры портов пытаются также идентифицировать операционную систему на другом конце, выявляя так называемые идентификационные метки TCP. Хотя TCP/IP является стандартом сетевых коммуникаций, каждый производитель реализует его немного иначе, чем другие. Эти различия, обычно не мешающие взаимодействию, проявляются в ответах на любое воздействие, такое как эхо-тест или попытка установления TCP-соединения. Например, цифровая подпись ответа на эхо-тест от системы Windows выглядит иначе, чем в ответе системы Linux. Имеются даже различия между версиями операционной системы. На листинге 4.2 приведен пример идентификационных меток 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)



Листинг 4.2. Идентификационные метки TCP для Windows

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

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

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


Содержание раздела