Есть большая вероятность, что вы наткнулись на эту статью, потому что приложение, которое вы пытаетесь запустить, жалуется на блокировку «порта», или вы читали о том, что оставление определенных «портов» открытыми в вашей сети может быть проблемой безопасности. .
В любом случае, к концу этой статьи вы не только узнаете, что это за порты, о которых все говорят, но и как проверить свой компьютер, чтобы найти открытые или закрытые порты.
Что такое сетевой порт?
Первое, что вам следует знать, это то, что порты, о которых мы говорим, являются виртуальными . Это не имеет ничего общего с физическими портами сетевого оборудования на вашем маршрутизаторе, телевизоре, консолях или компьютерах. Порты — это просто способ для вашего сетевого оборудования и программного обеспечения организовать информационный трафик.
Представьте себе зарезервированные полосы на дороге. Тротуар для пешеходов. Там может быть выделенная велосипедная полоса. Автопоезда и автобусы тоже имеют свои полосы движения. Порты выполняют ту же функцию. Один порт может использоваться для приема электронных писем, а другой — для передачи запросов на передачу файлов или трафика сайта.
Существует два распространенных типа портов, которые требуют краткого объяснения, прежде чем мы перейдем к проверке, какие порты в вашей системе открыты, а какие нет.
Два общих типа портов в современных сетях известны как порты TCP и UDP. Это протокол управления передачей и протокол дейтаграмм пользователя соответственно. Таким образом, эти два типа портов используют разные сетевые протоколы.
Которые вы можете рассматривать как отличительные наборы правил того, как следует отправлять и получать биты информации. Оба типа порта построен на фундаментальном Internet Protocol (IP), что делает Интернет и домашние сети, хорошо, работу. Однако они подходят для разных приложений.
Большая разница в том, что когда вы отправляете информацию через UDP, отправителю не нужно сначала устанавливать соединение с получателем перед началом разговора. Это немного похоже на отправку письма. Вы не знаете, получил ли другой человек ваше сообщение, и у вас нет гарантии, что вы получите какой-либо ответ.
TCP, с другой стороны, больше похож на телефонный звонок. Получатель должен «перехватить» соединение, и информация будет передаваться туда-сюда, пока кто-то намеренно не повесит трубку.
Сообщения UDP обычно транслируются по сети всем, кто прослушивает указанный порт UDP. Это делает его идеальным для служебных сообщений, связанных с работой самой сети. Он также идеально подходит для потоковой передачи голоса по IP, онлайн-видеоигр и потокового вещания.
Почему? Эти приложения извлекают выгоду из низкой задержки UDP и постоянного потока информации, которая не обязательно должна быть идеальной, чтобы быть полезной. В конце концов, небольшое повреждение вашего чата Skype гораздо менее важно, чем небольшое отставание.
TCP гораздо более распространен, чем UDP, и абсолютно гарантирует, что все данные получены без ошибок. Практически все, что не требует особых преимуществ UDP, вместо этого использует TCP.
Какие порты обычно открыты по умолчанию?
Есть МНОГО портов. Номер порта может быть любым от 0 до 65535! Это не означает, что любое приложение может просто выбрать любой порт. Существуют установленные стандарты и диапазоны, которые помогают нам разобраться в шуме.
Порты 0-1023 связаны с некоторыми из наиболее важных и фундаментальных сетевых служб. Это имеет смысл, поскольку порты с меньшими номерами были назначены первыми. Например, протокол SMTP для электронной почты используется исключительно портом 25.
Порты 1024-49151 известны как «зарегистрированные порты» и назначаются важным общим службам, таким как OpenVPN на порте 1194 или Microsoft SQL на портах 1433 и 1434.
Остальные номера портов известны как «динамические» или «частные» порты. Эти порты не зарезервированы, и любой может использовать их в сети для поддержки определенной службы. Единственная проблема возникает, когда две или более служб в одной сети используют один и тот же порт.
Хотя невозможно перечислить каждый важный порт, эти общие порты полезно знать наизусть:
- 20 — FTP (протокол передачи файлов)
- 22 — Безопасная оболочка (SSH)
- 25 — Простой протокол передачи почты (SMTP)
- 53 — Система доменных имен (DNS)
- 80 — Протокол передачи гипертекста (HTTP)
- 110 — протокол почтового отделения (POP3)
- 143 — Протокол доступа к сообщениям в Интернете (IMAP)
- 443 — Безопасность HTTP (HTTPS)
Поскольку существует очень много тысяч общих номеров портов, самый простой способ — запомнить диапазоны. Что скажет вам, зарезервирован данный порт или нет. Благодаря Google вы также можете мгновенно узнать, какие службы используют определенный порт.
Найдите открытые порты в Windows
Теперь, когда у нас есть все базовые знания о портах TCP и UDP, пора перейти к процессу поиска открытых и используемых портов на вашем компьютере.
Хорошая новость заключается в том, что в Windows встроена довольно полезная команда, которая покажет вам, какие порты в настоящее время используются на вашем компьютере различными приложениями и службами.
- Первое, что вам нужно сделать, это открыть меню «Пуск» и найти CMD.
- Теперь кликните правой кнопкой мыши CMD и запустите от имени администратора.
- В открытой командной строке введите:
Netstat -ab
- Не беспокойтесь о том, что длинный список информации будет прокручиваться быстрее, чем вы сможете его прочитать. Вы можете просто использовать CTRL + C и CTRL + V, чтобы скопировать и вставить информацию в Блокнот или любой другой текстовый редактор.
- Информация в скобках — это название программы, использующей порт. TCP или UDP относится к протоколу, используемому на этом порту. Номер состоит из IP-адреса и номера порта после двоеточия.
Сканирование заблокированных портов
Это позволяет определить, какие порты используются и каким приложением, но не сообщает нам, какие порты активно блокируются брандмауэром Windows.
- Еще раз откройте меню «Пуск» и найдите CMD.
- Кликните правой кнопкой мыши CMD и запустите от имени администратора.
- В открытой командной строке введите:
netsh firewall show state
Это отображение заблокированных и открытых портов в соответствии с конфигурацией вашего брандмауэра Windows.
Вы увидите примечание о том, что эта команда устарела, но новая команда не показывает нам нужную информацию. Так что на данный момент использование команды «show state» по-прежнему является самым быстрым и простым способом получить информацию о порте.
То, что брандмауэр Windows не блокирует порт, не означает, что ваш маршрутизатор или интернет-провайдер не блокируют его. Итак, последнее, что мы хотим сделать, это проверить, не происходит ли какая-либо внешняя блокировка.
- Откройте меню «Пуск» и найдите CMD.
- Теперь кликните правой кнопкой мыши CMD и запустите от имени администратора.
- В открытой командной строке введите:
netstat -ano | findstr -i SYN_SENT
Если в списке нет ни одного совпадения, значит, ничего не блокируется. Если в списке указаны некоторые порты, это означает, что они заблокированы. Если здесь отображается порт, не заблокированный Windows, вы можете проверить свой маршрутизатор или отправить электронное письмо своему интернет-провайдеру, если переключение на другой порт не является вариантом.
Полезные приложения для определения статуса вашего порта
Хотя командная строка — хороший быстрый и грязный инструмент, существуют более усовершенствованные сторонние приложения, которые могут помочь вам получить представление о конфигурации вашего порта. Два выделенных здесь — это всего лишь популярные примеры.
SolarWinds Free Port Scanner
SolarWinds требует, чтобы вы отправили свое имя и данные, чтобы загрузить его, но вам решать, вводите ли вы свою настоящую информацию в форму или нет. Мы попробовали несколько бесплатных инструментов, прежде чем остановились на SolarWinds, но это был единственный инструмент, который правильно работал в Windows 10 и имел простой интерфейс.
Кроме того, он был единственным, кто не запускал ложноположительный вирусный флаг. Одна из больших проблем, связанных с ПО для сканирования портов, заключается в том, что охранные компании склонны рассматривать их как вредоносное ПО.
Поэтому большинство пользователей игнорируют любые предупреждения о вирусах, которые поставляются с такими инструментами. Это проблема, потому что вы не можете отличить ложное срабатывание от реального вируса в этих приложениях.
SolarWinds может поставляться с некоторыми прикрепленными строками, но на самом деле он работает так, как рекламируется, и прост в использовании.
CanYouSeeMe
Как вы, наверное, догадались, это служба сайта, а не приложение. Это хороший первый порт захода, чтобы узнать, могут ли внешние данные проходить через ваш локальный порт или нет. Он автоматически определяет ваш IP-адрес, и все, что вам нужно сделать, это указать порт для тестирования.
Затем он сообщит вам, заблокирован порт или нет, и затем вам нужно будет выяснить, на уровне ли блокировка компьютера, маршрутизатора или на уровне поставщика услуг.
Вывод
Большинству пользователей не стоит беспокоиться о портах. Они управляются вашей операционной системой, приложениями и сетевым оборудованием.
Однако, когда что-то идет не так, хорошо иметь под рукой инструмент, который позволит вам найти открытые порты, чтобы отследить подозрительную активность или выяснить, где именно ваша драгоценная информация попадает в кирпичную стену.
This check udp port article will talk about the User Datagram Protocol, what is used for and the tool to use it.
User Datagram Protocol (UDP) is like a send and forget protocol. To check if the UDP port is open or not, you should receive a response from the port.
The UDP Socket:
With User Datagram protocol (UDP), the computer can send messages in the form of datagrams to other hosts on an Internet Protocol (IP) network. UDP uses connectionless communication which has checksums and port numbers. Checksums are for data integrity while port-numbers are used to address different functions at the source and destination of the datagram. It uses Time-sensitive applications make use of UDP. A port acts like a channel where an application on a client’s computer reaches the server. A port scan sends the client requests to server port addresses to find the active port.
Super PC Care is a popular optimization tool with over Ten Million users worldwide.
Follow below steps to check if UDP port is open or closed:
- Open a packet sniffer.
- Send a User Datagram Protocol (UDP) packet.
- After sending the UDP packet, if you receive ‘ICMP port unreachable’ message, then the UDP port is closed.
- If not, then the UDP port is open or something is blocking the ICMP.
Listening UDP ports on Windows
To listen to a specific port, follow the below steps:
- Open the command prompt on your windows.
- Type below command
Netstat –an | find “UDP” | more
This will display all the listening UDP ports on your windows machine. This is useful to check if the service is listening on the server specified.
Tools to check if the UDP port is open or closed:
There are various tools in the market to check if UDP port is open/available or not. These tools determine the external IP address. It also detects the open ports on the connection. These tools determine the port forwarding setup and also checks if any firewall is blocking the server application. It scans the port and network.
UDP Testing:
To check UDP port status – open or close, we can use below two steps:
- Iperf: It is a free client-server utility tool. iperf validates udp connectivity and throughput.Iperf –s –p 33001 –u is used to listen UDP traffic on port 33001. Run this to check UPD port open at the client side.
- netcat: Netcat is a utility for testing networks.nc -l –u 33001 is used to check UDP port open at the server side. Specify UDP (-u) and (-l) means listen modenc –u ip_address 33001 is used to check UDP port open at the client side. Provide the IP address and port.
To check UDP port connection between two systems, below utilities are used as follows:
Connect to the server and once the connection is established type in the window and press ENTER. The server window will display text if the connection is working. These utilities can be used for Windows, Linux, and Mac OS X environment.
UDP Port Scanner and Checker:
This tool identifies the available services running on the server. It used raw IP packets to check which ports and operating system are available and running. It also checks for the firewall in case if it blocks the port. Various tools are available in the market to scan the port and check which port is open and close. These tools run on the client and server machine simultaneously. They are available for cross platforms, including Windows, Mac, and Linux.
Check UDP port open in nmap
One of the most popular ways to check UDP port open or not is nmap.
#nmap -sU -p port target
This command is used to scan the UDP port. Ports to be scanned need to be specified where –sU activates UDP port scan.
For e.g. #nmap –sU –p 1-1023 192.168.1.1
In this example, the port range is from 1 to 1023 at the node 192.168.1.1. Also, instead of scanning the range of port, we can specify a specific port number. This will scan the port and check if the port is open or closed.
UDP port scan attack:
UDP port scan attack can occur when some attacker sends packets on your machine. This varies on the destination port. This can let attacker determine which server application service you are running and which operating system you have. You need not worry about this attack unless you have a firewall on your system to protect from the attackers.
Another method to check UDP Open Port
Follow below alternate method to test your udp port is open or closed:
- Download utilities available on Web. For e.g. Network Utilities Bundles.
- Install and launch the tool on your system.
- Click on the port check button and select the type of port.
- Click on Check Me.
These tools use local application. When the port is not reachable or giving a message displaying “Your port is not open or not reachable”, this means that the port is closed or some firewall is blocking the port.
How does UDP port scanning detection works?
After sending a UDP packet to the remote host, the following occurs:
- When UDP port is available (open). Packets are accepted but the response is not sent.
- When UDP port is closed, ICMP packet is sent in response with an error code like Destination Unreachable.
Limitations in UDP Port Scanning:
Following are some of the limitations for UDP Port scanning:
- Internal packets are used for queuing incoming packets by the TCP/IP stacks of many operating systems. UDP packets that sent are not process due to limited buffer space. This can cause the slow process of port scanning. UDP port scanning is reluctant than TCP port scanning.
- The Firewall can affect the result of scanning. It can prevent the ICMP packet from reaching the scanner.
Scanning and to check UDP port can be achieved through various methods. The scanner contains a list of open UDP ports as well as the running UDP services. No response from the port anticipates that the port is open. Where an error message or an ICMP packet in the response indicates the port is closed.
Иногда сталкиваюсь с такой проблемой «Как проверить UDP порт извне». Бороздя просторы интернета, нашел кое-какой материал.
1. Как проверить TCP порт
Существует я думаю много всяких способов. но вот самые эффективные:
- с помощью telnet
- с помощью nc (netcat)
- с помощью nmap
Ну а теперь разберем по конкретней
С помощью telnet
Если соединение удачно, то увидим такой ответ:
$telnet 11.1.1.11 25
Trying 11.11.11.11...
Connected to mail.domain.com.ua.
Escape character is '^]'.
220 mail.domain.com.ua ESMTP Postfix
Если же неудачное, то такое:
$telnet 11.11.11.11 23
Trying 11.11.11.11...
telnet: connect to address 11.11.11.11: Operation timed out
telnet: Unable to connect to remote host
Иногда в дополнении появляется такое:
telnet: connect to address 11.11.11.11: Operation not permitted
С помощью nc (netcat)
Если соединение удачно, то увидим такой ответ:
$nc -v 11.11.11.11 25
Connection to 11.11.11.11 25 port [tcp/smtp] succeeded!
220 mail.domain.com.ua ESMTP Postfix
Если же неудачное, то такое:
$nc -v 11.11.11.11 23
nc: connect to 11.11.11.11 port 23 (tcp) failed: Operation timed out
С помощью nmap
Если соединение удачно, то увидим такой ответ:
#nmap -p25 11.11.11.11
PORT STATE SERVICE
25/tcp open smtp
Если же неудачное, то такое:
#nmap -p23 11.11.11.11
PORT STATE SERVICE
23/tcp closed telnet
Иногда при сканнировании выводится такое сообщение:
PORT STATE SERVICE
23/tcp filtered telnet
тогда сказать однозначно открыт или закрыт – нельзя.
2. Как проверить UDP порт
Тут есть два способа, с помощью nc (netcat) и с помощью nmap
С помощью nc (netcat)
Если соединение удачно, то увидим такой ответ:
$nc -uv 11.11.11.12 53
Connection to 11.11.11.12 53 port [udp/domain] succeeded!
Если же неудачное, то ничего не выводиться:
$nc -uv 11.1.1.12 50
$
С помощью nmap
Если соединение удачно, то увидим такой ответ:
#nmap -sU -p U:53 11.1.11.12
PORT STATE SERVICE
53/udp open|filtered domain
Если же неудачное, то такое:
#nmap -sU -p U:53 11.1.11.13
PORT STATE SERVICE
53/udp closed domain
Итог
telnet
Преимущества: лёгко и удобно пользоваться, установлена практически на любой ОС, для запуска не требуются права root’a.
Недостатки: нельзя проверять UDP порты
nc (netcat)
Преимущества: лёгко и удобно пользоваться, установлена практически на любой ОС, для запуска не требуются права root’a, есть возможность сканирования UDP-портов
Недостатки: не обнаружено.
nmap
Преимущества: удобно пользоваться, функционал просто радует, есть возможность сканированияUDP-портов
Недостатки: для запуска требуются права root’a, устанавливать приходиться отдельно.
- Nmap Network Scanning
- Chapter 5. Port Scanning Techniques and Algorithms
- UDP Scan (-sU)
While most popular services on the Internet run over the TCP
protocol, UDP services
are widely deployed. DNS, SNMP, and DHCP
(registered ports 53, 161/162, and 67/68) are three of the most
common.
Because UDP scanning is generally slower and more difficult
than TCP, some security auditors ignore these ports. This is a mistake, as
exploitable UDP services are quite common and attackers certainly
don’t ignore the whole protocol. Fortunately, Nmap can help inventory
UDP ports.
UDP scan is activated with the -sU
option. It
can be combined with a TCP scan type such as SYN scan
(-sS
) to check both protocols during the same
run.
UDP scan works by sending a UDP packet to every
targeted port. For most ports, this packet will be empty (no payload),
but for a few of the more common ports a protocol-specific payload will
be sent.
Based on the response, or lack thereof, the port is
assigned to one of four states, as shown in
Table 5.3.
Table 5.3. How Nmap interprets responses to a UDP probe
Probe Response | Assigned State |
---|---|
Any UDP response from target port (unusual) | open |
No response received (even after retransmissions) | open|filtered |
ICMP port unreachable error (type 3, code 3) | closed |
Other ICMP unreachable errors (type 3, code 1, 2, 9, 10, or 13) | filtered |
The most curious element of this table may be the
open|filtered
state.
It is a symptom of the
biggest challenges with UDP scanning: open ports rarely respond to empty
probes. Those ports for which Nmap has a protocol-specific payload are
more likely to get a response and be marked open
, but
for the rest, the target TCP/IP stack simply passes the empty packet up
to a listening application, which usually discards it
immediately as invalid. If ports in all other states would respond,
then open ports could all be deduced by elimination. Unfortunately,
firewalls and filtering devices are also known to
drop packets without responding. So when Nmap receives no response after
several attempts, it cannot determine whether the port is
open
or filtered
. When Nmap was
released, filtering devices were rare enough that Nmap could (and did)
simply assume that the port was open
. The Internet
is better guarded now, so Nmap changed in 2004 (version
3.70) to report non-responsive UDP ports as
open|filtered
instead. We can see that in Example 5.4, which shows Ereet scanning
a Linux box named Felix.
Example 5.4. UDP scan example
krad# nmap -sU -v felix
Starting Nmap ( https://nmap.org )
Nmap scan report for felix.nmap.org (192.168.0.42)
(The 997 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
53/udp open|filtered domain
67/udp open|filtered dhcpserver
111/udp open|filtered rpcbind
MAC Address: 00:02:E3:14:11:02 (Lite-on Communications)
Nmap done: 1 IP address (1 host up) scanned in 999.25 seconds
This scan of Felix demonstrates the
open|filtered
ambiguity issue as well as another
problem: UDP scanning can be slow. Scanning a
thousand ports took almost 17 minutes in this case due to ICMP response rate limiting performed by Felix and most other Linux systems. Nmap provides
ways to work around both problems, as described by the following two sections.
Distinguishing Open from Filtered UDP Ports
In the case of the Felix scan, all but the three
open|filtered
ports were closed
.
So the scan was still successful in narrowing down potentially open
ports to a handful. That is not always the case. Example 5.5 shows a UDP scan against
the heavily filtered site Scanme.
Example 5.5. UDP scan example
krad# nmap -sU -T4 scanme.nmap.org
Starting Nmap ( https://nmap.org )
All 1000 scanned ports on scanme.nmap.org (64.13.134.52) are open|filtered
Nmap done: 1 IP address (1 host up) scanned in 5.50 seconds
In this case, the scan didn’t narrow down the open ports at all.
All 1000 are open|filtered
. A new strategy is
called for.
Table 5.3, “How Nmap interprets responses to a UDP probe” shows
that the open|filtered
state occurs when Nmap fails
to receive any responses from its UDP probes to a particular port.
Yet it also shows that, on rare occasions, the UDP service
listening on a port will respond in kind, proving that the port is
open. The reason these services don’t respond often is that the empty
packets Nmap sends are considered invalid. Unfortunately, UDP services
generally define their own packet structure rather than adhering to
some common general format that Nmap could always send. An SNMP
packet looks completely different than a SunRPC, DHCP, or DNS request
packet.
To send the proper packet for every popular UDP service, Nmap
would need a large database defining their probe formats.
Fortunately, Nmap has that in the form of
nmap-service-probes
,
which is part of the service and
version detection subsystem described in Chapter 7, Service and Application Version Detection.
When version scanning is enabled with -sV
(or
-A
), it will send UDP probes to every
open|filtered
port (as well as known
open
ones). If any of the probes elicit a response from an open|filtered
port, the state is
changed to open
. The results of adding
-sV
to the Felix scan are shown in Example 5.6.
Example 5.6. Improving Felix’s UDP scan results with version detection
krad# nmap -sUV -F felix.nmap.org
Starting Nmap ( https://nmap.org )
Nmap scan report for felix.nmap.org (192.168.0.42)
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
53/udp open domain ISC BIND 9.2.1
67/udp open|filtered dhcpserver
111/udp open rpcbind 2 (rpc #100000)
MAC Address: 00:02:E3:14:11:02 (Lite-on Communications)
Nmap done: 1 IP address (1 host up) scanned in 1037.57 seconds
This new scan shows that port 111 and 53 are definitely open.
The system isn’t perfect though—port 67 is still
open|filtered
. In this particular case, the port
is open but Nmap does not have a working version probe for DHCP.
Another tough service is SNMP, which usually only responds when the
correct community string is given. Many devices are configured with
the community string public
, but not all are.
While these results aren’t perfect, learning the true state of two out
of three tested ports is still helpful.
After the success in disambiguating Felix results,
Ereet
turns his attention back to Scanme, which listed all ports as open|filtered
last time. He tries again with version detection, as shown in Example 5.7.
Example 5.7. Improving Scanme’s UDP scan results with version detection
krad# nmap -sUV -T4 scanme.nmap.org
Starting Nmap ( https://nmap.org )
Nmap scan report for scanme.nmap.org (64.13.134.52)
Not shown: 999 open|filtered ports
PORT STATE SERVICE VERSION
53/udp open domain ISC BIND 9.3.4
Nmap done: 1 IP address (1 host up) scanned in 3691.89 seconds
Tip | |
---|---|
While Ereet eventually found the open port, he made a mistake in not updating his Nmap version first. Nmap version 5.10BETA1 and newer have a payload system which sends proper service protocol requests to more than three dozen well known UDP ports if they are selected for port scanning or host discovery. While it isn’t as comprehensive as version detection, it would have quickly identified the open port 53 in Example 5.5. |
This result took an hour, versus five seconds for the previous
Scanme scan, but these results are actually useful. Ereet’s smile
widens and eyes sparkle at this evidence of an open ISC BIND
nameserver on a machine he wants to compromise. That software has a long
history of security holes, so perhaps he can find a flaw in this
recent version.
Ereet will focus his UDP attacks on port 53 since it is
confirmed open, but he does not forget about the other 999 ports listed as
open|filtered
. As we witnessed with
the dhcpserver port on Felix, certain open UDP services can hide even
from Nmap version detection. He has also only scanned the default ports so
far, there are 64529 others that could possibly be open. For the
record, 53 is the only open UDP port on Scanme.
While this version detection technique is the only way for Nmap
to automatically disambiguate open|filtered
ports,
there are a couple tricks that can be tried manually. Sometimes a
specialized traceroute can help. You could do a traceroute against a
known-open TCP or UDP port with Nmap or a tool such as
Nping.
Then try the same against
the questionable UDP port. Differences in hop counts can
differentiate open from filtered ports. Ereet attempts this against
Scanme in Example 5.8. The first command does a UDP traceroute against
known-open port 53. The second command does the same thing against
presumed-closed port 54. The first few hops have been omitted to save space.
Example 5.8. Attempting to disambiguate UDP ports with TTL discrepancies
krad#nping --udp --traceroute -c 13 -p 53 scanme.nmap.org
Starting Nping ( https://nmap.org/nping ) SENT (7.0370s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=8 id=4826 iplen=28 RCVD (7.1010s) ICMP 4.69.134.222 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=248 id=38454 iplen=56 SENT (8.0400s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=9 id=38166 iplen=28 RCVD (8.1050s) ICMP 4.68.18.204 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=247 id=39583 iplen=56 SENT (9.0420s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=10 id=6788 iplen=28 RCVD (9.1080s) ICMP 4.59.4.78 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=246 id=59897 iplen=56 SENT (10.0440s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=11 id=366 iplen=28 RCVD (10.1100s) ICMP 69.36.239.221 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=243 id=42710 iplen=56 SENT (11.0470s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=12 id=63478 iplen=28 SENT (12.0490s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=13 id=56653 iplen=28 Max rtt: 73.003ms | Min rtt: 0.540ms | Avg rtt: 48.731ms Raw packets sent: 13 (364B) | Rcvd: 10 (560B) | Lost: 3 (23.08%) Tx time: 12.02836s | Tx bytes/s: 30.26 | Tx pkts/s: 1.08 Rx time: 13.02994s | Rx bytes/s: 42.98 | Rx pkts/s: 0.77 Nping done: 1 IP address pinged in 13.05 seconds krad#nping --udp --traceroute -c 13 -p 54 scanme.nmap.org
Starting Nping ( https://nmap.org/nping ) SENT (7.0370s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=8 id=56481 iplen=28 RCVD (7.1130s) ICMP 4.69.134.214 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=248 id=22437 iplen=56 SENT (8.0400s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=9 id=23264 iplen=28 RCVD (8.1060s) ICMP 4.68.18.76 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=247 id=50214 iplen=56 SENT (9.0430s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=10 id=9101 iplen=28 RCVD (9.1070s) ICMP 4.59.4.78 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=246 id=880 iplen=56 SENT (10.0450s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=11 id=35344 iplen=28 RCVD (10.1110s) ICMP 69.36.239.221 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=243 id=44617 iplen=56 SENT (11.0470s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=12 id=53857 iplen=28 SENT (12.0490s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=13 id=986 iplen=28 Max rtt: 76.488ms | Min rtt: 0.546ms | Avg rtt: 48.480ms Raw packets sent: 13 (364B) | Rcvd: 11 (616B) | Lost: 2 (15.38%) Tx time: 12.02908s | Tx bytes/s: 30.26 | Tx pkts/s: 1.08 Rx time: 13.03165s | Rx bytes/s: 47.27 | Rx pkts/s: 0.84 Nping done: 1 IP address pinged in 13.05 seconds
In this example,
Ereet
was only able to reach hop eleven of both
the open and closed ports. So these results can’t be used to
distinguish port states against this host. It was worth a try, and
does work in a significant number of cases. It is more likely to work
in situations where the screening
firewall
is at least a hop or two before the target host. Scanme, on the other
hand, is running its own Linux
iptables
host-based firewall. So there is no difference in hop count
between filtered and open ports.
Another technique is to try application-specific tools against
common ports. For example, a brute force SNMP community string
cracker could be tried against port 161. As Nmap’s version detection
probe database grows, the need to augment its results with external
specialized tools is reduced. They will still be useful for special
cases, such as SNMP devices with a custom community string.
Speeding Up UDP Scans
The other big challenge with UDP scanning is doing it quickly.
Open and filtered ports rarely send any response, leaving Nmap to time
out and then conduct retransmissions just in case the probe or
response were lost. Closed ports are often an even bigger problem.
They usually send back an ICMP port unreachable error. But unlike the
RST packets sent by closed TCP ports in response to a SYN or connect
scan, many hosts rate limit ICMP port unreachable messages by default.
Linux and Solaris are particularly strict about
this.
For example, the
Linux 2.4.20 kernel on Felix limits destination unreachable messages to one per
second (in net/ipv4/icmp.c
). This explains why
the scan in Example 5.4, “UDP scan example” is so slow.
Nmap detects rate limiting and slows down accordingly to avoid
flooding the network with useless packets that the target machine will
drop. Unfortunately, a Linux-style limit of one packet per second
makes a 65,536-port scan take more than 18 hours. Here are some
suggestions for improving UDP scan performance. Also read Chapter 6, Optimizing Nmap Performance for more detailed discussion and general advice.
- Increase host parallelism
-
If Nmap receives just one port unreachable error
from a single target host per second, it could receive 100/second
just by scanning 100 such hosts at once. Implement this by passing a
large value (such as 100) to--min-hostgroup
. - Scan popular ports first
-
Very few UDP port numbers are commonly used. A scan
of the most common 100 UDP ports (using the-F
option) will finish quickly. You can then investigate those
results while you launch a multi-day 65K-port sweep of the network
in the background.
Add--version-intensity 0
to version detection scans-
As mentioned in the previous section, version
detection (-sV
) is often needed to differentiate
open from filtered UDP ports. Version detection is relatively slow
since it involves sending a large number of application
protocol-specific probes to everyopen
oropen|filtered
port found on the target
machines. Specifying--version-intensity 0
directs Nmap to try only the probes most likely to be effective
against a given port number. It does this by using data from
thenmap-service-probes
file. The performance
impact of this option is substantial, as will be demonstrated later
in this section. - Scan from behind the firewall
-
As with TCP, packet filters can slow down scans
dramatically. Many modern firewalls make setting packet rate limits
easy. If you can bypass that problem by launching the scan from
behind the firewall rather than across it, do
so.
Use--host-timeout
to skip slow hosts-
ICMP-rate-limited hosts can take orders of magnitude
more time to scan than those that respond to every probe with a
quick destination unreachable packet. Specifying a maximum scan
time (such as15m
for 15 minutes) causes Nmap to give up on
individual hosts if it hasn’t completed scanning them in that much
time. This allows you to scan all of the responsive hosts quickly.
You can then work on the slow hosts in the background.
Use-v
and chill out-
With verbosity (
-v
) enabled, Nmap
provides estimated time for scan completion of each host. There is
no need to watch it closely. Get some sleep, head to your favorite
pub, read a book, finish other work, or otherwise amuse yourself
while Nmap tirelessly scans on your behalf.
A perfect example of the need to optimize UDP scans is
Example 5.7, “Improving Scanme’s UDP scan results with version detection”. The scan obtained
the desired data, but it took more than an hour to scan this one host!
In Example 5.9,
Ereet runs that scan
again. This time he adds the -F --version-intensity 0
options and the hour long scan is reduced to 13 seconds! Yet the same
key information (an ISC Bind daemon running on port 53) is
detected.
Example 5.9. Optimizing UDP Scan Time
krad# nmap -sUV -T4 -F --version-intensity 0 scanme.nmap.org
Starting Nmap ( https://nmap.org )
Nmap scan report for scanme.nmap.org (64.13.134.52)
Not shown: 99 open|filtered ports
PORT STATE SERVICE VERSION
53/udp open domain ISC BIND 9.3.4
Nmap done: 1 IP address (1 host up) scanned in 12.92 seconds
Несмотря на то, что в Windows есть множество инструментов для диагностики проблем в TCP/IP сетях (ping, telnet, pathping и т.д.), не все они позволяют в удобном виде проверить состояние или выполнить сканирование открытых сетевых портов на удаленном сервере. Утилита Portqry.exe является удобным инструментом проверки доступности TCP/UDP портов на удаленном сервере при диагностике проблем, связанных с функционированием различных сервисов, а также наличием файерволов и межсетевых экранов в TCP/IP сетях. Чаще всего утилита Portqry используется как более функциональная замена telnet, и в отличии от telnet, позволяет также проверять открытые UDP порты.
Содержание:
- Используем PortQry для сканирования открытых UDP и TCP портов
- Расширенный статус сетевых служб в PortQry
- Графический интерфейс для Portqry
Используем PortQry для сканирования открытых UDP и TCP портов
Первая версия Portqry для Windows Server 2003 некорректно работает с более новыми ОС (Windows Server 2008 и выше), поэтому в дальнейшем была выпущена вторая версия утилиты PortQryV2. Именно эту версию и стоит использовать сегодня(скачать утилиту PortQryV2 можно по ссылке).
В Windows 10 вы можете установить portqry через менеджер пакетов Chokolatey:
choco install portqry
Скачайте и распакуйте архив PortQryV2.exe. Запустите командную строку и перейдите в каталог с утилитой, например:
cd c:toolsPortQryV2
Чтобы проверить доступность DNS сервера с клиента, необходимо проверить открыты ли на нем 53 порты TCP и UDP. Формат команды проверки доступности портов на удаленном сервере следующий:
PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]
-n – имя или IP адрес сервера, доступ к которому нужно проверить
—e – номер порта для проверки (от 1 до 65535)
—r – диапазон портов для проверки (например, 1:80)
—p – по какому протоколу выполняется проверка. Это может быть TCP, UDP или BOTH (по умолчанию используется TCP).
Примечание. В отличии от комадлета PowerShell Test-NetConnection, который может использоваться только для проверки доступности TCP портов, утилита PortQry поддерживает и TCP и UDP протоколы.
В нашем примере команда будет такой:
PortQry.exe –n 10.1.10.6 -p both -e 53
Утилита Portqry для каждого указанного порта вернет один из трех статусов доступности:
- Listening – означает, что указанный порт доступен (принимает соединения), ответ от него получен;
- Not Listening – на целевой системе не запушен процесс (служба), который бы принимал подключения на указанном порту. Portqry получила ответ ICMP «Destination Unreachable — Port Unreachable» при проверке UDP порта, или TCP пакет с флагом Reset;
- Filtered – утилита PortQry не получала ответа от указанного порта либо ответ был отфильтрован. Т.е. на целевой системе либо не слушается данный порт, либо доступ к нему ограничен файерволом или настройками системы. По умолчанию TCP порты опрашиваются 3 раза, а UDP – один.
В нашем примере, DNS сервер доступен с клиента и по TCP и по UDP.
TCP port 53 (domain service): LISTENING UDP port 53 (domain service): LISTENING
С помощью атрибута —o, можно указать последовательность портов, которых нужно просканировать:
portqry -n 10.1.10.6 -p tcp -o 21,110,143
Следующая команда выполнит сканирование диапазона “низких” TCP портов и вернет список доступных портов, которые принимают подключения (утилита работает в режиме сканера открытых портов):
portqry -n 10.1.10.6 -r 1:1024 | find ": LISTENING"
Можно сохранить результаты сканирования открытых портов в текстовый файл:
portqry -n 10.1.10.6 -p tcp -r 20:500 -l logfile.txt
В утилите portqry есть интерактивный режим:
portqry –i
Теперь в приглашении PortQry Interactive Mode можете указать имя удаленного компьютера и порт.
node srv-lic
set port=80
Чтобы выполнить проверить порт на указанном сервере нажмите q и Enter.
С помощью аргументов –wport и -wpid можно выполнить мониторинг состояния указанного порта (wport), или всех портов, связанных с указанным процессом (wpid) на локальном хосте.
Например, следующая команда в течении 10 минут будет выполнять проверку доступности указанного локального порта (например, RDP порта 3389), и если его статус изменится, уведомит администратора об этом (подробный лог будет доступен в файле LogFile.txt). Чтобы остановить мониторинг, нажмите
Ctrl-C
:
portqry -wport 3389 -wt 600 –l LogFile.txt -y -v
Можно получить информацию об открытых портах и активных TCP/UDP соединениях на локальном компьютере:
portqry.exe -local
Расширенный статус сетевых служб в PortQry
В утилите PortQry имеется встроенная поддержка некоторых сетевых служб. Это LDAP, Remote Procedure Calls (RPC), почтовые протоколы (SMTP, POP3 и IMAP4), SNMP, FTP/ TFTP, NetBIOS Name Service, L2TP и другие. Кроме проверки доступности этих стандартных портов этих служб, утилита выполняет специфические для конкретного протокола запросы для получения статуса сервиса.
Например, с помощью следующего запроса мы не только проверим доступность службы RPC endpoint mapper (TCP/135), но и получим список имен зарегистрированных в системе конечных точек RPC (в том числе их имя, UUID, адрес к которому они привязаны и приложение, с которым они связаны).
portqry -n 10.1.10.6 -p tcp -e 135
TCP port 135 (epmap service): LISTENING Using ephemeral source port Querying Endpoint Mapper Database... Server's response: UUID: d95afe72-a6d5-4259-822e-2c84da1ddb0d ncacn_ip_tcp:10.1.10.6 [49152] UUID: 897e215f-93f3-4376-9c9c-fd2277495c27 Frs2 Service ncacn_ip_tcp:10.1.10.6 [5722] UUID: 6b5bd21e-528c-422c-af8c-a4079be4fe48 Remote Fw APIs ncacn_ip_tcp:10.1.10.6 [63006] UUID: 12345678-1234-abcd-ef22-0123456789ab IPSec Policy agent endpoint ncacn_ip_tcp:10.1.10.6 [63006] UUID: 367abb81-9844-35f1-ad32-91f038001003 ncacn_ip_tcp:10.1.10.6 [63002] UUID: 50abc2a3-574d-40b3-1d66-ee4fd5fba076 ncacn_ip_tcp:10.1.10.6 [56020] …….. UUID: 3c4428c5-f0ab-448b-bda1-6ce01eb0a6d5 DHCP Client LRPC Endpoint ncacn_ip_tcp:10.1.10.6 [49153] Total endpoints found: 61 ==== End of RPC Endpoint Mapper query response ==== portqry.exe -n 10.1.10.6 -e 135 -p TCP exits with return code 0x00000000.
Или вы можете проверить доступность и ответ от службы SQL Server Browser на сервере Microsoft SQL Server:
PortQry.exe -n msk-sql1 -e 1434 -p UDP
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED Sending SQL Server query to UDP port 1434... Server's response: ServerName MSK-SQL01 InstanceName MSSQLSERVER IsClustered No Version 15.0.2000.5 tcp 53200 ServerName MSK-SQL01 InstanceName BANKDB IsClustered No Version 15.0.2000.5 tcp 1433 ==== End of SQL Server query response ==== UDP port 1434 is LISTENING
Как вы видите, утилита portqry показала не только доступность UDP порта, но и версию SQL сервера и имена запущенных на сервере SQL экземпляров и их TCP порты (один инстанс BANKDB живет на порту по умолчанию tcp 1433, второй MSSQLSERVER использует фиксированный порт из RPC диапазона 53200 — см. статью о настройке портов в SQL Server).
Можно опросить SNMP порт на устройстве, указав название community:
portqry -n host2 -cn !secure! -e 161 -p udp
При проверке 25 порта на SMTP сервере можно получить баннер приветствия сервера:
portqry -n domain.mail.ru -p tcp -e 25
Графический интерфейс для Portqry
Первоначально утилита Portqry была исключительно консольным инструментом. Для удобства пользователей, которые не дружат с командной строкой, Microsoft разработала простой графический интерфейс для утилиты portqry – PortQueryUI. Скачать PortQueryUI можно с сайта загрузок Microsoft http://download.microsoft.com/download/3/f/4/3f4c6a54-65f0-4164-bdec-a3411ba24d3a/PortQryUI.exe
PortQueryUI по сути представляет собой графическую надстройку над portqry для формирования командной строки, и возврата результата в графическое окно.
Кроме того, в PortQueryUI заложено несколько заранее предопределенных наборов запросов для проверки доступности популярных служб Microsoft:
- Domain and trusts (проверка служб на контроллере домена Active Directory)
- IP Sec
- Networking
- SQL Server
- Web Server
- Exchange Server
- Net Meeting
Думаю, особых комментариев к интерфейсу PortQueryUI давать не нужно. Все должно быть понятно из скриншота ниже. Укажите DNS имя или IP адрес сервера, выберите один из предустановленных сервисов (Query predefined service), или укажите номера портов для проверки вручную (Manually input query ports) и нажмите кнопку Query.
Возможные коды ответа в PortQueryUI (выделен на скриншоте):
- 0 (0x00000000)– означает, что соединении успешно установлено и порт доступен;
- 1 (0x00000001) – указанный порт недоступен или отфильтрован;
- 2 (0x00000002 – это нормальный код возврата при проверке UDP подключения, т.к. не возвращается ACK ответ.