31.12.2009

Пять способов взломать (и защитить) сети «by Microsoft»

В этой статье я постарался скомпилировать наиболее распространенные угрозы  безопасности сетей, построенных на основе решений Microsoft, и описать методы защиты от связанных атак.

Владимир Тигров

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

Кто пасется на лугу?

Сетевой периметр – основа безопасной информационной системы, т.к. фильтрация трафика является  базовым защитным механизмом.  Не смотря на то, что эта технология развивается с 1988 года, основная проблема, связанная с фильтрацией трафика, была и остается неизменной со времен DEC'овских пакетных фильтров.

Давайте попробуем угадать, в чем она заключается. Сложности с обработкой IP-фрагментации? Сбор и контроль TCP-сессий? Обработка протоколов прикладного уровня? Сложности работы с зашифрованным трафиком?... Нет, нет и еще раз нет!
Главная проблема межсетевых экранов заключается в неадекватной реализации политики фильтрации трафика. Зачастую на периметре сети можно встретить сетевые службы, о которых не подозревают ИТ- и ИБ- специалисты, и демонстрация их наличия взывает многочасовые разборки на тему «Где эта ..? (C)».

Что это у нас там торчит на порту 23523? Служба Remote Desktop или Radmin, «прокинутая» администратором для «подкрутки» контролера домена в случае «падения» VPN? «Забытый» разработчиком SQL-сервер с пустым паролем SA? «Недозакрытый» 1026/445/UDP, через который в сеть проползет «специально обученный» вариант Kido?

Рисунок 1 Вот какие шутки встречаются на периметре сети

Кажется нереальным? Удел «школоты»? Ошибаетесь! Эти примеры взяты из реальной жизни и были  обнаружены автором в 2009 году в больших и серьезных корпоративных сетях.

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

Рисунок 2 Сканирование портов, определение ПО – не так уж много. Но для взлома хватит

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

Рисунок 3 Администратор «закрыл» порт 199. И правильно сделал.

Сегодня существует огромное количество разнообразнеых сетевых сканеров, от бесплатных до совсем наоборот. Разнообразие потрясает: Nmap (в пятой версии появился diff!), Nessus (придется поработать руками), MaxPatrol Pentest (скриншоты сняты с него), EEYE Retina (ностальгия, мой первый сканер) и многие другие.

Уж сколько раз твердили миру?

Наметившаяся тенденция широко использовать удаленный доступ к корпоративным ресурсам через протоколы HTTP/HTTPS кроме удобства порождает и ряд проблем с безопасностью. Прежде всего,  повышаются требования к парольной политике. У удобной и приятной технологии Single-Sing-On есть и обратная сторона: как только внутренние службы становятся доступными снаружи, подбор пароля к внутренней учетной записи превращается в тривиальную задачу.

Считаете, что пароль P@ssw0rd встречается только на курсах Microsoft, а 12345678 или пустой пароль у «Domain Admin» – это просто нонсенс? Отнюдь нет. Позвольте привести исследование, в котором, кроме других, встречается один интересный факт: администраторы используют менее стойкие пароли, чем пользователи.

Рисунок 4. Вот такие они, корпоративные пароли

И что мы имеем в результате? Подобранный за пять минут с помощью Hydra пароль P@ssw0rd сервисной учетной записи sqlserver, на которую не распространяются правила смены пароля, но у которой есть доступ к SharePoint, Outlook Web Access и … VPN. Думаете, этого недостаточно, чтобы порезвится во внутренней сети? Более чем! Особенно, если подумать о том, для чего может использоваться учетная запись sqlserver :).

Рисунок 5 Подбор паролей по хэшам в SQL Server. Быстро и эффективно

