12.03.2003

ќценка риска защиты »нтернета, часть 3: ћетодика оценки »нтернета. ѕродолжение

Ёта стать€ - треть€ в серии, предназначенна€ помочь читател€м оценивать риск, которому могут подвергнутьс€ их системы, св€занные с »нтернетом. ¬ первой части мы установили причины дл€ произведени€ технической оценки риска. ¬о второй части мы начали обсуждать методику, которой мы следуем при выполнении этой оценки. ¬ этой части мы продолжим обсуждать методику. ¬ частности, мы обсудим следующие темы: обзор у€звимостей и видимость.

ќценка риска защиты »нтернета, часть 3: ћетодика оценки »нтернета. ѕродолжение
 арл ¬ан-ƒер.-”олт

Ёта стать€ - треть€ в серии, предназначенна€ помочь читател€м оценивать риск, которому могут подвергнутьс€ их системы, св€занные с »нтернетом. ¬ первой части мы установили причины дл€ произведени€ технической оценки риска. ¬о второй части мы начали обсуждать методику, которой мы следуем при выполнении этой оценки. ¬ этой части мы продолжим обсуждать методику. ¬ частности, мы обсудим следующие темы: обзор у€звимостей и видимость.

¬идимость

  началу этой стадии мы имеем список IP адресов, которые €вл€ютс€ †цел€ми дл€ нападени€ или, как в нашем случае, дл€ анализа. Ќаш подход к анализу машины зависит от того, какие функции данна€ машина выполн€ет. Ќапример, машина может быть почтовым сервером, Web сервером, DNS сервером или всеми трем€. ¬ каждом из этих трех случаев, наш подход будет немного отличатьс€.  роме того, наша стратеги€ изменитс€ в зависимости от операционной системы рассматриваемой машины и точного списка служб, запущенных на машине. “очные цели этой стадии могут быть сформулированы следующим образом:

  1. ќпределить, какие службы €вл€ютс€ активными на исследуемой машине (т. е. какие порты открыты).
  2. ќпределить тип активных служб.
  3. ќпределить операционную систему исследуемой машины.

Ёта информаци€ позволит нам спланировать и выполнить оставшуюс€ часть оценки.

ƒл€ определени€ активных служб машины мы примен€ем хорошо проверенный сканер портов. †ћы настраиваем сканер так, чтобы проверить все порты каждой машины. —канер выдаст список всех открытых портов. ¬ результате, поскольку службы и приложени€ используют те же самые номера портов, мы можем получить список активных служб и определить функцию машины.

–ассмотрим кратко принцип работы сканера порта. —начала мы устанавливаем TCP- подключение. TCP-подключение устанавливаетс€ посредством трех шагов подтверждени€ св€зи, которые могут быть изображены следующим образом:

 лиент

ѕосылает пакет запроса св€зи (SYN), †запрашива€ установление соединени€ с указанным портом.

SYN

—ервер

≈сли порт открыт, сервер отвечает своим SYN пакетом, и пакетом подтверждени€ св€зи (ACK).

SYN/ACK

 лиент

ѕри получении ответа от сервера, клиент отвечает† подтверждением, после чего св€зь устанавливаетс€.

ACK

Ёто - точное описание процесса, который сканер порта использует дл€ определени€ открытых портов. ѕодтверждение выполн€етс€ дл€ каждого порта из указанного диапазона. ≈сли подтверждение произошло, порт регистрируетс€ как открытый. ƒл€ выполнени€ этой процедуры можно использовать программу Nmap.

¬ы, наверное, уже утомлены длинными списками, но нам нужно отметить еще несколько фактов:

1.†††††† —канер портов только определ€ет видимые дл€ вас порты. ћогут быть и другие порты, которые открыты дл€ хоста, но на них установлены фильтры: маршрутизаторы, межсетевые экраны или некоторые другие устройства.

2.†††††† ƒаже в случае небольшого числа хостов, полный просмотр портов может зан€ть очень много времени. Ѕольшинство служб используют стандартные общеизвестные порты. „тобы сэкономить врем€, сканер порта можно настроить дл€ просмотра только общеизвестных портов. “ака€ настройка значительно ускор€ет процесс сканировани€, но имеетс€ риск, что некоторые нестандартные порты могут быть пропущены.

