Try   HackMD

Wagner Wiper. Запланированная кампания или неудачная шутка?

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Приветствую. Сегодня мы рассмотрим Wagner Wiper - вредоносное ПО, "кошмарившее" российские компании пару месяцев назад, и попытаемся понять, была ли это рекламная кампания ЧВК Вагнер или неудачная шутка неизвестных хактивистов. В общем, приступим.

Содержание:

Общая информация

Wagner Wiper - вредоносное ПО, атаковавшее российские компании в начале этого лета. После заражения данное ПО шифрует чувствительные файлы и выводит информационное сообщение с призывом вступить в ЧВК Вагнер.

Текст выводимого сообщения:

Официальный вирус  ЧВК Вагнера по трудоустройству ®
Вакансии. Служба в ЧВК Вагнер
По сотрудничеству:
Канал не предназначен для агитации, склонения, вербовки и иного вовлечения лиц в совершение противоправных деяний.
Братья хватит терпеть Власть! идем на войну против Шойгу!
Москва: +7(985)008-02-40
Московская область: +7(985)008-02-73 если хотите пойти против чиновников!
Привет от Пригожина!      https://t.me/wagnernew

Все контакты и ссылки, указанные в сообщении, действительно связаны с ЧВК Вагнер, в связи с чем данное вредоносное ПО и получило свое название.

Технический анализ

Для анализа использовался следующий семпл.

При загрузке в dnSpy можно увидеть, что название сборки - "ConsoleApplication7". Вероятнее всего, проект был создан в Visual Studio.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Поток исполнения

Функция Main выглядит довольно просто (семпл чистый, следов обфускации не замечено):

private static void Main(string[] args)
{
	if (Program.AlreadyRunning()) // Проверка на повторный запуск
	{
		Environment.Exit(1);
	}
	if (Program.checkSleep) // Уклонение от запуска путём "засыпания" на опредёленный промежуток времени
	{
		Program.sleepOutOfTempFolder();
	}
	if (Program.checkAdminPrivilage)
	{
		Program.copyResistForAdmin(Program.processName); // Копирование в "AppData\Roaming" и запуск с правами администратора (при их наличии)
	}
	else if (Program.checkCopyRoaming)
	{
		Program.copyRoaming(Program.processName); // Копирование в "AppData\Roaming", если файл запущен по другому пути
	}
	if (Program.checkStartupFolder)
	{
		Program.addLinkToStartup(); // Добавление в автозагрузку
	}
	Program.lookForDirectories(); // Запуск процесса шифрования
	if (Program.checkAdminPrivilage)
	{
		if (Program.checkdeleteShadowCopies)
		{
			Program.deleteShadowCopies(); // Удаление теневых копий томов
		}
		if (Program.checkdisableRecoveryMode)
		{
			Program.disableRecoveryMode(); // Отключение режима восстановления
		}
		if (Program.checkdeleteBackupCatalog)
		{
			Program.deleteBackupCatalog(); // Удаление бэкапа
		}
	}
	if (Program.checkSpread)
	{
		Program.spreadIt(Program.spreadName); // Запись семпла в корневую директорию каждого диска, доступного устройству
	}
	Program.addAndOpenNote(); // Запись сообщения, показанного выше, и его открытие
	Program.SetWallpaper(Program.base64Image); // Установка обоев с помощью WinAPI
	new Thread(delegate
	{
		Program.Run(); // Подмена BTC криптокошелька из буфера обмена
	}).Start();
}

Проверка на копии

Данная функция осуществляет проверку на то, запущено ли более одной копии данного вредоносного ПО в настоящий момент.

Примечательно то, что вместо привычной проверки через мьютекс, Wagner Wiper получает все процессы в системе и пути к создавшим их программам, после чего сравнивает их со своим нынешним путем.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Закрепление на устройстве

Функция "copyResistForAdmin" существляет попытку запуска вредоносного ПО с привилегиями администратора при помощи "runas" и копирования в "AppData\Roaming".

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

