В этой статье раз­берем про­цесс реаги­рова­ния на инци­дент, свя­зан­ный с ком­про­мета­цией менед­жера пакетов NuGet. Рас­смат­ривать ата­ку мы будем на при­мере лабора­тор­ной работы Nuts из раз­дела Sherlocks на пло­щад­ке Hack The Box.
 

NUTS

Нам даны фай­лы дис­ка C:, жур­налы $J, $MFT, пап­ки поль­зовате­лей, prefetch-фай­лы — в общем, час­тичный дамп прос­той поль­зователь­ской сис­темы.

Уни­каль­ность лабора­тор­ной работы в том, что к ней нет никако­го опи­сания, поэто­му стро­ить век­тор ата­ки и искать необ­ходимые арте­фак­ты мы будем, опи­раясь на име­ющиеся воп­росы.

 

Первоначальный доступ

На­чать поиск арте­фак­тов мож­но с прос­того прос­мотра фай­лов и катало­гов сис­темы. Перей­дя в пап­ку Users, мы уви­дим, что на хос­те сущес­тву­ет один поль­зователь Administrator. Если про­ана­лизи­ровать его домаш­нюю дирек­торию, то мож­но понять, что в стан­дар­тных пап­ках Documents, Downloads, Desktop, Searches нет ничего инте­рес­ного, кро­ме уста­нов­щика Visual Studio в заг­рузках.

Вни­мание прив­лека­ет пап­ка .nuget с находя­щим­ся внут­ри катало­гом пакета PublishIgnor. Зна­чит, в сис­теме уста­нов­лен NuGet.

NuGet — это бес­плат­ный пакет­ный менед­жер c откры­тым исходным кодом, слу­жащий для .NET и .NET Core механиз­мом сов­мес­тно­го исполь­зования кода. Офи­циаль­но под­держи­вает­ся фир­мой Microsoft. Дру­гими сло­вами, это сис­тема рас­простра­нения ПО, которая поз­воля­ет раз­работ­чикам заг­ружать и вклю­чать в свои про­екты готовые к работе биб­лиоте­ки .NET. Лег­ко интегри­рует­ся с MSBuild и Visual Studio, уста­нов­щик которо­го мы замети­ли ранее.

С име­ющи­мися све­дени­ями поп­робу­ем отве­тить на пер­вый воп­рос.

Как Алекс (адми­нис­тра­тор) интегри­ровал пакет, эко­номя­щий вре­мя, в про­цесс раз­верты­вания?

Мо­жем пред­положить, что поль­зователь как раз пытал­ся интегри­ровать PublishIgnor в Visual Studio. Он мог поп­робовать уста­новить пакет с помощью cmd.exe или powershell.exe.

В пре­дос­тавлен­ных фай­лах нет никаких жур­налов логиро­вания Visual Studio или NuGet, одна­ко уда­лось най­ти жур­нал PowerShell вот в такой дирек­тории:

C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline

В фай­ле ConsoleHost_history.txt вид­но две попыт­ки уста­нов­ки пакета.

Те­перь необ­ходимо понять, как пред­положи­тель­но вре­донос­ный пакет попал на хост. Если прос­мотреть уста­нов­ленное ПО в дирек­тории C:\Users\Administrator\AppData\Local, мож­но заметить пару бра­узе­ров: Microsoft Edge и Google Chrome. Про­верим исто­рию Chrome на наличие инте­ресу­ющих нас ссы­лок и заг­рузок.

Ба­за дан­ных, хра­нящая исто­рию поис­ка и инте­рес­ные URL, рас­положе­на в Google\Chrome\User Data\Default. Откро­ем файл History ути­литой DB Browser.

Ви­дим 19 таб­лиц, но из них весь­ма полез­ными могут ока­зать­ся толь­ко две. В таб­лице clusters_and_visits мож­но заметить URL стра­ницы уста­нов­ленно­го пакета PublishIgnor.

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

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

Ме­нед­жер пакетов NuGet соз­дает в дирек­тории поль­зовате­ля пап­ку .nuget, которую мы видели ранее, в нее он сох­раня­ет пакеты. С помощью MFTExplorer мы можем прос­мотреть $MFT и узнать вре­мя заг­рузки пакета.

 

Тайпсквоттинг

Как имен­но был ском­про­мети­рован пакет? В сети опи­сано мно­го слу­чаев ком­про­мета­ции NuGet самыми раз­ными спо­соба­ми, в том чис­ле при помощи тай­псквот­тинга.

info

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

Офи­циаль­ный и легитим­ный пакет называ­ется PublishIgnore, но най­ден­ный на заражен­ном хос­те пакет наз­ван ина­че — PublishIgnor.

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

Вот некото­рые TTPs по MITRE, исполь­зуемые зло­умыш­ленни­ками в подоб­ных ата­ках:

  • T1189 — ком­про­мета­ция без уста­нов­ки прог­рам­мно­го обес­печения;
  • T1035 — выпол­нение служ­бы;
  • T1105 – переда­ча инс­тру­мен­та про­ник­новения;
  • T1027 — обфусци­рован­ные или замас­кирован­ные фай­лы или информа­ция;
  • T1564.001 — сок­рытие арте­фак­тов: скры­тые фай­лы и катало­ги.
 

Закрепление в системе

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

C:\Users\Administrator\.nuget\packages\publishignor\1.0.11-beta\tools\init.ps1

Сна­чала скрипт отклю­чает фун­кции защиты, поз­же уста­нав­лива­ет соеди­нение с С2-сер­вером 54.93.81.220:8000 и ска­чива­ет файл uninstall.exe. Вре­мя вре­донос­ной активнос­ти мож­но пос­мотреть в жур­нале PowerShell (не забыва­ем перево­дить фор­мат вре­мени в UTC).

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

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

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

    Подписаться

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