• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Анализ шифровальщика Бабук v.2

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Обзор

Это мой отчет о новой программе-вымогателе Babuk, которая недавно появилась в начале 2021 года.
Поскольку это первый детект этой вредоносной программы в дикой природе, неудивительно, что Babuk вообще не обфусцирован. В целом, это довольно стандартная программа-вымогатель, использующая некоторые новые методы, такие как многопоточное шифрование, а также злоупотребление диспетчером перезагрузки Windows, аналогично Conti и REvil.

Для схемы шифрования Babuk использует собственную реализацию хеширования SHA256, шифрования ChaCha8 и алгоритм генерации и обмена ключами Диффи-Хеллмана на эллиптических кривых (ECDH) для защиты своих ключей и шифрования файлов. Как и многие программы-вымогатели, появившиеся ранее, он также может распространять свое шифрование путем получения доступных сетевых ресурсов.

1643277789797.png


IOCS

Babuk поставляется в виде 32-битного файла .exe.

MD5: e10713a4a5f635767dcd54d609bed977

SHA256: 8203c2f00ecd3ae960cb3247a7d7bfb35e55c38939607c85dbdb5c92f0495fa9

Сэмпл: https://bazaar.abuse.ch/sample/8203c2f00ecd3ae960cb3247a7d7bfb35e55c38939607c85dbdb5c92f0495fa9/

1643277808129.png


Записка с требованием выкупа

1643277818904.png


1643277830472.png


(Довольно непрофессионально со стороны команды Babuk, так как они не удалили журнал чата между собой и жертвой)

Анализ кода

Аргументы командной строки


Babuk может работать как с параметрами командной строки, так и без них. Если параметр не указан, он ограничивается шифрованием только локальных компьютеров.

1643277845408.png


Если задан параметр, он будет обрабатывать эти аргументы при выполнении и вести себя соответствующим образом.

1643277883827.png



Остановка сервисов

Авторы Babuk жестко запрограммировали список сервисов, которые должны быть закрыты перед шифрованием.

Перед завершением службы Babuk вызовет EnumDependentServicesA, чтобы получить имя и статус каждой службы, которая зависит от указанной службы.

Затем он вызовет ControlService с управляющим кодом SERVICE_CONTROL_STOP, чтобы остановить их, прежде чем таким же образом завершить основную службу.

1643277908220.png


Вот список сервисов, которые нужно закрыть.

vss, sql, svc$, memtas, mepocs, sophos, veeam, backup, GxVss, GxBlr, GxFWD, GxCVD, GxCIMgr, DefWatch, ccEvtMgr,
ccSetMgr, SavRoam, RTVscan, QBFCService, QBIDPService, Intuit.QuickBooks.FCS, QBCFMonitorService, YooBackup,
YooIT, zhudongfangyu, sophos, stc_raw_agent, VSNAPVSS, VeeamTransportSvc, VeeamDeploymentService, VeeamNFSSvc,
veeam, PDVFSService, BackupExecVSSProvider, BackupExecAgentAccelerator, BackupExecAgentBrowser,
BackupExecDiveciMediaService, BackupExecJobEngine, BackupExecManagementService, BackupExecRPCService,
AcrSch2Svc, AcronisAgent, CASAD2DWebSvc, CAARCUpdateSvc,

Завершение запущенных процессов


Автор также жестко запрограммировал список процессов, которые необходимо закрыть.

Используя вызовы CreateToolhelp32Snapshot, Process32FirstW и Process32NextW для проверки всех процессов, запущенных в системе, Babuk может пройтись по циклу и найти процессы, которые необходимо закрыть. Найдя любой, он вызовет TerminateProcess, чтобы завершить его.

1643277931804.png


Вот список процессов, которые нужно закрыть.

sql.exe, oracle.exe, ocssd.exe, dbsnmp.exe, synctime.exe, agntsvc.exe, isqlplussvc.exe,
xfssvccon.exe, mydesktopservice.exe, ocautoupds.exe, encsvc.exe, firefox.exe, tbirdconfig.exe,
mydesktopqos.exe, ocomm.exe, dbeng50.exe, sqbcoreservice.exe, excel.exe, infopath.exe, msaccess.exe,
mspub.exe, onenote.exe, outlook.exe, powerpnt.exe, steam.exe, thebat.exe, thunderbird.exe,
visio.exe, winword.exe, wordpad.exe, notepad.exe

Удаление теневых копий


Babuk пытается удалить теневые копии до и после шифрования.

Во-первых, он вызывает Wow64DisableWow64FsRedirection для отключения перенаправления файловой системы перед вызовом ShellExecuteW для выполнения этой команды.

cmd.exe /c vssadmin.exe delete shadows /all /quiet

После удаления теневых копий Babuk проверяет, работает ли система под управлением 64-битного процессора. Если да, то вызывается Wow64RevertWow64FsRedirection, чтобы снова включить перенаправление файловой системы.

1643277963193.png


Шифрование

Генерация ключей


Во-первых, Babuk использует RtlGenRandom для создания 4 случайных буферов. Два из них используются как ключи ChaCha8, а два других используются как одноразовые номера ChaCha8.

1643277975182.png


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

