Visitors have accessed this post 84 times.

NMap — часть 2

0
0
84
11 сентября 2020 10:56
Автор: Rebrain Me
Linux

Visitors have accessed this post 84 times.

Часть 2

Автор — Сергей Попов

1 часть статьи

Сканирование портов

Рассказать вам шутку про UDP?
Только она до вас не дойдет.

Изначально Nmap был эффективным средством сканирования портов, и, несмотря на развитие прочего функционала, он им и остается.

Большинство типов сканирования доступны только привилегированным пользователям, потому что отправляются и принимаются сырые пакеты, что требует прав пользователя root в Unix-системах.

В любой момент времени вы можете использовать только один метод; исключение составляет UDP сканирование (-sU) и один из типов сканирования SCTP (-sY, -sZ), которые могут быть скомбинированы с любым типом TCP сканирования.

-sS (TCP SYN сканирование)

SYN — наиболее популярный тип сканирования. На то есть несколько причин. Он может быть быстро запущен, он способен сканировать тысячи портов в секунду при быстром соединении, его работе не препятствуют ограничивающие брандмауэры. Этот тип сканирования относительно ненавязчив и незаметен, так как при таком сканировании TCP-соединение никогда не устанавливается до конца. Он работает с любым TCP стеком, не зависит от каких-либо особенностей платформы, как это происходит при сканированиях типа FIN/NULL/Xmas, Maimon и idle сканировании. Он также предоставляет ясную и достоверную дифференциацию между состояниями открыт, закрыт и фильтруется.

Это возможно благодаря крайне редкой функции TCP, известной как split-handshake.

-sT (TCP сканирование с использованием системного вызова connect)

Это используемый по умолчанию тип TCP-сканирования, когда недоступно SYN сканирование, то есть для непривилегированного пользователя. Nmap просит операционную систему установить соединение с целевой машиной по указанному порту путем системного вызова connect. Таким образом на получение той же самой информации потребуется больше времени и пакетов, да к тому же целевые машины скорее всего запишут это соединение в свои логи. Администратор, который увидит в логах группу записей о попытке установки соединения от одной и той же системы, должен знать, что его машина подверглась такому типу сканирования.

-sU (Различные типы UDP-сканирования)

Тремя наиболее популярными службами, использующими протокол UDP, являются DNS, SNMP и DHCP (используют порты 53, 161/162 и 67/68). UDP сканирование в общем случае медленнее и сложнее TCP, поэтому многие специалисты по безопасности игнорируют эти порты. Это является ошибкой, так как существуют UDP службы, которые используются атакующими. К счастью, Nmap позволяет инвентаризировать UDP порты.

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

Большой проблемой при UDP сканировании является его медленная скорость работы. Открытые и фильтруемые порты редко посылают какие-либо ответы, заставляя Nmap отправлять повторные запросы, на случай если пакеты были утеряны. Закрытые порты часто оказываются еще большей проблемой. Обычно они в ответ возвращают ICMP ошибку о недостижимости порта. Но в отличие от RST пакетов, отсылаемых закрытыми TCP портами в ответ на SYN или сканирование с установкой соединения, многие хосты ограничивают лимит ICMP сообщений о недостижимости порта по умолчанию. Linux и Solaris особенно строги в этом плане. Например, ядро Linux 2.4.20 ограничивает количество таких сообщений до одного в секунду (в net/ipv4/icmp.c).Nmap обнаруживает такого рода ограничения и соответственно сокращает количество запросов, чтобы не забивать сеть бесполезными пакетами, которые все равно будут отброшены целевой машиной. К сожалению, при ограничении в стиле Linux (один пакет в секунду) сканирование 65,536 портов займет более 18 часов. К способам увеличения скорости UDP сканирования относятся: параллельное сканирование нескольких хостов, сканирование в первую очередь только наиболее популярных портов, сканирование из-за брандмауэра и использование ––host-timeout для пропуска медленных хостов.

-sY (сканирование SCTP INIT)

Сканирование SCTP INIT — это эквивалент SCTP сканирования TCP SYN. Его можно выполнить быстро, сканируя тысячи портов в секунду на быстрых сетях, не заторможенных ограничительными фаерволами. Как SYN сканирование, сканирование INIT сравнительно ненавязчиво и незаметно, поскольку оно никогда не завершает SCTP ассоциации. Оно также позволяет достоверно определить различие между открытым, закрытым и фильтруемым состоянием порта.

