BugTraq.Ru
Русский BugTraq
https://bugtraq.ru/library/books/attack/chapter05/

Глава 5. Методы удаленного сканирования портов


Все тайное становится явным

Рассмотрим существующие на сегодняшний день различные методы сетевого сканирования. Для этого необходимо ответить на следующий вопрос: "Что такое сканирование портов, и для чего оно применяется?"

Прежде чем переходить к ответу, вспомним, что представляют собой сетевые службы предоставления удаленного сервиса (серверные приложения), такие как WWW, FTP, TELNET и т.д. Эти программы (в UNIX-средах они обычно запускаются в режиме демона) после загрузки ожидают получения удаленных запросов на подключение от клиентов на определенных, заранее для них зарезервированных TCP- или, значительно реже, UDP-портax.

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

Таким образом, список открытых (активных) портов на сервере означает наличие запущенных на нем серверных приложений, предоставляющих удаленный доступ. Ниже приводится текст файла /etc/services из ОС Linux, где есть список портов, зарезервированных для основных служб.

#
# 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		9/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-порту. Данный процесс состоит из двух этапов. На первом этапе клиенту необходимо создать обычное TCP-соединение с указанным TCP-портом сервера. Для этого по схеме, описанной в разделе "Подмена одного из субъектов TCP-соединения в сети Internet", клиент передает на сервер TCP SYN-запрос на необходимый порт.

Сокращение TCP SYN означает ТСР-пакет с установленным битом SYN.

Если клиент получает ответ на этот запрос (TCP SYN АСК), то порт открыт b TCP-соединение будет создано. Если же ответ за определенный промежуток времени так и не пришел, то это означает, что либо порт закрыт и соответствующий сервер не запущен, либо имеют место физические проблемы со связью с данным IP-адресом (это достаточно легко проверить, используя утилиты ping или traceroute). На втором этапе, после создания TCP-соединения, клиент b сервер обмениваются специфичными для данных приложений командами, создавая соединение уже на уровне приложения (в терминах модели OSI - на прикладном уровне).

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

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

Все известные на сегодняшний день основные методы сканирования портов в зависимости от возможности определения объектом непосредственного инициатора сканирования (хоста, откуда осуществлялся удаленный анализ) можно разделить на две группы:

  1. Методы открытого сканирования: непосредственный инициатор однозначно определяется объектом сканирования по IP-адресу приходящих запросов.
  2. Методы "невидимого" анонимного сканирования. Непосредственный инициатор не определяется объектом сканирования (однозначно определяется только "промежуточный" источник сканирующих запросов), таким образом, гарантируется анонимность инициатора сканирования.


Методы открытого сканирования
Методы "невидимого" удаленного сканирования



  Copyright © 2001-2024 Dmitry Leonov Design: Vadim Derkach