Tuesday, January 24, 2017

SLA для Threat Hunting-а

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


Любая работа SOC характеризуется определенными параметрами уровня сервиса, закрепленными в Соглашении. Традиционно, - это Время реакции и Время решения. Threat hunting (TH), вроде как, тоже работа SOC, а значит, тоже должны быть метрики времен реакции и решения... А вот и нет! 

Эти метрики предполагают, что есть некоторая точка во времени, откуда начинается их отчет, т.е. они по определению неразрывно связаны с Alerting-ом. ТН же предполагает проверку гипотезы путем анализа множества показателей, каждый из которых по отдельности еще не является свидетельством атаки, однако совокупность таких признаков, под соусом всевозможного Threat intelligence, помноженная на опыт аналитика - вполне может ею быть. На практике ТН реализуется как совокупность поисковых запросов, выдающих некоторый список кейсов, которые надо "отсмотреть" и расследовать, путем все тех же запросов, но с уже с уточненными условиями, - получить новый список кейсов, которые также надо проверить и т.п. - процесс итеративный. Обнаружив через последовательность таких запросов подозрение на атаку, аналитик регистрирует инцидент. В этом подходе нет Alert-а (или есть, но он не представляет собой точный детект, требующий уже реакции, но требующий проверки) от которого начинают свой отчет Время реакции и Время решения, и поэтому такие метрики здесь не подходят. Да они и не нужны, - в случае целевой атаки, согласитесь, если вы были взломаны по меньшей мере последние 6+ месяцев, дополнительные несколько дней на время реакции\решения - не принципиальны.

Но, раз мы занимается чем-то, очевидно, это что-то надо уметь мерить, иначе просто не понятно делаем ли мы это хорошо, и вообще, нужно ли это делать, поэтому метрики нужны. Можно предложить следующие:
1. этап атаки, когда вы ее обнаружили - характеризует оперативную готовность, а также способность обнаруживать атаку на разных стадиях (очевидно, обнаружить надо уметь на всех этапах и, по возможности, как можно раньше);
2. абсолютное время с момента компрометации - спустя сколько времени с момента взлома обнаружили (надо учитывать только то время, в которое проводился ТН);
3. критичность обнаруженного инцидента - важно для планирования реагирования;
4. % и тип ложных срабатываний - определяет с одной стороны - качество подходов к обнаружению, а с другой стороны - эффективность расходования ресурсов ТН;
5. гипотеза, которая сработала, - гипотеза может быть оформлена, например, в виде цепочки связанных событий, что технически может быть реализовано в виде последовательности связанных поисковых запросов и частично может быть автоматизировано - нужно анализировать результативность гипотез (сразу замечу, что это не просто количество успешных "хитов", а более сложная метрика, учитывающая современные тренды, "моду" на те или иные ТТР атакующих), ну, как минимум, чтобы, придя в поле, приоритезировать свою работу, проверяя в первую очередь гипотезы, наиболее часто дающие положительный результат (вообще, для гипотез надо иметь своего рода процесс Управления изменениями, чтобы отслеживать все их параметры: фолсивость, трудоемкость проверки, актуальность/современность, где/кто использовал такие ТТР и т.п., - это заслуживает отдельной заметки);
6. степень автоматизации - параметр который, преодолевая все трудности насколько это возможно, надо стремиться увеличивать со временем (== его надо контролировать);

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



Thursday, January 19, 2017

Об Ответственности и Возможностях

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

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

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

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

Saturday, December 31, 2016

Профессионализм vs. Новые идеи

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

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

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

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

В этом последнем моем посте в уходящем году, я хотел бы нам всем пожелать:

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

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

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