Расширенный

Расширенный поиск

Автор

Статьи по теме: «Информационная безопасность»

Информационная система глазами внешнего нарушителя

Когда в Рунете публикуется очередная новость о взломе очередной корпоративной информационной системы, обязательно найдется комментатор, который философски заметит: “Абсолютно защищенных систем не бывает”. Это правда. Беда не в том, что все информационные системы так или иначе содержат уязвимости. Беда в том, что они содержат однотипные уязвимости. Проводя в год десятки тестов на проникновение, удается репрезентативную выборку результатов, достаточную для того, чтобы выделить наиболее распространенные типы уязвимостей. О них мы и поговорим.

Содержание:

Статистика – наука безжалостная, она умеет сухим языком цифр описывать весьма и весьма печальные явления. Задумайтесь: почти 90% тестов на проникновение, проведенных специалистами ЗАО «Позитив Текнолоджиз» в 2013 году закончились получением доступа к внутренним узлам корпоративных сетей организаций, проходивших обследование, причем более чем в половине случаев специалистам удалось получить административный доступ к контроллерам домена. Мы можем скептически относиться к созданию “киберкомандований” в различных недружественных государствах, но факт остается фактом: деятельность каждой второй крупной российской организации может быть полностью и надолго парализована командой из 2-4 специалистов, которым для этого даже не нужно покидать свой офис. Вот как это выглядит.

1. Квалификация и возможности нарушителей

Кинематограф создал гротескный образ “усредненного хакера” – это человек, способный “методом пристального взгляда” расшифровать зашифрованный файл и вручную с трех попыток подобрать сложный пароль. На практике это совсем не так. Современный “боевой” хакер – молодой человек 25-30 лет, чаще всего – выпускник технического ВУЗа, заинтересовавшийся взломом веб-сайтов или написанием простейших “троянских коней”. Если десять лет назад взлом был уделом сравнительно узкого сообщества энтузиастов, то сейчас на просторе Интернета есть масса общедоступных инструментальных средств и обучающих материалов. По квалификации нарушителей можно условно разделить на три категории.

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

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

Reseacher – исследователь, способный обнаруживать неизвестные ранее уязвимости или изобретать новые способы использования уязвимостей. Как правило, специализируется на определенном классе исследуемых программных или технических средств.

Несмотря на бытующий миф о “лучших в мире российских хакерах”, их географическое распределение примерно равномерно и пропорционально количеству населения в стране. Наибольший вклад в популяцию хакеров, помимо России, вносят США, ФРГ, Китай, Индия, Франция. По результатам тестирования, которое мы периодически проводим среди молодых специалистов, желающих пройти стажировку и получить работы в нашей компании, примерно каждого десятого script-kiddy можно дотянуть до уровня полноценного специалиста.

Типичный инструментарий “боевого” хакера выглядит примерно так:

  • сканеры сетей и уязвимостей (nmap, Nessus);
  • эксплойт-паки (Metasploit Framework, Canvas, Core Impact);
  • средства перехвата и анализа сетевого трафика;
  • инструменты для подбора паролей и восстановления паролей из хешэй;
  • средства отладки.

Практически все перечисленные инструменты (кроме ряда платных эксплойт-паков) общедоступны. Практически для всего инструментария в сети можно найти документацию, подробные инструкции и даже обучающие материалы.

2. Подготовка к атаке

Задавшись целью провести атаку на организацию, нарушитель идентифицирует ее сетевой периметр. Основной инструмент – поисковые системы. День работы позволяет найти адреса DNS серверов и сервисов, ассоциирующихся с доменным именем организации, а сервисы WHOIS – определить диапазоны принадлежащих ей внешних IP-адресов. Сканирование портов позволяет идентифицировать доступные извне сетевые службы и, в частности, выделить наиболее перспективные для атаки узлы.

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

Кроме того, выполняется поиск любой публичной информации о сотрудниках компаний, в частности – имен, фамилий и адресов электронной почты.

3. Подбор паролей

В 80% информационных систем обнаруживаются сетевые службы, к которым удается подобрать учетные записи, причем в каждой второй системе среди полученных таким образом учетных записей оказываются администраторы и иные привилегированные пользователи, а в 40% систем подобранные полученные учетные записи удается использовать для получения доступа к внутренней инфраструктуре и развития атаки на внутренние информационные системы.