3.†††††† ѕоскольку, †дл€ того, чтобы признать данный порт открытым, сканер порта требует только, SYN/ACK- ответ сервера, вы не можете быть на 100 % уверены, что на данном порту действительно функционирует кака€-нибудь служба. Ѕывают случаи, когда сервер посылает† подтверждение св€зи, даже если вы, фактически, не можете св€затьс€ с рассматриваемой службой. ƒл€ того чтобы окончательно определить, €вл€етс€ ли действительно служба, с которой мы соединились, активной, нужно применить интуицию. Ќо имеетс€ еще один автоматический способ, который может помочь нам увеличить шансы - это захват баннера. «ахват баннера позвол€ет рассе€ть сомнени€ относительно провер€емой службы, узнать ее тип и версию. †Ёто €вл€етс€ следующим шагом нашей проверки, который мы исполн€ем на этой стадии.

 роме TCP-подтверждени€, большинство сетевых приложений имеют свои протоколы подтверждени€ св€зи, которые начинают работать только после того, как TCP св€зь установлена. ¬о врем€ подтверждени€ †обычно можно узнать название службы и версию. ƒействительно, некоторые службы показывают детали своих †версий сразу же до подтверждени€.

“аким образом, мы используем простую утилиту под названием захватчик баннера (banner grabber). «ахватчик †предназначен дл€ извлечени€ информации о верси€х большого количества обычных сетевых служб. ћы нацеливаем его на список адресов, и он будет выт€гивать баннерную информацию о любой службе, которую он распознает. Ётим же способом мы можем лучше пон€ть, действительно ли приложение, которое мы провер€ем, находитс€ на данном порте. »меетс€ много программ, которые смогут сделать захват баннера. ћногие сканеры порта тоже смогут сделать это (например, SuperScan), также как и некоторые сканеры у€звимостей (типа Xspider). ¬ы можете также проделать эту операцию при помощи †обычного сеанса св€зи по телнету, если вы разбираетесь в протоколах достаточно хорошо.

»так, теперь мы знаем, какие порты открыты у исследуемого хоста. ћы также знаем тип и версию приложени€, которое использует каждый из этих портов. ¬о многих случа€х этого достаточно, чтобы определить операционную систему. Ќапример, порт †телнета (23) открыт на данном IP-адресе. ¬оспользуемс€ телнетом, чтобы соединитьс€ ним:

# telnet 196.3x.2x.7x

Trying 196.3x.2x.7x...

Connected to xxx.xx.co.za.

Escape character is '^]'.

HP-UX u46b00 B.10.20 A 9000/831 (ttyp1)

login:

ќчевидно? »меютс€ также другие немного менее очевидные способы. Ќапример, IIS Web Server может быть запущен только на Windows машинах, Sendmail Ц скорее всего почтовый Unix сервер, а порты 264 и 265 - незадействованные, на них устанавливают контрольно-пропускной пункт firewall-1.

¬ дополнение к простым трюкам, описанным выше, дл€ определени€ операционной системы можно также использовать более изощренную технику под названием "сн€тие отпечатков пальцев операционной системы". ќтличные ссылки по этой теме можно получить на нашем сайте. ¬ целом, сн€тие отпечатков пальцев операционной системы напоминает определение национальности по акценту. ћногие операционные системы †при подключении имеют свои уникальные характеристики, которые позвол€ют отличать их от других операционных систем. ѕрограммы типа Nmap и Queso и многие коммерческие сканеры безопасности имеют базы данных Ђакцентовї операционных систем, с которыми "акцент" данной операционной системы может быть сравнен.   провер€емым† характеристикам относ€тс€ уникальные комбинации открытых портов (см. наш пример, упом€нутый ранее), последовательность TCP инициализации и ответы на неожиданные запросы.

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