При запуске ПО с правами обычного пользователя активируется функция "copyRoaming", осуществляющая практически те же действия, что и "copyResistForAdmin".

Удаление бэкапов и точек восстановления

Функции "deleteShadowCopies", "disableRecoveryMode" и "deleteBackupCatalog" закрывают возможность восстановления данных из бэкапов, если вредоносное ПО было запущено с правами администратора.

Осуществляется это с помощью трех комманд:

  1. vssadmin delete shadows /all /quiet & wmic shadowcopy delete
  2. bcdedit /set {default} bootstatuspolicy ignoreallfailures & bcdedit /set {default} recoveryenabled no
  3. wbadmin delete catalog -quiet

Шифрование файлов

Вредоносное ПО шифрует все файлы, находящиеся в следующих директориях:

  • Desktop
  • Links
  • Contacts
  • Documents
  • Downloads
  • Pictures
  • Music
  • OneDrive
  • Saved Games
  • Favorites
  • Searches
  • Videos
  • Application Data
  • Common Documents
  • Common Pictures
  • Common Music
  • Common Videos
  • Common Desktop Directory

В них ПО получает список директорий и файлов, которые, в зависимости от их размера, либо шифруются с помощью AES со случайным паролем, либо перезаписываются случайными данными.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Установка заднего фона

В конце своей работы Wagner Wiper устанавливает на задний фон следующее изображение:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Происходит это с помощью WinAPI функции "SystemParametersInfo" с флагом "SPI_SETDESKWALLPAPER".

Логический анализ

Внимание: все, что сказано в данном разделе, является личным мнением автора и может не совпадать с мнением читателя и / или реальностью. Соглашаться с высказываниями, представленными ниже, или нет - ваш выбор.

Вот мы и подобрались к самому интересному вопросу: было ли это вредоносное ПО оригинальной рекламной кампанией ЧВК Вагнер или нет?

На мой взгляд - нет.

Почему? Все очень просто.

  1. В ПО присутствует адрес биткоин кошелька, который, однако, никак не фигурирует в записке о выкупе. Из этого можно сделать вывод, что данный шифровальщик является модифицированной версией какого-либо опенсорсного продукта. Также операции, связанные с данным кошельком, не похожи на переводы в качестве выкупа.
  2. Слабо верится в то, что ЧВК Вагнер атаковал российские кампании (а именно на них атакующие и делали упор). У них хватало путей наема кадров и без подрыва деятельности российских компаний.
  3. В указанном в записке канале не появлялось какой-либо информации, аффилирующей данное ПО с вышеуказанной организацией.
  4. Написано ПО достаточно небрежно, есть синтаксические и логические ошибки, а, следовательно, разработкой занимался, скорее всего, не профессионал. а энтузиаст.

Таким образом, за данной вредоносной кампанией скорее всего стояла хактивистская группа, не связанная с ЧВК Вагнер, но поддерживающая ее.

Индикаторы компрометации

MD5: d26b2c8fc07cb5c72bfc40779f09d491

SHA1: 8ee7fc0171b980aa93b687e334d1e29a8d634085

YARA правило, которое детектирует данное вредоносное ПО:

import "pe"  
  
rule wagner_wiper {  
	meta:  
		filetype = "Win32 EXE"  
		date = "07/06/2023"  
		md5 = "f5ef8c420c99bbddfe27c7046bf67986"  
		description = "Detects Phemedrone Stealer - C# open source infostealer."  
	strings:  
		$filename = "WAGNER.exe"
		$spreadname = "surprise.exe"
		$appmutex1 = "7z459ajrk722yn8c5j4fg"
		$appmutex2 = "2X28tfRmWaPyPQgvoHV"
	condition:  
		pe.is_pe  
		and pe.imports("mscoree.dll")  
		and all of them  
}

Telegram: File Exploit