На сетевом периметре атакуемой компании сканированием портов, как правило, удается обнаружить некоторое количество интерфейсов, предусматривающих парольную аутентификацию пользователей. Частота их встречаемости приведена на диаграмме ниже.

Безымянный.jpg

Рисунок 1. Частота встречаемости интерфейсов управления

Для таких интерфейсов выполняется автоматический подбор учетных записей по словарям. Для большинства интерфейсов он малоэффективен: требуется, чтобы и имя пользователя, и пароль были словарными, тем не менее, даже в этом случае иногда удается подобрать учетные записи со словарным идентификатором (“root”, “test”) и паролем (“1234567890”, “P@ssw0rd”) пользователей. В ряде случаев встречаются учетные записи, создаваемые автоматически при установке программного обеспечения.

Особый интерес представляют интерфейсы, используемые для массового удаленного доступа пользователей (терминальный доступ, корпоративные веб-приложения, внешний интерфейс доступа к электронной почте и т.п.). На сегодняшний день существуют публично доступные словари паролей с их частотным распределением, и по статистике 3% пользователей корпоративных информационных систем используют пароли из списка ста наиболее часто используемых. Таким образом, из подбора неизвестных паролей задача нарушителя сводится к подбору имен пользователей, использующих уже известные аутентификаторы.

Очень сильно упрощает задачу стремление отдельных пользователей и компаний стандартизовать именование пользователей. В ряде информационных систем в качестве имени пользователя используется числовой идентификатор или просто порядковый номер пользователя. Во многих компаниях идентификаторы пользователей формируются по определенному правилу на основе имен и фамилий пользователей. Наконец, даже самостоятельно создавая учетные записи, многие пользователи используют идентификаторы, ядром которых являются имя или фамилия человека, дополненные одним-двумя символами. Для подбора таких имен пользователей используются словари наиболее распространенных имен и фамилий, характерных для определенной страны и/или национальности. Таким образом в результате атаки нарушитель получает в свое распоряжение некоторое количество непривилегированных учетных записей, и их количество прямо пропорционально количеству пользователей, имеющих удаленный доступ к атакуемому интерфейсу.

Разработчики принимают определенные меры для противодействию подбору, но часто их реализация не эффективна.

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

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

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

Таким образом, используя небольшой (около ста слов) словарь паролей, удается подобрать учетные записи упомянутых выше 3% пользователей.

CAPTCHA – один из наиболее эффективных пассивных методов противодействия подбору, но и в ее реализации допускаются ошибки. Наиболее распространенные:

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

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

4. Использование удаленно эксплуатируемых уязвимостей

Более чем в 60% информационных систем обнаружить удаленно эксплуатируемые уязвимости, к которым есть полнофункциональные эксплойты. При этом в 20% информационных систем эксплуатация такой уязвимости позволяет не только получить доступ к системе, но и использовать ее для проникновения во внутреннюю инфраструктуру и проведения атак на внутренние информационные системы.

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

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

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

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

При получении отклика производится более детальный анализ сетевой службы. На основании баннера протокола и/или с помощью пробного обмена сообщениями идентифицируется протокол прикладного уровня и выбираются имеющиеся в наличии эксплойты, относящиеся ко всему программному обеспечению, поддерживающему этот протокол. Делаются попытки последовательно применить эти эксплойты, пока они не закончатся или один из них не сработает. Таким образом, ни использование нестандартных сетевых портов, ни изменение баннеров приложений на результат не влияют.

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

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

Однако это не является серьезным препятствием для нарушителя. На сегодняшний день существует сформировавшийся коммерческий рынок бинарного анализа обновлений безопасности. Анализируя изменения, которые вносятся в программный код обновлением безопасности, исследователи локализуют устраняемую обновлением уязвимость и разрабатывают эксплойт к ней. Это довольно трудоемкая и дорогостоящая операция, тем не менее сравнимая по трудоемкости, например, с отключением защиты от несанкционированного копирования программ. Учитывая сам факт наличия такой услуги нужны быть готовыми к тому, что в распоряжении нарушителя может иметься полнофункциональный эксплойт к любой известной уязвимости.

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

