Lazarus APT IOCs

security Security

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

Lazarus APT

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

  • Lazarus использовал профили LinkedIn для выдачи себя за сотрудников других легальных компаний.
  • Lazarus общался с целевыми сотрудниками через такие каналы связи, как WhatsApp.
  • Lazarus заманивал жертв скачать объявления о вакансиях (zip-файлы), содержащие вредоносные документы, которые приводили к выполнению вредоносного ПО
  • Идентифицированный вредоносный загрузчик является вариантом LCPDOT.
  • Запланированные задачи используются в качестве формы сохранения (выполнение rundll32 из запланированной задачи)

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

В данном случае доменом, на котором размещался документ, был global-job.org, вероятно, пытавшийся выдать себя за globaljobs.org, американский сайт по подбору персонала для правительственных/оборонных организаций. Для того чтобы обойти средства контроля безопасности, предусмотренные недавними изменениями, внесенными Microsoft в макросы Office, на сайте размещался ZIP-файл, содержащий вредоносный документ.

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

После выполнения макродокумента вызывается rundll32.exe для выполнения DLL C:\programdata\packages.mdb, что приводило к первоначальному вызову сервера команд и управления. К сожалению, сам двоичный файл уже недоступен для анализа, однако считается, что именно этот компонент привел к размещению вредоносной программы LCPDot на хосте жертвы.

Вредоносный загрузчик, который выполнялся как запланированная задача. Обнаруженный образец является вариантом LCPDot и приписывается APT Larazus.

Рассматриваемый файл попытался слиться с окружающей средой, используя каталог ProgramData, в очередной раз C:\ProgramData\Oracle\Java\JavaPackage.dll. Однако файл имел характеристики, которые выделялись при поиске угроз:

  • Большой размер файла (60мб+) - вероятно, обойдет антивирусное сканирование
  • Копирование времени - временные метки копировались из CMD.exe
  • DLL принадлежит пользователю в каталоге ProgramData (не SYSTEM или Administrator).

Для выполнения LCPDot была создана запланированная задача с именем "Windows Java Vpn Interface", пытающаяся слиться с системой с помощью темы Java. Задание по расписанию выполняло двоичный файл.

Задача по расписанию была настроена на ежедневный запуск со следующим параметром, переданным для выполнения:

<Exec>
<Command>c:\windows\system32\rundll32.exe</Command>
<Arguments>C:\ProgramData\Oracle\Java\JavaPackage.dll,VpnUserInterface</Arguments>
</Exec>

Вредоносное ядро загрузчика запускается в отдельном потоке, а поток выполнения определяется на основе идентификаторов сообщений Windows (отправляемых функцией Windows API SendMessage).

Фаза инициализации происходит в новом потоке, при этом выполняются следующие задачи:

  • Инициализация класса MoscowTownList. Этот класс обладает функциональностью для чтения/записи конфигурации.
  • Создание файла конфигурации на диске. Файл конфигурации хранится под именем VirtualStore.cab в папке %APPDATA%\Local. Конфигурация включает в себя различные метаданные, а также URL-адреса командных и управляющих серверов.

Конфигурация шифруется путем хэширования (SHA-1) случайного массива байтов (16 байтов), а затем используется выход хэша для получения (CryptDeriveKey) ключа RC4 (16 байтов). Наконец, в файл конфигурации записывается массив случайных байтов, а затем зашифрованные данные конфигурации.

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

После завершения этой фазы загрузчик начинает сетевое взаимодействие со своими серверами команд и управления.

На этом этапе загрузчик регистрирует скомпрометированный узел на командно-контрольном сервере, а затем запрашивает полезную нагрузку для выполнения. В целом, выполняются следующие шаги:

Инициализация классов Taxiroad и WashingtonRoad.

Создается массив байтов (16 байт), который затем кодируется (base64), и идентификатор сессии. Оба идентификатора отправляются на сервер. Закодированный массив байтов используется позже для расшифровки полученной полезной нагрузки и добавляется к содержимому тела запроса:
redirect=Yes&idx=%d&num=%s, где idx содержит значение времени загрузки скомпрометированного хоста, а num - закодированный (BASE64) массив байтов.
Кроме того, идентификатор сессии кодируется (BASE64) и добавляется к следующей строке:
SESSIONID-%d-202110, где 202110 - идентификатор сетевой команды.

Вышеуказанная строка снова кодируется (BASE64) и затем добавляется к заголовку SESSIONID POST-запроса.

После регистрации скомпрометированного узла сервер отвечает одним из следующих сообщений:

Validation Success - Бот зарегистрирован без проблем.
Validation Error - Произошла ошибка.

После завершения процесса регистрации загрузчик отправляет GET-запрос для загрузки полезной нагрузки второго этапа. Полученная полезная нагрузка расшифровывается путем хэширования (SHA-1) ранее созданного массива байтов, а затем полученный хэш используется для получения (CryptDeriveKey) ключа RC4.

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

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

  • 202112 - Отправляет зашифрованные данные в POST-запросе. Контекст данных неизвестен.
  • 202114 - Отправляет POST-запрос с содержимым тела 'Cookie=Enable'.
  • 789020 - Та же функциональность, что и у команды ID 202111.
  • 789021 - Та же функциональность, что и у команды с идентификатором 202112.
  • 789022 - Отправляет POST-запрос с содержимым тела 'Cookie=Enable'.

Indicators of Compromise

IPv4

  • 13.88.245.250

Domains

  • ats.apvit.com
  • bugs-hpsm.mobitechnologies.com
  • global-job.org
  • shoppingbagsdirect.com
  • thefrostery.co.uk

MD5

  • 49c2821a940846bdacb8a3457be4663c
  • afbcb626b770b1f87ff9b5721d2f3235

SHA1

  • 0a6f762a47557e369db8655a0d14ab088926e05b
  • d25a4f20c0b9d982d63fc0135798384c17226b55

SHA256

  • f4e314e8007104974681d92267673ac22721f756d8e1925142d9c26dc8a0ffb4
  • fd02e0f5fcf97022ac266a3e54888080f66760d731903fc32df2e17e6e1e4c64
Добавить комментарий