Приветствую! Сегодня поговорим о вымогателе HardBit, который уже достаточно долгое время кошмарит всё мировое сообщество. Появившись в октябре прошлого года, вредонос уже успел нанести огромный ущерб мировому сообществу. Преступники, стоящие за этим вирусом, отличаются своим нетипичным подходом к делу. Они лично связываются с каждой жертвой и определяют сумму выкупа. Примечательно и то, что если у жертвы имеется страховка, то злоумышленники требуют исключительно ту сумму, на которую рассчитана страховка.
Ранее вредонос не проявлял активности на территории стран СНГ, однако сейчас начал своё форсированное распространение. Так, недавно компания Solar JSCON зафиксировала несколько обращений российских заказчиков, пострадавших от HardBit. Информация о пострадавших остается конфиденциальной. Но Солар сообщает, что требуемый выкуп составляет около 25,000$.
Как уже упоминалось ранее, вымогатель был впервые обнаружен в октябре 2022 года. Эта версия получила название HardBit 1.0 и была относительно простой, что с точки зрения устройства, что алгоритма шифрования.
Но уже в ноябре 2022 года в сети появляется новая версия. Никто особо не заморачивался над неймингом, поэтому она получила название HardBit 2.0. И вот здесь всё уже было намного сложнее по очень простой причине. Вторая версия на несколько голов переплюнула не только себя прошлую, но и большинство современных вымогателей: продвинутый способ шифрования, серьёзные методы антианализа и воровство бэкапов данных.
Стоит пояснить, если кто-то этого не знал: прежде чем зашифровать какой-то файл, большинство современных локеров отправляют его на C&C-сервер злоумышленников. Таким образом, если жертва хранила у себя на скомпрометированном устройстве материалы, которые ни в коем случае не должны попасть в сеть, преступник это замечает и, после расшифровки оригиналов, связывается с пострадавшим и требует у него деньги за нераспространение. Эдакое двойное вымогательство.
Но в отличие от коллег, со стороны Хардбита не было обнаружено никаких утечек конфиденциальной информации жертв.
И вот после этого нас встречает тишина. Хардбит продолжает своё умеренное распространение, но практически никак не развивается. Такая тенденция продолжалась до марта 2023 года. Если я все правильно помню, то как раз где-то в это время в сети появляется LockBit Green (3.0) и забирает на себя все внимание. Возможно, именно из-за этого недостатка внимания вредоносу и удалось нехило так наворотить дел. Ведь спустя несколько месяцев всё инфопространство зарубежных СМИ будет завалено новостями от Хардбит.
Как уже упоминалось ранее, у авторов шифровальщика нездоровая любовь к страховым компаниям. Теории заговора строить не будем, мол, какой-то обиженный страховой индивид возомнил себя Робин Гудом и начал грабить во имя простого народа, но и исключать подобную вероятность не станем. Так вот, иностранные страховые компании были просто в шоке от происходящего и в итоге даже начали отказывать в выплате выкупа злоумышленникам, оставляя пострадавших пользователей на произвол судьбы.
А злоумышленники ловко используют факт ненадежности страховых в свою пользу. Цитирую фрагмент текста из записки HardBit:
«Поскольку хитрый страховой агент намеренно ведет переговоры и затягивает процесс, чтобы не платить выкуп, в этой ситуации выигрывают только страховые компании, а вы теряете свои данные. Чтобы всего этого избежать, обязательно сообщите нам анонимно о наличии и условиях страховой защиты».
И вот на самом деле, я сижу и удивляюсь такому интересному подходу к вымогательству, который на подсознательном уровне располагает жертву к злоумышленнику. «Мы не хотим твоих денег, давай лучше ограбим страховую».
Методы доставки вредоноса до сих пор четко не определены: некоторые источники утверждают, что злоумышленники создали целую фишинговую сеть для сотрудников компаний, а другие считают, что вирус использует уязвимости нулевого дня для своего распространения. Я больше склоняюсь к первому варианту и думаю, что здесь имеют место проработанные, возможно, даже индивидуальные фишинговые письма. Давайте считать, что доставка происходит аналогичным методом, как и у Covid-вымогателя Punshisher. Напомню, что там использовалось детально проработанное письмо с оригинальными печатями и подписями, якобы от министерств здравоохранения, в котором предоставлялся доступ к фальшивой программе для мониторинга активности Covid-19. Подробней можете почитать вот здесь.
В этой статье мы проанализируем самую новую версию этого вредоноса. Почему не все три? А потому что это достаточно новый шифровальщик и количество сэмплов сильно ограничено. Мне посчастливилось найти в открытом доступе только версию 2.0 и 3.0, соответственно.
HardBit 3.0: краткий статистический анализ
Список инструментов, используемых для анализа:
DIE — Detect it Easy: многофункциональный инструмент, имеющий просто огромный арсенал. Позволит нам опередить тип компилятора вредоноса, язык, библиотеки и таблицы импорта/экспорта с последующим дизассемблированием.
PE Bear — неплохой инструмент для просмотра и редактирования составляющих PE-файла.
Tiny Tracer — утилита для динамического отслеживания исполнения бинарных элементов. Так называемый трейсер.
IDA PRO — инструмент для реверс-инжиниринга.
Reko — декомпилятор, также знаком нам с прошлых статей.
HollowHunter — утилита, распознает и сбрасывает множество потенциально вредоносных имплантов (замененные/имплантированные PE, шелл-коды, перехватчики, патчи в памяти).
Итак, перед нашими глазами находится исполняемый .exe файл весом в 354 КБ, что не очень много для вымогателя. При просмотре подробностей мы видим следующую картину:
Да, это попытки замаскировать вредонос под легитимный процесс Windows, в данном случае Svchost, но больше всего удивляет исходное название файла. По классике, воспользуемся DIE, чтобы получить больше сведений о файле. И на этом моменте мне захотелось заплакать. Помимо того, что это 32-битный исполняемый PE-файл, написанный на .NET, здесь целых три протектора.
.NET Protector — это программное обеспечение для защиты приложений, разработанных на платформе .NET. Оно предназначено для защиты кода и ресурсов приложения от несанкционированного доступа, копирования или модификации. .NET Protector может использоваться разработчиками программного обеспечения для усиления безопасности своих приложений и защиты интеллектуальной собственности.
Ещё из интересного — измененная дата компиляции. Многим этот метод уже известен и называется он TimeStomping.
Timestomping (или временная отметка) — это метод, используемый злоумышленниками для изменения временных меток файлов с целью сокрытия информации или обмана системы. Это техника, которая позволяет изменять даты создания, изменения или доступа к файлам, чтобы их вид и метаданные могли быть искажены.
Безусловно, я обрадовался, что вредонос является библиотекой .NET, ведь они, по сути своей, являются конечным результатом компиляции кода на C#. К нашему счастью, мы с легкостью можем декомпилировать данный образец с помощью утилиты DNspy и провести анализ чистого исходного кода или, по крайней мере, чего-то близкого к нему. По крайней мере, так было бы, если бы не целых три неизвестных мне протектора.
По традиции, образец был выгружен на VirusTotal, и мы получили следующие показатели обнаружения:
Бесподобно, 60 из 70 антивирусов видят в этом файле угрозу.
Ну, давайте разбираться дальше. Переходим в DNSPy и нас сразу же встречает вакханалия. Точка входа не определяется, а при просмотре существующих функций мы видим вот это:
Копирайтинг одного из протекторов или намеренное введение нас в заблуждение, ведь страницы этого Раяна в Фейсбук вовсе не существует. Дальше больше, теперь мы видим такую картину:
Чтобы превратить все это в относительно читаемый код, придется проделать целую уйму манипуляций. Начнем мы с первого обфускатора.
DNGuard HVM — убираем первый слой защиты
DNGuard HVM (High-Level Virtual Machine) — это достаточно старый инструмент для защиты и обфускации .NET-приложений. Он предоставляет разработчикам .NET средство для усиления безопасности своего кода и защиты его от несанкционированного доступа и атак на интеллектуальную собственность. DNGuard HVM включает в себя различные техники, такие как виртуальная машина высокого уровня (High-Level Virtual Machine), чтобы сделать анализ и модификацию кода более сложными для злоумышленников. Но главной его фишкой остается антиотладка и антидамп, тотальное шифрование всей информации в модуле и весьма успешное противодействие статическому и динамическому анализу.
Этот протектор — наш злейший враг в сегодняшнем анализе.
Но эта проблема решаема. Для начала я решил попытаться запустить отладчик, и мне улыбнулась удача. Удалось найти точку входа приложения, эта информация будет крайне полезна на последующих этапах. Но дальше отладчик выдал ошибку «Error, DNGuard Runtime library loaded!» и процесс оборвался, что естественно. Попытка присоединить исполнение вредоноса к другому процессу и таким образом проследить хотя бы примерный порядок выполнения тоже терпит крах.
Собственно, может, я знаю не всё, но библиотека .NET построена по принципу кросс-платформенного IL-кода, который хранится в метаданных, откуда подгружается по мере выполнения каждого метода или функции. Многие обфускаторы, включая и DNGuard, подменяют процедуры расшифровки IL-кода, тем самым вызывая небывалую вакханалию в таких реверсивных утилитах, как DNSPy. Это было описано очень грубо и сжато, более подробно почитайте вот здесь.
К нашему счастью, ни один компилятор, даже если их три, не способен полностью подменить поток расшифровки и, в конечном итоге, данные все равно передаются на mscorlib.ni.dll. И его можно перехватить с помощью какого-то простенького деббагера, чем мы, собственно, и будем заниматься. Другого пути здесь попросту нет, уровень и качество девиртуализации DNGuard на порядок выше, чем у того же KOIVM, с которым мы имели дело раньше.
В качестве деббагера будем использовать x64dbg. Сразу же загрузим наш образец и попытаемся узнать, какие строковые константы используются. Ищем в списке загруженных библиотек строку ntdll.RtlUlonglongByteSwap и ставим на неё точку останова и удаляем дефолтную точку останова. И теперь в журнале мы можем найти примерную последовательность работы вредоноса, хотя и очень смутную. то мало, что нам дает. Я определил, что участок, отвечающий за перенаправление потока дешифровки, находится по адресу 772F309D, а значит, нам нужно отделить его от основной части кода. Делается это путем удаления этой формации, по крайней мере, я не придумал другого метода, кроме как прописать везде NOP.
Теперь, чтобы уменьшить количество затрачиваемого времени, мы можем воспользоваться DNGuard Unpacker, который представляет собой что-то типа простенького деобфускатора. Но я крайне не советую его использовать: хоть он и может упростить жизнь, он слишком привязан к старым версиям .NET-Фреймворка и может давать далеко не идеальный результат.
Но в нашем случае он сработал прекрасно: при просмотре через DNSpy, можно заметить, что количество мусора значительно уменьшилось, однако впереди ещё два протектора.
На этом этапе я решил прекратить собственные мучения с обфускаторами и обратился к человеку, который разбирается в этом больше. Да и описывать все это нет необходимости.
Непосредственно HardBit 3.0
И на этом этапе я могу четко сказать, что последняя версия этого вымогателя явно основана на предыдущей, так как у них очень много сходств.
Алгоритм работы вредоноса можно описать в следующих пунктах:
Сбор информации и закрепление себя в системе.
Связь с C&C сервером и передача данных.
Непосредственно шифрование.
Заметание следов.
Сбор информации и закрепление себя в системе
Итак, сперва вымогатель копирует себя по следующему пути:
%appdata%\Microsoft\Windows\Start Menu\ Programs\Startup\svchost.exe
Говоря простым языком, это автозагрузка. Также будет создан новый ключ в реестре Windows, выполняющий аналогичную функцию:
HKEY_CURRENT_USER\Software\Classes.hardbit3
Сбор информации о системе происходит путем использования системных вызовов. Так вызов NtBuildNumber предоставит информацию о номере сборки Windows, а вызов NtQueryPerformanceCounter отвечает за информацию о характеристиках системы.
Не очень ясно, почему, но вредонос запускается только на современных системах. Попытавшись запустить Хардбит 3.0 на Windows 7, я не получил никакого результата. А вот версия 2.0 работает прекрасно.
Затем будет сгенерировано значение client_id, которое дальше будет использовано в качестве пароля для алгоритма шифрования AES-256 CBC. А также как RSA-ключ.
Далее Хардбит проверит, подключен ли компьютер к интернету, просто пингуя google.com, а передача информации происходит с помощью функции send_data_to_c2.
Непосредственно шифрование
На самом деле, меня удивила простота этого шифровальщика. Пока что он не показал чего-то особенного. Как уже упоминалось ранее, Хардбит использует алгоритм AES-256 CBC по стандарту PBKDF2.
Этот процесс представляет собой комбинацию различных шифровальных и хешировальных методов, используемых для обеспечения безопасности данных, в основном в контексте шифрования данных на практике. Давайте разберемся с каждым компонентом отдельно:
AES (Advanced Encryption Standard) — это современный симметричный алгоритм шифрования, который широко используется для защиты данных. AES-256 означает, что этот алгоритм использует 256-битные ключи для шифрования и расшифрования данных.
CBC (Cipher Block Chaining) — это режим работы для алгоритма AES. В режиме CBC данные разбиваются на блоки, и затем каждый блок шифруется с использованием предыдущего зашифрованного блока. Это обеспечивает дополнительный уровень безопасности.
PBKDF2 (Password-Based Key Derivation Function 2) — это функция, используемая для производства ключей из паролей или других секретных данных. PBKDF2 обычно применяется для укрепления паролей, чтобы сделать процесс брутфорса (попыток угадать пароль) более сложным. Он принимает входные данные (например, пароль) и создает из них криптографический ключ путем многократного хеширования.
AES-256 CBC по стандарту PBKDF2 — это сложный процесс, простыми словами его описать можно так: сперва пароль проходит через хеширование PBKDF2 для создания сильного ключа, который затем используется для шифрования и расшифрования данных с помощью AES-256 в режиме CBC.
Хорошо, когда такие методы используются действительно для защиты данных, но когда их используют во вред — это печально. К слову, подобный метод использовал и MSI вымогатель Magnibar, но тот метод был немного проще.
В качестве значения Initialization Vector(IV) используются значения, жестко заданные в коде:
Initialization vector (IV) — вектор инициализации, представляет собой произвольное число, которое может быть использовано вместе с секретным ключом для шифрования данных.
Ну и процесс шифрования происходит относительно просто: сперва происходит инициализация ключа, которая осуществляется посредством функции aes_l_levelkegen, затем используется инструкция AESKEYGENASSIST для помощи обнаружения контекста ключа. О ней можете почитать вот здесь.
А после всего этого загружается блок данных и шифруется раундами посредством функции AESEC, подробнее описано тут. Процесс завершается инструкцией AESENCLAST, и о ней почитать можно вот здесь.
Типы данных, которые необходимо шифровать вредоносу, также жестко заданы в самом коде:
arc asf avi bak bmp fla flv gif gz iso jpeg jpg mid mkv mov mpeg mpg paq png rar swf tar tbk tgz tif tiff vcd vmdk vob wav wma wmv zip.
После процесса шифрования, вредонос выполнит достаточно банальные для своего семейства действия, а именно:
Установка кастомного фонового изображения.
Помещение записки о выкупе во все директории, где производилось шифрование, и её открытие.
(3.0 не запустилась на виртуальной машине)
Выводы
Да, здесь только анализ Хардбит 3.0. К сожалению, для второй версии попросту не хватает места. Статья уже достаточно обширна, поэтому оставим вторую часть на потом.
На данный момент шифровальщик HardBit 3.0 обнаруживается практически всеми антивирусными приложениями, но надеяться лишь на это я бы не стал. Ведь стоит злоумышленникам лишь немного изменить исходный код, и никакая защита, кроме вашей головы, уже не поможет.
Но что действительно обнадеживает, так это неплохая защита исходного кода вредоноса, которая практически полностью исключает возможность появления «пользовательских» модификаций данного шифровальщика.
Что касается тех, кто уже стал жертвой Хардбит, то все достаточно просто. Компания Solar специально разработала дешифровщик для вас. Но это работает лишь для версии 2.0 и 3.0, так как у них схожий алгоритм работы. Первая же версия не используется злоумышленниками и вряд ли вы станете её жертвой.
Декриптор, как всегда, вы сможете найти на портале NOMORERANSOM, там предельной простой интерфейс, и объяснять что-то будет излишним. Для очистки системы и полного удаления вредоноса могу посоветовать следующие инструкции.
Автор статьи @DeathDay
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.