5. Уязвимости веб-приложений

Уязвимости веб-приложений – бич современных корпоративных информационных систем, и для этого есть множество причин.

Во-первых, HTTP и HTTPS – наиболее распространенные протоколы доступа пользователей в информационные системы и взаимодействия информационных систем между собой. Обнаружение и использование критических уязвимостей в таком интерфейсе – наиболее простой путь получения доступа к корпоративным информационным системам.

Во-вторых, методология поиска и эксплуатации таких уязвимостей отлично проработана. Разработана типизация уязвимостей (например, в рамках проектов WASP и OWASC), способы выявления этих уязвимостей как анализом исходного кода, так и интерактивными тестами, рекомендации по эксплуатации уязвимостей проработаны вплоть до шпаргалок по особенностям диалектов SQL отдельных версий СУБД и способов обхода правил фильтрации сигнатурных межсетевых экранов прикладного уровня.

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

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

О крайне низком качестве разрабатываемых веб-приложений можно судить, по крайней мере, по следующему факту. Всем, кто хотя бы отдаленно связан с разработкой веб-приложений, известно про опасность SQL-инъекций. Все согласны, что появление такой уязвимости – грубейшая ошибка веб-программиста, и, тем не менее, подобные уязвимости обнаруживаются более чем в 40% случаях. За редким исключением почти каждый веб-сайт содержит серьезные уязвимости, активно используемые нарушителями для разных целей: XSS, CSRF, локальная и удаленная загрузка файлов, предсказуемые идентификаторы сессий и т.п.

Как правило, разработчики и администраторы веб-сайтов недооценивают последствия использования нарушителем уязвимостей веб-приложений. Действительно, уязвимость веб-сайта чаще всего ассоциируется с дефейсом, реже – с размещением на сайте вредоносного контента. В действительности, благодаря тому, что веб-интерфейс и вообще протокол HTTP являются распространенными механизмами взаимодействия корпоративных приложений с внешним миром, успешная атака на корпоративный веб-портал часто может закончится получением нарушителем полного контроля над информационной системой.

Этот тезис хорошо иллюстрируется инцидентом, произошедшим в конце 2012 года. Благодаря SQL-инъекции, обнаруженной на портале одного из банков, хакерам удалось преодолеть периметр и получить доступ к интерфейсу управления его автоматизированной банковской системы. В отличие от большинства подобных инцидентов, заканчивающихся простым безналичным переводом средств со счетов клиентов, мошенники затратили некоторое время на подготовку и провели красивую скоординированную операцию. Они заказали большое количество неперсонализированных пластиковых карт, привязали их к счетам клиентов банка и увеличили лимиты снятия наличных в сторонних банкоматах. Сами карты были распространены между помощниками, и в течение нескольких часов Рождественской ночи 2012 года по этим картам в банкоматах десяти стран мира было обналичено около $9 млн. Еще $2 млн. они точно так же обналичили в новогоднюю ночь, после чего платежная система VISA была вынуждена распространить официальное уведомление, и обслуживание карт этого банка было приостановлено.

6. Заключение

Как видно из приведенного обзора, успешная хакерская атака на корпоративные информационные системы из сюжета для блокбастера превратилась в обыденную реальность. К сожалению, при нынешнем уровне защищенности информационных систем возможности хакеров очень высоки и представляют угрозу не только отдельным компаниям, но и безопасности государства. Проблему очень хорошо понимают государственные регуляторы. Так, Росстандарт разрабатывает семейство стандартов по уязвимостям информационных систем, которые определяют классификацию уязвимостей, порядок проведения работ по выявлению уязвимостей, методы и способы их выявления, а также организацию безопасной разработки. ФСТЭК России создает национальную базу уязвимостей и разрабатывает требования к системам оценки защищенности. В новых методических документах отдельным разделом включаются требования по проведению оценки защищенности и устранению уязвимостей. ФСБ России создает общероссийскую систему обнаружения и предотвращения компьютерных атак на критически важные объекты, Банк России выпустил рекомендации по организации жизненного цикла автоматизированных банковских систем и, в частности, требования по выявлению и устранению их уязвимостей.

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