Sunday, December 25, 2016

Полечить нельзя форенсить

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

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

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

Но бывает и иной сценарий - ВПО является кастомизированным инструментом проведения атаки. Тут миллион различных вариантов, но принципиально, что в этом случае за атакой стоит целеустремленный человек, который в случае неуспеха будет пробиваться до последнего, пока цель не будет достигнута. Здесь хорошим сравнением может служить команда пентестеров, которая рано или поздно совершит успешный взлом через тот или иной вектор. Вот это и есть "Целевая атака".

При расследовании инцидентов ИБ принципиально отличать "Обычную малвару" от "Целевой атаки", поскольку принципиально различная реакция требуется.

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

А вот с целевой атакой все наоборот, - обнаружив какой ее компонент просто детектить ее нельзя. Помним, что за ней стоят конкретные люди, которые превосходят в технических познаниях и возможностях нас с вами, бумажных интерпрайзных безопасников, голова которых забита космосом про СУИБ, governance и пр., безусловно, важными вещами, но, как правило, далекими от практической стороны вопроса, - заметив, что мы их стали детектить - они сменят тактику\инструменты\процедуры и мы снова будем вынуждены их искать, или надежно уничтожат свои следы и мы не сможем их исследовать, или обидятся и что-нибудь нам поломают - мы же пока еще не знаем как глубоко они в нас попали и какие у них есть возможности по управлению нашими системами, как они закрепились и т.п. В случае целевой атаки надо проводить полноценное расследование, получить ответы, как минимум, на следующие вопросы:
- как они получают к нам доступ, как осуществляется контроль со стороны атакующего, как устроена С&C, как передаются данные;
- как они к нам попали (вектор проникновения);
- все стадии атаки (для затруднения расследования, уничтожения следов, а также множества других плюсов с т.з. разработки атаки, применяются многоступенчатые комбинации, когда одно [В]ПО запускает другое [В]ПО, которое надежно удаляет первое, которое запускает третье и т.п.);
- какие инструменты они используют, и как все эти компоненты работают совместно, управляются;
- как и где они закрепились, как реализовано обеспечение высокой доступности инфраструктуры атаки (плохие ребята, безусловно, готовы к тому, что их когда-то начнут детектить, поэтому у них есть миллион вариантов, как обеспечить живучесть своей атаки - многократное закрепление с использованием различных техник, взаимный контроль закрепления - сервисы которые поднимают друг друга и перепрописывают правильные слова в конфигах и реестре в т.ч. и по сети и т.п.)

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

Я люблю для пояснения использовать аналогии - здесь подходит аналогия с захватом ОПГ. Чтобы затем не гоняться за ее участниками, каждый из которых может собрать по такой же ОПГ, что явно прибавит работы и увеличит ущерб, лучше придумать как накрыть всех сразу.

"Все здорово", - скажете вы, - "но как же отличить "целевую атаку" от "обычной малвары"? Наверно, и в этом случае отвечать пришлось бы очень долго, однако накидаю первые пришедшие на мысли:
- анализ найденного ВПО - в случае целевой атаки процесс будет превышать одну итерацию: нашел подозрительный образец, отреверсили, достали из него IoC-и (какие-то связанные компоненты, какие-то конфиги, ветки реестра, адреса С&С - да что угодно, по чему можно поискать и быть уверенным, что найденное будет относиться к нашему кейсу), поискали данные IoC-и по всей нашей сети, нашли еще файлы, компьютеры - их тоже отреверсили\отфоренсили, вытащили новые IoC-и - поискали уже по ним и т.п.;
- установленный функционал - что файлик делает, понятно ли вообще на текущем этапе его назначение;
- популярность - видели ли это где-нибудь когда-нибудь у кого-либо раньше;
- пересечения по имеющемуся Threat intelligence - может, что-то совпадает по C&C, по хешам компонент, по поведенческим сигнатурам, по любым другим IoC-ам и атрибутам атаки.

Буквально пару слов про атаки без применения ВПО (возможно, об этом надо отдельно написать поподробнее). Такие атаки находятся исключительно по поведению в тесной коммуникации с владельцем инфраструктуры, ибо здесь без "situational awareness" не обойтись - отличить легитимное использование psexec, teamviewer или powershell-скрипта, запускаемого из Word-а от нелигитимного, к сожалению, можно только спросив. В большинстве случаев нелегальных действий без применения ВПО мы будем иметь дело с целевой атакой.

