Friday, July 28, 2017

Кибериммунитет

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

Очевидное поведение: если тебя стали разыскивать, надо "лечь на дно", пока ситуация не успокоится. И, тем не менее, удивился, когда столкнулся с этим на практике. Ребята (для упрощения можно считать APT), которых мы отслеживали в одном из пилотов, вероятно, легли на дно, поэтому пособирав все beacon-ы, вытащив оттуда все C&C-шки, позакрывав все их на периметре, почистив все, что на них отстукивалось, а также все, где были обнаружены другие, найденные в рамках чистки IoC-и, мы, было, успокоились - поддержка с воздуха не наблюдала ничего аномального...
Но к окончанию пилота Ребята вернулись. Причем, с большой степенью уверенности это не был новый пробив, - периметр хорошо просматривался и ничего эксплуатабельного не пролетало. Т.е., они сохранили persistence, просто приостановили свою работу и стали чуть менее заметны, и наш расслабленный подход, заключающийся в фиксации уже выявленного поведения и артефактов перестал давать результат, и отсутствие прежнего шума было расценено нами как победа над атакой, а это было - прекращение, временное.
Поначалу я немного сокрушался о такой нашей "оплошности" - увлеченные своим успехом, мы не заметили как нас переиграли. Но позднее понял то, что хочу донести в этой заметке - они никогда не остановятся. Они будут всегда возвращаться, и не важно как - через новый пробив периметра или используя старые бэкдоры. Задача ИБ - бороться с ущербом, при этом все равно как достигается, что его нет - Ребята не проникли в инфраструктуру или они пробились, но как только начинают активничать их сразу выявляют и они уходят, путь на время, чтобы затем вернуться, но результат достигнут - ущерба нет.

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

Как иммунитет постоянно в работе, так и ИБ - это бесконечный процесс выявления, расследования и чистки, причем, может, и не важно, что зачищено не все, важно, что ущерба нет, проявится активность - зачистим еще раз, главное - иметь возможность своевременно выявить и расследовать, до того, как активность обратится в профит для Ребят, и в ущерб для вас.

Закончить хочется краткими тезисами, суммирующими опыт, который я пытался максимально интересно изложить сегодня:
1. Ребята не отстанут - они будут приходить снова и снова
2. Не надейтесь на периметр, есть масса способов попасть внутрь, руководствуйтесь принципом, что Ребята уже внутри
3. Шансов обнаружить Ребят внутри значительно больше, так как закрепление, горизонтальные перемещения, внутренняя рекогносцировка,  сбор данных, эксфильтрация, удаленное управление и т.п. - намного более продолжительные и шумные операции, чем пролет неведомого эксплоита через периметр.
4. Не надо стремиться победить все зло (недостижимость совершенства - закон диалектики), надо стремиться победить материальное зло, несущее ущерб. Про приоритезацию есть книжный термин - триаж, но думаю на уровне здравого смысла, и без книжек, смысл понятен.
5. Никогда не расслабляйтесь - "тишина - страшный звук" - возможно Ребята сменили тактику, сменили инструменты, временно затихли - ищите с еще большим вниманием, охотьтесь постоянно, помните п.1
6. Квалификация и осведомленность Ребят - очень высокая, они знают вас и как вы их ищете, за вас здесь только старая аксиоматическая поговорка криминалистов о том, что любое преступление всегда оставляет улики - ищите эти улики, постоянно, а кто ищет - тот находит.
7. ИБ (Threat hunting, в частности) - это кибериммунитет корпорации, контролирующий ситуацию, не позволяющий ей дойти до ущерба.



Thursday, July 6, 2017

А ваши СОКи готовы к жаждущим рыданий неПетям?

Активное действие требует активного противодействия

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

На слайде 4 я рассказывал о Контексте угрозы, о современных ТТР, с которыми приходится считаться, а далее, начиная со слайда 11, приводил примеры инцидентов, с использованием этих ТТР и рассказывал, как это обнаруживать. Возможно тогда, все эти "новомодные" подходы типа Threat hunting, обнаружение по ТТР и усиление классического SOC, казались какими-то теоритезированными и далекими, но безжалостная практика показала, что современность требует именно этого.

Рассмотрим поверхностно применяемые техники и как они могут быть обнаружены.

WannaCry (12.05.2017)
Распространение - эксплоит EthernalBlue. Патч был выпущен заблаговременно (14.03.2017), спустя месяц (14.04.2017) - слив, который сразу же был проанализирован, и все нормальные IPS/IDS его детектили уже, самое позднее, на следующий день.
Нагрузка детектировалась нормальными антивирусами эвристикой (по поведению), а затем и сигнатурой на тушки.
"Классических" подходов к ИБ - вполне достаточно:

  • патчи ставить, можно даже с опозданием на месяц,
  • сигнатуры антивируса, IPS/IDS - обновлять,
  • сеть сегментировать (так как после сканирования своей подсети, сканировались случайные адреса),
  • в антивирусе включить поведенческий детект.

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