-sN; -sF; -sX (TCP NULL, FIN и Xmas сканирования)

Эти три типа сканирования используют незаметную лазейку в TCP RFC, чтобы разделять порты на открытые и закрытые. На странице 65 RFC 793 говорится, что «если порт назначения ЗАКРЫТ …. входящий сегмент, не содержащий RST, повлечет за собой отправку RST в ответ».  На следующей странице, где обсуждается отправка пакетов без установленных битов SYN, RST или ACK, утверждается что: «вы вряд ли с этим столкнетесь, но если столкнетесь, то сбросьте сегменты и вернитесь к исходному состоянию».

Когда сканируется система, отвечающая требованиям RFC, любой пакет, не содержащий установленного бита SYN, RST или ACK, повлечет за собой отправку RST в ответ в случае, если порт закрыт, или не повлечет никакого ответа, если порт открыт. Так как ни один из этих битов не установлен, то любая комбинация трех оставшихся (FIN, PSH и URG) будет являться правильной. Nmap использует это в трех типах сканирования:

Null сканирование (-sN) — не устанавливаются никакие биты (Флагов в TCP заголовке 0).

FIN сканирование (-sF) — устанавливается только TCP FIN бит.

Xmas сканирование (-sX) — устанавливаются FIN, PSH и URG флаги, разукрашивающие пакет, как новогоднюю елку.

Эти три типа сканирования работают по одной схеме:

Если в ответ приходит RST пакет, то порт считается закрытым, отсутствие ответа означает, что порт открыт|фильтруется. Порт помечается как «фильтруется», если в ответ приходит ICMP ошибка о недостижимости (тип 3, код 0, 1, 2, 3, 9, 10 или 13).

Ключевым преимуществом этих типов сканирования является их способность незаметно обойти некоторые не учитывающие состояние (non-stateful) брандмауэры и роутеры с функцией пакетной фильтрации.

Еще одним преимуществом является то, что они даже чуть более незаметны, чем SYN сканирование. Все же не надо на это полагаться — большинство современных IDS могут быть сконфигурированы на их обнаружение.

Большим недостатком является то, что не все системы следуют RFC 793 дословно. Некоторые системы посылают RST ответы на запросы независимо от того, открыт порт или закрыт. Это приводит к тому, что все порты помечаются как закрытые. Основные системы, ведущие себя подобным образом, — Microsoft Windows, многие устройства Cisco, BSDI и IBM OS/400. Хотя такое сканирование применимо к большинству систем, основанных на Unix.

Еще одним недостатком этих видов сканирования является их неспособность разделять порты на открытые и фильтруемые, так как порт помечается как открыт|фильтруется.

-sA (TCP ACK сканирование)

Этот тип сканирования используется, чтобы выявлять правила брандмауэров, определять, учитывает он состояние или нет, а также определять фильтруемые ими порты.

Пакет запроса при таком типе сканирования содержит установленным только ACK флаг (если не используется ––scanflags). При сканировании нефильтруемых систем открытые и закрытые порты оба будут возвращать в ответ RST пакет. Nmap помечает их как нефильтруемые, имея в виду, что они достижимы для ACK пакетов, но неизвестно, открыты они или закрыты. Порты, которые не отвечают или посылают в ответ ICMP сообщение об ошибке (тип 3, код 0, 1, 2, 3, 9, 10 или 13), помечаются как фильтруемые.

-sW (TCP Window сканирование)

Этот тип сканирования практически то же самое, что и ACK сканирование, за исключением того, что он использует особенности реализации различных систем для разделения портов на открытые и закрытые, вместо того чтобы всегда при получении RST пакета выводить «не фильтруется». Этот тип сканирования основывается на особенностях реализации немногих систем в интернете, поэтому вы не можете все время доверять ему. В общем случае в системах, не имеющих таких особенностей, все порты будут помечаться как закрытые. Конечно, это возможно, что у машины действительно нет открытых портов. Если большинство просканированных портов закрыты и лишь несколько распространенных портов (таких как 22, 25, 53) фильтруются, то скорее всего результатам сканирования можно доверять. Иногда системы будут вести себя прямо противоположным образом. Если в результате сканирования будет найдено 1000 открытых портов и 3 закрытых или фильтруемых, то как раз эти 3 могут оказаться действительно открытыми.

