Бабук Ransomware v3
Обзор
Это краткий отчет о последнем образце программы-вымогателя Бабук. Этот образец помечен как версия 3 на основе строки однократного мьютекса.
В этой новой версии автор вредоносного ПО сохраняет большинство старых функций, за исключением схемы шифрования и многопоточности.
Поскольку я рассмотрел здесь старый образец Бабук
(http://chuongdong.com/reverse%20engineering/2021/01/03/БабукRansomware/) , в этом отчете я буду обсуждать только новые изменения.
Для шифрования Бабук использует шифрование ChaCha20, но алгоритм генерации и обмена ключами Диффи-Хеллмана на эллиптической кривой (ECDH) изменен с NIST K-571 на Curve25519 (https://en.wikipedia.org/wiki/Curve25519), одну из самых быстрых кривых ECDH.
IOCS
Бабук v3 поставляется в виде 32-битного файла .exe.
MD5: 8b9a0b44b738c7884e6a14f4cb18afff
SHA256: 704a0fa7de19564bc743fb68aa0652e38bf86e8ab694bc079b15f945c85f4320
Сэмпл: https://bazaar.abuse.ch/sample/704a0fa7de19564bc743fb68aa0652e38bf86e8ab694bc079b15f945c85f4320/
Записка с требованием выкупа
Новые изменения
Однократный мьютекс
В начале Бабук проверяет, существует ли мьютекс с именем bauk_v3, посредством вызова OpenMutexA. Если он уже существует, вредоносное ПО немедленно завершает работу.
Это обычно используется вредоносными программами, чтобы предотвратить одновременный запуск нескольких экземпляров.
Аргументы командной строки
Бабук может работать как с параметрами командной строки, так и без них.
Новые параметры командной строки: "lanfirst", "nolan" и "shares".
Если задан параметр, он будет обрабатывать эти аргументы при выполнении и вести себя соответствующим образом.
Многопоточность
Реализация многопоточности сильно изменилась по сравнению с первой версией. Я думаю, они действительно пытались улучшить его после прочтения того, что я сказал в последнем сообщении в блоге.
Шаги, предпринятые для улучшения функций многопоточности программы-вымогателя, идут в правильном направлении, поскольку они значительно увеличивают скорость шифрования.
Бабук использует структуру, похожую на циклическую очередь (кольцевой буфер), поддерживаемую массивом, для хранения имен файлов для шифрования. Размер очереди в два раза превышает количество процессоров в системе, то есть такое же количество порождаемых дочерних потоков.
Эта очередь является общей и используется дочерними потоками.
Родительский поток рекурсивно просматривает каталоги и ставит найденные имена файлов в начало очереди. Дочерние потоки начнут удалять их из хвоста очереди, чтобы начать шифрование.
Во-первых, Бабук создаст дочерние потоки. Количество создаваемых потоков в два раза превышает количество процессоров. Это явно не очень хорошая сумма, поэтому я понятия не имею, почему они все еще используют ее, как и в предыдущей версии. (https://docs.microsoft.com/en-us/wi...api/nf-processthreadsapi-createthread#remarks)
Затем родительский поток Бабук переходит по всему диску, проверяя, встретил ли он каталог или файл.
Найдя каталог, он снова вызовет эту функцию и спустится на другой уровень, чтобы рекурсивно пройти по этому каталогу.
Найдя файл, он поставит этот файл в начало очереди и продолжит работу.
Каждый дочерний поток удаляет файл из хвоста очереди и шифрует его.
Вот реализация постановки и удаления файлов из очереди.
Как мы видим, Бабук использует файловую очередь, поддерживаемую массивом. Благодаря отслеживанию индексов головы и хвоста добавление и удаление имен файлов из очереди занимает постоянное время и выполняется очень быстро.
Со всеми этими новыми изменениями в реализации эта новая версия Бабук намного быстрее, чем исходная. К сожалению, есть еще много возможностей для улучшения, поскольку с точки зрения скорости и эффективности он не идет ни в какое сравнение с Конти и другими программами-вымогателями.
При использовании очереди на основе массива пространство ограничено. Как мы видим в функции постановки в очередь, перед добавлением в нее дополнительных файлов не проверяется, заполнена ли очередь. В теоретическом случае, когда все потоки заняты шифрованием файлов и очередь заполнена, родительский поток продолжит добавлять файлы. Поскольку это циклическая очередь, это приведет к тому, что файлы будут перезаписаны новыми до того, как дочерние потоки смогут их зашифровать, если родительский поток достаточно быстр.
Более того, автор вредоносного ПО по-прежнему придерживается старого рекурсивного подхода к обходу файлов. Поскольку только родительский поток проходит через целые диски, фрейм стека будет чрезмерно накладным, поскольку будет слишком много уровней рекурсии. По сути, это делает общее время шифрования зависимым от времени, необходимого одному потоку для обхода всей системы.
Шифрование
Схема шифрования осталась той же, что и в исходной версии. Однако есть небольшие изменения в генерации ключей ChaCha20.
Для каждого файла генерируется случайный буфер размером 32 байта с использованием CryptGenRandom.
Затем, используя именно этот фрагмент реализации Curve25519, Бабук сгенерирует открытый ключ для жертвы из случайного буфера, используя ECDH.( https://github.com/agl/curve25519-donna/blob/master/curve25519-donna.c)
Он также сгенерирует общее секретное число, используя свой жестко закодированный открытый ключ и буфер случайных чисел. Этот общий секрет в конечном итоге используется в качестве ключа ChaCha20 для шифрования файла.
Наконец, в конец файла записывается открытый ключ жертвы, который будет использоваться для расшифровки, если жертва решит заплатить.
Не уверен, что это было таак задумано, но я считаю, что группа Бабук испортила фазу генерации открытого ключа.
По словам Дэна Бернштейна, автора этой функции Диффи-Хеллмана, вот процедура генерации открытого ключа с использованием Curve25519. (https://cr.yp.to/djb.html)
Вместо того, чтобы использовать 9, за которыми следуют все нули, Бабук использует массив всех 9 значений.
Если автор вредоносного ПО не изменил математику в исходном коде Curve25519, чтобы приспособиться к этому (что маловероятно), эта константа базовой точки может не сгенерировать правильный открытый ключ.
С неправильным открытым ключом автор вредоносного ПО не может сгенерировать правильный общий секрет для расшифровки файлов.
Генерация ключей
Новая версия Бабук была улучшена, чтобы шифровать файлы с гораздо большей скоростью, используя улучшенный многопоточный подход. Несмотря на то, что ему еще многое предстоит улучшить, Бабук действительно эффективно атаковал многие корпорации, используя шифрование ChaCha20, а также алгоритм Диффи-Хеллмана на эллиптических кривых.
Как и предполагалось, команда Бабук, вероятно, использует целевые фишинговые атаки, VPN 0-day и уязвимую настройку RDP для нацеливания на определенные компании.
Сообщение новым жертвам
Недавно я заметил, что на этой странице гораздо больше трафика из Европы, и я предполагаю, что новые жертвы просматривают это, чтобы лучше понять программу-вымогатель.
Этот пост в блоге действительно устарел, потому что Бабук сильно эволюционировал, а вредоносное ПО сильно отличается от того, о чем я здесь рассказываю.
Если недавние жертвы Бабук заинтересованы в получении дополнительной информации о новой версии этой программы-вымогателя или нуждаются в какой-либо помощи в анализе любого образца, не стесняйтесь обращаться ко мне по электронной почте cdong49@gatech или Twitter!
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://chuongdong.com/reverse%20engineering/2021/01/16/BabukRansomware-v3/
Обзор
Это краткий отчет о последнем образце программы-вымогателя Бабук. Этот образец помечен как версия 3 на основе строки однократного мьютекса.
В этой новой версии автор вредоносного ПО сохраняет большинство старых функций, за исключением схемы шифрования и многопоточности.
Поскольку я рассмотрел здесь старый образец Бабук
(http://chuongdong.com/reverse%20engineering/2021/01/03/БабукRansomware/) , в этом отчете я буду обсуждать только новые изменения.
Для шифрования Бабук использует шифрование ChaCha20, но алгоритм генерации и обмена ключами Диффи-Хеллмана на эллиптической кривой (ECDH) изменен с NIST K-571 на Curve25519 (https://en.wikipedia.org/wiki/Curve25519), одну из самых быстрых кривых ECDH.
IOCS
Бабук v3 поставляется в виде 32-битного файла .exe.
MD5: 8b9a0b44b738c7884e6a14f4cb18afff
SHA256: 704a0fa7de19564bc743fb68aa0652e38bf86e8ab694bc079b15f945c85f4320
Сэмпл: https://bazaar.abuse.ch/sample/704a0fa7de19564bc743fb68aa0652e38bf86e8ab694bc079b15f945c85f4320/
Записка с требованием выкупа
Новые изменения
Однократный мьютекс
В начале Бабук проверяет, существует ли мьютекс с именем bauk_v3, посредством вызова OpenMutexA. Если он уже существует, вредоносное ПО немедленно завершает работу.
Это обычно используется вредоносными программами, чтобы предотвратить одновременный запуск нескольких экземпляров.
Аргументы командной строки
Бабук может работать как с параметрами командной строки, так и без них.
Новые параметры командной строки: "lanfirst", "nolan" и "shares".
Если задан параметр, он будет обрабатывать эти аргументы при выполнении и вести себя соответствующим образом.
Многопоточность
Реализация многопоточности сильно изменилась по сравнению с первой версией. Я думаю, они действительно пытались улучшить его после прочтения того, что я сказал в последнем сообщении в блоге.
Шаги, предпринятые для улучшения функций многопоточности программы-вымогателя, идут в правильном направлении, поскольку они значительно увеличивают скорость шифрования.
Бабук использует структуру, похожую на циклическую очередь (кольцевой буфер), поддерживаемую массивом, для хранения имен файлов для шифрования. Размер очереди в два раза превышает количество процессоров в системе, то есть такое же количество порождаемых дочерних потоков.
Эта очередь является общей и используется дочерними потоками.
Родительский поток рекурсивно просматривает каталоги и ставит найденные имена файлов в начало очереди. Дочерние потоки начнут удалять их из хвоста очереди, чтобы начать шифрование.
Во-первых, Бабук создаст дочерние потоки. Количество создаваемых потоков в два раза превышает количество процессоров. Это явно не очень хорошая сумма, поэтому я понятия не имею, почему они все еще используют ее, как и в предыдущей версии. (https://docs.microsoft.com/en-us/wi...api/nf-processthreadsapi-createthread#remarks)
Затем родительский поток Бабук переходит по всему диску, проверяя, встретил ли он каталог или файл.
Найдя каталог, он снова вызовет эту функцию и спустится на другой уровень, чтобы рекурсивно пройти по этому каталогу.
Найдя файл, он поставит этот файл в начало очереди и продолжит работу.
Каждый дочерний поток удаляет файл из хвоста очереди и шифрует его.
Вот реализация постановки и удаления файлов из очереди.
Как мы видим, Бабук использует файловую очередь, поддерживаемую массивом. Благодаря отслеживанию индексов головы и хвоста добавление и удаление имен файлов из очереди занимает постоянное время и выполняется очень быстро.
Со всеми этими новыми изменениями в реализации эта новая версия Бабук намного быстрее, чем исходная. К сожалению, есть еще много возможностей для улучшения, поскольку с точки зрения скорости и эффективности он не идет ни в какое сравнение с Конти и другими программами-вымогателями.
При использовании очереди на основе массива пространство ограничено. Как мы видим в функции постановки в очередь, перед добавлением в нее дополнительных файлов не проверяется, заполнена ли очередь. В теоретическом случае, когда все потоки заняты шифрованием файлов и очередь заполнена, родительский поток продолжит добавлять файлы. Поскольку это циклическая очередь, это приведет к тому, что файлы будут перезаписаны новыми до того, как дочерние потоки смогут их зашифровать, если родительский поток достаточно быстр.
Более того, автор вредоносного ПО по-прежнему придерживается старого рекурсивного подхода к обходу файлов. Поскольку только родительский поток проходит через целые диски, фрейм стека будет чрезмерно накладным, поскольку будет слишком много уровней рекурсии. По сути, это делает общее время шифрования зависимым от времени, необходимого одному потоку для обхода всей системы.
Шифрование
Схема шифрования осталась той же, что и в исходной версии. Однако есть небольшие изменения в генерации ключей ChaCha20.
Для каждого файла генерируется случайный буфер размером 32 байта с использованием CryptGenRandom.
Затем, используя именно этот фрагмент реализации Curve25519, Бабук сгенерирует открытый ключ для жертвы из случайного буфера, используя ECDH.( https://github.com/agl/curve25519-donna/blob/master/curve25519-donna.c)
Он также сгенерирует общее секретное число, используя свой жестко закодированный открытый ключ и буфер случайных чисел. Этот общий секрет в конечном итоге используется в качестве ключа ChaCha20 для шифрования файла.
Наконец, в конец файла записывается открытый ключ жертвы, который будет использоваться для расшифровки, если жертва решит заплатить.
Не уверен, что это было таак задумано, но я считаю, что группа Бабук испортила фазу генерации открытого ключа.
По словам Дэна Бернштейна, автора этой функции Диффи-Хеллмана, вот процедура генерации открытого ключа с использованием Curve25519. (https://cr.yp.to/djb.html)
Вместо того, чтобы использовать 9, за которыми следуют все нули, Бабук использует массив всех 9 значений.
Если автор вредоносного ПО не изменил математику в исходном коде Curve25519, чтобы приспособиться к этому (что маловероятно), эта константа базовой точки может не сгенерировать правильный открытый ключ.
С неправильным открытым ключом автор вредоносного ПО не может сгенерировать правильный общий секрет для расшифровки файлов.
Генерация ключей
Новая версия Бабук была улучшена, чтобы шифровать файлы с гораздо большей скоростью, используя улучшенный многопоточный подход. Несмотря на то, что ему еще многое предстоит улучшить, Бабук действительно эффективно атаковал многие корпорации, используя шифрование ChaCha20, а также алгоритм Диффи-Хеллмана на эллиптических кривых.
Как и предполагалось, команда Бабук, вероятно, использует целевые фишинговые атаки, VPN 0-day и уязвимую настройку RDP для нацеливания на определенные компании.
Сообщение новым жертвам
Недавно я заметил, что на этой странице гораздо больше трафика из Европы, и я предполагаю, что новые жертвы просматривают это, чтобы лучше понять программу-вымогатель.
Этот пост в блоге действительно устарел, потому что Бабук сильно эволюционировал, а вредоносное ПО сильно отличается от того, о чем я здесь рассказываю.
Если недавние жертвы Бабук заинтересованы в получении дополнительной информации о новой версии этой программы-вымогателя или нуждаются в какой-либо помощи в анализе любого образца, не стесняйтесь обращаться ко мне по электронной почте cdong49@gatech или Twitter!
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://chuongdong.com/reverse%20engineering/2021/01/16/BabukRansomware-v3/