Ќесмотр€ на все эти технические несоответстви€, в конце этой стадии, мы имеем такое количество информации о каждой целевой машине, какое, в принципе, можем извлечь. »ме€ такую информацию, мы можем теперь спланировать и выполнить остальную часть нашего анализа.

—канирование ”€звимостей

ѕрежде, чем мы освоим оставшуюс€ часть методики, давайте вернемс€ к общей ситуации. ¬спомните вопрос, с которого началс€ наш процесс: каковы угрозы, с которыми мои† системы, св€занные с »нтернетом, могут столкнутьс€ и какова веро€тность, что эти угрозы могут быть реализованы?

ћы начали наши поиски с расследовани€, целью которого было вы€снить всю инфраструктуру целевой организации. ћы сделали это за несколько шагов. ¬о-первых, использу€ различные ресурсы, мы создали список всех DNS доменов, которые могли бы принадлежать цели. «атем, пользу€сь обычным набором DNS -инструментов, мы определили IP адреса, предполага€, что IP адреса одиночной организации данной системы чаще всего расположены в одном месте в »нтернет.

ѕосле этого мы проверили, €вл€ютс€ ли обнаруженные† IP адреса активными в »нтернете дл€ того, чтобы сузить наш список подсетей до более точного списка †IP адресов, которые действительно €вл€ютс€ †активными в »нтернете. ƒл€ этого †мы примен€ем† набор тестов на живучесть, предназначенные дл€ определени€, насколько возможно, можно ли †до данного IP адреса добратьс€ через »нтернет. »спытани€ живучести включали в себ€ трассировку запросов, ping и сканирование TCP хостов.

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

ѕрежде, чем мы сможем найти у€звимости наших мишеней, думаю, нужно пон€ть, что означает слово у€звимость. ¬ ќксфордском словаре дано такое определение этого слова: "подвергание опасности или нападению." ѕочему мы не пользуемс€ более простым определением: у€звимость - †слабое место хоста †или системы, которое может ослабить безопасность. »сследуем различные способы ослаблени€ системы.

1.†††††† –азрешенные каналы: „асто, нападающему нужно получить доступ к вашим системам пр€мо во врем€ вашей работы. »нтернет, по своей сути, €вл€етс€ коммуникабельным. „асто коммуникативные службы дают достаточное количество информации, которую можно использовать дл€ ослаблени€ системы.

2.†††††† ќшибки конфигурации: ќчень часто, технологи€ умнее людей, использующих ее. ¬ безрассудном стремлении увеличить программное обеспечение часто добавл€ют функциональные возможности, которые пользователи и администраторы не понимают полностью. Ќападающий, который понимает систему лучше, чем администратор, может использовать ошибки конфигурации и получить незаконный доступ.

3.†††††† †ќшибки программировани€:  омпьютерные программисты Ц всего лишь люди, и подобно другим †††††††люд€м они иногда делают ошибки. —овременные программы и операционные системы неверо€тно сложны и очень быстро развиваютс€. »ногда программисты не в состо€нии обслужить некоторый сценарий. Ќападающий, который может определить этот сценарий, может воспользоватьс€ им, чтобы ввести программу в состо€ние, с которым программист никогда не встречалс€. ¬ этом бесконтрольном состо€нии программа может прекратить функционировать правильно, выдавать неправильную информацию или выполн€ть команды нападающего.

4.†††††† ѕроцедурные ошибки: »ногда ошибки имеютс€ не в технологии непосредственно, а в способе ее использовани€. Ёти слабые места Ц €вл€ютс€ цел€ми социотехнических атак, когда нападающий манипулирует людьми и их сознанием, чтобы получить информацию или некоторый другой незаконный †доступ к системе.

5.†††††† ќшибки Ѕлизости: »нтернет - весьма св€занна€ система. —ледствие этого чрезвычайного уровн€ взаимозависимости: сильные системы, ослабл€ютс€ из-за того, что они имеют доверительные отношени€ со слабыми системами.