-sM (TCP сканирование Мэймона (Maimon))

Этот тип сканирования носит имя своего первооткрывателя Уриела Мэймона (Uriel Maimon). Он описал эту технику в журнале Phrack Magazine, выпуск #49 (Ноябрь 1996).  Версия Nmap с поддержкой этого типа сканирования была выпущена через два номера. Техника практически такая же, как и при NULL, FIN и Xmas сканированиях, только в качестве запросов используются FIN/ACK. Согласно RFC 793 (TCP) в ответ на такой запрос должен быть сгенерирован RST пакет, если порт открыт или закрыт. Тем не менее, Уриел заметил, что многие BSD системы просто отбрасывают пакет, если порт открыт.

––scanflags (Заказное TCP сканирование)

Действительно продвинутым пользователям Nmap нет нужды ограничивать себя заранее приготовленными типами сканирования. С помощью опции ––scanflags вы можете разработать свой тип сканирования путем задания специфичных TCP флагов. Используйте свое воображение, обходя системы обнаружения вторжений, чьи производители просто посмотрели справочное руководство Nmap, задавая собственные правила!

Аргументом опции ––scanflags может быть числовое значение, например, 9 (PSH и FIN флаги), но использование символьных имен намного проще. Используйте любые комбинации URG, ACK, PSH, RST, SYN и FIN. Например, опцией ––scanflags URGACKPSHRSTSYNFIN будут установлены все флаги, хотя это и не очень полезно для сканирования. Порядок задания флагов не имеет значения.

Кроме желаемых флагов, вы также можете задать тип TCP-сканирования (например, -sA или -sF). Это укажет Nmap, как необходимо интерпретировать ответы. Например, при SYN сканировании отсутствие ответа указывает на фильтруемый порт, тогда как при FIN сканировании — на открытый|фильтруемый. Nmap будет осуществлять заданный тип сканирования, но используя указанные вами TCP флаги вместо стандартных. Если вы не указываете тип сканирования, то по умолчанию будет использоваться SYN.

-sZ (сканирование SCTP COOKIE ECHO)

Сканирование SCTP COOKIE ECHO — это продвинутое SCTP-сканирование. Реализации SCTP должны незаметно отбрасывать пакеты, содержащие куски COOKIE ECHO, пришедшие на открытый порт, но отправлять ABORT, если порт закрыт. Преимущество же этого типа сканирования заключается в том, что это не такое очевидное сканирование портов, как INIT сканирование. Кроме того, могут быть не сохраняющие состояние правила файрволов, блокирующие куски INIT, но не куски COOKIE ECHO. Не обманывайтесь, что это сделает сканирование портов невидимым; хорошие IDS будут также в состоянии выявить сканирования SCTP COOKIE ECHO. Обратной стороной этих сканирований является то, что нельзя различить открытые и фильтруемые порты, вы остаетесь с состоянием открыт|фильтруется в обоих случаях.

-sI зомби_хост[:порт] («ленивое» idle сканирование)

Этот продвинутый метод сканирования позволяет осуществить действительно незаметное TCP-сканирование портов цели (имеется в виду, что никакие пакеты не отсылаются на целевую машину с вашего реального IP-адреса). Вместо этого на зомби-машине используется предсказуемая последовательность генерации ID IP фрагментов для сбора информации об открытых портах цели. Системы IDS будут считать, что сканирование производится с заданной вами зомби-машины (которая должна работать и удовлетворять определенным критериям). Этот тип сканирования очень подробно описан на https://nmap.org/book/idlescan.html.

Помимо его незаметности (в силу своей природы), этот тип сканирования также позволяет определять основанные на IP доверительные отношения между машинами. Список открытых портов показывает открытые порты с точки зрения зомби-машины.  Поэтому вы можете попробовать просканировать цель, используя различные зомби-машины, которым, вы считаете, возможно, будут доверять (посредством правил роутера/пакетного фильтра).

Вы можете добавить номер порта после двоеточия к зомби-хосту, если хотите использовать конкретный порт. По умолчанию будет использоваться порт 80.

-sO (Сканирование IP-протокола)