Что делать? Ответы простые, но их много:

  1. Введите строгую политику паролей и обучите пользователей как им жить с этим.
  2. Контролируйте соблюдение политик с помощью автоматизированных сканеров, таких как l0phtcrack, SAMInside, MaxPatrol . Многие из них имеют возможность подбирать пароли по хэшам, что позволяет часто проводить проверку.
  3. Откажитесь от принципа «все и всем». Ограничивайте круг пользователей, которые имеют доступ к Sharepoint, OWA, VPN из Интернета. Делать это можно и путем настройки служб, и ограничивая доступ к ISA/Forefront.
  4. Если генеральный директор и бухгалтер не в состоянии ввести свой пароль, купите им смарткарту или USB-token. Уверяю, что для своего удобства они будут готовы потратить тысячу рублей.

Заплатка на заплатку

Кто в 21-м веке ставит патчи? Правильно. Не кто, а что. Патчи для Windows ставит WSUS. А нормальные администраторы попивают чай/кофе/пиво и занимаются более важными делами. Но что делать, если патчи вдруг не встали? Так не бывает, скажете вы? А откуда тогда массовые эпидемии Kido и прочего зловредного безобразия? Видимо, недоработки на местах.
Итак, кроме установки обновлений нужен своевременный контроль того, что они действительно были установлены. И помочь в этом нам может огромное количество программ, например бесплатный MBSA. Но у него есть один существенный недостаток: он не позволяет проверять компьютеры, на которых вы не являетесь администратором. Откуда они берутся? Это те компьютеры, которые были исключены из домена, или где не в меру ретивые пользователи выкинули «Domain Admins» из группы администраторов.

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

Рисунок 6 Кто не поставил патчи?

Заплатка на заплатку для заплатки

Предположим, с обновлениями Windows все нормально, и Kido не пройдет. И все, можно спать спокойно? К сожалению – нет. Попробуйте зайти по ссылке http://www.surfpatrol.ru. Появились «красненькие» строчки? Что там? Adobe Reader, Flash, Java? Неужели их тоже нужно патчить?!

Нужно! Более того, именно это программное обеспечение сейчас наиболее активно используется злоумышленниками для взлома.  Дошло до того, что F-Secure предлагает вообще отказаться от Adobe Reader.  Может быть и перебор, но у меня в сети все давно уже сидят на FoxIt.

Рисунок 7 Вчера обновлялся через WSUS :(

К сожалению, не смотря на все обещания, Microsoft WSUS до сих пор не поддерживает установку обновлений для сторонних продуктов, поэтому и обновлять весь этот зоопарк придется с помощью сторонних продуктов, например Shavlik.

На уколы становись!

Предположим, вчера вы опубликовали в Интернете новый корпоративный портал/сервер биллинга/домашнюю страничку. Безопасна ли она? Патчи поставлены, фаервол настроен?

А что вы думаете на предмет уязвимостей Web-приложений? Таких, как SQL Injection/Cross-Site Scripting и прочие?
Недавно на глаза попадался интересный документ, авторы которого утверждают, что больше чем в половине всех Web-сайтов можно найти подходящие для «взлома» дырки.

Рисунок 8 Вот такая неутешительная статистика

Т.е. любой школьник с Античата, обладающий уникальными знаниями заклинания 1’ OR ‘1’=’1, при должном желании и прилежании может навести хаос в Интернете. Что иногда и случается, когда через SQL Injection взламывается по 130 000 сайтов за раз.
Чтобы обезопасить себя от подобных напастей, необходимо искать и закрывать уязвимости в Web-приложениях. Искать их можно с помощью специализированных сканеров, таких как Acunetix, MaxPatrol, HP WebInspect и другие.

С закрытием дело обстоит сложнее. Ведь не всегда есть возможность исправить исходный код приложения, где обнаружена ошибка. Здесь нам на помощь приходят специализированные варианты фаерволов, так называемые Web Application Firewall. Это специализированные системы, которые позволяют путем глубокого анализа протокола HTTP обнаруживать и блокировать атаки, связанные с Web-приложениями.

Для ознакомления с этой темой могу порекомендовать презентацию Дмитрия Евтеева, а в качестве практического пособия - «How IAG 2007 Can Mitigate Against SQL Injection Attacks».

А дальше?

А дальше еще непаханое поле различных интересных проблем и задач, о которых я могу рассказать в следующих статьях. Если это будет интересно уважаемым читателям!
С новым годом!