«абавно, но огромное количество этих видов у€звимости было уже известно и обсуждалось на симпозиумах и конференци€х. »меетс€ много источников новой информации об у€звимости. ѕервый из них Ц это †продавцы программных продуктов.  огда продавец программного обеспечени€ обнаруживает у€звимость† в одном из продуктов, он либо сразу делает Ђзаплатуї в продукте, либо издает уведомление, сообщающее клиентам о проблеме и способах ее устранени€.

ћногие продавцы программных продуктов дл€ компьютерной безопасности также имеют исследователей, которые занимаютс€ †обнаружением и документируют всевозможные у€звимости. Ётот способ работы подобен способу работы продавцов антивирусных программ: они обнаруживают и извещают о новых вирусах.  ак правило, изготовители систем обнаружени€ вторжени€ и сканеров у€звимостей (о которых мы будем говорить немного позже), провод€т исследовани€ у€звимости, чтобы разнообразить свои программы.

Ќаконец, многие исследователи безопасности иногда обнаруживает у€звимости, и уведомл€ют продавцов или сообщают об этом в открытой печати. ¬озникают вопросы: как обнаруживаютс€ новые у€звимости, чем мотивируютс€ их обнаружени€, как оповещаютс€ пользователи и, наконец, кто извлекает наибольшую выгоду из всего этого. Ќо эта тема дл€ отдельной статьи. ƒостаточно понимать, что, так или иначе, новые у€звимости обнаруживаютс€ и информаци€ о них, так или иначе, доходит до широкой общественности.†

¬ насто€щее врем€ добропор€дочные пользователи и злонамеренные хакеры имеют одинаковый доступ к информации о том, как системы можно взломать. Ќа стадии открыти€ у€звимостей мы хотим вы€вить все уже †известные у€звимости с тем, чтобы проблемы могли быть решены прежде, чем они обнаружены кем - либо еще и возможно используютс€, чтобы ослабить наши системы.

 ак мы можем определить, имеют ли анализируемые системы какую-нибудь из известных у€звимостей? ƒавайте вспомним информацию, которую мы получили ранее: дл€ каждой видимой машины мы имеем операционную систему, список активных служб, а также типы и версии этих служб. ¬се, что мы должны - это проверить базу данных известных у€звимостей. √де найти такую базу данных?  онечно, в »нтернете!

»меетс€ много сайтов, которые открыто издают базы данных известных у€звимостей. ‘актически, сам »нтернет - огромный склад информации об известных у€звимост€х. ѕросто воспользуйтесь вашей любимой службой поиска,† и ищите в такой последовательности: †<название операционной системы >, <название службы>, <номер версии> и слово "эксплоит", и вы должны найти то, что ищете. ѕопробуйте,† будете поражены.

’орошо выполненное обнаружение у€звимостей и хороший поиск Ц это все что вы должны сделать, чтобы провести анализ у€звимостей, но это - медленный и трудный процесс, который требует высокого уровн€ технической компетентности. Ќа большой и сложной сети этот подход веро€тно неосуществим в полной мере.   счастью, помощь находитс€ под рукой в виде автоматических сканеров у€звимости. “акое программное обеспечение просмотра может быть построено в трех общих видах:

  1. Ќа хосте: сканеры на базе хоста физически устанавливаютс€ на оцениваемой машине. ќни работают подобно автоматическим контролерам за качественной работой, управл€€ множеством тестов дл€ определени€, была ли машина настроена и конфигурирована дл€ качественной работы данной операционной системы в данной среде. “акие сканеры, обычно €вл€ютс€ привилегированными пользовател€ми на исследуемой системе и таким образом способны выполнить полный набор испытаний.
  2. —етевые сканеры: Ёти сканеры основываютс€ на знании тех тестов, которые они примен€ют †против анализируемых систем в сети.† Ёти тесты провод€тс€ без особых привилегий на анализируемой системе и, поэтому менее полны, но они, на самом деле имеют множество преимуществ: »х не об€зательно устанавливать на каждой провер€емой системе, и они более точно отражают возможности, открытые дл€ внешнего нападающего. ¬ некотором смысле, они определ€ют проникновени€ в системы извне и могут лучше отразить приоритеты администратора безопасности.
  3. —канеры приложений: —канеры приложений могут рассматриватьс€ как специализированные сканеры, которые оценивают конфигурацию безопасности определенных приложений и служб. “акие сканировани€ могут быть выполнены на хосте или в сети. Web cлужбы, базы данных и NT-домены, которые трудно конфигурировать и которые чаще всего имеют проблемы с безопасностью, могут оцениватьс€ этим способом.