В заключение, приведу простую последовательность действий (эдакий дайджест из всего, что я выше написал):
1. Если вы что-то обнаружили - начинаем строить цепочку расследования: (то, что обнаружили) -> IoC1 -> (то, что нашли по IoC1) -> IoC2 -> (то, что нашли по IoC2) -> ... .
2. Если цепочка закончилась на том, что обнаружили (нет связных компонентов, функционал понятен и т.п.) - можно просто продетектить\пролечить, как  yet another malware и закрыть инцидент.
3. Если цепочка длинная, то надо пройти ее до конца, вытащив всю информацию об атаке, достаточную для того, чтобы накрыть всех сразу.
4. Придумать как накрыть всех сразу и сделать это.
5. Придумать как защититься в будущем.


Sunday, November 27, 2016

Attack Kill Chain

Очевидна необходимость анализа компьютерных атак с позиции Cyber Kill Chain. Как минимум, полезно самим увидеть на каких этапах происходит детектирование - отсюда можно сделать выводы об эффективности тех или иных типов средств защиты информации (превентивных, детективных и т.п.), об эффективности конкретных систем безопасности.
Сама идея - превосходна и стадии, в общем-то правильные, однако, с точки зрения корпоративного мониторинга, как правило, действующего без поддержки всеобъемлющего Threat intelligence-а (в совокупности с телепатией), позволяющего узнавать об атаке практически сразу как о ней подумал атакующий (действительно, едва ли я смогу задетектить атаку на этапе Weapoization, а этап Delivery настолько краткосрочен, что его можно совместить с Exploitaion без ущерба для идеи; а  с другой стороны упущена необходимость атакующему "осмотреться внутри, куда он попал", "повысить свои привилегии" - когда для достижения целей надо быть админом, а проэксплуатировав периметр удалось стать лишь рядовым сотрудником Бухгалтерии). К сожалению, в подавляющем большинстве случаев, об атаке мы узнаем когда нас уже начали атаковывать, или, хотя бы, активно инвентаризировать.
Поэтому, вынужден позволить себе переписать стадии Kill Chain на более, на мой взгляд, приближенные к практике обнаружения атак.

Recon - первоначальная рекогносцировка. Здесь имеется в виду, что меня пассивно (можно заметить только Threat Intelligence-ом) или активно (можно увидеть, например, сканирования) исследуют, чтобы найти потенциально удачные для атаки уязвимые места.
Initial compromise - атакующий эксплуатирует обнаруженную на этапе Recon уязвимость. Это может быть эксплоит, эксплуатирующий техническую уязвимость в применяемом у меня ПО, или социальная инженерия, эксплуатирующие уязвимости в моей программе повышения осведомленности.
Persistence establishment - успешно проэксплуатировав уязвимость, атакующему надо закрепиться в моей инфраструктуре. Здесь можно обнаруживать записи в autoruns, планировщики задач, исталляцию сервисов и пр. техники. 
Privileges escalation - повышение привилегий - также неотъемлемый этап атаки, в рамках которого можно обнаруживать попытки неавторизованного доступа, применение инструментов, атакующих аутентификационные данные и т.п. Этап будет выполняться атакующим, например, для обеспечения lateral movement или обеспечения дополнительных возможностей для достижения конечных целей атаки.
Internal recon - получив возможность перемещения по сети, атакующий ищет свою конечную цель. Здесь можно наблюдать внутренние сканирования, выполняемые уже закрепившимся и получившим необходимый доступ атакующим.
Post-exploitation - когда все сложности преодолены и атакующему остается только реализовывать свою конечную цель атаки. Здесь можно наблюдать уже какие-то сливы данных, исполнение команд, полученных с C&C, а может, и участие в DDOS или майнинг Bitcoin-ов, и т.п.






Saturday, November 19, 2016

Как реализовать требования ИБ и не потерять внутреннюю свободу @ZN2016

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


Сам себе Threat hunter @ZN2016

Как обещал на BIS Summit-е на ZN рассказали техническую составляющую тематики Threat Hunting-а, с позиции как это можно сделать самому, при остром нежелании (или отсутствии возможности) приобретения полноценного коммерческого сервиса.
В докладе были затронуты сначала теоретико-процессная сторона вопроса, затем подробно рассказано о собранном лабораторном стенде и, в заключении, продемонстрирован наглядный пример расследования целевой спам-рассылки с последующей эксплуатацией.
Презентация:


Все конфиги: https://github.com/votadlos/ZN2016

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






Friday, October 14, 2016

IoNA: ADS офисных приложений

Полезно следить за ADS.

Подозрительные с первого взгляда ADS вида "c:\programdata\temp:58a5270d", создаваемые офисными приложениями powerpnt.exe, winword.exe, excel.exe - нормальная активность, если имеет место использование ПО Office Tab.

Monday, October 10, 2016

Охота на угрозы @BIS SUMMIT

