Решающее для популярности nmap значение сыграла статья "Искусство сканирования" (The art of scanning), которую Fyodor написал в 1997 году для известного андеграунд-журнала Phrack. К статье прилагался исходный код сканера на языке С, что дало возможность каждому технически подкованному специалисту опробовать новый инструмент в действии. К тому моменту nmap поддерживал девять методов сканирования, в числе которых были и достаточно изысканные.
История проекта nmap (Network MAPper - составитель карты сети) достаточно долгая и не лишена увлекательности. Доказательством популярности пакета может служить огромное количество загруженных с официального сайта ( www.insecure.org/mnap/) копий программы. В пользу этого утверждения свидетельствует и тот факт, что код nmap, разрабатывавшийся для Unix-платформы, был впоследствии перенесен на платформу Windows, а интерфейс командной строки был удачно дополнен графическим интерфейсом (front-end).
Истоки
История проекта nmap началась почти десять лет назад, когда хакер Fyodor Yarochkin занялся изучением свойств стека TCP/IP. Разумеется, практика - наилучший способ познать неизведанное, и в этом Fyodor преуспел. На момент начала проекта nmap в сетевом мире уже существовало с полдюжины различных сканеров портов. Все они обладали интересными свойствами и вполне успешно применялись специалистами. Но важнее всего было то, что каждая программа демонстрировала тот или иной подход к реализации концепции сканирования сети. Так, сканер pscan, созданный хакером Pluvius, показывал отличную производительность, а реализовать vanilla-scan (его еще называют TCP connect(), согласно ключевому признаку взаимодействия с сетью) сможет любой программист, начавший изучать сетевое программирование. Fyodor начал работу с того, что объединил известные на тот момент сканеры в единый пакет. Но к этому занятию он подошел творчески, то есть переписал практически весь код заново. Со временем путем экспериментов на собственной сети и благодаря постоянному обмену информацией с хакерами со всего мира Fyodor создал уникальный инструмент, позволяющий производить сканирование с помощью множества различных способов.
Пожалуй, решающее для популярности nmap значение сыграла статья "Искусство сканирования" (The art of scanning), которую Fyodor написал в 1997 году для известного андеграунд-журнала Phrack ( www.phrack.org/show.php?p=51&a=11). К статье прилагался исходный код сканера на языке С, что дало возможность каждому технически подкованному специалисту опробовать новый инструмент в действии. К тому моменту nmap поддерживал девять методов сканирования, в числе которых были и достаточно изысканные.
На мой взгляд, весьма важным и прогрессивным является так называемый Idle scan, предложенный хакером Antirez. Эта технология до сих пор используется редко даже хакерами, многие компании не предпринимают мер по предотвращению подобных атак, а производители сетевых средств просто игнорируют данную проблему (и это несмотря на то, что о ней известно с 1998 года, а разработчики технологии выпустили документ, подробно описывающий технику сканирования, возможные последствия атаки и даже меры, которые необходимо предпринять, чтобы защитить свою сеть).
Было бы естественно ожидать, что со временем проект nmap постепенно "затухнет". Это обычное явление для подобных проектов: со временем изменения выходят все реже, так как большая часть функций уже реализована создателями, а команда разработчиков переключается на другие проекты. Но nmap удалось избежать этой участи.
Во-первых, в 2000 году Fyodor создал web-сервер www.insecure.org, посвященный исследованию вопросов сетевой безопасности. Конечно, этот проект преследовал цель популяризации nmap: на сайте всегда можно найти новости, касающиеся программы, подробное описание методик сканирования для начинающих и самые новые версии программы для всех поддерживаемых платформ.
Однако все это - привычные атрибуты большинства современных web-серверов. Fyodor пошел намного дальше, создав сообщество хакеров, которых объединяла полезная программа и желание совершенствовать свои познания в области взаимодействия сетей. Во-первых, создание электронного списка рассылки (который впоследствии разделился на несколько, в соответствии с интересами участников) позволило ускорить развитие пакета nmap, ибо в число активных разработчиков вошло немало квалифицированных хакеров. Во-вторых, с течением времени Insecure.org стал местом, где специалисты стали обмениваться свежими идеями и результатами экспериментов. В общем, посещение этого web-узла вошло в привычку как у хакеров, так и у сотрудников подразделений информационной безопасности спецслужб.
А что же nmap? Пакет продолжил свое развитие в новом направлении. На этот раз Fyodor уделил внимание технологии активного распознавания операционной системы на удаленном узле по отпечатку TCP/IP. Это - достаточно интересная задача, поэтому в проект были вовлечены лучшие специалисты. Объединенные усилия дали поразительный результат: nmap смог определять с большой долей вероятности многие ОС как удаленных узлов, так и интеллектуальных сетевых устройств (маршрутизаторов, межсетевых экранов). Впоследствии программа пополнилась уникальным средством сбора неизвестных "отпечатков" ОС. Каждый пользователь nmap мог без лишних усилий пополнить общую базу знаний новыми данными, отправив их по Интернет. Благодаря этому техническому решению система стала очень быстро наполняться за счет данных, приходящих от тысяч хакеров, использующих в своей практике этот инструмент. Сейчас в базе свыше тысячи "отпечатков". При этом система опознает не только маршрутизаторы, но и такие "экзотические" сетевые устройства, как игровые консоли, телефоны, управленческие АТС, наладонные компьютеры и даже web-камеры.
Fyodor тем временем выпустил новую статью - "Определение удаленной ОС с помощью отпечатка стека TCP/IP" (Remote OS detection via TCP/IP Stack FingerPrinting), которая была опубликована в 54-м выпуске журнала "Phrack" ( http://www.phrack.org/show.php?p=54&a=9) и вызвала новую волну интереса к nmap.
Новая история
Теперь Fyodor'у пришлось не только развивать nmap или создавать сообщество хакеров, но и управлять их творческой энергией. Со временем необходимость применения nmap при настройке сети осознали многие системные администраторы. Логика проста: лучше самостоятельно узнать об уязвимостях своей сети и устранить их, чем восстанавливать инфраструктуру после вторжения извне. Так nmap открыл себе путь во все ключевые дистрибутивы Linux. Он стал обязательным пакетом даже во многих "урезанных" дистрибутивных версиях, так как предоставлял множество полезных диагностических функций и мог с успехом заменить такие программы, как ping.
Настоящий триумф среди представителей компьютерного андеграунда ждал nmap летом 2003 года, когда на экраны кинотеатров вышел фильм The Matrix Reloaded. В нашумевшем блокбастере есть сцена реального взлома, когда Trinity использует nmap версии 2.54 Beta, чтобы найти уязвимый SSH-сервер, а затем взламывает его.
На протяжении первой половины 2003 года Fyodor выпускал лишь незначительные дополнения к своему пакету. Складывалось впечатление, что проект теряет динамику - ничего кардинально нового уже не появлялось. Однако в самом начале сентября автор программы распространил сообщение, в котором призывал сообщество пользователей загрузить новую версию nmap и широко тестировать новую возможность пакета - автоматическое определение версий сервисов удаленного узла. Это была настоящая революция! Из простого диагностического средства nmap вдруг превратился в инструмент подготовки сетевых атак.
Новая функциональность nmap пришлась по вкусу многим, ведь она избавляет от многих рутинных операций. Раньше хакеру для проведения атаки было нужно выполнить множество подготовительных операций, а уверенности в правильности сделанных шагов не было ни у кого. Сначала нужно было просканировать сеть, чтобы узнать, какие сервисы доступны на каждом узле. Затем желательно определить ОС и ее версию, чтобы сориентироваться, с какими уязвимостями он будет иметь дело. Наконец, необходимо выяснить, какая служба работает на каждом из активных портов (в последнее время системные администраторы в целях повышения безопасности стали запускать традиционные сервисы на непривычных портах). Только после этого хакер мог хотя бы приблизительно представить себе метод проникновения в систему.
Теперь все шаги nmap выполняет автоматически (сканирование портов множеством методов, определение ОС и степень ее уязвимости), а сейчас еще и идентифицирует запущенные сервисы и даже их версии! В качестве бесплатного "бонуса" - способность nmap взаимодействовать с портами узлов по защищенным SSL-соединениям, так что даже шифрование канала уже не эффективно. Учитывая то, что для сбора "отпечатков" служб используется уже опробованная методика электронной отсылки сообщений, можно признать, что база знаний nmap пополняется сегодня стремительно. Новые релизы появляются регулярно, и это дает возможность опознавать самые новые ОС и сетевые устройства. Для тех, кто только начинает познавать азы сетевого взаимодействия, Fyodor выпустил документ, подробно описывающий ключевые особенности распознавания сервисов удаленного узла, а также как этими возможностями воспользоваться в конкретных ситуациях. Благодаря такой информационной поддержке nmap пользуется популярностью даже среди новичков.
Чего нет в nmap?
Казалось бы, nmap имеет шансы стать универсальным средством проникновения... Но не все так просто, и помимо этого пакета есть еще сотни не менее полезных программ, решающих другие задачи. Да и nmap нельзя считать абсолютно универсальным сетевым сканером. Чего нет в nmap, так это высокоуровневых средств сканирования в локальных сетях. Все возможности пакета основаны на свойствах стека TCP/IP. А ведь в корпоративных сетях есть еще немало протоколов, которыми можно воспользоваться для локализации ресурсов, - например, протокол NetBIOS. В то же время в TCP/IP есть свои средства взаимодействия на уровне Data link - к примеру, протокол ARP. Таким образом, если Fyodor когда-нибудь решит создать сетевой сканер для локальных сетей, у него будет широкое поле деятельности, так как существующие на сегодняшний день разработки разрознены, не обладают достаточной степенью унификации и не имеют такой технологической базы, какую заложили в nmap его создатели.
Немного о будущем
Было бы интересно заглянуть в будущее и узнать о дальнейшей судьбе проекта nmap.
Недавно Fyodor раскрыл свои планы относительно развития продукта. В первую очередь он отметил, что не хочет делать из nmap "универсального средства взлома". Поэтому продукт не будет развиваться по принципу поглощения все новых технологий. Из-за этого пришлось бы пожертвовать одним из ключевых архитектурных принципов Unix, согласно которому задачи решаются с помощью набора гибких, специализированных приложений.
Одной из важнейших задач Fyodor считает сейчас повышение производительности программы. По своему опыту могу сказать, что задействование одновременно нескольких полезных свойств программы заставляет ее "задумываться" на продолжительное время. Для ускорения работы Fyodor планирует переписать наиболее критичные участки кода nmap заново. Кроме того, предстоит много работы, связанной с наращиванием базы знаний nmap.
Что касается новых возможностей, то тут путь развития nmap решается коллегиально - путем голосования на сайте всех заинтересованных участников проекта.
Кстати, сайт insecure.org также не прекратил своего развития. Со временем он стал одним из центров распространения технической информации о функционировании компьютерных сетей. С ростом популярности web-проекта росло и количество постоянных посетителей. Благодаря сформировавшемуся сообществу единомышленников группа разработки nmap смогла быстро решать возникающие технические проблемы. Со временем влиятельность сообщества Insecure.org должны были признать многие организации, профессионально занимающиеся защитой информации (например, проект MITRE).
Очередным этапом в развитии Insecure.org стало создание раздела списков рассылки, посвященных тематике информационной безопасности. Здесь можно найти информацию из самых авторитетных списков рассылки, посвященных компьютерной безопасности, - Bugtraq, Full Disclisure, Vuln Watch и другие. Впоследствии архив списков рассылки был перемещен на отдельный сервер - www.seclists.org, однако это по-прежнему составная часть проекта Insecure.org. Что касается самого Fyodor, то он помимо разработки nmap принимает активное участие в другом проекте, связанном с ИТ-безопасностью, - honeynet. Эта разработка позволяет защищать сети от хакерских атак, отвлекая внимание нарушителя на "более интересные" цели. Кроме того, honeynet позволяет наблюдать хакерскую технику взлома сетей "в реальном времени".
Fyodor Yarochkin помимо работы над программами много путешествует, выступая с докладами на тематических конференциях. Одно из таких мероприятий проходило в феврале в Германии. А сейчас Fyodor работает над книгой, которая будет посвящена nmap и методикам исследования сетей с помощью необычных сетевых пакетов.
Алексей Лизун
Спойлер: мы раскрываем их любимые трюки