[Перевод] Конференция DEFCON 16. Фёдор, хакер InSecure.org. NMAP-cканирование Интернет
Добрый день, меня зовут Фёдор, я из InSecure.org и я являюсь автором проекта сканера безопасности Nmap, выпущенного в свет в 1997 году. Я хотел бы поблагодарить всех, кто сюда пришёл, и сам Defcon за то, что меня сюда пригласили. Я большой поклонник таких конференций, куда могут прийти люди, испытывающие настоящую страсть к любительским технологиям, но не имеющие компаний, которые готовы заплатить тысячи долларов за билет.
Хочу предупредить вас, что это разговор не о том, как проводить кросс-сайтовые скриптовые атаки на социальные сети или как взламывать каналы Twitter. Речь пойдёт о сканировании портов и о чём-то большем, чем сканирование портов, и если вам не нравится сканирование портов, то следующие 50 минут станут для вас худшим из кошмаров.
Потому что для меня говорить о чём-то другом будет так же непривычно, как услышать Дэна Камински, который не рассказывает о DNS. Я имею в виду, что я могу ринуться в обнаружение некоторых ОС или действие обработчика скриптов Nmap так же, как Дэн может взять свой DNS и использовать его для туннелирования YouTube, чтобы обдурить какого-нибудь болвана, но в обоих случаях мы просто расширяем свою ключевую тему.
Моя тема, как видно из первого слайда, посвящена сканированию интернета. Я потратил много времени этим летом, сканируя десятков миллионов хостов в интернете и собирая необходимые данные.
И когда я рассказываю об этом людям, они часто спрашивают: «Зачем»? Для меня сканирование является ценным само по себе, но если вам нужна какая-то причина, то в данном случае в этом случае у меня были некоторые конкретные цели проекта. Первая — это собрать эмпирические данные и использовать их для расширения и улучшения функциональности Nmap, мы поговорим об этом чуть позже.
Вторая цель — использовать данные для того, чтобы помочь знающим людям выполнять сканирование более эффективно. Есть множество людей, собирающих информацию о структурировании и населённости сетей, чтобы узнать, какие методы сканирования подходят лучше всего. Но обычно они задаются вопросом, как настроить существующие инструменты сканирования, не находя ничего подходящего. Так что вы сможете использовать мои эмпирические данные для своих собственных нужд, они помогут узнать, как проводить сканирование и собирать результаты.
Третья цель состоит в том, чтобы обнаружить и устранить ошибки Nmap и повысить производительность для широкомасштабного сканирования. Потому что сканирование миллионов хостов выполняется в самых разных ситуациях, и при этом можно отследить, как Nmap на это реагирует. Мне удалось исправить ошибки, вызывающие сбой или «зависание» системы, ускорить процесс, выяснив, что именно вызывает замедление сканирования.
Четвёртая цель состоит в том, чтобы продемонстрировать технологии, которые можно использовать как для привычного сканирования, так и для широкомасштабного сканирования Интернета.
Идея состоит в том, что если это сканирование работает для 25 миллионов хостов, то оно наверняка справится со сканированием 25 тысяч хостов или сколько вам нужно просканировать.
Давайте рассмотрим проблемы, с которыми мне пришлось столкнуться при сканировании. В первую очередь я хочу сказать, что лучше проводить десятки больших, но целевых сканирований вместо одного огромного сканирования. Каждая из таких целей позволяет собрать полезные данные определённого рода, но проблемой является определение конкретных IP-адресов, которые нужно просканировать.
Для этого существует много возможностей: таблицы маршрутизации BGP, которые позволяют узнать, какие сети маршрутизированы, файлы DNS-зон, таблицы распределения регистров и т.д.
Я решил использовать собственный скриптовый генератор IP-адресов Nmap, позволяющий создать 25 000 000 IP-адресов, и ещё дополнительные 200 тысяч я сделал из-за возможных дубликатов. При этом фактически сканируются не компьютеры, а их список, потому что сами машины я сканирую позже. В результате я получил список из 25 миллионов IP-адресов, который я использовал для сканирования. Это был способ генерации случайных номеров, но как только у вас появляются конкретные цели, которые нужно просканировать, возникает следующий вопрос: какой источник вы собираетесь использовать.
Здесь у меня было много идей, одна безумнее другой, например, P2P-сканирование. Я собирался распространять клиент под названием Nmapster, который люди могли бы скачать. Он просканировал бы их компьютеры и сообщил, что мы собираем данные для обобщения. Но я решил, что ключевая цель — это сделать Nmap быстрее и эффективнее для повседневного сканирования и что лучше сосредоточиться на использовании самого Nmap, вместо того, чтобы создавать для него пользовательские программы.
Вторым большим препятствием была незаконность подобных действий. Когда вы сканируете много хостов, люди могут возмутиться, а я не хочу, чтобы мой интернет-провайдер снова отказал мне в предоставлении услуг, но возможность быть арестованным выглядит ещё хуже. Поэтому решил выходить в сеть через бесплатную беспроводную точку доступа моей соседки (аплодисменты и смех в зале).
Да нет, я просто шучу, к тому же у интернет-канала моей соседки не хватило бы пропускной способности для обработки такого количества трафика, который мне был нужен.
Поэтому я решил воспользоваться ISP, которого я использую для колокации, и выполнять сканирование оттуда, то есть через оборудование, расположенное на его территории. Через 15 минут после начала сканирования эти парни связались со мной, лихорадочно спрашивая, что, чёрт возьми, происходит, может, мой компьютер заражен самым страшным червем в интернете, потому что он сходит с ума и зондирует тысячи машин в секунду по всему интернету! Они предложили отключить меня, но я объяснил, чтобы они не волновались, я не пострадал, я делаю это для определённой цели. Тогда они подумали, что я какой-то спамер или даже хуже, если такое возможно, и меня вообще нужно арестовать. Тут я испугался и подумал, что мне конец, мне придётся бросить мой проект и начать заниматься исследованием кросс-сайтовой уязвимости. К счастью, оказалось, что они были пользователями Nmap и мне удалось объяснить, что это сканирование нужно для того, чтобы сделать мою программу более эффективной и производительной. На что они сказали: «ну что же, тогда можете продолжать»!
Я немного уменьшил скорость сканирования, потому что не хотел, чтобы у них перегорели предохранители, и продолжил это великое дело. К несчастью, Министерство обороны США было не так любезно, им совсем не понравилось моё сканирование, и они заявили, чтобы я прекратил сканировать важные военные объекты. Я подумал, что тут мне пригодится возможность Nmap пропускать сканирование определённых сетей, но они даже не дали бы мне определить эти сети, потому что они тоже являлись военными объектами. Так что с тех пор я немного нервничаю, если над моей головой пролетают военные самолёты.
Следующим препятствием для сканирования стали брандмауэры. Для некоторых случаев мне достаточно было получить результаты из незащищённого сегмента интернета, но для других было бы неплохо изучить, как это выглядит за файрволами компаний. Вы знаете, что они часто контролируют разные порты, поэтому изнутри открытая сеть выглядит совсем по-другому. С удовольствием скажу, что я смог пробиться через ряд файрволов не с помощью чего-то вроде продвинутой атаки фрагментации, а с помощью технологий, которые просто «просили» их предоставить нужные данные.
Существует множество крупных компаний, которые ежедневно сканируют свои сети с помощью Nmap, и они были счастливы внести свой вклад в виде данных, которые помогут его улучшить.
Следующими проблемами стали производительность и точность. Сканирование интернета это долгая и тяжелая работа. Ключевой целью стало улучшение производительность Nmap, потому что статистика его использования была неутешительной:
- прошло времени с начала сканирования 93 ч 57 мин. 40 с (более 4-х дней);
- всего за это время из 254868 запланированных хостов проведено UDP сканирование 65000 портов, находящихся на 2048 хостах;
- за это время выполнено UDP сканирование около 11.34% запланированного количества, время на сканирование остальных хостов составит 688 ч 41 мин 48 с.
Когда ваша оценка оставшегося времени приводит к «переполнению целых чисел» и приносит один негатив, это не слишком обнадеживающий признак. Это конкретное сканирование все еще выполняется, и возможно, на конференции DEFCON в следующем году я расскажу, что из этого получилось. К счастью, некоторые из других наших сканирований закончились намного раньше, так что это своего рода введение в то, какие виды сканирования мы выполняли и почему.
Теперь давайте перейдем к более практичным советам, которые могут служить полезными деталями и дадут вам знать, как можно использовать это в качестве помощи для своего собственного сканирования. Хорошим началом является обнаружение хостов, потому что первое, что вы хотите сделать при разведке сети — это обнаружить месторасположение хоста и выяснить, какие сети доступны для сканирования. Поэтому вы не должны тратить время на сканирование IP-адресов, которые не прослушиваются хостами, и принять решение, какими методами выполнять сканирование.
Было время, когда большинство хостов отвечали на ICMP эхо-запросы или пинговали пакеты, которые Nmap по умолчанию направлял 80-му порту, но к сожалению, это время закончилось 10 лет назад.
Сейчас большинство компаний блокируют пакеты пингов и мне пришлось использовать более эффективные методы.
Первым был TCP-метод обнаружения хостов с использованием синтетических пакетов SYN (-PS), лучше всего действующих против файрволов со статической фильтрацией, которые используют постоянный список исключений, и с применением пакетов ACK (-PA), эффективных против файрволов с динамической фильтрацией.
Те брандмауэры, которые пропускают синтетические пакеты, обычно блокируют пакеты ACK, и наоборот.
Я покажу быстрый пример использования Nmap с синтетическим пакетом для порта 80 сайта sun.com. Как видите, ответ пришёл очень быстро и он показывает, что хост доступен.
Затем мы используем для этого же хоста пакеты ACK, вы видите, что сканирование заняло больше времени, и хост нам не ответил, потому что заблокировал зондирование пингами.
Таким образом, можно понять, какой файрвол установлен на этом хосте — со статической или с динамической фильтрацией. В данном случае у нас имеется статический файрвол, который пропустил пакеты SYN и заблокировал пакеты ACK.
Может возникнуть вопрос, какое же зондирование портов лучше использовать. Я отвечу — нужно посылать оба вида пакетов, пока хост не пропустит один из них.
Следующим вопрос состоит в том, какой порт нужно использовать. У вас имеется 65 тысяч портов, и часто невозможно выбрать те, которые работают лучше всего. Поэтому я сделал выборку портов на основе эмпирических данных, которая показана на следующем слайде. Это лучшая 10-ка портов для обнаружения хостов определённых типов.
Некоторые люди могут посмотреть на этот список и спросить, а где же самые распространённые Windows порты 135 или 139?
Однако помните, что я создавал свою базу данных на основе хорошо защищённых хостов, поэтому если вы испытываете проблемы с установкой брандмауэра, вам лучше блокировать эти порты Windows. Часть этих портов я бы рекомендовал «прощупывать» SYN-пакетами, другую часть — пакетами ACK.
Далее у нас имеется обнаружение хостов UDP. В этом случае закрытые UDP-порты лучше открытых, потому что они более склонны к ответу. Открытые порты, получая чистый пакет, не знают, что с ним делать и просто игнорируют его. Закрытые же порты обычно отвечают такому пакету запретом, и это означает, что здесь находится хост. Порт 53 часто попадает в исключения файервола, потому что предназначен для DNS.
Я также использовал ICMP-метод обнаружения хоста (PE, PM, PP). Некоторые системы охотно принимают эхо-запросы, зато блокируют остальные. Например, администраторы Google.com не видят угрозы в приёме пакетов пинга, но блокируют запросы маски сети и метки времени, потому что считают, что их используют хакеры.
Другие администраторы явно блокируют эхо-запросы как хакерские, но забывают про блокировку запросов маски сети и штампа времени netmask/timestamp. Поэтому советую использовать оба вида запросов — эхо-запрос и один из запросов второго вида.
У нас имеется также новая возможность, которая называется Protocol Ping (PO). По умолчанию этот протокол использует 3 вида IP-пакетов: 1 (ICMP), 2 (IGMP) и 4 (IPinIP) с целью получения доступного ответа, если хост «жив». Я не проводил тестирование, чтобы выяснить, какие протоколы наиболее полезны, поэтому по умолчанию используются все 3.
Сейчас я хочу рассказать о различных технологиях обнаружения хостов, которые использовал, и вы можете спросить, какие из этой кучи наиболее ценны и какая между ними разница. На слайде приведён пример, когда я сгенерировал 50 тысяч IP-адресов и использовал сканирование пинга по умолчанию, в результате чего было найдено 3348 хостов за 1600 с, или 27 минут.
Это достаточно много компьютеров, и данное сканирование выглядит довольно успешным. Но затем я решил использовать «продвинутое» сканирование, взял практически такой же список из 50 тысяч хостов и добавил несколько разных техник обнаружения, таких как эхо-ответ, метки времени, SYN-зондирование кучи портов и установил исходный порт 53 для того, чтобы замаскироваться под DNS. Это позволило обнаружить 4473 «живых» хоста, но зато заняло немного больше времени — 4259 с.
Сравнение этих двух способов сканирования — с параметрами по умолчанию и «продвинутого» — показало, что второй занял на 167% больше времени (41 минута против 27) и обнаружил на 34% больше хостов.
Сейчас я хочу рассказать об апгрейдах Nmap, которые были проведёны на основе этих исследований.
На сайте http://nmap.org/changelog.html приведена последняя версия Nmap 4.68, в которой были устранены ошибки и улучшена производительность. Имеется также новейший SVN-релиз, с которым можно ознакомиться по ссылке http://nmap.org/book/install.html#instsvn.
Я устал от сообщений об ошибках, где говорится, что «да, мы исправили это в 2003 году», потому что существует много людей, которые не хотят выполнять частые обновления. Потом они жалуются на то, что программа Nmap давно устарела, потому что она говорит вам, какие номера портов открыты, но не сообщает, какие службы находятся за ними. В последнее время я добавил в программу ряд усовершенствований, и если вам нужна самая продвинутая версия программы — релиз BHD CO 8 Black Hat DefCon, его можно найти по специальной ссылке svn://svn.insecure.org/nmapexp/bhdc08 с использованием гостевого логина и пароля. Эта новейшая версия содержит функцию сканирования Top Ports и некоторые другие особенности, о которых я расскажу позже.
Итак, проект Top Ports представляет собой ещё одно большое сканирование миллионов IP-адресов для обнаружения открытых TCP и UDP портов с помощью выборки популярных портов. Некоторые крупные организации также предоставили возможность сканировать данные внутренних сетей, расположенные за файрволами. При этом служебные файлы Nmap были дополнены данными частот каждого порта.
Рассмотрим порты, которые сканировались по умолчанию. Nmap 4.68 просканировал 1715 портов TCP и 1488 портов UDP, сканировались порты от 1 до 1024 и все именные высшие порты. Отмечу, что множество портов были придуманы много лет назад и уже давно не используются. В то же время имеется множество открытых безымянных портов.
Конечная версия Nmap использовала частотные данные Top 1000 портов для каждого протокола, поэтому во многих случаях я получил лучшие результаты. Это позволило не тратить время на сканирование старых неиспользуемых портов, таким образом, сканирование протекает быстрее, потому что фактически сканируется чуть больше половины всех существующих портов.
Быстрое сканирование сильно отличается от сканирования по умолчанию. В Nmap оно обозначается литерой (-F). На этот раз Nmap 4.68 просканировал 1276 портов TCP и 1017 портов UDP по всему диапазону номеров. Вы можете спросить, почему сканирование по умолчанию обработало больше портов, но тут нет ничего драматического — быстрое сканирование просто заняло меньше времени. Однако в данном случае сканер не проверял все существующие порты, а работал только с теми, чьи имена были в новом служебном файле Nmap. В результате сканирование производилось для TOP 100 портов для каждого протокола, и я получил выигрыш в скорости на порядок больше, чем при сканировании по умолчанию. Это намного полезнее для протокола TCP и ещё более полезно для UDP, потому что я знаю, что многие люди никогда не выполняют UDP-сканирование, считая его очень трудоёмким и сложным в отношении фильтрации открытых портов. Поэтому они притворяются, что UDP просто не существует. Однако хакеры не притворяются, поэтому нам очень важно понять, что происходит с этим протоколом.
На следующем слайде показаны примеры быстрого сканирования с использованием разных версий Nmap. Буква U в обозначении режима сканирования Nmap — sUV — F-T4 указывает на UDP-порт, F — быстрое сканирование. В этой открытой версии присутствует проблема фильтрации, так как Nmap не получает ответа и не может определить, отфильтрован ли порт или открыт. Такое происходит, если вы используете версию с сайта scanme.nmap.org. Поэтому здорово, что мне удалось получить отчёт с данными, которые показывали все открытые и отфильтрованные порты.
Таким образом, сканирование с помощью Nmap 4.68 заняло час, сканирование с релизной версией Blackhat DefCon 08 продолжалось 6 с половиной минут, сканирование с «продвинутой» версией Blackhat DefCon 08 составило всего 13 с. Все 3 версии нашли один и тот же открытый порт 53.
В новых версиях использовались новые функции сканирования:
- top-ports
Она сканировала наиболее популярные открытые порты каждым требуемым протоколом, а функция:
–port-ratio
где n выбиралось между 0 и 1, сканировало все порты с частотой, установленной на данном уровне.
Последняя версия работала с флагом »—version—intensity 0». Это означало, что UDP-запросы отправлялись на определённые порты по определённым протоколам, то есть для 53 пробовался только DNS, для 161 порта только SNMP и т.д. Это позволило сократить время сканирования до 13 секунд.
Мораль этой истории заключается в том, что если вы знаете, какие данные вам действительно нужны, можно немного оптимизировать сканирование и сделать его намного быстрее. В этом случае мы получили те же данные, но вместо часового ожидания ждали всего 13 секунд. Так что настройка функций очень помогает, особенно функция топ-портов. Нужно просто выбрать между дефолтным сканированием 1000 портов и быстрым сканированием 100 портов и указать произвольно, сколько портов вы хотите сканировать.
Здесь возникает вопрос, какая функция Top Ports работает лучше. Далее на слайде показан Top-10 портов TCP и выборка эффективности «топов», которую я сделал на основе эмпирических данных. Эта выборка показывает, сколько открытых портов я нашёл, используя тот или иной «топ».
Если использовать самое быстрое сканирование «десятки» портов, можно обнаружить чуть больше половины открытых TCP-портов. Используя «Топ-100» портов, можно обнаружить 73% открытых портов, использование по умолчанию «Топ-1000» обнаруживает 93%, но при этом вы сканируете всего лишь 2% от 65 тысячного пространства портов.
Далее я приведу статистику нахождения открытых UDP-портов. Здесь доминируют типичные порты Microsoft, хотя имеются и SNMP и NTP.
Эффективность UDP отличается от эффективности TCP, здесь больший процент открытых портов определяется при меньших значениях «топа». Так, «Топ-100» UDP даёт обнаружить 90% портов против 73% для TCP.
Я использовал ещё одну функцию, которую разработал недавно, это контроль скорости пакетов Packet Rate Control.
В её отношении я испытываю смешанные чувства. Я горжусь контролем загрузки Nmap и другими технологиями, позволяющими выяснить, какая скорость сканирования будет работать лучше. Но есть много людей, которые говорят, что хотели бы просто сканировать порты с определённой частотой и не беспокоиться, если какие-то пакеты потеряются. Это одна из причин, по которой они используют сканеры типа RAND или Unicorn. Для таких случаев я решил добавить функцию, которая устанавливает максимальную и минимальную частоту отправки пакетов в секунду.
Она оказалась очень полезной, когда я чуть не «расплавил предохранители» моего интернет-хостинга, потому что я смог задать параметр сканирования для Nmap с частотой 300 пакетов/с и сделать этих ребят из ISP немного счастливее.
На следующем слайде показан пример, как разместить вместе все полезные функции Nmap.
Здесь вводится исходный IP-адрес, который я хотел использовать для этого конкретного сканирования и указывается режим отладки. Эту функцию я часто использовал для взаимодействия с программой во время выполнения сканирования, потому что люди не знают, что можно нажать клавишу D и открыть режим отладки, а если нажать на неё несколько раз, то можно будет прокрутить экран и увидеть, что Nmap делает в данный момент.
Здесь я использовал низкую задержку, так как не хотел долго ждать хостов, для которых была ограничена частота пакетов. Я применил функцию создания файла журнала с использованием функции значений времени STRF, которая автоматически проставляет дату и время.
Далее я ввёл имя файла, который хочу в итоге получить и отметил, что не хочу делать более чем 1 повторную попытку сканирования, потому что собираюсь выполнить большой объём сканирования как можно быстрее.
Далее здесь отмечена рандомизация хостов, перечислены номера сканируемых портов, указана большая группа МАС-адресов хостов, минимальная частота сканирования 175 пакетов в секунду и максимальная 300 пакетов в секунду.
Это пример того, как я всё время изменял и улучшал алгоритм работы Nmap, пока не находил вариант, который работал лучше других.
А теперь я хочу использовать оставшееся время, чтобы рассказать вам последние новости Nmap. Некоторые из них — это новые и интересные функции, например, скриптовый движок NSE. Это модульный механизм, который опрашивает порты определённым образом. В этом случае мы делаем HTML-заголовки для веб-сайтов, которые он находит.
Сейчас существует более 50 скриптов, поддерживаемых Nmap, совместимых с данными Whois, паролями brute-forcing pop3 и прочими сумасшедшими вещами, которые вы хотите использовать.
Сейчас я вам быстро продемонстрирую, как работает Nmap Scripting Engine.
Это длинная команда, поэтому я скопирую её из другого места. Она оговаривает подробный режим Nmap — не пинговать, выполнить UDP зондирование для порта 53, использовать агрессивный тайминг и применить здесь 3 скрипта, что поможет избежать ошибки DNS, о которой Дэн рассказывал в прошлое воскресенье. Один скрипт просто проверяет, разрешает ли DNS-сервер рекурсию, второй проверяет, рандомизирует ли он исходные номера портов, а третий проверяет, есть ли у него идентификатор рандомизированной транзакции. Это те ошибки, которые люди хотят исправить для уменьшения проблемы «отравления» кеша.
В нашем случае я хочу продемонстрировать работу NSE во время сканирования портов одного из серверов BlackHat и одного из серверов Shmoo.com. Это занимает немного времени, а затем прямо рядом с номером порта выводится результат.
Вы видите, что для blackhat.com с IP-адресом 216.231.64.55 при UDP сканировании порта 53 в обоих случаях был получен отказ рекурсии сервера, поэтому его не удалось «допросить» дальше. Для сервера archimedes.shmoo.com с IP-адресом 12.21.210.234 рекурсия состоялась. Но я рад сообщить, что это было здорово с точки зрения рандомизации портов.
Я хотел показать один из немногих примеров, когда моя затея с треском провалилась, так что здесь можно было бы сыграть в игру «кто первым сможет отравить кеш», но решил, что это не самая хорошая идея для нашей презентации. Кроме того, у меня есть более интересный материал на волнующую меня тему — это новый графический интерфейс Zenmap GUI.
Многие люди говорят, что им не нужен графический интерфейс, потому что они работают с Nmap уже 10 лет и знают все его 130 опций до мозга костей. Однако этот интерфейс является мощным инструментом для работы со сканером, что я сейчас быстро продемонстрирую.
Здесь показывается окно с выходными данными, каждый открытый хост, можно задать фильтрацию отображения HTTP или SSH и так далее. Кроме того, в новейшую версию сканера мы добавили интересную возможность. Для тех людей, которые говорят: «раз вы назвали этот инструмент Н-картой, так дайте мне, чёрт возьми, эту самую карту!», мы добавили графическую схему топологии сканируемой сети.
Это достаточно точная вещь, которая рисует результат сканирования сети и помещает его в центр исходного узла, а в концентрических кругах вокруг этого центра показан каждый прыжок в сеть и компьютеры, которые вы сканировали. Вы можете взять такой узел и сказать: «Эй, а ну-ка покажите мне, какие еще имеются данные по этому конкретному сканированию, покажите мне открытые порты и т.д.», то есть при наведении на жёлтый кружок открывается окно со всеми деталями проведённого сканирования. Вы можете выполнить сканирование новых машин и они тоже будут добавлены на схему. Можно также отцентрировать схему относительно другого хоста — просто нажмите на узел и перетащите его в нужном направлении.
Ещё один большой плюс графического интерфейса — это то, что теперь с Nmap смогут работать пользователи Windows, которые понятия не имеют, как можно управлять программой с помощью командной строки. Я уже получал от них письма, в которых было написано: «я дважды щелкнул по иконке nmap.exe на рабочем столе, после чего на секунду выскочил какой-то чёрный ящик, а потом всё исчезло. Очевидно, ваша программа совершенно не работоспособна». Так что я надеюсь, что Zenmap GUI им поможет. Хотя, с другой стороны, может таким людям вообще не стоит пользоваться Nmap.
У нас также имеется система обнаружения ОС второго поколения.
Она воплотила в себе всё, что я изучил относительно обнаружения OS за предыдущее 7 лет, и содержит в себе 1500 подписей новых операционных систем. Так что пользователи Nmap смогут найти на нашем сайте nmap.org любой инструмент, какой только можно вообразить, и скачать версию программы для Windows или Linux. У нас есть также инструмент для обнаружения версий ПО.
Есть ещё функция, которая называется Reason (Причина). Это своеобразный фильтр, который показывает, по какой причине произошло открытие того или иного порта — из-за использования синтетических или ACK-пакетов, или по какой причине произошло закрытие порта, например, из-за перезагрузки.
Это очень хороший инструмент для понимания того, что, собственно, делает Nmap. Следующая функция, которая может предоставить вам много полезной информации, называется «Трассировка пакетов», или Packet trace.
Благодаря ей я могу узнать, является ли порт 25 конечным хостом, возвращающим мне пакеты, или их отбрасывает назад файрвол. Просмотрев трассировку пакетов во время быстрого сканирования Nmap, я могу сказать, с каким устройством они взаимодействуют. Здесь можно увидеть частоту, используемые опции сканирования, IP ID, и с помощью этой функции я могу выяснить, один и тот же хост отправлял мне пакеты в обоих случаях или нет. Это является полезным для понимания используемых файрволов и фильтрующих систем.
Ещё одна функция под названием «Продвинутая маршрутизация трассировки» Advanced Traceroute показывает, какой вид зондирования лучше использовать для проникновения. Эта быстрая функция, потому что Nmap может выполнять её параллельно сканированию.
Далее я сделал несколько улучшений производительности и точности сканирования.
Есть целый раздел на главной странице интерфейса программы, который показывает все опции, которые вы можете использовать для работы. Далее у нас есть опция заголовков TCP и IP, которая позволяет указать исходный маршрут или исходную запись.
Многие из вас скажут, что исходные маршруты были нужны 15 лет назад и сейчас это никому не надо. Но я общался с одним парнем, который недавно тестировал локальную сеть в одной компании. Она была расположена в чём-то типа конференц-зала и могла соединяться только с серверами определённой серии, поэтому ему не удалось установить контакт со всеми компьютерами компании. У них было создано что-то вроде DMZ для доступа к конференц-залу. Тогда этот парень взял один из их серверов и проиграл через него исходный маршрут, нашёл компьютер назначения и таким образом смог обойти это ограничение.
Мы разработали ещё один совершенно новый инструмент под названием Ncat.
Это современная интерпретация Netcat почтенного Хоббита. Она виртуально поддерживает все функции Netcat 1.10, кроме базового сканера портов, потому что я больше люблю использовать свой Nmap в качестве сканера. Она также поддерживает множество новых «крутых» функций: SSL, IPv6 на разных платформах под управлением Linux, Windows, Mac OS, сетевое посредничество, перенаправление портов, прокси (клиент, сервер, цепочка) для сканирования через другой компьютер, исполнение оболочки, контроль доступа и т.д. Эта программа была создана Крисом Каттерджоном в 2005 году и сейчас полностью готова к релизу. Крис также добавил некоторые функции, такие как IP-опции и режим обнаружения пинга.
Следующим инструментом является Ndiff, появления которого давно многие дожидаются.
Эта утилита сравнивает результаты двух или более сканирований и показывает изменения: новые или удалённые хосты, порты, изменённые службы и т.д. Она прекрасно подходит для быстрого обнаружения изменений при повторном сканировании. Например, ежедневно я сканирую сеть какой-то компании, а в конце работы вызываю эту утилиту и говорю: «пришли мне на почту изменения, которые произошли со вчерашнего дня». Так я могу увидеть новые открытые порты, добавленные компьютеры и так далее.
Наконец, я хочу показать вам мою книгу «Сканирование сетей при помощи Nmap», я работал над ней несколько лет. В ней говорится не только о возможностях моего сетевого сканера, но и о техниках сканирования сети.
Я напечатал 170 экземпляров этой книги, которые хочу здесь раздать, но боюсь, что их начнут продавать на следующее утро. Книга также будет продаваться на Amazon и&nbs