23.09 на конференции за 20 минут знакомил аудиторию с проблематикой Threat hunting-а. Тема обширная, говорить о ней можно значительно дольше, поэтому в отведенный тайм-слот имел цель донести почему это нужно и важно. 
Основная мысль презентации выражается примерно в следующем. 
Для того, чтобы сделать сигнатуру защиты от угрозы, необходимо эту угрозу сначала найти и проанализировать. Традиционно компании, занимающиеся исследования в области ИБ и предоставляющие своим клиентам защиту от угроз, вынуждены искать их in the wild. В случае APT поиск ITW зачастую невозможен (ну, как минимум, не очень эффективен), так как ВПО и прочие TTP, используемые в APT-кампаниях отличаются высокой кастомизацией. Именно поэтому для защиты корпорации от кастомизированных атак, необходимо уметь искать угрозы (== Threat hunting) не ITW, а непосредственно в корпоративной инфраструктуре. ТН не является простой задачей, поскольку для этого нужны специализированные инструменты, процессы, опытный персонал. Понятно, что компания, занимающаяся поиском угроз ITW и обеспечивающая для своих продуктов удовлетворительное качество обнаружения/зашиты, сконцентрировав всю мощь своего ТН на конкретной инфраструктуре конкретного предприятия, покажет еще больший Detect rate, ибо законы сохранения работают и здесь: с уменьшением объема анализа, уровень выявления повышается.
К сожалению, природа Человека такова, что ему сложно верить в то, что он понимает плохо, поэтому в презентацию были добавлены несколько тяжелых слайдов о том, как работает ТН изнутри в надежде на то, что эта вершина айсберга будет иметь положительный эффект: усилит веру в ТН и, в то же время, не загрузит окончательно, создав противоположный эффект в виде отвращения.
В завершение были приведены пара обфусцированных случаев из практики - как они были обнаружены и расследованы, несмотря на то, что в одном вовсе не применялось ВПО, а в другом использовались образцы, не обнаруживаемые на момент проведения расследования.
Я искренне надеюсь, что мне удалось просто рассказать о сложном - еще со времен института я считаю эту способность наивысшей добродетелью преподавателя, так как именно это способствует разжиганию того самого интереса аудитории, на котором впоследствии можно добиться небывалых результатов в понимании предметной области. 

Update 31.03.2017
1. Выкладываю презентацию

2. Про то же самое еще есть статья в журнале БДИ.


Saturday, October 8, 2016

Классификация инцидентов

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

С операционной точки зрения пользой может быть тот самый "triage", необходимый для приоритезации усилий, а при постфактумном анализе, скажем, за квартал, - поможет понять сколько инцидентов какой Критичности, или, если хотите, Приоритета, у меня было за период, чтобы планировать ресурсы на мой Incident Response в будущие периоды более осмысленно, чем ППП.

Проблема всех попадающихся в Google классификаций в том, что они нередко дают противоречивые результаты, что позволяет одному аналитику получить уровень High, другому - Low, и при этом каждому быть правым. Вот давайте попробуем по этому классифицировать это. Если это просто малварь, тогда - Low-Medium, если же это APT, то надо считать High. Причем, все еще интереснее, так как пока это не было исследовано - это было APT, а когда это разобрали и добавили детекты - это уже обычное ВПО :), но не будем этим загружаться.

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

И вот что получилось.

Ущерб
Фактический
Потенциально большой
Потенциально небольшой
Тип инцидента
APT
CRITICAL
HIGH

Сетевая атака
HIGH
MEDIUM
LOW
Malware: Trojan, Criptor, etc
Запущено /активно
MEDIUM
Не запущено /неактивно

MEDIUM
LOW
Scan, Misuse, Configuration error
Adware, Riskware, Potentially unwanted program


Если у вас что-то серьезное (APT или по вам шарятся какие-то неэтичные ребята), то это -  HIGH, если предполагается наличие CRITICAL, то должен быть подтвержденный ущерб.
Если у вас просто новая недектируемая (т.к. детектируемую просто убьет антивирус) малвара - MEDIUM, но если она успела натворить Ущерб - надо повышать до HIGH.
Если ошибки пользователей или админов имеют потенциально большой ущерб - это MEDIUM, сюда же можно отнести какие-нибудь рекогносцировки неэтичных ребят, так как они еще не успели начать работать. Если же ущерб небольшой - это LOW. Я не стал рисовать, Misuse с фактическим ущербом, который надо бы классифицировать как HIGH, ибо склонен считать, что админы и пользователи у нас с вами достаточно профессиональны.
Если вы нашли ПО, которое не имеет вредоносного функционала, а просто нежелательно - это LOW.