Глазами "защитника":
как мы участвовали в Positive Hack Days CityF
"Противостояние".
Часть 5. СражениеС частью 4 (ограничения для защитников и SOC) можно ознакомиться постом ранее.
Итак, ранее я описал суть соревнований, техническое обеспечение и процесс подготовки, а также определенные ограничения для тандема из "защитников" и SOC. Также, если интересно, мнение о взломе ГЭС.
Стоит приступить к описанию самого процесса противостояния - так сказать, битвы, которая длилась 29 часов - с 11:00 17 мая 2016 по 16:00 18 мая 2016.
Предварительно командами защиты и оперативного реагирования было проведено:
- исследование сети;
- инвентаризация инфраструктуры;
- установка и преднастройка необходимых средств защиты;
- реконфигуринг и патчинг дырявых серверов;
- смена паролей, которые можно хотя бы запомнить.
Естественно, первое, что было сделано незадолго до начала - проверка работоспособности и инвентаризация ресурсов. Cразу же были обнаружены некоторые, доселе неизвестные нам, сервера, причем многие из них по факту скана оказались довольно дырявыми. Как я уже неоднократно писал, организаторы хотели шоу, и без таких фокусов было бы не очень весело.
Схема сети (упрощенная, без филиального офиса) была приблизительно такой:
Интернет был псевдо-, а не настоящий, хакеры попадали в него из ограниченного сегмента. Будь Интернет настоящим, нельзя было бы понять, где атака участника соревнований, а где посторонний хакер, да и гарантии, что кто-то не психанет и не начнет DDoS, не было.
Первым делом я решил засекурить периметр, то есть, навесить на влет со стороны Интернета ACL, который разрешал бы обнаруженные сканом порты серверов DMZ, кроме управляющих (SSH/TELNET/RDP/SNMP) и баз данных (MySQL, Oracle), а остальное закрыть по принципу default deny. Предупредил организаторов, и сразу получил отказ: нельзя, все порты из псевдоинтернета должны быть доступны. Описать мою реакцию можно двумя словами "удивился" и "возмутился", которые выражаются одним словом вместе.
Высказав организаторам все, что думаю о том, какой у нас изначально дырявый дизайн, что нам не дают нормально защищать инфраструктуру, заставляют повернуться голой жопой к интернету, что это все поддавки хакерам и т.п., мы приняли новые правила игры и начали работу:
- патчить дырявые сервера в DMZ;
- навесили ACL на сервера в подсетях Servers1 и Servers2, разрешив к ним доступ из DMZ и админов (организаторы);
- перенесли сканер безопасности, развернутый изначально в DMZ, в подсеть Defense_servers - не хватало еще, чтобы сканер похачили;
- к серверам в подсети Defense_servers запретили доступ отовсюду.
Как я уже упоминал в первой части, с нами в тандеме работал JSOC, который интегрировал инфраструктуру со своим SIEM и мониторил подозрительную активность. Стоит отдать ребятам должное, они мало того, что взяли под колпак любой чих (процессы, входы, сетевая активность) инфраструктуры, так еще и мониторили c экстрасенсорной оперативностью. Вначале, пока не выучили IP-адреса друг друга, меньше чем через минуту после действия мы слышали от них вопросы: "кто зашел на сервер ххх с адреса ууу?", "на сервере поменялся sshd - это что?" и т.п., ну и отвечали им типа: "нормально, свои, это я, обновил дырявый сервак". Если они так же и коммерческих клиентов мониторят, то аплодисменты, рекомендую.
Периодически, когда организаторам становилось грустно и заканчивались темы для рассказа на сцене, хакерам - уныло, а нам - скучно, Миша Левин щелкал пальцами - и в DMZ появлялся дырявый сервак. Щелкал не над нашими ушами, поэтому мы обнаруживали это дело сами, и дальше начинали думать, что за сервак, сканить, патчить, менять легкие пароли. Прямо как распорядитель Голодных игр в одноименной саге о Зойке-Пересменщице, где выпускалось что-то противоестественное, если трибуты долго не умирали.
В общем, первый день прошел более-менее просто, мы даже не фиксировали особых сканов, спокойно засекурили все, что нужно, и удивлялись: чего это так все тихо? Перепроверили: вдруг мы чего-то не видим? Предположили, что виртуальная инфраструктура не выдержала большого количества сканов и хакерский сегмент склеил ласты. Нас это устраивало :)
Только в самом начале, как я уже писал в четвертой части, зафиксировали скан из участка сети, не показанного на схеме. А моя логика как сетевого безопасника простая: раз на схеме сети участка не было - значит, непорядок. Мало ли, может, по условиям соревнований у нас в сети была закладка, которую нужно найти и обезвредить. Поэтому я, быстро обнаружив статический маршрут на проблемную подсеть в сторону неизвестного девайса, сначала навесил ACL на интерфейсах. Заблокировали его - и сразу организаторы предъявили, что у них все пропало и надо вернуть. После недолгого спора пришли к выводу, что это уже перебор. Хотите сканить нас и проверять доступность сервисов - стыкуйтесь со стороны псевдоинтернета и оттуда хоть непрерывно творите безобразия. В итоге стык пересобрали, проблемную сеть я из маршрутизации вывел.
Ближе к вечеру первого дня оказалось, что хакерам сказали не ту сеть, они в большинстве своем сканили нечто несуществующее и порядком приуныли. Тогда мы поняли, что теперь как раз и начнется самый смак. Кроме того, чем дальше, тем больше и чаще начали подниматься дырявые сервера, и к ночи наш DMZ начал становиться похожим на дуршлаг. Сервера взлетали как юниксовые, так и виндовые. Результаты сканов новых серверов показывали уязвимости, в основном PHP, OpenSSL и SSH. Собственно, работы на ночь нам насыпали, чтобы не скучно было. Да еще постоянный риск, что темная сторона силы быстрее обнаружит эти дырки, нас крепко подстегивала. В общем, поспать нам толком не дали. С ночевкой на соревнованиях был SOC всем составом, кроме их босса, и трое от защитников. Ребята умудрились немного поспать, а мне, видать, страх быть похаченным мешал, поэтому я все время что-то делал: то по работе, то по соревнованиям.
PHP, насколько я помню, был 5.3.<чегототам> и 5.4.<чегототам> еще мохнатых 2013-2014 годов. Приходилось обновлять, потому что хакеры первым делом будут ломать веб. Сразу до свежачка не обновлялось, приходилось через тернии по шагам минорных версий топать.
SSH практически везде был уязвим по CVE-2015-5600, что означало отсутствие защиты от перебора паролей и перегруза CPU. Прям как на заказ подобрали. Самое интересное, что не во всех репозиториях были пропатченные на этот случай обновления, нужно было обновлять из исходников. Похожая ситуация и с OpenSSL. Если с последним никуда не денешься, приходилось врукопашную работать, да и меньше их было на порядок, то с SSH я дико возленился делать одно и то же на всех серверах DMZ. И в ходе ночных размышлений мне пришла идея завернуть весь SSH и RDP, который прилетает на сервера DMZ из псевдоинтернета, через Balabit SCB, который я поставил, думая, что смогу прозрачно завернуть через него управляющие протоколы для контроля. До сих пор удивляюсь, как мне пришла эта идея, но она оказалась очень результативной. Итоговая архитектура, несмотря на ее определенную комплексность и трудность в тиражировании на большие инфраструктуры, на соревнованиях нас практически спасла от атак на SSH.
Несмотря на то, что Balabit используется как средство контроля управляющих сессий, а также дополнительно может выступать в роли интеграционной прослойки при управлении плохо/частично/никак интегрированными сетями, ночью с 17 на 18 мая ключевым фактором его применения оказалась неуязвимость проксирующего модуля zorp-ssh к CVE-2015-5600.
Поскольку техническое решение получилось довольно мудреное и возможности
были гораздо большие, чем просто защита от упомянутой уязвимости, о полученном завороте управляющего трафика я напишу
отдельный пост. Гена назвал это "архитектура инженера Дугина".
Ночью, как и ожидалось, поперли сканы, а на второй день началось восстание машин, когда новые дырявые сервера начали расти, как грибы после дождя. Миша Левин махнул рукавом - и все козыри высыпались в DMZшную подсеть.
В общем, 18 мая у нас прошло довольно интенсивно. Хорошо, что днем нас больше, можно распараллелить задачи и хотя бы быстро пообедать. Справедливости ради скажу, что один из дырявых веб-серверов, выросших на второй день, темная сила таки успела похачить через веб, получив единственный "флаг" с нашего тандема. Сервер никак не был взаимосвязан с телекомовским бизнесом и отразился на нас только в виде галочки о снятом флаге. Обнаружил его JSOC через 5 минут, причину мы диагностировали моментально, после чего активировали блокирующую сигнатуру на IPS (была по дефолту в режиме мониторинга и верещала алерт) и пропатчили сервер.
Отдельно хочется отметить тех, хакеров, кто использовал методы социальной инженерии, притираясь возле столов защитников и SOC. Насколько реально было бы попасть в корпоративной среде постороннему человеку к столу настоящего защитника либо SOC, думаю, понятно. Несмотря на попытки смешаться с толпой, отличить их было довольно просто. Главной слабостью защищающей стороны в борьбе с такими методами является занятость и увлеченность техническим процессом. Но мы их все равно замечали.
В 16:00 заканчивались соревнования, и за несколько минут до этого вся сетевая инфраструктура, живущая на виртуалках, не выдержала столь длительного надругательства и начала дико сбоить. Это был не хак, ибо сетевое оборудование мы предварительно защитили в первую очередь.
Доступ стал возможен только через гипервизор, и пока мы с сетевиком организаторов ее восстанавливали, пришло время отдыхать всем участникам, что мы и начали делать с большим удовольствием.
Комментариев нет:
Отправить комментарий