»меетс€ много коммерческих программ всех видов сканеров. я не хочу упом€нуть все такие программы, но среди ведущих продавцов этих продуктов нужно отметить Positive Technologies, ISS, Axent (теперь Symantec), eEye, Next Generation Software, BindView и Foundstone. ≈сть еще много других коммерческих программ, но список не будет полон без одного свободно распростран€емого программного обеспечени€- Nessus от –енода ƒерайсона. ќбщедоступный сканер Nessus может посоперничать с самыми лучшими коммерческими сканерами почти по всем позици€м, кроме, возможно, поддержки и отчетов. Ѕольшинство общедоступных сканеров концентрируют свое внимание на обнаружении только определенных типов или видов у€звимостей (типа у€звимостей Web сервера) и список таких сканеров чрезвычайно велик.

¬се эти сканеры имеют доступ к базе данных известных у€звимостей и используют †службы сканировани€, чтобы подключить исследуемую машину, выполнить набор испытаний и выдать список у€звимостей каждого проверенного сервера. ќднако сканеры, часто не оправдывают свое назначение обещанию. ¬се сканеры у€звимости имеют два главных недостатка, а именно:

  1. ќбычно такие сканеры могут только проверить известные у€звимости безопасности. »х эффективность зависит в значительной степени от точности и быстродействи€ источника информации об у€звимост€х. »ногда эта информаци€ не может быть получена в формате, который сканеры могут пон€ть или такой формат еще не общедоступен.
  2. »спытание на известную у€звимость может пройти неудачно. »ногда единственный способ определени€, действительно ли система имеет некоторую известную слабость, состоит в том, чтобы пробовать задействовать это слабое место и понаблюдать, как система будет себ€ вести. “акой способ наиболее эффективен, но может иметь вредные последстви€ дл€ системы. јльтернативой €вл€етс€ следующее: собрать самую важную информацию (например, тип службы и версию) и на этом основании прин€ть решение. Ётот подход, весьма безопасен, но намного менее точен и часто ведет к большому количеству "ложных подозрений". —ообщение об у€звимости, которое базируетс€ на поверхностной информации, часто оказываетс€ неверным после дальнейшего исследовани€.

—канерное программное обеспечение нового поколени€ использует более интеллектуальные методы сканировани€, и может помочь уменьшать зависимость от знани€ предыдущих атак. Xspider †- пример сканера такого типа.

’от€ интеллектуальное сканирование находитс€ в стадии бурного развити€, € думаю, что неудачи автоматических сканеров свидетельствуют о более фундаментальных недостатках в концепции сканировани€ †у€звимостей. »з этого мы должны извлечь важный урок: Ќельз€ отключать мозг, когда включаете сканер. Ќужно всегда помнить, что сканер не обнаружит все у€звимости системы, и будет часто сообщать о проблемах, которых, на самом деле, нет.  роме того, сканер никогда не будет полностью понимать взаимозависимости между системами, контекст, в котором компьютерные системы существуют, и роль, которую люди играют в действии компьютерных систем. ’от€ сканеры у€звимости - ценный инструмент в течение этой стадии нашей оценки, каждый отчет должен быть тщательно проверен.

Ёпилог: анализ безопасности Web приложений

 роме технических неудач сканеров безопасности, есть большое количество потенциально у€звимых мест, которые едва только начинают оценивать Ц обычные Web приложени€. HTTP - возможно самый распространенный сегодн€ протокол в »нтернете и, наверное, нет такого приложени€, которое не было бы написано дл€ Web. Ѕезопасность Web приложений - относительно нова€ область, и программисты часто полностью не понимают значени€ безопасности программ, которые они пишут.

или введите им€

CAPTCHA