Пентестеры Positive Technologies ежегодно выполняют десятки тестирований на проникновение для крупнейших компаний в России и за рубежом. Эта статья — подборка типовых сценариев атак, которые использовались при пентестах компаний и позволяли получить контроль над сетью заказчика в 80% случаев.

INFO

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

 

Преодоление периметра

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

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

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

 

Можно без 0day

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

 

Сценарий 1. Подбор учетных данных

Интерфейсы управления и удаленного доступа

Протоколы удаленного доступа упрощают работу системного администратора и дают ему возможность управлять устройствами удаленно. Среди распространенных инструментов — Telnet, RSH, SSH и протоколы для удаленного подключения вроде RDP. Чаще всего администраторы используют для этого общедоступное ПО: Radmin, Ammyy Admin и подобные. Это позволяет внешнему нарушителю проводить атаки на подбор учетных данных.

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

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

Нередко в качестве пароля от SSH и Telnet можно встретить комбинацию root:root, root:toor, admin:admin, test:test. В некоторых случаях доступ с максимальными привилегиями удается получить вообще без ввода пароля.


Для доступа по RDP используются локальные либо доменные учетные записи. Часто это Administrator:P@ssw0rd, Administrator:123456, Administrator:Qwerty123, а также гостевая учетная запись Guest с пустым паролем.


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

Интерфейсы администрирования веб-серверов и СУБД

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

Если в случае с SSH и Telnet изначально требуется вручную задавать пароль, то СУБД и веб-серверы обычно идут с паролем по умолчанию. Как показывает практика, далеко не все администраторы меняют эти пароли, а многие изменяют учетные данные на столь же простые комбинации.

Примеры наиболее распространенных учетных данных, которые выявляются в наших тестах на проникновение:

  • СУБД — sa:sa, sa:P@ssw0rd, oracle:oracle, postgres:postgres, mysql:mysql, mysql:root, различные комбинации с пустым паролем;
  • для серверов Tomcat — tomcat:tomcat, tomcat:admin.




Через админку Tomcat Web Application Manager можно загружать файлы в формате архива с расширением war. Атакующий может загрузить не только веб-приложение, но и веб-интерпретатор командной строки и получить возможность выполнять команды ОС.


Доступ к базе данных тоже открывает широкие возможности — в том числе позволяет выполнять на сервере команды с привилегиями СУБД. Этого может оказаться достаточно для атаки на другие узлы сети.

К примеру, в старых версиях MS SQL Server продукт устанавливался в ОС по умолчанию с привилегиями NT AUTHORITY\SYSTEM, максимальными в Windows. Нарушитель, подобравший учетную запись СУБД, моментально получал полный контроль над сервером.


В актуальных версиях MS SQL Server этот недостаток учтен, привилегии СУБД по умолчанию ограниченныNT SERVICE\MSSQLSERVER. Однако даже эти меры зачастую не обеспечивают должный уровень защиты.

Другой вариант развития атаки — эксплуатация уязвимостей в ОС. В одном из пентестов мы выяснили, что пользователь NT SERVICE\MSSQLSERVER обладает привилегиями SeImpersonatePrivilege, которые позволяют ему с помощью токена делегирования (impersonation-token) присвоить себе привилегии любого другого пользователя из перечня доступных (например, при помощи утилиты Mimikatz).


Рекомендации по защите. Администраторы должны тщательно следить за тем, какой уровень привилегий используют те или иные системы и пользователи, и по возможности назначать минимальные права.

Рекомендуем ввести строгую парольную политику и ограничивать доступ к СУБД и интерфейсам администрирования веб-серверов из интернета, разрешив подключение только из локальной сети с ограниченного числа компьютеров.

Если удаленный доступ к администрированию веб-сервера необходим, рекомендуем ограничить список IP-адресов, с которых возможно подключение, и оставить доступ только с администраторских компьютеров.

 

Сценарий 2. Эксплуатация веб-уязвимостей

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

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

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

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

В исследованном приложении была реализована проверка, которая запрещала загрузку файлов с расширением PHP. Мы выяснили, что на сервере используется уязвимая комбинация ПО и ОС, которая позволяет обойти данное ограничение. В частности, в конфигурации CMS Bitrix в файле /upload/.htaccess не было установлено ограничение на загрузку файлов с расширением pht. Этот формат файла исполняется в ОС семейства Debian и Ubuntu как файл формата PHP. Таким образом, уязвимая конфигурация сервера позволила загрузить веб-интерпретатор командной строки на сервер в обход установленных ограничений.




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


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

Рекомендации по защите. Помимо строгой парольной политики, рекомендуем ввести белые списки для проверки загружаемых на сервер файлов. Для защиты от эксплуатации уязвимостей кода приложения (внедрение операторов SQL, выполнение команд) необходимо реализовать фильтрацию передаваемых пользователем данных на уровне кода приложения. Кроме того, рекомендуем использовать межсетевой экран уровня приложения (web application firewall).

WWW

Больше деталей можно найти в специальных отчетах «Уязвимости веб-приложений» и «Атаки на веб-приложения».

 

Сценарий 3. Эксплуатация известных уязвимостей

Атаки на уязвимый протокол

Еще один пример использования недостатков фильтрации трафика — это атака на протокол отладки Java Debug Wire Protocol (JDWP), один из компонентов системы Java Platform Debug Architecture (JPDA). Этот протокол не обеспечивает аутентификацию и шифрование трафика, чем могут воспользоваться внешние нарушители, если интерфейс JDWP доступен из интернета. Злоумышленник может взять общедоступный эксплоит для выполнения команд ОС. Кроме того, служба, использующая JDWP, зачастую обладает максимальными привилегиями, что позволяет внешнему нарушителю за один шаг получить полный контроль над сервером. Ниже показан пример успешной атаки с использованием общедоступного эксплоита.


Моделируя атаку на сервер, мы загрузили файл exec.pl с backconnect-скриптом. Далее мы поменяли привилегии на исполнение этого файла. В результате запуска скрипта был получен интерактивный шелл, который позволял выполнять команды ОС для развития атаки.

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

Атаки на уязвимое ПО

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

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

В ряде проектов мы продемонстрировали эксплуатацию критически опасной уязвимости Heartbleed (CVE-2014-0160). Если сервис поддерживает SSL-соединения или если на узле используется *nix-образная ОС, уязвимая версия библиотеки OpenSSL позволит читать участки памяти серверного процесса (в данном примере — веб-сервера). В таких участках памяти могут в открытом виде находиться критически важные данные: учетные данные пользователей, пользовательские сессии, ключи доступа и прочее. В результате проведения атаки и анализа участков памяти был, в частности, получен пароль пользователя.




Рекомендации по защите. Для предотвращения подобных атак рекомендуем своевременно обновлять ПО и устанавливать обновления безопасности для ОС. Кроме того, желательно не раскрывать версии применяемых систем — в частности, версию веб-сервера, которая может указываться в стандартных сообщениях об ошибках или в ответе HTTP.

 

Сценарий 4. Социальная инженерия

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

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


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

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

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

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

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

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


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


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

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

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


6 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Уязвимость на странице авторизации Joomla позволяла узнать учетные данные администратора

Релиз Joomla 3.8 принес более 300 исправлений и улучшений, а также устранил две уязвимости…