![]() |
Оглавление книги Книга по Nmap на русском
Предыдущая часть Как определить порты и порядок сканирования с nmap Следующая часть Как обойти брандмауэры при сканировании nmap В данной главе рассмотрим:
Скриптовый движок Nmap (NSE) это одна из наиболее мощных и гибких возможностей Nmap. Он позволяет пользователям писать (и делиться ими) простые скрипты (используя язык программирования Lua) для автоматизации широкого круга сетевых задач. Эти скрипты выполняются со скоростью и эффективность ожидаемой вами от Nmap. Пользователи могут использовать разнообразный и постоянно расщиряющийся набор скриптов, которые поставляются вместе с Nmap, или написать свои скрипты под свои собственные нужды. Когда мы создавали эту систему, считалось, что она будет использоваться для задач исследования сети, более изощренного варианта определения версии, исследования уязвимостей. NSE может быть исполльзован даже для обнаружения уязвимостей. Чтобы отразить все многообразие возможностей использования скриптов и при этом упростить выбор необходимого скрипта, каждый из них содержит поле, где указано к какой категории он принадлежит. Сейчас определены следующие категории: safe, (intrusive), malware, version, discovery, vuln, auth и default. Все они описаны в http://nmap.org/book/nse-usage.html#nse-categories. Скриптовый движок Nmap детально описан на http://nmap.org/book/nse.html и настраивается с помощью следующих опций: Код: Код:
-sCКод: Код:
–script |||allЕсли вы определили директорию со скриптами, и она была найдена, то Nmap загружает все NSE скрипты (все файлы с расширением .nse) из этой директории. Файлы без расширения nse игнорируются. Nmap не производит рекурсивный поиск скриптов во всех поддиректориях. Если вы указываете конкретный файл, то его расширение не обязательно должно быть nse. По умолчанию скрипты Nmap хранятся в папке scripts – поддиректории основного каталого Nmap. Для большей производительности, все скрипты проиндексированы в базе даннных scripts/script.db, где указано к какой категории или категориям принадлежит каждый скрипт. Для исполнения всех скриптов из базы данных Nmap задайте атрибут all. Злонамеренные скрипты запускатся не в "песочнице" (sandbox) и поэтому могут повредить вашу систему или нарушить вашу анонимность. Никогда не используйте скрипты от третьих лиц до тех пор, пока не будете доверять автору или сами тщательно просмотрите скрипт. Код: Код:
–script-args =, ={=}, =Код: Код:
–script-traceКод: Код:
–script-updatedbОпции управления временем и производительностью Наиболее приоритетной стороной развития Nmap для меня всегда была производительность. Сканирование по умолчанию (nmap ) какого-либо хоста в моей локальной сети занимает пятую долю секунды. Этого едва хватает, чтобы моргнуть, но становится существенным, когда вы сканируете сотни или тысячи хостов. Более того, некоторые типы сканирования, как например, UDP или сканирование с целью определения версии могут в значительной степени увеличить время сканирования. Этому также могут поспособствовать настройки некоторых брандмауэров, где есть ограничения на количество ответов. Хотя в Nmap используются параллелизм и различные продвинутые алгоритмы для уменьшения времени сканирования, у пользователя есть возможность полностью контролировать работу программы. Опытные пользователи Nmap задают команды таким образом, чтобы получать только необходимую им информацию и в удовлетворяющие им сроки. Способами увеличения скорости сканирования могут быть пропуск не критичных тестов, или обновление Nmap до последней версии (улучшения производительности выходят довольно часто). Оптимизация параметров опций управления временем также может значительно повлиять на скрость сканирования. Эти опции описаны ниже. Некоторые опции могут принимать параметр время. По умолчанию он задается в миллисекундах, но вы можете добавить ‘s’, ‘m’ или ‘h’ к значению, чтобы задать его в секундах, минутах или часах. Поэтому для опции –host-timeout аргументы 900000, 900s и 15m означают одно и то же. Код: Код:
–min-hostgroup ; –max-hostgroup (Регулирует размер групп для параллельного сканирования)По умолчанию Nmap использует компромиссный подход к решению этой проблемы. Сначала производится сканирование небольших групп из 5-ти хостов, поэтому первые результаты приходят быстро, затем размер группы постепенно увеличивается до максимального – 1024. Точные значения по умолчанию зависят от заданных опций. Для большей эффективности Nmap использует группы больших размеров для UDP сканирования и для некоторых типов TCP сканирования портов. Когда максимальный размер группы задан опцией –max-hostgroup, Nmap не будет его превышать. Минимальный размер группы задается опцией –min-hostgroup, и Nmap будет пытаться поддерживать размер групп больше этого уровня. Возможно Nmap придется использовать группы меньше заданных размеров, когда для выполнения условия минимальности будет не хватать целевых хостов. Эти опции могут быть использованы для удержания размера группы внутри некоторого диапазона, хотя это редко необходимо. Эти опции не имеют эффекта на фазе обнаружения хостов. Там используются обычное ping сканирование (-sP). При сканировании с целью обнаружения хостов всегда используются большие группы для увеличения скорости и точности. Основной целью использования этих опций является задание большого минимума размера группы, с тем чтобы сканирование проходило быстрее. При сканировании сети класса C обычным выбором является 256. При сканировании большого количества портов, превышение этого числа вряд ли поможет. При сканировании лишь нескольких портов, наилучшим размером группы будет 2048 или больше. Код: Код:
–min-parallelism ; –max-parallelism (Регулирует распараллеливание запросов)Наиболее частым вариантом применения является установка опции –min-parallelism в значение большее единицы, чтобы увеличить скорость сканирования плохо работающих хостов и сетей. Это очень рискованная опция, т.к. установка большого значения может повлиять на правильность результатов сканирования. Установка этого значения также сокращает возможности Nmap по динамическому контролю параллелизма в зависимости от условий в сети. Значение равное 10-ти является приемлимым, хотя я прибегаю к этой опции в последнюю очередь. Опция –max-parallelism иногда устанавливается для предотвращения отправки хостам более одного запроса за раз. Это может быть полезно в комбинации с опцией –scan-delay (описывается далее), хотя она и сама справляется со своими обязанностями. Код: Код:
–min-rtt-timeout , –max-rtt-timeout , –initial-rtt-timeout (Регулирует время ожидания ответа на запрос)Задание значений –max-rtt-timeout и –initial-rtt-timeout ниже значений по умолчанию может существенно сократить время сканирования. Это особенно заметно при различных вариантах сканирования с заданной опцией -PN, а также при сканировании сильно фильтруемых сетей. Однако не торопитесь делать этого сразу. Сканирование займет много времени, если вы укажете такое низкое значение, при котором у большинства запросов закончиться время ожидания ответа, и они будут ретранслированы, в то время как ответы на них будут в пути. Если хосты находятся в локальной сети, то 100 миллисекунда будет приемлимым значением опции –max-rtt-timeout. Если при этом производится отслеживание маршурта, то для начала пропингуйте хост в сети с помощью утилиты ICMP ping или hping2, у которой больше шансов обойти брандмауэр. Выясните среднее максимальное значение для, примерно, 10-ти пакетов. Удвойте это значение для передачи опции –initial-rtt-timeout и умножьте на три или четыре для опции –max-rtt-timeout. Обычно я не устанавливаю maximum RTT ниже 100 мс, не зависимо от результатов пингования. А также не превышаю 1000 мс. Опция –min-rtt-timeout редко используется; она может быть полезна, в случае если сеть настолько ненадежна, что даже значения Nmap по умолчанию слишком агрессивны. Так как Nmap просто сокращает время ожидания до минимума, в случае если сеть кажется надежной, то нужды в этой опции нет, о ней дожно быть сообщено как о баге на nmap-dev рассылку. Код: Код:
–max-retries (Задает максимальное количество повторных передач запроса)Значением по умолчанию (без -T шаблона) является 10 ретрансляций. Если сеть кажется надежной, и целевые хосты не имеют ограничений на количество ответов, то Nmap обычно делают одну повторную попытку. Поэтому установка –max-retries в низкое значение (например, 3) никак не вличет на большинство типов сканирования. Такие значения могут значительно увеличить скорость сканирования медленных (с ограничениями на количество ответов) хостов. Обычно вы теряете некоторую информацию, когда Nmap рано прекращает сканировать порты, поэтому лучше дать истечь времени –host-timeout, и потерять всю информацию о цели. Код: Код:
–host-timeout (Прекращает сканирование медленных целей)Код: Код:
–scan-delay ; –max-scan-delay (Регулирует задержку между запросами)Когда Nmap подстраивает задержку между запросами к обнаруженному ограничению, то скорость сканироания значительно уменьшается. Опция –max-scan-delay позволяет задать наибольшую возможную задержку. Установка здесь маленького значения может привести к бесполезной ретрансляции пакетов или возможному пропуску портов, если у цели есть строгий лимит на количество ответов. Еще одним вариантом использования опции –scan-delay является обход пороговых систем обнаружения и предотвращения вторжений (IDS/IPS). Код: Код:
–min-rate (Задает минимальную интенсивность сканирования)Существуют два варианта, при которых реальная интенсивность работы будет меньше заданного минимума. Первый, когда заданный минимум быстрее, чем наиболее быстрый возможный уровень работы Nmap, который зависит от аппаратного обеспечения. В этом случае Nmap будет посылать пакеты так быстро, как может; но будьте осторожны, т.к. при быстрой скорости возможны потери точности. Второй случай, когда у Nmap больше нечего отсылать, например, в конце сканирования, когда последние запросы уже посланы, и Nmap ожидает ответы на них. Это нормально, когда интенсивность падает в конце сканирования или при смене групп сканирования. Задание минимального уровня интенсивности должно производится с осторожностью. Сканирование быстрее, чем возможно в данной сети, может привести к потери точности. В некоторых случаях, задание выского уровня интенсивности может привести к тому, что сканирование займет больше времени, чем с более низким уровнем. Это может произойти в случае, если адаптивные ретрансляционные алгоритмы Nmap обнаружат перегрузку сети, вызванную высоким уровнем интенсивности сканирования, и увеличат количество ретрансляций для повышения точности сканирования. Поэтому, даже хотя пакеты отсылаются с большой интенсивностью, еще больше пакетов отсылается впустую. Установите максимальное количество ретрансляций с помощью опции –max-retries, если вы хотите ограничить общее время сканирования. Опция –min-rate глобальна, она оказывает влияние на все сканирование, а не на отдельные хосты. Учитывается только при сканировании с целью обнаружения хостов и сканировании портов. Другие функции, как например определение ОС, имеют собственные особенности управления временем. Код: Код:
–max-rate (Задает максимальную интенсивность сканирования)–max-rate также как и –min-rate глобальная опция, оказывающая влияние на все сканирование. Учитывается только при сканировании с целью обнаружения хостов и сканировании портов. Иногда уровень интенсивности может превышать максимальное заданное значение для больры с непредвиденными задержками, но в среднем он будет находится на максимальном уровне или ниже. Nmap будет работать с меньшей интенсивностью, если того требуют условия. Чтобы удерживать интенсивность сканирования внутри определенного промежутка, используйте опции –min-rate и –max-rate вместе. Код: Код:
–defeat-rst-ratelimitИспользование этой опции может привести к потери точности сканирования, т.к. Nmap могла не подождать неоходимое время ответа RST (на которые у целевой машины есть ограничения). При сканировании типа SYN не отвечающие порты помечаются как фильтруемые, а не закрытые, как в случае принятия ответа RST. Это опция полезна, только когда вам важны открытые порты, а различать закрытые и фильтруемые порты нет необходимости. Код: Код:
-T paranoid(паранойдный)|sneaky(хитрый)|polite(вежливый)|normal(обычный)|aggressive(агрессивный)|insane(безумный) (Устанавливает шаблон настроек управления временем)Эти опции позволяет определять пользователям, насколько агрессивными они хотят быть, оставляя за Nmap право выбирать подходящие значения опций управления временем. Также шаблоны позволяют производить некоторые незначительные корректировки скорости, для которых пока нет отдельных опций. Например, -T4 запрещает установку динамической задержки во время сканирования выше 10 мс для TCP порт, а -T5 – выше 5 мс. Шаблоны могут использоваться в комбинации с описанными выше опциями; в этом случает будут использоваться в качестве значений аргументы этих опций, а не значения по умолчанию, заданные в шаблонах. Я рекомендую задавать -T4 при сканировании довольно современных и надежных сетей. Задавайте эту опцию, даже если вы используете описанные выше опции управления временем, и вы сможете получить выгоду от этих незначительных оптимизаций, которые включаются этой опцией. Если у вас приличная широкополосная связь или ethernet соединение, то я бы порекомендовал вам всегда использовать -T4. Некоторым людям нравится -T5, хотя она чересчур агрессивна на мой взгляд. Иногда люди используют -T2, потому что думают, что так у них мешьнше шансов пропустить какие-либо хосты или потому, что считают себя вежливыми по жизни. Они часто не осознают, насколько опция -T polite медленна. Время их сканирования может занять в десять раз больше обычного. Проблемы с хостами и пропускной способностью редки при использовании опции (-T3), поэтому я рекомендую ее для осторожного сканирования. Отключение функции определения версии намного более эффективно для сокращения таких проблем, чем попытка настройки всех опций управления временем. Хотя опции -T0 и -T1 могут быть полезны для обхода IDS, они отнимут очень много времени при сканировании тысяч хостов или портов. Для такого сканирования, предпочтительнее будет задать свои точные значения, чем полагаться на опции -T0 и -T1. При использовании опции T0 в любой момент времени производится сканирование только одного порта, и перед отправкой каждого запроса проходит пять минут. T1 и T2 практически одинаковы, только между запросами проходит 15 секунд и 0.4 секунды соответственно. Опция T3 является опцией Nmap по умолчанию, она включает распараллеливание. -T4 эквивалента опциям –max-rtt-timeout 1250 –initial-rtt-timeout 500 –max-retries 6 и устанавливает максимальную задержку при TCP сканировании 10 миллисекунд. T5 эквивалента опциям –max-rtt-timeout 300 –min-rtt-timeout 50 –initial-rtt-timeout 250 –max-retries 2 –host-timeout 15m и устанавливает максимальную задержку при TCP сканировании 5 миллисекунд. Читать далее Как обойти брандмауэры при сканировании nmap |
| Время: 07:26 |