Рубрикатор |
Статьи | ИКС № 07-08 2010 |
Дмитрий КУЗНЕЦОВ  Артем СЫЧЕВ  | 27 июля 2010 |
Корпоративная вычислительная сеть. Как сделать ее неуязвимой?
В последние несколько лет атаки извне на корпоративные вычислительные ресурсы происходят все чаще и наносят существенный ущерб. «Дыры» в защите информационных систем обычно возникают из-за стандартных ошибок в их проектировании и эксплуатации, и для проникновения в них нарушители пользуются не менее стандартными методами.
Перечисляя наиболее актуальные угрозы информационной безопасности, специалисты обязательно называют три класса угроз:
• вирусные эпидемии;
• DoS-атаки на доступные извне информационные ресурсы компаний;
• использование сотрудниками компании внутренней информации, включая передачу инсайдерской информации третьим лицам.
Угрозы, связанные с проникновением нарушителей в информационные системы компаний извне, в качестве актуальных сегодня не рассматриваются. Подобная позиция основывается на двух утверждениях: во-первых, периметр вычислительной сети компаний обычно достаточно хорошо защищен; во-вторых, доступ к корпоративным информационным ресурсам не принесет нарушителю материальной выгоды.
Насколько эти утверждения соответствуют действительности? Несколько лет назад были выявлены случаи массовых атак на торговые сети (инциденты расследовались секретными службами США), которые вызвали широкий общественный резонанс. Эти примеры дают представление о масштабе деятельности хакеров (в ходе атак были украдены данные десятков миллионов платежных карт) и показывают, что факты взлома обнаруживаются далеко не сразу, а порой и вообще не обнаруживаются защищающейся стороной.
В России информация о подобных инцидентах не столь доступна, но это не означает, что такие атаки отсутствуют. Как правило, целью нарушителей становятся рабочие места, с которых проводятся платежи с помощью систем «клиент-банк». Причем если раньше нарушителям было достаточно только скопировать закрытые криптографические ключи, которыми подписываются платежные поручения, то в последнее время, с переходом на аппаратные ключевые носители, нарушителям приходится получать полный контроль над этими рабочими местами, отправляя поддельные платежные поручения непосредственно с них.
Как правило, причиной подобных инцидентов становятся стандартные ошибки в проектировании и эксплуатации информационных систем, и нарушитель пользуется для проникновения не менее стандартными методами, эксплуатирующими подобные ошибки. Эти ошибки и основанные на них методы взлома мы и рассмотрим.
Уязвимости веб-приложений
Уязвимости веб-приложений – наиболее распространенный сегодня способ проникновения в информационные системы компаний и реализации атак на клиентов этих компаний. По результатам исследования1, проведенного экспертами компании Positive Technologies, в 2008 г. практически каждый корпоративный веб-портал содержал уязвимости уровней Urgent или Critical (рис. 1), позволяющие нарушителю получить контроль над порталом и/или использовать его для атак на внутренние информационные ресурсы компании либо рабочие места посетителей портала.
Один из распространенных методов атаки – внедрение операторов SQL. Эта техника позволяет нарушителю передавать веб-приложению на исполнение произвольные (пусть и с некоторыми ограничениями) конструкции языка SQL. При этом используется распространенная ошибка разработки веб-приложений, при которой SQL-запросы к СУБД формируются на основании передаваемых пользователем параметров без дополнительной семантической проверки получившегося запроса. Это позволяет нарушителю, передавая не предусмотренные разработчиком приложения параметры, изменять семантику формируемых SQL-запросов, например, дополняя запросы собственными операторами или изменяя логические выражения в параметрах выборки. Самостоятельно формируя значение параметра id, нарушитель может передавать веб-приложению собственные SQL-запросы. Подобная техника позволяет нарушителю решать широкий круг задач: от изменения контента веб-приложения до получения контроля над ним.
Аналогичная ошибка, допускаемая разработчиками Web-приложений, состоит в том, что принимаемый от пользователя параметр передается в качестве аргумента при вызове из кода веб-приложения команд операционной системы. Такая ошибка классифицируется как «выполнение команд операционной системы» и позволяет нарушителю навязывать серверу исполнение собственных команд.
Еще одна часто встречающаяся ошибка – предсказуемый идентификатор сессии. Идентификация сессии – стандартный механизм авторизации пользователей в веб-приложениях. После успешной аутентификации приложение присваивает сессии пользователя уникальный идентификатор, который передается серверу в каждом последующем запросе этого пользователя и используется для подтверждения его аутентичности. Надежность такого механизма основана на двух предпосылках: что нарушитель не может перехватить идентификатор сессии и что длина идентификатора не позволяет в приемлемые сроки выполнить перебор возможных вариантов.
Данный механизм наиболее эффективен тогда, когда каждый следующий генерируемый приложением идентификатор является элементом равномерно распределенной случайной последовательности. Однако в реализации механизмов генерации идентификаторов сессии встречаются ошибки, сильно сужающие область перебора. При этом у нарушителя, имеющего в своем распоряжении один идентификатор, появляется возможность поиска идентификаторов сессий остальных пользователей, активно использующих приложение в момент атаки.
Ошибки в веб-приложениях не всегда используются для атак именно на это приложение. Зачастую цель взлома – рабочие места пользователей этого приложения, и чаще всего для этого используются уязвимости, приводящие к возможности межсайтового исполнения сценариев (XSS). Предпосылкой для их появления становится все та же ошибка программирования, при которой отображаемый контент формируется на основании параметров, передаваемых в HTTP-запросе, без семантической проверки этих параметров. Межсайтовое выполнение сценариев возможно тогда, когда значение передаваемого параметра непосредственно включается в тело формируемой веб-сервером HTML-страницы.
Уязвимости XSS разделяют на постоянные (persistent) и отраженные (reflected). Постоянная XSS позволяет нарушителю внедрять свой код в долговременный контент веб-приложения (например, в сообщения на форумах или в комментарии к новостям). Внедренный с ее помощью код будет исполнен в браузере каждого из посетителей измененной страницы. Отраженная XSS встречается значительно чаще и характерна для приложений, однократно отображающих значение переданного параметра в сгенерированной на основании пользовательского запроса странице (например, для поисковых систем, когда в результатах поиска отображается введенный пользователем запрос).
Уязвимости XSS широко и разнообразно используются при атаках на рабочие места пользователей с использованием методов социальной инженерии.
Уязвимости инфраструктуры
Проблемы парольной защиты
Разработчики бизнес-приложений часто допускают одновременно две ошибки:
• не предусматривают ограничения на минимальную сложность задаваемого пользователем пароля;
• не предусматривают механизмов противодействия автоматическому перебору паролей (ввод CAPTCHA, блокировка учетной записи после определенного числа неуспешных попыток аутентификации и т.п.).
Как показывают результаты исследования2, проведенного компанией Positive Technologies, если применять средства, ограничивающие минимальную длину пароля, российские пользователи склонны выбирать пароли, являющиеся сочетанием клавиш, расположенных рядом на клавиатуре. При этом почти 9% пользователей используют один из 10 наиболее распространенных паролей (см. таблицу). Кстати, подобные пароли, хотя и в меньшей степени, характерны и для механизмов аутентификации операционных систем и приложений, в которых предусмотрены средства контроля сложности задаваемых паролей.
При такой частоте встречаемости паролей успех нарушителя при подборе учетных записей определяется двумя факторами: количеством пользователей в информационной системе и наличием перечня актуальных имен пользователей (или возможности подбора имен).
Как правило, на поздних этапах проникновения нарушитель уже имеет список актуальных имен пользователей, полученных в результате доступа к каталогу Active Directory, таблицам баз данных, документам на рабочих местах пользователей или корпоративной электронной почте. Но и на начальных этапах у нарушителя зачастую есть возможность эффективного перебора имен.
Еще одной серьезной проблемой является использование стандартных паролей, устанавливаемых по умолчанию. При установке программного обеспечения создаются так называемые технологические учетные записи, которые служат для первого входа пользователя в систему или для взаимодействия программных компонентов между собой. Такие учетные записи стандартны для определенной версии программного обеспечения, их состав может меняться от версии к версии, а их количество для отдельного семейства программ может достигать десятков и сотен (к примеру, для СУБД Oracle различных версий известно до 1000 стандартных сочетаний имени и паролей «технологических» пользователей). Как правило, после установки системы администраторы забывают изменить заданные по умолчанию пароли или заблокировать ненужные учетные записи.
Кроме онлайновых методов подбора пароля, нарушителю доступны и другие методы. Например, из соображений безопасности в информационных системах хранятся не пароли пользователей, а результаты вычисления хэш-функции этих паролей. Необратимость хэш-функции обеспечивает невозможность восстановления пароля, однако это верно только для паролей достаточной сложности.
Согласно результатам того же исследования, большая часть пользователей использует пароли длиной до восьми символов включительно. В настоящее время в рамках нескольких открытых проектов (например, http://www.freerainbowtables.com) проводится расчет значений хэш-функции для паролей различной длины в различных алфавитах. Готовые таблицы значений хэш-функции, находящиеся в открытом доступе, обеспечивают высокий процент восстановления паролей такой длины, причем восстановление одного пароля занимает несколько минут.
Благодаря этому источниками паролей пользователей для нарушителя могут служить:
• конфигурационные файлы сетевого оборудования;
• файлы /etc/shadow операционных систем Unix;
• резервные копии операционных систем;
• сетевой трафик;
• системные таблицы СУБД, в том числе доступные с помощью уязвимостей веб-приложений, и т.п.
Недостатки сетевой инфраструктуры
Ошибки в сетевой архитектуре упрощают нарушителю выполнение ряда атак. К наиболее распространенным можно отнести:
• проблемы сегментирования локальной вычислительной сети и межсетевого экранирования;
• использование сетевых протоколов, позволяющих нарушителю собирать информацию о сетевых устройствах или навязывать сетевым устройствам собственные настройки сетевого взаимодействия;
• использование незащищенных или недостаточно защищенных протоколов прикладного уровня.
При правильной организации локальной вычислительной сети рекомендуется разделять ее на сегменты разного функционального назначения и обеспечивать фильтрацию трафика на границах сегментов. Эти рекомендации зачастую не выполняются.
Распространенной ошибкой является предоставление доступа из Интернета к узлам, размещенным в пользовательском или серверном сегментах ЛВС. Это позволяет нарушителю, получив контроль над одним из приложений, серверов или рабочих станций, беспрепятственно атаковать остальные узлы ЛВС. Кроме того, нередко предоставляется доступ из Интернета к управляющим интерфейсам приложений, серверов и сетевого оборудования.
При подключении серверов и рабочих мест к коммутаторам ЛВС зачастую не принимаются меры противодействия сетевым атакам со стороны внутренних узлов ЛВС (от атаки типа «отравление кэша ARP» до эксплуатации уязвимостей в сетевых сервисах), а также не выполняются настройки протоколов управления, направленные на скрытие топологии сети от рядового пользователя. Это позволяет нарушителю, получив контроль над одним из внутренних узлов, исследовать сеть, выявлять соседние устройства и организовывать атаки на них.
При развертывании сетевых сервисов вместо защищенных вариантов протоколов прикладного уровня для передачи чувствительной информации используются их аналоги без криптографии или со слабой криптографической защитой – NTLM вместо Kerberos, POP3 вместо IMAP, SNMP v.2 вместо v.2c или V.3, а также SMTP, FTP и HTTP без поддержки SSL/TLS. Это позволяет нарушителю перехватывать чувствительную информацию, в том числе новые учетные записи.
Уязвимости беспроводных сетей
В беспроводных сетях допускается несколько типичных ошибок, среди которых отметим две. Это защита беспроводного трафика с использованием протокола WEP и возможность подключения ноутбуков пользователей к произвольным точкам беспроводного доступа.
Протокол WEP использует слабые методы криптографической защиты, что позволяет нарушителю сравнительно легко восстановить криптографические ключи, применяемые при взаимодействии устройств. Это дает ему возможность подключаться к беспроводной сети и организовывать атаки, находясь внутри периметра защиты. Последствия такой атаки очевидны.
Использование сотрудниками компании ноутбуков создает для нарушителя дополнительный вектор проникновения. Соединяясь с посторонней точкой доступа, пользователь попадает в среду, созданную владельцем этой точки доступа. При этом совершенно не исключено, что точка доступа контролируется злоумышленником. Кроме того, владелец точки доступа, если он не является оператором связи, не имеет перед пользователем никаких обязательств по обеспечению тайны связи.
Как правило, в отношении мобильных устройств применяются те же меры защиты, что и для стационарных рабочих мест (особенно в части управления уязвимостями и установки патчей). Выбор этих мер ориентирован в первую очередь на работу внутри внешнего периметра защиты, который является первым рубежом защиты, отводя ряд угроз. При подключении к сторонней точке доступа этот рубеж отсутствует, о чем администраторы, настраивающие функции безопасности операционной системы и индивидуальные средства защиты, часто забывают.
Уязвимости и ошибки конфигурации программного обеспечения
Одна из самых серьезных проблем в обеспечении информационной безопасности российских компаний – несвоевременная установка обновлений безопасности или отказ от их установки. Причины тому называют разные. Например, в случае установки обновлений на серверы, находящиеся в промышленной эксплуатации, обслуживающий персонал нередко опасается того, что программное обеспечение в результате будет работать нестабильно. Установка обновлений на рабочие места пользователей затрудняется большим количеством используемых программ и невозможностью своевременно отслеживать выпуск обновлений.
Сканирование внутренних узлов ЛВС большинства российских компаний показывает примерно одинаковую картину (рис. 2).
Аналогичную картину можно наблюдать при анализе конфигурации программного обеспечения. Для безопасной работы Windows XP необходимо настроить свыше 200 параметров; из них около 60% настраиваются автоматически при инсталляции операционной системы, а остальные параметры требуют дополнительной настройки. Как правило, анализ конфигурации показывает, что подобная настройка не выполняется, что приводит к появлению на рабочих станциях типичных ошибок конфигурации:
• использование протокола NTLM;
• сохранение паролей (точнее, значений хэш-функции) LanManager;
• автозапуск с отчуждаемых носителей и т.п.
Подобные ошибки активно используются для проникновения в информационные системы. Возможность атаки на уязвимые сетевые сервисы появляется после преодоления внешнего периметра с использованием одного из перечисленных в предыдущих разделах недостатков. Однако в последние несколько лет нарушители предпочитают атаковать рабочие места пользователей, используя уязвимости клиентского программного обеспечения и недостаточную осведомленность пользователей в вопросах информационной безопасности.
Итак, успешное проникновение в корпоративную вычислительную сеть – это, как правило, результат допущенных защищающейся стороной ошибок.
Наиболее эффективны с точки зрения приближения к цели методы атаки, позволяющие нарушителю получить учетные записи пользователей. Успех подобной атаки дает ему самый широкий спектр дополнительных возможностей, начиная с доступа к информационным системам от имени этого пользователя, с предоставленными ему правами и с использованием штатных средств доступа. Появляется и возможность ознакомления с документами и почтовыми сообщениями пользователя, откуда нарушитель может почерпнуть полезную информацию об информационных ресурсах, организации работы с ними, а также дополнительную информацию о сотрудниках компании, которую можно использовать для организации атак с применением методов социальной инженерии.
В представлении ИТ-специалистов наиболее опасны уязвимости сетевых сервисов – однако это не так. Как правило, нарушителю удается добиться поставленной цели еще до того, как у него появится техническая возможность поиска и эксплуатации уязвимостей программного обеспечения целевого сервера. Значительно быстрее приводит к цели использование ошибок в архитектуре информационных систем и настройках программного обеспечения.
Серьезную опасность представляют атаки на рабочие места пользователей с использованием методов социальной инженерии. В то же время первопричина успешной атаки – это, как правило, не низкая осведомленность пользователей, а наличие на рабочем месте уязвимостей и ошибок конфигурации, возможность использовать которые нарушитель получает в результате действий пользователя. икс
____________________________________
1 Отчет «Статистика уязвимости Web-приложений за 2008 год», Д. Евтеев, 2009.
2 "Анализ проблем парольной защиты в российских компаниях", Д. Евтеев, 2009.