Сканирование такого типа позволяет определить, какие IP-протоколы (TCP, ICMP, IGMP и т.д.) поддерживаются целевыми машинами. Способ работы этого типа сканирования очень похож на реализованный в UDP-сканировании. Вместо того, чтобы изменять в UDP-пакете поле, содержащее номер порта, отсылаются заголовки IP-пакета и изменяется восьмибитное поле IP-протокола. Заголовки обычно пустые, не содержащие никаких данных и даже правильного заголовка для требуемого протокола.

Исключениями являются TCP, UDP, ICMP, SCTP и IGMP. Включение правильного заголовка для этих протоколов необходимо, так как в противном случае некоторые системы не будут их отсылать, да и у Nmap есть все необходимые функции для их создания.

Вместо того, чтобы ожидать в ответ ICMP сообщение о недостижимости порта, этот тип сканирования ожидает ICMP сообщение о недостижимости протокола. Если Nmap получает любой ответ по любому протоколу, то протокол помечается как открытый. ICMP ошибка о недостижимости протокола (тип 3, код 2) помечает протокол как закрытый. Другие ICMP ошибки недостижимости (тип 3, код 0, 1, 9, 10 или 13) помечают протокол как фильтруемый (в то же время они показывают, что протокол ICMP открыт). Если не приходит никакого ответа после нескольких запросов, то протокол помечается как открыт|фильтруется.

-b передаточный FTP хост (FTP bounce сканирование)

Интересной возможностью FTP-протокола (RFC 959) является поддержка так называемых прокси FTP-соединений. Это позволяет пользователю подключиться к одному FTP-серверу, а затем попросить его передать файлы другому. Это является грубым нарушением, поэтому многие сервера прекратили поддерживать эту функцию. Используя эту функцию, можно осуществить с помощью данного FTP-сервера сканирование портов других хостов. Просто попросите FTP-сервер переслать файл на каждый интересующий вас порт целевой машины по очереди. Сообщение об ошибке укажет: открыт порт или нет. Это хороший способ обхода брандмауэров, так как организационные FTP-сервера обычно имеют больше доступа к другим внутренним хостам, чем какие-либо другие машины.

В Nmap такой тип сканирования задается опцией -b. В качестве аргумента ей передается имя_пользователя:пароль@сервер:порт. Сервер — это сетевое имя или IP-адрес уязвимого FTP-сервера. Как и в случае с обычными URL, вы можете опустить имя_пользователя:пароль, тогда будут использованы анонимные данные (пользователь: anonymous пароль:-wwwuser@). Номер порта (и предшествующее ему двоеточие) также можно не указывать; тогда на сервере будет использован FTP-порт по умолчанию (21) для подключения к серверу.

Эта уязвимость была широко распространена в 1997, когда был выпущен Nmap, но теперь почти везде исправлена. Уязвимые сервера по-прежнему есть, так что, если ничто другое не помогает, то стоит попробовать. Если вашей целью является обход брандмауэра, то просканируйте целевую сеть на наличие открытого порта 21 (или даже на наличие любых FTP служб, если вы используете определение версии), а затем используйте NSE скрипт ftp-bounce. Nmap скажет вам, уязвим хост или нет. Если вы просто пытаетесь замести следы, то вам нет необходимости (и фактически не следует) ограничивать себя только хостами целевой сети. Перед тем, как вы начнете сканировать произвольные интернет-адреса на наличие уязвимого FTP-сервера, имейте в виду, что многим системным администраторам это не понравится.

Последовательность сканирования и выбор портов

Раз, два, три ,четыре, пять…
Вышел зайчик погулять.

По умолчанию, Nmap сканирует 1000 самых распространенных портов для каждого протокола, но это поведение легко корректируется:

-p диапазон портов (Сканирование только определенных портов)

С помощью этой опции вы можете определить, какие порты вы хотите просканировать и переопределить установки по умолчанию. Указание отдельных номеров портов допустимо, как и задание диапазонов портов разделенных дефисом (напр. 1-1023). Начальные и/или конечные значения диапазонов могут быть опущены, что заставит Nmap использовать 1 и 65535, соответственно. Поэтому вы можете задать опцию -p, чтобы просканировать все порты от 1 до 65535. Сканирование нулевого порта допустимо, если вы укажете его явно.