Очевидно, что статических мер - недостаточно (про это были первые два абзаца воды) и вот практика это показала...

exPetr (27.06.2017)
Распространительный функционал обогащен дополнительными возможностями:

  • эксплоит EternalRomance (направлен на XP/2003, тоже патчится MS17-010);
  • увод аккаунтов (функционал схожий с Mimikatz);
  • далее с этими аккаунтами - wmic и psexec по сети;
  • выбор жертвы:
    • просмотр своих интерфейсов --> сканирование их сетей по 139 и 445 --> доступным - эксплоит/соединение;
    • аналог netstat - с кем соединения established --> эксплоит/соединение;
    • перечень хостов из arp-кеша --> эксплоит/соединение;
    • перечисление компов в домене --> эксплоит/соединение;
    • если адрес хоста - динамический --> эксплоит/соединение DHCP-сервера --> получение всех клиентов DHCP-севера --> эксплоит/соединение клиентов DHCP-сервера.
Вынесем за скобки другие фичи, типа удаления логов (~антифоренсика) и т.п., разберемся хотя бы с выписанным.

Выделенные красным - как раз те техники, что требуют дополнительных мер операционной безопасности - мониторинга и даже несколько более глубокого, так как:
  1. дамп паролей из памяти по поведению надежно продетектить сложно, так как, в целом, инжект в память lsass может быть вызван и легальной работой какой-нибудь загадочной аутентификации или системы безопасности, поэтому, как правило, антивирус детектит конкретный инструмент (Mimikatz, WCE, pwdump и пр.), а не ТТР;
  2. горизонтальные перемещения - выполняются с использованием легальных и даже штатных инструментов, использование которых не представляет собой ничего вредоносного, более того, зачастую используются администраторами (в нормальных инфраструктурах, конечно, не используют psexec (поэтому красным он не выделен), поскольку есть более "интерпрайзные" решения и, исходя из принципа минимума функционала, следует ими и ограничиться, однако, использование WMI (wmic) - достаточно распространенная практика);
  3. тупое шумное сканирование (любая NIDS вполне эффективно обнаруживает сканирования и портсвипы) обогащено функционалом выявления хостов с которыми непосредственно сейчас или в недалеком прошлом уже было сетевое взаимодействие и поэтому вредоносное подключение к ним не будет радикально выделяться при анализе межхостовых взаимодействий;
  4. сканирований за рамки своего VLAN-а уже нет, поэтому пролет "подозрительного" трафика через маршрутизатор (потенциально - межсетевой экран) отсутствует.
1 - обнаруживатется по инжектам в lsass - при наличии достаточной репутационной базы (и коммуникации с админами), аналитик без особого труда из множества инжектов найдет те, которые следует поисследовать, и среди них будет угроза, за которой охотились.
Про 2 у любого охотника накоплен богатый опыт, который, в совокупности с информацией о процессах, участвующих в этой сетевой активности на эндпоинтах, позволит аналитику быстро составить недвусмысленную картину. 
3 связано с 2, да и вообще, отслеживать кто на какой машине логинится и обращать внимание на отклонения от накопленного статистического профиля - дело благодарное, а обогащенное знаниями, что из сессии сетевого логона запускаются еще какие-то процессы, - заслуживает внимание аналитика, особенно когда ранее подобное не наблюдалось.
Нормальные Охотники на угрозы анализируют сетевые соединения. Если у вас DHCP-сервер - маршрутизатор (или, во всяком случае, не windows), то обращение к нему по 445 будет выглядеть более чем странно и внимательный аналитик непременно решит докопаться что за процесс генерит столь странные обращения.

Не надо быть сильно смекалистым, чтобы из написанного выше не сделать выводы, почему SOC-а в его классическом текущем понимании мало. И, все-таки, кратко остановлюсь на этом:
  • нужны низкоуровневые события с эндпоинта - запуски процессов, их сетевые соединения, загрузки библиотек, инжекты в код других процессов и т.п.;
  • в дополнение к эндпоинту, нужны данные, как минимум, с сетевого периметра, крайне полезен результат анализа внутреннего трафика;
  • нужны механизмы контроля использования легитимных и штатных инструментов ОС с возможностью быстрого понимания что "нормально", а что - "подозрительно";
  • нужны хорошие справочники TI, как позволяющие автоматически маркировать объекты в логах с последующим использованием в корреляционной логике, так и служащие справочником для аналитика, выполняющего расследование подмеченной подозрительной активности;
  • ну и, конечно, инфраструктура быстрого (~ автоматического) проведения форенсики - песочницы, опять же обвешенной всевозможным TI, позволяющим что-то автоматически протеггировать и немного сократить задачу аналитика по поиску следов атаки или подозрительной активности.

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