Этот отчет расскажет о функциональности вредоносного ПО Kalim Backdoor.
Оглавление:
- Что такое бэкдор?
- Технический анализ.
- Резюме.
- Тактики и техники (MITRE ATT&CK).
- IOCs.
- Yara правило.
Что означает бэкдор?
Бэкдор — это скрытый метод доступа к системе, обходящий обычную аутентификацию и средства безопасности.
Технический анализ:
Базовый статический анализ:
Сначала загрузим его в VirusTotal для первоначального анализа. Результаты показывают, что файл является 64-битной DLL, идентифицированной как семейство вредоносных программ Kalim. Кроме того, несколько обнаружений указывают на возможную связь с группой угроз MuddyWater.
Вредоносная программа также устанавливает сетевое соединение с доменом moodleuni[.]com.
Она сбрасывает некоторые файлы:
Теперь откроем его в Die (Detect it easy):
Образец импортирует большое количество Windows API, что указывает на то, что он не упакован. Всего он импортирует функции из шести DLL: KERNEL32.dll, USER32.dll, ADVAPI32.dll, SHELL32.dll, ole32.dll и WININET.dll.
Хотя из каждой DLL импортируется несколько API, некоторые функции особенно примечательны из-за их роли в поведении вредоносной программы.
В частности, образец импортирует сетевые API из WININET.dll для установки связи с сервером управления и контроля (C2). Он также использует COM-функции из ole32.dll для создания и взаимодействия с объектами Component Object Model (COM). Кроме того, вредоносная программа использует SHGetFolderPathW из SHELL32.dll для получения путей системных каталогов, идентифицируемых значениями CSIDL.
Расширенный статический анализ:
В DllMain выполняется только одно действие — создание нового потока. Внутри этого потока выполняются две функции: sub_1800063A0 и StartAddress.
Анализируя функцию sub_1800063A0, я обнаружил, что она состоит из двух различных этапов. На первом этапе вредоносная программа сбрасывает свою копию в каталог AppData\Roaming. Для этого она создает новый подкаталог с именем Updates, а затем создает исполняемый файл update.exe. Двоичная полезная нагрузка, записываемая в этот файл, берется непосредственно из встроенных данных, расположенных по адресу unk_18002AA10. В результате конечный файл записывается по следующему пути: «C:\Users\AppData\Roaming\Update\update.exe».
На втором этапе вредоносная программа инициализирует объект Component Object Model (COM), используя RCLSID: {00021401-0000-0000-C000-000000000046}, который соответствует объекту Shell Link (CLSID_ShellLink) и RIID: {000214F9-0000-0000-C000-000000000046}, который сопоставляется с интерфейсом IShellLinkW. Просмотрев полную таблицу COM-интерфейсов Shell, реализованную shell32.dll, можно точно определить вызываемые методы. Вредоносная программа вызывает четыре ключевых COM-метода: SetPath, SetDescription, Save и Release. Используя эти функции, она создает вредоносный ярлык автозагрузки с именем MicrosoftUpdateSerice.lnk в каталоге автозагрузки Windows, тем самым обеспечивая постоянство на зараженной системе.
Анализ функции StartAddress
Вредоносная программа реализует логику сетевого взаимодействия через три отдельные функции и создает два отдельных потока. Один поток отвечает за запуск и управление командной оболочкой, а второй — за загрузку собранных данных после завершения выполнения вредоносной программы.
Эти три функции совместно управляют связью между зараженным хостом и сервером управления и контроля (C2) и организованы в три логических уровня.
Первый уровень отвечает за сбор информации об отпечатках хоста из скомпрометированной системы. Второй уровень обрабатывает эти данные с помощью шифрования и дополнительных манипуляций для подготовки к передаче. Третий уровень устанавливает сетевое соединение с C2-доменом moodleuni[.]com и передает обработанные данные.
Первые две сетевые функции отвечают за аутентификацию и построение HTTP POST-запросов, обеспечивая аутентифицированную передачу данных на удаленный сервер.
Третья функция отвечает за получение команд от C2-сервера. Основываясь на ответе сервера, вредоносная программа определяет свое следующее действие — либо запустить скрытую командную оболочку, либо загрузить собранные данные в соответствии с командой, полученной от C2.
Анализ двух потоков для полного понимания их работы.
В первом потоке вредоносная программа создает объект задания (job object) вместе с двумя другими каналами (pipes), а затем устанавливает для них определенное свойство.
Затем она создает CMD с некоторыми параметрами:
Значение 1 в четвертом аргументе означает, что CMD может наследовать дескрипторы каналов.
Значение 0x1000200u в пятом аргументе означает, что CMD имеет следующие флаги:
CREATE_NO_WINDOW = 0x0000000u
CREATE_NEW_PROCESS_GROUP = 0x0000200u
CREATE_UNICODE_ENVIRONMENT = 0x0000400u
И некоторые сведения о запуске: {размер структуры = 104 байта, hStdError = hWritePipe, hStdOutput = hWritePipe, hStdInput = hReadPipe2, dwFlags |= 0x100u = STARTF_USESTDHANDLES}. Первый канал отвечает за чтение вывода из оболочки, а второй — за запись в оболочку.
И указатель на PROCESS_INFORMATION
И после создания оболочки она назначает ее объекту задания (job object) и переводит в состояние ожидания команд от C2.
Оболочка проверяет управляющие команды, отправляемые через разделяемую память:
Pending: Обычное выполнение.
Terminate: Уничтожить оболочку и очистить. Оболочка полностью уничтожена и сброшена.
Ctrlc: Принудительно убивает все оставшиеся дочерние процессы.