Для сканирования IP-протоколов (-sO) эта опция указывает номер протокола, на который вы хотите просканировать (0–255). Когда сканируете комбинацию протоколов (например, TCP и UDP), вы можете задать определенный протокол, указав перед номерами портов T для TCP, U для UDP, S для SCTP или P для IP-протоколов. Определитель будет действовать до того момента, пока вы не зададите другой. Например, при задании аргумента -p U:53,111,137,T:21-25,80,139,8080 будут просканированы UDP порты 53,111, и 137, а также все перечисленные TCP-порты. Имейте в виду, что для сканирования сразу и UDP, и TCP-портов вы должны указать опцию -sU и, по крайней мере, один из типов сканирования TCP (таких как -sS, -sF или -sT). Если определитель протокола не указан, то перечисленные порты будут добавлены ко всем протоколам. Порты также могут быть заданы именами, которые указаны в nmap-services. Вы даже можете использовать символы ? и * с именами. Например, чтобы просканировать FTP и все порты, чьи имена начинаются с http, используйте -p ftp,http*. Будьте осторожны при вводе этой команды и лучше заключите аргумент -p в кавычки.Диапазоны портов могут быть заключены в квадратные скобки, чтобы определить порты, которые упомянуты в nmap-services, внутри этого диапазона. Например, с помощью следующей команды будут просканированы все порты из nmap-services равные или меньшие 1024: -p [-1024]. Будьте осторожны при вводе этой команды и лучше заключите аргумент -p в кавычки.

––exclude-ports диапазон портов (Исключить указанные порты из сканирования)

Эта опция указывает, какие порты Nmap следует исключить из сканирования. Диапазоны портов указываются с опцией -p.

-F (Быстрое (ограниченные порты) сканирование)

С опцией -F число сканируемых портов уменьшается до 100.

Файл nmap-services с информацией о частоте позволяет узнать, какие порты являются самыми распространенными. Если информация о частоте недоступна, возможно, из-за использования пользовательского файла nmap-services, Nmap в этом случае сканирует все названные порты плюс 1-1024. -F указывает сканировать только порты, которые названы в файле служб.

-r (Не использовать случайный порядок портов)

По умолчанию Nmap использует произвольный порядок сканирования портов (исключение составляют лишь наиболее часто употребляемые порты, которые расположены в начале списка сканирования). Обычно эта случайность нужна, но вы можете задать опцию -r, чтобы использовать прямой порядок сканирования (сортировка от самого низкого к самому высокому).

––port-ratio <десятичное число между 0 и 1>

Сканирует все порты из nmap-services, чей рейтинг больше числа, указанного как аргумент. Ратио должно быть между 0.0 и 1.1.

––top-ports рейтинг<целое число от 1 и выше>

Сканирует N портов с наибольшими рейтингами, расположенными в nmap-services файле, после исключения всех портов, указанных с ––exclude-ports.

n должна быть больше единицы.

Обнаружение служб и их версий

А вы тоже используете нестандартные порты для http:8080, или https:8443, или даже RDP:8932 и чувствуете себя в безопасности? Когда Nmap получает ответы от службы, но не может сопоставить их с какой-либо записью в своей базе данных, он выводит на экран специальную информацию и URL, по которому вы можете опубликовать эту информацию, если вы точно уверены, что за служба запущена на исследуемом вами порте. Пожалуйста, потратьте пару минут на публикацию этой информации, так как ваша находка поможет остальным. Благодаря таким публикациям, Nmap содержит в своей базе данных около 6500 записей для более чем 650 протоколов, таких как SMTP, FTP, HTTP и т.д. Подробная документация по работе, использованию и настройке определения версии доступна на https://nmap.org/book/vscan.html.

Функция определения версии включается и управляется с помощью следующих опций:
-sV (Определение версии)
-sR — это псевдоним для -sV

Включает функцию определения версии. Вы также можете использовать опцию -A, которая помимо других функций включает определение версии.

––allports (Не исключать порты из проверки определения версии)

По умолчанию, функция определения версии пропускает TCP-порт 9100, потому что некоторые принтеры просто распечатывают все, что приходит на этот порт, что ведет к дюжинам страниц HTTP GET запросов, бинарных запросов SSL-сессий т.д. Это может быть изменено путем модифицирования или удаления директивы Exclude в nmap-service-probes, или вы можете задать опцию ––allports, сканировать все порты, не обращая внимания на всякие Exclude директивы.

––version-intensity интенсивность (Устанавливает интенсивность работы функции)

Когда производится сканирование с заданной опцией определения версии (-sV), Nmap посылает серию запросов, каждому из которых присваивается значение в диапазоне от 1 до 9. Запросы с низкими значениями эффективны для большинства типичных служб, в то время как запросы с более высокими значениями редко полезны. Уровень интенсивности определяет, какие запросы должны использоваться во время сканирования. Чем выше значение запроса, тем больше вероятность корректного определения службы. Тем не менее, сканирование с высокой интенсивностью займет много времени. Уровень интенсивности должен быть задан числом от 0 до 9.  По умолчанию уровень интенсивности равен 7. Когда запрос привязан к целевому порту посредством директивы nmap-service-probes ports, этот запрос будет производиться вне зависимости от уровня интенсивности. Это гарантирует, что DNS-запросы всегда будут производиться с использованием порта 53, SSL-запросы — 443 и т.д.

––version-light (Включить облегченный режим)

Это не что иное, как псевдоним для ––version-intensity 2. Этот режим существенно уменьшает время сканирования, но вероятность определения служб сокращается.

––version-all (Использовать каждый единичный запрос)

Псевдоним для ––version-intensity 9, гарантирующий, что каждый единичный запрос будет направлен на каждый порт.

––version-trace (Отслеживание процесса сканирования)

Указывает Nmap выводить подробную отладочную информацию о процессе сканирования. Это часть той информации, которую вы можете получить с помощью опции ––packet-trace.

Управление временем и производительностью

Очень часто сканирование может занимать достаточно продолжительное время. Способами увеличения скорости сканирования могут быть пропуск некритичных тестов или обновление Nmap до последней версии (улучшения производительности выходят довольно часто). Оптимизация параметров опций управления временем также может значительно повлиять на скорость сканирования. Но не нужно пренебрегать и сторонними решениями: Например RustScan.

––min-hostgroup количество_хостов; ––max-hostgroup количество_хостов (Регулирует размер групп для параллельного сканирования)

Основной целью использования этих опций является задание большого минимума размера группы, с тем чтобы сканирование проходило быстрее. При сканировании сети класса C обычным выбором является 256. При сканировании большого количества портов превышение этого числа вряд ли поможет. При сканировании лишь нескольких портов наилучшим размером группы будет 2048 или больше.

––min-parallelism количество_запросов; ––max-parallelism количество_запросов (Регулирует распараллеливание запросов)

Опции используются при сканировании портов и при обнаружении хостов. По умолчанию параллелизм устанавливается в 1, если сеть работает плохо, и может достигать нескольких сотен при идеальных условиях.

Наиболее частым вариантом применения является установка опции ––min-parallelism в значение большее единицы, чтобы увеличить скорость сканирования плохо работающих хостов и сетей.

––min-rtt-timeout время, ––max-rtt-timeout время, ––initial-rtt-timeout время (Регулирует время ожидания ответа на запрос).

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

Если хосты находятся в локальной сети, то 100 миллисекунд будет приемлемым значением опции (––max-rtt-timeout 100ms). Обычно maximum RTT не ниже 100 мс, независимо от результатов пингования. А также не превышает 1000 мс.

––max-retries количество_попыток (Задает максимальное количество повторных передач запроса)

Когда производительность критична, время сканирования может быть сокращено путем введения ограничения на максимальное количество повторных передач запроса. Значением по умолчанию (без -T шаблона) является 10 ретрансляций. Если сеть кажется надежной и целевые хосты не имеют ограничений на количество ответов, то Nmap обычно делает одну повторную попытку. Поэтому установка ––max-retries в низкое значение (например, 3) никак не влияет на большинство типов сканирования.

––host-timeout время (Прекращает сканирование медленных целей)

Несколько процентов наиболее медленных хостов могут занять большую часть времени сканирования. Иногда лучшим выходом является просто пропуск таких хостов. Передайте в качестве аргумента опции ––host-timeout максимальное значение промежутка времени, в течение которого вы готовы ждать. Имейте в виду, что в этот момент Nmap может сканировать другие хосты, так что это не просто потеря времени. Хост, чье время истекло, пропускается.

