Атака на Internet
Шрифт:
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two
# entries even if the protocol doesn’t support UDP operations.
# Updated from RFC 1340, “Assigned Numbers” (July 1992). Not all ports
# are included, only the more common ones.
#
# from: @(#)services 5.8 (Berkeley) 5/9/91
# $Id: services,v 1.9 1993/11/08 19:49:15 cgd Exp $
#
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp 21/tcp
# 22 – unassigned
telnet 23/tcp
# 24 – private
smtp 25/tcp mail
# 26 – unassigned
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
mtp 57/tcp # deprecated
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp
tftp 69/udp
gopher 70/tcp # Internet Gopher
gopher 70/udp
rje 77/tcp netrjs
finger 79/tcp
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
link 87/tcp ttylink
kerberos 88/tcp krb5 # Kerberos v5
kerberos 88/udp
supdup 95/tcp
# 100 – reserved
hostnames 101/tcp hostname # usually from sri-nic
iso-tsap 102/tcp tsap # part of ISODE.
csnet-ns 105/tcp cso-ns # also used by CSO name server
csnet-ns 105/udp cso-ns
rtelnet 107/tcp # Remote Telnet
rtelnet 107/udp
pop2 109/tcp postoffice # POP version 2
pop2 109/udp
pop3 110/tcp # POP version 3
pop3 110/udp
sunrpc 111/tcp
sunrpc 111/udp
auth 113/tcp tap ident authentication
sftp 115/tcp
uucp-path 117/tcp
nntp 119/tcp readnews untp # USENET News Transfer Protocol
ntp 123/tcp
ntp 123/udp # Network Time Protocol
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
netbios-ssn 139/udp
imap2 143/tcp # Interim Mail Access Proto v2
imap2 143/udp
snmp 161/udp # Simple Net Mgmt Proto
snmp-trap 162/udp snmptrap # Traps for SNMP
cmip-man 163/tcp # ISO mgmt over IP (CMOT)
cmip-man 163/udp
cmip-agent 164/tcp
cmip-agent 164/udp
xdmcp 177/tcp # X Display Mgr. Control Proto
xdmcp 177/udp
nextstep 178/tcp NeXTStep NextStep #NeXTStep window
nextstep 178/udp NeXTStep NextStep # server
bgp 179/tcp # Border Gateway Proto.
bgp 179/udp
prospero 191/tcp # Cliff Neuman’s Prospero
prospero 191/udp
irc 194/tcp # Internet Relay Chat
irc 194/udp
smux 199/tcp # SNMP Unix Multiplexer
smux 199/udp
at-rtmp 201/tcp # AppleTalk routing
at-rtmp 201/udp
at-nbp 202/tcp # AppleTalk name binding
at-nbp 202/udp
at-echo 204/tcp # AppleTalk echo
at-echo 204/udp
at-zis 206/tcp # AppleTalk zone information
at-zis 206/udp
z3950 210/tcp wais # NISO Z39.50 database
z3950 210/udp wais
ipx 213/tcp # IPX
ipx 213/udp
imap3 220/tcp # Interactive Mail Access
imap3 220/udp # Protocol v3
ulistserv 372/tcp # UNIX Listserv
ulistserv 372/udp
#
# UNIX specific services
#
exec 512/tcp
biff 512/udp comsat
login 513/tcp
who 513/udp whod
shell 514/tcp cmd # no passwords used
syslog 514/udp
printer 515/tcp spooler # line printer spooler
talk 517/udp
ntalk 518/udp
route 520/udp router routed # RIP
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp # -for emergency broadcasts
uucp 540/tcp uucpd # uucp daemon
remotefs 556/tcp rfs_server rfs #Brunhoff remote filesystem
klogin 543/tcp # Kerberized “rlogin” (v5)
kshell 544/tcp # Kerberized “rsh” (v5)
kerberos-adm 749/tcp # Kerberos “kadmin” (v5)
#
webster 765/tcp # Network dictionary
webster 765/udpРассмотрим
Сокращение TCP SYN означает TCP-пакет с установленным битом SYN.
Если клиент получает ответ на этот запрос (TCP SYN ACK), то порт открыт и TCP-соединение будет создано. Если же ответ за определенный промежуток времени так и не пришел, то это означает, что либо порт закрыт и соответствующий сервер не запущен, либо имеют место физические проблемы со связью с данным IP-адресом (это достаточно легко проверить, используя утилиты ping или traceroute). На втором этапе, после создания TCP-соединения, клиент и сервер обмениваются специфичными для данных приложений командами, создавая соединение уже на уровне приложения (в терминах модели OSI – на прикладном уровне).
Необходимо обратить внимание на то, что первый этап (создание TCP-соединения с указанным портом) является стандартным и абсолютно инвариантным относительно вида серверного приложения, к которому осуществляется подключение. На этой особенности и основаны все методы сетевого сканирования.
Сканированием портов называется метод удаленного анализа, осуществляемый путем передачи тестовых запросов на создание соединения и позволяющий определить список активных служб предоставления удаленного сервиса на каком-либо хосте. Сканирование портов (или разведка) применяется на подготовительной стадии перед атакой, так как позволяет получить необходимые начальные сведения о потенциальном объекте воздействия: список открытых портов, а следовательно, и перечень потенциально атакуемых серверных приложений, загруженных на компьютере.
Все известные на сегодняшний день основные методы сканирования портов в зависимости от возможности определения объектом непосредственного инициатора сканирования (хоста, откуда осуществлялся удаленный анализ) можно разделить на две группы:
1. Методы открытого сканирования: непосредственный инициатор однозначно определяется объектом сканирования по IP-адресу приходящих запросов.
2. Методы «невидимого» анонимного сканирования. Непосредственный инициатор не определяется объектом сканирования (однозначно определяется только «промежуточный» источник сканирующих запросов), таким образом, гарантируется анонимность инициатора сканирования.
Методы открытого сканирования
Сканирование TCP SYN
Очевидный метод, основанный на принципах создания TCP-соединения и состоящий в последовательной передаче на объект сканирования TCP SYN-запросов на создание соединения на различные порты. Если порт открыт, то на данный сканирующий запрос будет получен ответ TCP SYN ACK; если же порт закрыт – ответом будет TCP RST.
Сканирование TCP FIN
В основу данного метода легли некоторые тонкости
реализации протокола TCP в различных сетевых ОС: на передаваемый TCP FIN-запрос закрытые порты отвечают пакетом с флагом RST, а открытые порты данное сообщение игнорируют. Однако сетевые ОС фирмы Microsoft таким методом просканировать не удастся, так как в их реализации протокола TCP передача пакета TCP RST в ответ на подобный запрос не предусмотрена. Детально данный метод описал Уриэль Маймон (Uriel Maimon) в Phrack 49, article 15.Сканирование с использованием IP-фрагментации
Этот метод служит логическим продолжением предыдущих двух методов, отличаясь от них усложнением задачи обнаружения сканирования. Суть его состоит в разбиении TCP SYN– или TCP FIN-запроса на несколько маленьких IP-фрагментов (минимальный размер поля данных в IP-фрагменте 8 байт, следовательно, TCP SYN-запрос, имеющий минимальный размер 20 байт, можно разбить на три фрагмента). Однако у этого метода сканирования может быть незапланированный побочный эффект: некоторые некорректные реализации TCP/IP, получив подобные маленькие IP-фрагменты, вызывают сбой операционной системы.
Сканирование TAP IDENT
Большинство UNIX-систем по умолчанию используют TAP IDENT сервис на 113-м порту, задача которого заключается в предоставлении удаленным пользователям информации о существующих на сервере в данный момент соединениях. Входными параметрами TAP-сервера являются <localport> (интересующий нас порт сервисной службы на сервере) и <foreignport> (порт клиента, подключившегося к данной службе сервера).
Выходными параметрами TAP-сервера являются сообщения вида <localport>, <foreignport>: USERID: <systemtype>: <conn-info> или <localport>, <foreignport>: ERROR: <errortype>
Пример выходных данных TAP-сервера:
6191 , 23 : USERID : UNIX : joe
6191 , 23 : USERID : MULTICS : StJohns.DODCSC.a
6191 , 23 : USERID : OTHER : StJohns.DODCSC.a
6191 , 23 : USERID : TAC : MCSJ-MITMUL
6191 , 23 : USERID : UNIX : a6X#-Yp,3147,2910
6191 , 23 : USERID : OTHER: wewishyouamerrychristmasand
6191 , 23 : ERROR : NO-USERПодробнее о выходных данных TAP-сервера вы можете узнать в RFC1413, а мы лишь заметим, что для определения активности одного порта на сервере требуется перебор портов клиента <foreignport> от 1 000 до 65 535, что делает данный метод чрезвычайно неэффективным.
Внимательный читатель, наверное, заметил, что все вышеописанные методы открытого сканирования перечислялись «от простого к сложному». К чему все эти сложности? Ответ очевиден: создатели методов имели вполне понятное желание обойти появляющиеся автоматизированные системы обнаружения сканирования. Поэтому до тех пор, пока не были разработаны все эти методы, имела место «гонка» между системами атаки и системами обнаружения и последовательно появлялись новые (на тот момент) методы сканирования.
Методы «невидимого» анонимного сканирования
Скрытая атака по FTP
Первым методом анонимного сканирования является метод, получивший название FTP Bounce Attack (скрытая атака по FTP). Протокол FTP (RFC 959) имеет ряд, как нам кажется, чрезвычайно интересных и недостаточно описанных функций, одна из которых – возможность создания так называемых «proxy» ftp-соединений с FTP-сервера. Если программная реализация FTP-сервера поддерживает режим proxy, то любой пользователь (и анонимный в том числе) может, подключившись к серверу, создать процесс DTP-server (Data Transfer Process – процесс передачи данных) для передачи файла с этого FTP-сервера на любой другой сервер в Internet. Функциональность данной возможности протокола FTP вызывает некоторое сомнение, так как в обычной ситуации ftp-клиент, подключающийся к серверу, передает и получает файлы либо непосредственно от себя, либо для себя. Представить иной вариант действий, на наш взгляд, достаточно сложно, но, видимо, создатели протокола FTP для его «будущего» развития предусмотрели подобную возможность, которая теперь выглядит несколько архаичной и отнюдь не безопасной.
Эта особенность протокола FTP позволяет предложить метод TCP-сканирования с использованием proxy ftp-сервера, состоящий в следующем: ftp-серверу после подключения выдается команда PORT с параметрами IP-адреса и TCP-порта объекта сканирования. Далее следует выполнить команду LIST, по которой FTP-сервер попытается прочитать текущий каталог на объекте, посылая на указанный в команде PORT порт назначения TCP SYN-запрос. Если порт на объекте открыт, то на сервер приходит ответ TCP SYN ACK и FTP-клиент получает ответы «150» и «226», если же порт закрыт, то ответ будет таким:425. Can\'t Build Data Connection: Connection Refused (425. Невозможно установить соединение: в соединении отказано).
Далее в цикле FTP-серверу последовательно выдаются команды PORT и LIST и осуществляется сканирование разных портов.
Данный метод вплоть до конца 1998 года был единственным и поистине уникальным методом «невидимого» анонимного сканирования (уникальным он остается и по сей день). Основная проблема взломщиков всегда состояла в невозможности скрыть источник сканирования, так как требовалось получать ответы на передаваемые запросы. Кроме того, в некоторых случаях межсетевой экран (МЭ) мог фильтровать запросы с неизвестных IP-адресов, поэтому данный метод совершил революцию в сканировании, так как, во-первых, позволял скрыть адрес кракера и, во-вторых, давал возможность сканировать контролируемую МЭ подсеть, используя внутренний расположенный за МЭ ftp-сервер.
Приведем список появляющихся при подключении заставок, генерируемых программами реализации FTP-серверов, которые поддерживают режим proxy и на которых данный метод работает.220 xxxxxxx.com FTP server (Version wu-2.4(3) Wed Dec 14 ...) ready.
220 xxx.xxx.xxx.edu FTP server ready.
220 xx.Telcom.xxxx.EDU FTP server (Version wu-2.4(3) Tue Jun 11 ...) ready.
220 lem FTP server (SunOS 4.1) ready.
220 xxx.xxx.es FTP server (Version wu-2.4(11) Sat Apr 27 ...) ready.
220 elios FTP server (SunOS 4.1) readyСледующие версии реализации FTP не поддерживают proxy, и метод соответственно не работает.
220 wcarchive.cdrom.com FTP server (Version DG-2.0.39 Sun May 4 ...) ready.
220 xxx.xx.xxxxx.EDU Version wu-2.4.2-academ[BETA-12](1) Fri Feb 7
220 ftp Microsoft FTP Service (Version 3.0).
220 xxx FTP server (Version wu-2.4.2-academ[BETA-11](1) Tue Sep 3 ...) ready.
220 xxx.unc.edu FTP server (Version wu-2.4.2-academ[BETA-13](6) ...) ready.
Санирование с использованием «немого» хоста
Сальвадор Санфилиппо (Salvatore Sanfilippo) из Intesis Security Lab впервые заявил об этом методе 18 декабря 1998 года в конференции BUGTRAQ. Оригинальное название метода Dumb host scan переводится как «сканирование с использованием «немого» хоста». Основные положения, лежащие в основе метода (рис. 5.1), состоят в следующем: