Оценка риска защиты интернета. Часть 2: Методика оценки интернета

Оценка риска защиты интернета. Часть 2: Методика оценки интернета

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

Карл Ван Дер Уолт 

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

Почему возникает вопрос о методике?

Если вы когда-либо читали об оценках, публикуемых SensePost ,  вы заметили, что основное внимание уделяется именно методике. Методика – это последовательность действий, которым требуется жестко следовать при выполнении некоторой задачи. Методики существуют практически в каждом виде деятельности. Но мы не немцы, чтобы являться фанатами методик, тем более, что сами методики изменяются и приспосабливаются к новым условиям, но они всегда играют большую роль в том, каким образом мы хотим достичь своей цели. Так почему же возникает вопрос о методике? Имеется несколько серьезных оснований для того, чтобы производить оценки согласно строгой методике:

Во-первых, методика дает нам план игры. Вместо того чтобы безучастно смотреть на экран монитора или диаграмму работы в сети, аналитик имеет четкий сценарий для выполнения задачи. Этот сценарий исполняет роль "гуру". Точные действия, которые мы исполняем, ясны и нам, и клиенту с самого начала.

Во-вторых, проработанная методология гарантирует, что наша работа состоятельна и полна. Однажды мне пришлось работать с организацией, которая имела более 150 зарегистрированных DNS доменов. Можете себе представить, с каким количеством IP адресов пришлось иметь дело! Их было более двух тысяч.  Представьте, как трудно проследить связи каждого домена, каждой сети и каждого IP, чтобы быть уверенным, что вы не пропустили что-нибудь. Представьте также, что произойдет, когда начнутся настоящие "взломы" (мы вернемся к этому позже), и аналитик окажется в предынфарктном состоянии. Точная методика гарантирует, что мы всегда все отслеживаем, и наша работа всегда качественна. Это всегда верно, независимо от того, насколько велико локальное окружение, которое вы оцениваете.

Наконец, наша методика дает нашим клиентам возможность оценить нас. Напомню, до настоящего времени действительно не было никаких норм или стандартов для работы по технической оценке. Как клиенту узнать, за что он платит такие большие деньги? Это – особенно важно, когда результаты оценки -  плачевные (как у меня язык поворачивается сказать такое). Работая же строго согласно разумной методике с ясными результатами на каждой стадии, мы можем проверить качество оценки, даже тогда, когда мало что утешительного клиенту мы можем сообщить.

Методика, которая работает

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

1. Сбор сведений

Первое, что нужно сделать, когда мы начинаем оценку, -  это выяснить, что является целью для нападения. Прежде всего, мы используем для этого сеть. Начиная с собственного Вебсайта (ов) клиента, мы добываем информацию о клиенте, которая могла бы быть полезна для нападающего. Разные лакомые кусочки полезных данных нас не интересуют, наша главная цель - получить DNS-имена домена, которые система использует. Если Вы оцениваете вашу собственную инфраструктуру, вы можете уже иметь эту информацию, но если организация  -  большая, это может оказаться забавным упражнением. Затем эти имена домена будут сопоставлены с IP-адресами, которые мы анализируем. Некоторые компании мало пользуются Интернетом, и легко получить DNS-имена, которыми они пользуются. Другие компании, с которыми мы работали, имели сотни доменов, и получение всех имен - это подвиг.

Как мы получаем DNS-имена доменов? Обычно мы имеем адрес электронной почты, название компании или некоторое другое логическое место, откуда можно начать. Для нахождения имен мы имеем множество методов:

  1. Мы используем службы поиска для того, чтобы найти все упоминания названия компании. В результате мы не только получаем информацию о связях с сайтом компании, из которого DNS информация домена может быть легко извлечена. Мы также получаем полезную информацию о слияниях компаний, приобретениях, партнерствах и структуре компании.
  2. Мы используем инструменты, подобные httrack , чтобы  сбрасывать все нужные Вебсайты на диск. Затем мы  просматриваем эти файлы, чтобы извлечь всю почту и полученные вэб-страницы, которые опять используются для извлечения большего количества DNS доменов.
  3. После этого мы пользуемся различными регистрациями домена. Инструменты типа geektools.com, register.com и т.п. просты и часто могут использоваться одним из двух способов:
    1. Помогать проверять, принадлежат ли обнаруженные домены организации, для которой мы делаем оценку.
    2. Извлекать любую дополнительную информацию, которая может быть зарегистрирована в отчете обнаруженного домена. Например, вы часто обнаруживаете, что технический контакт данного домена обеспечивает адрес электронной почты другого домена. Тогда этот другой домен автоматически попадает в центр нашего внимания, как претендент на оценку.
    3. Многие регистрации обеспечивают поиск группового символа. Это позволяет нам отыскивать все домены, содержащие строчку типа "*abc*". Я бы использовал такой поиск для определения всех доменов, которые могут быть связаны с компанией ABC Apples Inc, например.
  4. Затем, мы должны применить некоторые общие знания - использование информации, которую мы читаем на веб-сайтах, сообщениях компании и в разделах новостей. Пользуясь этим, при помощи логики, мы переходим к другим доменам, которые могут быть причастны к нашему анализу.

Результатом этой стадии является обширный список DNS доменов, которые подходят для цели возможной атаки. Нетрудно видеть, что следующая стадия оценки может обеспечить дополнительные имена доменов, которые не были найдены в течение предыдущей стадии. В этом случае, эти домены используются, как начальные и процесс повторяется. Стадии 1 и 2 могут повторяться неоднократно до тех пор, пока мы не определили местонахождение всех причастных доменов. Как правило, мы проверяем этот список с клиентом, как только мы сможем гарантировать, что мы ничего не пропустили или включили что-нибудь, не относящееся к делу.

2. Обнаружение следов

В начале второй стадии мы имеем список DNS доменов похожих, к примеру, на apples.com, apples-inc.com, applesonline.com, apples.co.uk, и т.д. Эти домены существуют для того, чтобы обеспечить пользователей Интернета простым способом достижения и использования ресурсов, которые им нужны. Например, вместо того, чтобы набирать адрес  http://196.30.67.5, пользователю нужно просто набрать www.sensepost.com. Поэтому в пределах домена имеется довольно длинный список, устанавливающий соответствие между машинными именами и их фактическим IP- номером. Цель этой стадии состоит в том, чтобы идентифицировать как можно больше соответствий между IP и именем, чтобы понять какое адресное пространство в Интернете, фактически используется целевой организацией. Есть несколько различных методов для того, чтобы опознать эти соответствия. Не входя в детали, эти методы все получены из следующих предположений:

  1. Соответствие между IP и именами должно быть функциональным. Это включает в себя составление отчетов сервера об именах (NS) и об обмене почтой (MX). Если компания действительно использует домен, Вы сможете запросить эти данные и, сразу же получите один или большее  количество реальных IP адресов, с которыми можно работать. 
  2. Некоторые соответствия между IP и именами, очень вероятно, уже существуют в активных доменах. Например, имя "www"  существует почти в каждом домене. Имена типа "mail", "firewall" и "gateway" – скорее всего, тоже. Имеется длинный список обычных имен, которые мы проверяем. 
  3. Машины любой организации обычно находятся близко друг от друга. Это означает, что, если мы нашли один IP адрес, мы знаем, где искать другие адреса.
  4. Соответствия Имя -> IP (прямой поиск), и IP-> Имя (обратный поиск) не обязательно совпадают.
  5. DNS, как технология, была предназначена для распространения "общественной" информации. С помощью одного-двух простых приемов мы можем извлечь всю имеющуюся информацию. Зона передач DNS – особая зона DNS предназначенная для передачи большого количества отчетов DNS - является прекрасным примером этого. О других, более хитрых методах у нас нет возможности рассказать в этой статье.
  6. Как только мы получим все подходящие имена DNS, которые можем найти, мы пытаемся идентифицировать различные "блоки" сети, в которых целевая организация действует. Как было сказано ранее, IP имеют тенденцию группироваться. Основная идея IP состоит в том, чтобы группировать адреса в подсеть. Ожидаемый результат этой стадии – получение списка всех IP подсетей, в которых целевая организация имеет активные машины. На этой стадии, мы действуем по формуле: если мы находим даже единственный IP в данной подсети, мы включаем в рассмотрение всю подсеть. Технически подкованный читатель закричал бы "Ложное предположение! Ложное предположение! " и был бы прав. Но потерпите немного. На этой стадии лучше переоценить, чем недооценить. Позже, мы будем сокращать список до более точного описания того, что происходит в сети.

3. Жизнеспособность

Мы закончили последнюю стадию получением списка IP подсетей, в которых мы полагаем, целевая организация присутствует и ордой технократов, громогласно возражающих против размера подсети. Мы приведем список некоторых фактов, которые мы должны знать прежде, чем мы пойдем дальше:

  1. Организации нет нужды владеть полной подсетью, которую мы исследуем. IP адреса можно предоставить, сдать в аренду или разделить. При этом всем IP организации не нужно группироваться, они могут широко распространяться в Интернет, насколько возможно.
  2. То, что имя и IP существуют, не означает, что машина действительно существует. И наоборот, если имя и IP не существуют, это не означает, что машина не существует. В Интернете есть тысячи безымянных адресов. Печально, но это факт. 
  3. Без описания маршрута для данного IP адреса, адрес никогда не может использоваться в Интернете.

Итак, мы видим, что, хотя DNS дает нам логическую отправную точку для нашего поиска, он ни в коем случае не обеспечивает полный список потенциальных целей, что является причиной того, что мы работаем с довольно свободными дефинициями подсетей, которые мы получили на предыдущей стадии. Цель стадии  оценки под названием "жизнеспособность" состоит в том, чтобы решить, в пределах блоков нашей подсети, какие IP адреса являются фактически активными и используемыми в Интернете. А сейчас мы покинем чудесный мир DNS и сконцентрируемся исключительно на IP адресах.

Итак, как определяют, активен ли адрес на Интернете или нет? Давайте вспомним третий "факт" из нашего списка, приведенного выше. Если к данной IP подсети нет никакого маршрута, то можно считать, что ее нет. Различные основные маршрутизаторы на Интернете любезно позволяют техникам и администраторам проверять маршруты к любому данному адресу. В настоящее время одним из таких маршрутизаторов является route-views.oregon-ix.net. Этот маршрутизатор не может сказать нам, жив ли IP адрес. Но если основные маршрутизаторы не могут найти маршрут к подсети, то мы можем заключить, что все IP в той подсети мертвы.

Следующая, вероятно, наиболее очевидная техника – это знаменитый "прозвон IP–адреса (IP ping). Прозванивание напоминает звуковую  локацию. Вы посылаете ping по определенному адресу, а машина отвечает pong, что  свидетельствует о том, что она жива и получила ваш запрос. Ping - стандартный компонент Интернет-протокола (IP), и машины, которые понимают этот протокол, обязаны отвечать, на прозвон. При помощи простых, доступных средств мы можем прозвонить всю подсеть. Этот прием известен, как ping-сканирование. Не вдаваясь в  детали, результаты ping-сканирования  могут интерпретироваться следующим образом:

  1. Ответ от IP адреса означает, что адрес, вероятно, используется и доступен в Интернете.
  2. Многократные ответы от одного IP адреса указывают, что адрес, вероятно, является адресом подсети, или широковещательным адресом (broadcast address); последнее предположительно означает, что мы достигли границы подсети.
  3. Отсутствие ответа всего лишь означает, что машина не отвечает на ping.

Конечно, последний пункт немного неопределенен, но это действительно единственный вывод, который можно сделать из имеющейся  информации. Я бы сказал, что все машины, понимающие IP, обязаны отвечать на запросы. Почему же не правильно делать простой вывод: если IP не отвечает, то этот адрес не используется? Причиной этого являются современные программные продукты для безопасности сети типа маршрутизаторов и firewalls. В реальности сети конфигурированы таким способом, что ping блокируется защитой прежде, чем сигнал достигает машины. Таким образом, машина ответила бы, если бы могла, но ей не разрешают.

Теперь мы начинаем применять тяжелую артиллерию. Почти каждая машина, работающая в Интернете, содержит открытые порты. Порты используются, чтобы получать входящие трафики  для особых служб или для других приложений. Современная машина, связанная с Интернетом, почти всегда пользует, по крайней мере, один порт. Таким образом, если IP адрес не отвечает на наш запрос, мы можем проверить его, пользуясь инструментом, называющимся "сканером портов". Сканеры порта - доступные утилиты, которые пытаются устанавливать связь с каждым возможным портом в пределах указанного диапазона. Если мы сможем найти хотя бы один порт, который отвечает на проверку, мы узнаем, что IP жив. К сожалению, объем работы, требующийся для исследования всех 65 000 портов часто оказывается неприемлемым. Такое упражнение занимает несколько часов для проверки одного IP-адреса и дни, или даже недели, для полной проверки адресов во всем диапазоне. Так что мы вынуждены сделать еще одно предположение: Если IP адрес активен в Интернете, то на это есть причины. Имеются только следующие причины для соединения машины с сетью:

  1. Машина - Web сервер (следовательно, использует порт 80 или 443)
  2. Машина - почтовый сервер (следовательно, использует порт 25)
  3. Машина - DNS сервер (следовательно, использует порт 53)
  4. Машина - другой обычный сервер - FTP, база данных, время, новости, и т.д.
  5. Машина - клиент. В большинстве случаев машина использует системы Майкрософт и использует 139 порт.

Таким образом, мы можем внести  изменения в процесс сканирования: нам нужно искать только небольшое количество портов. Конечно, этот подход тоже не совершенен, но дает весьма точные результаты и эффективен в работе с большими организациями. Обычные порты, которые мы просматриваем, могут быть отрегулированы так, как лучше для анализируемой организации. nmap network utility  является мощным инструментом, который служит одинаково хорошо как ping сканер и сканер портов.

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

Заключение

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

Тени в интернете всегда следят за вами

Станьте невидимкой – подключайтесь к нашему каналу.