––script-timeout время

Помните, что все скрипты будут иметь одинаковый тайм-аут. Если скрипт завершил свою работу из-за того, что его время вышло, для этого скрипта не будет показан вывод результатов.

––scan-delay время; ––max-scan-delay время (Регулирует задержку между запросами)

Это особенно полезно в случае ограничения на количество ответов у целевых хостов. Машины Solaris (как и многие другие) обычно отвечают на запросы при UDP сканировании только одним ICMP сообщением в секунду. Еще одним вариантом использования опции ––scan-delay является обход пороговых систем обнаружения и предотвращения вторжений (IDS/IPS).

––min-rate число; ––max-rate число (Прямой контроль скорости сканирования)

Когда задается опция ––min-rate, Nmap будет пытаться посылать пакеты с той же или большей, чем задано, интенсивностью. Аргументом этой опции является положительное число, отражающее интенсивность сканирования в пакетах в секунду. Например, задание опции ––min-rate 300 означает, что Nmap будет пытаться посылать пакеты с интенсивностью 300 пакетов в секунду или больше. Задание низкого значения не отнимает у Nmap права работать с большей интенсивностью, если позволяют условия.

Аналогично ––max-rate ограничивает скорость отправки сканирования до данного максимума. Используйте ––max-rate 100, например, чтобы ограничиться 100 пакетами в секунду в быстрой сети. Используйте ––max-rate 0.1 для медленного сканирования — один пакет в десять секунд.––defeat-rst-ratelimit

––defeat-icmp-ratelimit

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

––nsock-engine epoll|kqueue|poll|select

Позволяет принудительно использовать механизм мультиплексирования ввода-вывода nsock. На вашей системе гарантировано доступен только отказоустойчивый движок на основе select(2). Используйте nmap -V, чтобы увидеть, какие движки поддерживаются.

-T  (Устанавливает шаблон настроек управления временем)

Чтобы сэкономить время при настройке скорости сканирования, просто необходимо попробовать -T и номер шаблона (0–5) или его имя. Имена шаблонов следующие: paranoid (параноидальный) (0), sneaky (хитрый) (1), polite (вежливый) (2), normal (обычный) (3), aggressive (агрессивный) (4) и insane (безумный) (5). Первые два предназначены для обхода IDS. Вежливый (polite) режим снижает интенсивность сканирования с целью меньшего потребления пропускной способности и машинных ресурсов. Обычный (normal) режим устанавливается по умолчанию. Агрессивный (aggressive) режим повышает интенсивность сканирования, предполагая, что вы используете довольно быструю и надежную сеть. Наконец, безумный (insane) режим предполагает, что вы используете чрезвычайно быструю сеть и готовы пожертвовать точностью ради скорости.

От редакции

Материал получился настолько объемный, что мы решили разделить его на несколько частей. 1 часть можно почитать здесь, 3 часть выйдет через неделю.

Если вам интересно посещать бесплатные онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN.
*Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.
Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Команда chmod — Linux

Chmod устанавливает права на чтение, запись и выполнение и является одной из наиболее важных команд безопасности в операционных системах на базе Linux.

У каждого объекта в вашей системе Linux есть режим выдачи прав, который описывает, какие действия пользователь может выполнять в системе. Существует три типа разрешений: на чтение (chmod r),...

0
0
27 мая 2020
Основы DevOps

Появление DevOps в 2009 (хотя, по некоторым источникам, это все-таки было в 2008) в корне поменяло процесс взаимодействия между отделами разработки и эксплуатации. До этого момента это были два совершенно разные подразделения со своими целями, задачами и KPI. Как следствие, они не слишком вникали в деятельность друга и часто возникала абсолютно...

0
0
25 сентября 2020
Linux like One-c

Автор статьи - Сергей Попов
Предистория
Мало кто из инфраструктурщиков на просторах России не сталкивался с «Великим и Ужасным» ОДИН-ЭС. Многие после этой встречи безвозвратно уходят в мир *nix, чтобы никогда больше не пересекаться с ним, и не жалеют об этом, остальным приходится устанавливать, обслуживать и поддерживать этого монстра многие...

0
8
3 августа 2020