Одним из первых шагов в разведке является определение открытых портов в системе. Nmap широко считается бесспорным королем сканирования портов, но в некоторых ситуациях требуются другие инструменты. Metasploit упрощает сканирование портов прямо из инфраструктуры, и мы покажем вам три типа сканирования портов: TCP, SYN и XMAS.
Что такое сканирование портов?
Сканирование портов - это процесс зондирования диапазона портов с целью определения состояния этих портов - обычно открытых или закрытых. На хосте имеется 65 536 доступных портов, при этом первые 1024 порта зарезервированы для хорошо известных сервисов . Порты могут взаимодействовать с использованием протокола TCP, UDP или обоих.
Первый тип сканирования, который мы рассмотрим, - это сканирование TCP, также известное как TCP-соединение. Этот тип сканирования использует системный вызов для установления соединения, как и веб-браузеры или другие сетевые приложения. Когда порт открыт, сканирование TCP инициирует и завершает полное трехстороннее рукопожатие, а затем закрывает соединение. Этот тип сканирования эффективен, но является шумным, поскольку IP-адрес может быть зарегистрирован.
Второй тип сканирования - это SYN-сканирование. Это сканирование Nmap по умолчанию, которое считается самым популярным типом сканирования портов. В отличие от сканирования TCP-соединения, SYN-сканирование использует необработанные пакеты для подключения к портам, а не системный вызов. Это выгодно, потому что соединение никогда не завершается полностью, что делает его относительно незаметным и с большей вероятностью ускользнет от брандмауэров. Также существует больший контроль над запросами и ответами, поскольку есть доступ к необработанной сети.
Третий тип сканирования, который мы рассмотрим, - это сканирование XMAS. Это сканирование устанавливает флаги FIN, PSH и URG на пакете, который, как говорят, зажигает его, как рождественскую елку (отсюда и название). Сканирование XMAS может быть даже более незаметным, чем сканирование SYN, хотя современные системы обнаружения вторжений все еще могут их обнаруживать. Тем не менее, стоит попробовать, если другие методы сканирования не работают.
TCP сканирование
Первое, что нам нужно сделать перед сканированием, - это запустить Metasploit, набрав msfconsole в терминале. Будет отображаться случайный баннер, а также информация о версии и количестве модулей, загруженных в данный момент.
Сканеры - это тип вспомогательного модуля в Metasploit, и чтобы найти сканеры портов, мы можем ввести в командной строке search portscan .
Это возвращает несколько результатов, включая три типа сканирования портов, которые мы рассмотрим. Начнем с простого сканирования TCP. Тип использования вспомогательной / сканер / PortScan / TCP для загрузки модуля. Теперь мы можем взглянуть на настройки модуля, набрав options :
Здесь мы можем увидеть текущие настройки и их описания. В отличие от многих модулей эксплойтов, этот сканер может принимать ряд целевых адресов в дополнение к одному IP-адресу. В этом случае, поскольку у нас есть только одна целевая машина, подойдет один адрес.
Количество потоков также можно увеличить, чтобы сканирование выполнялось быстрее. Рекомендуется держать это значение ниже 256 для систем Unix и ниже 16 для собственных систем Win32. На всякий случай мы можем установить здесь что-то вроде 8. Все остальные параметры пока можно оставить по умолчанию.
Теперь мы готовы начать сканирование. В Metasploit команда run - это просто псевдоним для эксплойта , поэтому она будет делать то же самое. Учитывая, что мы проводим только сканирование, запуск кажется более подходящим, хотя на самом деле это не имеет значения.
Сканирование TCP будет выполняться довольно быстро, и как только оно будет завершено, мы увидим, что на цели есть много открытых портов.
SYN сканирование
Далее мы перейдем к сканированию SYN. Введите back, чтобы вернуться к основному запросу , а затем используйте a additional / scanner / portscan / syn для загрузки модуля. Опять же, мы можем ввести параметры, чтобы просмотреть текущие настройки для этого модуля:
Здесь есть несколько различных вариантов по сравнению с сканированием TCP, но по большей части он очень похож, включая возможность принимать диапазон целевых адресов и количество устанавливаемых потоков.
При выполнении нескольких сканирований или эксплойтов на единственной цели может утомиться устанавливать одни и те же параметры снова и снова. К счастью, есть команда, которая установит параметр глобально, то есть ее не нужно будет повторно вводить при использовании другого модуля. Используйте setg, чтобы установить глобальный параметр.
Теперь введите run, чтобы начать сканирование.
Сканирование SYN займет немного больше времени по сравнению с сканированием TCP, но как только оно будет выполнено, мы увидим, что получили аналогичные результаты по сравнению с предыдущим сканированием.
XMAS сканирование
Третий тип сканирования, который мы сделаем, - это XMAS-сканирование. Снова введите back, чтобы выйти из текущего модуля, а затем используйте a вспомогательный / scanner / portscan / xmas для загрузки модуля. Поскольку мы ранее устанавливали глобальные параметры для удаленного хоста и потоков, мы должны увидеть эти параметры уже заполненными при просмотре параметров сейчас.
Остальные параметры практически идентичны SYN-сканированию, поэтому мы можем оставить их по умолчанию. Не стесняйтесь поэкспериментировать с другими настройками и посмотреть, как они влияют на время и точность. Теперь мы можем запустить сканирование.
И снова мы получили результаты, аналогичные результатам других сканирований, с дополнительной информацией о том, фильтруется порт или нет. В зависимости от цели (или целей) и типа окружающей среды эти сканирования иногда могут давать разные результаты, поэтому, конечно, не повредит попробовать несколько сканирований.
Что такое сканирование портов?
Сканирование портов - это процесс зондирования диапазона портов с целью определения состояния этих портов - обычно открытых или закрытых. На хосте имеется 65 536 доступных портов, при этом первые 1024 порта зарезервированы для хорошо известных сервисов . Порты могут взаимодействовать с использованием протокола TCP, UDP или обоих.
Первый тип сканирования, который мы рассмотрим, - это сканирование TCP, также известное как TCP-соединение. Этот тип сканирования использует системный вызов для установления соединения, как и веб-браузеры или другие сетевые приложения. Когда порт открыт, сканирование TCP инициирует и завершает полное трехстороннее рукопожатие, а затем закрывает соединение. Этот тип сканирования эффективен, но является шумным, поскольку IP-адрес может быть зарегистрирован.
Второй тип сканирования - это SYN-сканирование. Это сканирование Nmap по умолчанию, которое считается самым популярным типом сканирования портов. В отличие от сканирования TCP-соединения, SYN-сканирование использует необработанные пакеты для подключения к портам, а не системный вызов. Это выгодно, потому что соединение никогда не завершается полностью, что делает его относительно незаметным и с большей вероятностью ускользнет от брандмауэров. Также существует больший контроль над запросами и ответами, поскольку есть доступ к необработанной сети.
Третий тип сканирования, который мы рассмотрим, - это сканирование XMAS. Это сканирование устанавливает флаги FIN, PSH и URG на пакете, который, как говорят, зажигает его, как рождественскую елку (отсюда и название). Сканирование XMAS может быть даже более незаметным, чем сканирование SYN, хотя современные системы обнаружения вторжений все еще могут их обнаруживать. Тем не менее, стоит попробовать, если другие методы сканирования не работают.
TCP сканирование
Первое, что нам нужно сделать перед сканированием, - это запустить Metasploit, набрав msfconsole в терминале. Будет отображаться случайный баннер, а также информация о версии и количестве модулей, загруженных в данный момент.
Сканеры - это тип вспомогательного модуля в Metasploit, и чтобы найти сканеры портов, мы можем ввести в командной строке search portscan .
Форматирование (BB-код):
msf > search portscan
[!] Module database cache not built yet, using slow search
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/scanner/http/wordpress_pingback_access normal Wordpress Pingback Locator
auxiliary/scanner/natpmp/natpmp_portscan normal NAT-PMP External Port Scanner
auxiliary/scanner/portscan/ack normal TCP ACK Firewall Scanner
auxiliary/scanner/portscan/ftpbounce normal FTP Bounce Port Scanner
auxiliary/scanner/portscan/syn normal TCP SYN Port Scanner
auxiliary/scanner/portscan/tcp normal TCP Port Scanner
auxiliary/scanner/portscan/xmas normal TCP "XMas" Port Scanner
auxiliary/scanner/sap/sap_router_portscanner normal SAPRouter Port Scanner
Это возвращает несколько результатов, включая три типа сканирования портов, которые мы рассмотрим. Начнем с простого сканирования TCP. Тип использования вспомогательной / сканер / PortScan / TCP для загрузки модуля. Теперь мы можем взглянуть на настройки модуля, набрав options :
Форматирование (BB-код):
msf auxiliary(scanner/portscan/tcp) > options
Module options (auxiliary/scanner/portscan/tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
DELAY 0 yes The delay between connections, per thread, in milliseconds
JITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)
RHOSTS yes The target address range or CIDR identifier
THREADS 1 yes The number of concurrent threads
TIMEOUT 1000 yes The socket connect timeout in milliseconds
Здесь мы можем увидеть текущие настройки и их описания. В отличие от многих модулей эксплойтов, этот сканер может принимать ряд целевых адресов в дополнение к одному IP-адресу. В этом случае, поскольку у нас есть только одна целевая машина, подойдет один адрес.
Количество потоков также можно увеличить, чтобы сканирование выполнялось быстрее. Рекомендуется держать это значение ниже 256 для систем Unix и ниже 16 для собственных систем Win32. На всякий случай мы можем установить здесь что-то вроде 8. Все остальные параметры пока можно оставить по умолчанию.
Форматирование (BB-код):
msf auxiliary(scanner/portscan/tcp) > set rhosts 172.16.1.102
rhosts => 172.16.1.102
msf auxiliary(scanner/portscan/tcp) > set threads 8
threads => 8
Теперь мы готовы начать сканирование. В Metasploit команда run - это просто псевдоним для эксплойта , поэтому она будет делать то же самое. Учитывая, что мы проводим только сканирование, запуск кажется более подходящим, хотя на самом деле это не имеет значения.
Форматирование (BB-код):
msf auxiliary(scanner/portscan/tcp) > run
[+] 172.16.1.102: - 172.16.1.102:21 - TCP OPEN
[+] 172.16.1.102: - 172.16.1.102:23 - TCP OPEN
[+] 172.16.1.102: - 172.16.1.102:8180 - TCP OPEN
[+] 172.16.1.102: - 172.16.1.102:8787 - TCP OPEN
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Сканирование TCP будет выполняться довольно быстро, и как только оно будет завершено, мы увидим, что на цели есть много открытых портов.
SYN сканирование
Далее мы перейдем к сканированию SYN. Введите back, чтобы вернуться к основному запросу , а затем используйте a additional / scanner / portscan / syn для загрузки модуля. Опять же, мы можем ввести параметры, чтобы просмотреть текущие настройки для этого модуля:
Форматирование (BB-код):
msf auxiliary(scanner/portscan/syn) > options
Module options (auxiliary/scanner/portscan/syn):
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes The number of hosts to scan per set
DELAY 0 yes The delay between connections, per thread, in milliseconds
INTERFACE no The name of the interface
JITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)
RHOSTS yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds
Здесь есть несколько различных вариантов по сравнению с сканированием TCP, но по большей части он очень похож, включая возможность принимать диапазон целевых адресов и количество устанавливаемых потоков.
При выполнении нескольких сканирований или эксплойтов на единственной цели может утомиться устанавливать одни и те же параметры снова и снова. К счастью, есть команда, которая установит параметр глобально, то есть ее не нужно будет повторно вводить при использовании другого модуля. Используйте setg, чтобы установить глобальный параметр.
Форматирование (BB-код):
msf auxiliary(scanner/portscan/syn) > setg rhosts 172.16.1.102
rhosts => 172.16.1.102
msf auxiliary(scanner/portscan/syn) > setg threads 8
threads => 8
Теперь введите run, чтобы начать сканирование.
Форматирование (BB-код):
msf auxiliary(scanner/portscan/syn) > run
[+] TCP OPEN 172.16.1.102:21
[+] TCP OPEN 172.16.1.102:22
[+] TCP OPEN 172.16.1.102:23
[+] TCP OPEN 172.16.1.102:514
[+] TCP OPEN 172.16.1.102:1099
[+] TCP OPEN 172.16.1.102:1524
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Сканирование SYN займет немного больше времени по сравнению с сканированием TCP, но как только оно будет выполнено, мы увидим, что получили аналогичные результаты по сравнению с предыдущим сканированием.
XMAS сканирование
Третий тип сканирования, который мы сделаем, - это XMAS-сканирование. Снова введите back, чтобы выйти из текущего модуля, а затем используйте a вспомогательный / scanner / portscan / xmas для загрузки модуля. Поскольку мы ранее устанавливали глобальные параметры для удаленного хоста и потоков, мы должны увидеть эти параметры уже заполненными при просмотре параметров сейчас.
Форматирование (BB-код):
msf auxiliary(scanner/portscan/xmas) > options
Module options (auxiliary/scanner/portscan/xmas):
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes The number of hosts to scan per set
DELAY 0 yes The delay between connections, per thread, in milliseconds
INTERFACE no The name of the interface
JITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)
RHOSTS 172.16.1.102 yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 8 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds
Остальные параметры практически идентичны SYN-сканированию, поэтому мы можем оставить их по умолчанию. Не стесняйтесь поэкспериментировать с другими настройками и посмотреть, как они влияют на время и точность. Теперь мы можем запустить сканирование.
Форматирование (BB-код):
msf auxiliary(scanner/portscan/xmas) > run
[*] TCP OPEN|FILTERED 172.16.1.102:21
[*] TCP OPEN|FILTERED 172.16.1.102:111
[*] TCP OPEN|FILTERED 172.16.1.102:139
[*] TCP OPEN|FILTERED 172.16.1.102:445
[*] TCP OPEN|FILTERED 172.16.1.102:512
[*] TCP OPEN|FILTERED 172.16.1.102:513
[*] TCP OPEN|FILTERED 172.16.1.102:6000
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
И снова мы получили результаты, аналогичные результатам других сканирований, с дополнительной информацией о том, фильтруется порт или нет. В зависимости от цели (или целей) и типа окружающей среды эти сканирования иногда могут давать разные результаты, поэтому, конечно, не повредит попробовать несколько сканирований.