Этот зашифрованный первый ключ обрабатывается как закрытый ключ Диффи-Хеллмана с эллиптической кривой (ECDH) для локального компьютера.

1643277986864.png


Отсюда Babuk генерирует локальный открытый ключ ECDH из закрытого ключа, используя код из этой библиотеки ECDH. (https://github.com/kokke/tiny-ECDH-c/blob/master/ecdh.c)

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

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

Чтобы иметь возможность расшифровывать файлы, Babuk хранит локальный открытый ключ в файле ecdh_pub_k.bin в папке APPDATA.

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

1643278000498.png


Многопоточность

С точки зрения программирования подход Babuk к многопоточности довольно посредственный.

Во-первых, он определяет количество создаваемых потоков, удваивая количество ядер на машине жертвы, и выделяет массив для хранения всех дескрипторов потоков.

1643278011840.png


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

Однако само по себе это не такая уж большая проблема, если автор реализовал структуру, подобную очереди, для обработки запросов на шифрование, чтобы использовать 100% вычислительной мощности жертвы. К сожалению, они решили создать только один поток шифрования для каждого существующего диска.

1643278024459.png



В случае, когда количество дисков меньше количества процессоров (что весьма вероятно), Babuk не будет создавать максимально возможное количество потоков для шифрования.

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

Рабочая нагрузка для каждого потока варьируется в зависимости от размера диска, который он шифрует, поэтому среднее время шифрования будет примерно близко ко времени, которое требуется одному потоку для шифрования самого большого диска. Это неэффективно и действительно противоречит цели использования многопоточности для шифрования дисков.

Обход папки

Как обсуждалось выше, Babuk использует метод рекурсии для обхода и шифрования файлов. Используя вызовы FindFirstFileW и FindNextFileW, он просматривает каждый каталог для поиска файлов и подкаталогов.

При обнаружении каталога он снова рекурсивно вызывает функцию main_encrypt. Однако Babuk опускается только на 16 уровней каталогов, поэтому он потенциально не шифрует каждую отдельную папку на диске для экономии времени.

При обнаружении файла он проверяет, является ли имя файла How To Restore Your Files.txt или расширение файла .__NIST_K571__, чтобы избежать шифрования примечания о выкупе или зашифрованных файлов.

1643278045629.png


Уничтожение владельца файла

Подобно программам-вымогателям Conti или REvil, Babuk использует диспетчер перезагрузки Windows для завершения любого процесса, использующего файлы. Это гарантирует, что ничто не мешает ему открывать и шифровать файлы.

Это достигается с помощью вызовов RmStartSession, RmRegisterResources и RmGetList для получения списка процессов, использующих указанный файл. Если процесс не является explorer.exe или критическим процессом, то Babuk вызовет TerminateProcess, чтобы его закрыть.

1643278075001.png


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

Шифрование файлов Babuk делится на 2 разных типа — шифрование небольших файлов и шифрование больших файлов.

Для небольших файлов размером менее 41943040 байт или примерно 41 МБ файл полностью отображается и шифруется с помощью ChaCha8 два раза.

1643278088110.png


С большими файлами шифрование немного отличается. Для экономии времени весь файл разделяется на три области одинакового размера.

Для каждого из этих регионов будут зашифрованы только первые 10485760 байт или 10 МБ.

1643278100379.png


Для шифрования Babuk использует два ключа ChaCha8, сгенерированные из хэша SHA256 общего секретного ключа ECDH, в качестве ключей шифрования.

Удаленное шифрование файлов

Чтобы зашифровать удаленные диски с компьютера-жертвы, Babuk вызывает WNetGetConnectionW, чтобы получить имя сетевых ресурсов, связанных с этими дисками, и передать их потоку шифрования.

1643278112336.png


Он также шифрует сетевые ресурсы в локальной сети машины с учетом правильного параметра.

Babuk вызывает WNetOpenEnumW и WNetOpenEnumW для обхода удаленных папок в сети и шифрует файл, используя аналогичный рекурсивный метод, упомянутый выше.

1643278122959.png


Ключевые результаты

Babuk — это новая программа-вымогатель, запущенная в начале этого года. Несмотря на используемые любительские методы, его надежная схема шифрования, использующая алгоритм Диффи-Хеллмана на эллиптических кривых, до сих пор доказала свою эффективность при атаках на многие компании.

Поскольку авторы вредоносных программ используют один закрытый ключ для каждого образца Babuk, становится ясно, что их основной целью являются крупные корпорации, а не обычные пользователи. На данный момент, согласно веб-сайту, включенному в записку о выкупе, а также утечкам на Raidforums, они успешно скомпрометировали 5 различных компаний в мире.

Сообщение новым жертвам

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

Этот пост в блоге действительно устарел, потому что Babuk сильно эволюционировал, а вредоносное ПО сильно отличается от того, о чем я здесь рассказываю.

Если недавние жертвы Babuk заинтересованы в получении дополнительной информации о новой версии этой программы-вымогателя или нуждаются в какой-либо помощи в анализе любого образца, не стесняйтесь обращаться ко мне по электронной почте cdong49@gatech или Twitter!

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://chuongdong.com/reverse engineering/2021/01/03/BabukRansomware/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх