Статья RotaJakiro: Долгоживущий секретный бэкдор с 0 обнаружениями на VirusTotal [ Перевод ] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-06-05 04:01
Недавно специалисты Qihoo 360 Netlab обнаружили очень интересный бэкдор, который получил название RotaJakiro. Данный бэкдор имел 0 обнаружений на VirusTotal длительное количество времени. Специалисты Qihoo 360 Netlab написали статью об этом бэкдоре в свой блог. Статья довольно интересная, и мне захотелось перевести её.
Приятного чтения. 25 марта 2021 года система BotMon лаборатории 360 NETLAB обнаружила подозрительный ELF файл ( MD5=64f6cfe44ba08b0babdd3904233c4857 ) с 0 обнаружениями на VirusTotal. Образец взаимодействует с 4 доменами на 443 TCP порту (HTTPS), но трафик не имеет защиты TLS/SSL. Внимательное изучение образца показало, что этот бэкдор, нацелен на системы Linux x64. Это семейство вирусов, которое существует уже как минимум 3 года.Мы назвали его RotaJakiro, основываясь на том, что семейство использует шифрование с подстановкой ( ROT ) и ведет себя по-разному для учетных записей root и non-root при исполнении. RotaJakiro уделяет достаточно много внимания сокрытию своих следов, используя несколько алгоритмов шифрования: алгоритм AES для шифрования информации о ресурсах внутри образца, использование комбинации AES, XOR, ROT шифрования и ZLIB сжатия для коммуникации с сервером C2 ( сервер для командования и управления вредоносной программой ). RotaJakiro поддерживает в общей сложности 12 функций, три из которых связаны с выполнением определенных плагинов. К сожалению, мы не имеем доступа к плагинам, и поэтому не знаем их истинного назначения. Функции бэкдора можно сгруппировать в следующие четыре категории.
Что-нибудь ещё? Мы обнаружили следующие 4 вида бэкдора, с имеющимися у нас образцами. Все из которых имеют 0 обнаружений на VirusTotal, а самое раннее время первого обнаружения на VirusTotal приходится на 2018 год.
Реверс-инжиниринг 4 образца RotaJakiro с 2018 по 2021 год, очень близки по своим функциям, и для анализа в этом блоге выбран образец 2021 года, который имеет следующую основную информацию: Код: На функциональном уровне RotaJakiro сначала определяет, является ли пользователь root или non-root во время выполнения, с различным набором действия для разных учетных записей. Затем расшифровывает соответствующие важные ресурсы с помощью AES и ROT шифров для последующего закрепления в системе, защиты своих процессов и исполнения их одном экземпляре. И, наконец, устанавливает связь с C2-сервером, ожидая выполнения команд от C2. Далее будет проанализирована конкретная реализация RotaJakiro с вышеуказанными особенностями. 0x00: "Трюки", используемые бэкдором Динамическая генерация таблиц констант, необходимых для алгоритма шифрования AES для предотвращения прямой идентификации алгоритма шифрования. 0x01: Алгоритм шифрования Все конфиденциальные ресурсы в RotaJakiro зашифрованы. В IDA мы видим, что метод расшифровки dec_proc вызывается 60 раз. Этот метод состоит из AES и ROT.aes_dec - AES-256. Режим CBC. Ключ и вектор инициализации ( key & iv ) записаны в бэкдоре.KEY Код: Код: plain_len & 7 ( длина открытого текста ).Возьмем в качестве примера следующий текст шифра с сервера C2. Код: Затем, из "промежуточного зашифрованного текста" извлекается правильный шифротекст, где правильный шифротекст начинается с 8-го байта, а длина равна длина открытого текста - 8 , то есть 26-8=18 байт.Код: 26 & 7 = 2 . Получили количество сдвигов. Сдвинем вышеуказанный правильный шифротекст на 2 бита, чтобы получить открытый текст с сервера C2.0x02: Постоянное присутствие в системе RotaJakiro использует различные методы закрепления в системе для пользователей root/non-root .Учетная запись root В зависимости от дистрибутива Linux, создаётся самозапускающийся скрипт по пути: /etc/init/systemd-agent.conf или /lib/systemd/system/sys-temd-agent.service Bash: Bash: Bash: Создаётся сценарий автозапуска по пути $HOME/.config/au-tostart/gnomehelper.desktop для среды рабочего стола.Bash: .bashrc , чтобы создать сценарий автозапуска для среды shell-оболочки.Bash: GIO (Gnome Input/Output) - Библиотека, предназначенная для предоставления программистам современного и удобного интерфейса к виртуальной файловой системе. Bash: RotaJakiro использует защиту своих процесса. И, как и в случае с постоянным присутствием в системе, существуют различные реализации для пользователей root/non-root .Учетная запись root При работе под пользователем root, в зависимости от дистрибутива Linux, новый процесс автоматически создается, когда процесс сервиса завершается. Это происходит путём записи Restart=always или respawn в конфигурационный файл сервиса.systemd-daemon .При запуске под non-root пользователем, RotaJakiro создает два процесса: session-dbus и gvfsd-helper , которые следят за состоянием друг друга. Один процесс восстанавливают другой, когда тот завершается. Это очень характерно для двух-процессной защиты.Как реализована двух-процессная защита в RotaJakiro? Во-первых, он создает часть общей памяти между процессами с помощью shmget API . session-dbus и gvfsd-helper общаются друг с другом через эту общую память, сообщая друг другу свои PID (ID процесса).Затем, эти процессы динамически перебирают живые процессы в каталоге /proc/[PID] . Когда один процесс признан мертвым, другой процесс создается с помощью execvp API , чтобы помочь мертвому процессу "воскреснуть", как показано на следующей диаграмме.session-dbus и gvfsd-helper с помощью kill -9 , сразу же создаются новые процессы.RotaJakiro реализует единственный экземпляр с помощью блокировки файлов, как показано ниже. root/non-root .Под пользователем root будет создан один файл блокировки. Bash: Bash: /proc/locks , а затем выполняется соответствующая реализация RotaJakiro.RotaJakiro устанавливает связь с сервером C2 с помощью следующего фрагмента кода, ожидая выполнения последующих команд. Расшифровывается список серверов C2, устанавливается соединение с сервером C2, отправляется информация, бэкдор получает и расшифровывает информацию, возвращенную с сервера C2. Этап 2, ожидание вызовов с сервера C2 Проверяется информация, возвращенная с сервера C2. Если она проходит проверку, выполняются последующие инструкции, отправленные сервером C2. Этап 1: Инициализация Список C2 расшифровывается алгоритмом дешифровки, описанным в предыдущем разделе, и следующие четыре расшифрованные сервера C2 теперь находятся в бэкдоре. Код: Этап 2: Конкретные операции Бэкдор получает и выполняет команды от сервера C2 с помощью следующего фрагмента кода.
Plugin_"parameter" для представления различных задач бэкдора.0x06 Анализ пакетов Пакет сетевого взаимодействия RotaJakiro состоит из трех частей: заголовок, ключ и полезная нагрузка. Заголовок и ключ шифруются с помощью XOR и ROT шифра. Полезная нагрузка шифруется с помощью AES и сжимается с помощью ZLIB. Далее мы покажем из чего состоит этот сетевой трафик ( заголовок, ключ и полезная нагрузка ), а также процесс расшифровки на примере взаимодействия между ботом и сервером C2. C2-сервер -> боту Как расшифровать заголовок? Очень просто, сдвинуть на 3 бита влево, а затем использовать XOR с ключом 0x1b. После расшифровки мы можем получить следующее содержимое. Код: Чтение 8 байт со смещения 0x52 дает ключ: ea 9a 1a 18 18 44 26 a0 . Теперь мы используем тот же метод расшифровки, что и в заголовке. Мы получаем байты 4c cf cb dbdb 39 2a 1e , которые используются как ключ AES для расшифровки полезной нагрузки.Чтение 32 байт со смещением 0x5a дает нам следующую полезную нагрузку. Код: Код: Код: bf 89 88 08 cd 2d fd 50 )? Она используется в качестве нового ключа AES для расшифровки некоторой конфиденциальной информации о ресурсах.Например, когда бот собирает информацию об устройстве. Один вид из этой информации - текущий дистрибутив операционной системы, который узнаётся командой cat /etc/*release | uniq .Bash: cat /etc/*release | uniq получена из следующего зашифрованного текста.Bash: Когда бот получает команду "сообщить информацию об устройстве" от сервера C2, он отправляет следующие данные на C2, и мы можем видеть, что часть ключа по-прежнему ea 9a 1a 18 18 44 26 a0 .4c cf cb db db 39 2a 1e . После расшифровки и распаковки полезной нагрузки, отправленной ботом на сервер C2, мы получаем данные, которые являются различной информацией устройства, включая информацию, полученную с помощью cat /etc/*release | uniq , упомянутой ранее, что подтверждает правильность нашего анализа.Ботнет Torii был обнаружен компанией Avast 20 сентября 2018 года, и мы заметили, что между ними есть некоторые сходства, например: 1: Сходство строк После расшифровки RotaJakiro и Torii мы обнаружили, что они используют много одинаковых команд. Код: В процессе построения сетевого взаимодействия используется большое количество констант, а методы их построения очень близки. С точки зрения реверс-инжиниринга, RotaJakiro и Torii имеют схожие стили: использование алгоритмов шифрования для сокрытия секретной информации, использование довольно старого стиля обеспечения постоянное присутствия в системе, структурированный сетевой трафик и т.д. Мы не знаем точного ответа, но похоже, что RotaJakiro и Torii имеют какие-то связи. Это только верхушка айсберга На этом мы завершаем анализ RotaJakiro, но настоящая работа еще далека от завершения, и многие вопросы остаются без ответа: "Как распространялся RotaJakiro, и какова была его цель?" , "Есть ли у RotaJakiro конкретная цель?", Мы будем рады узнать, есть ли у сообщества соответствующие версии. MD-5 хэши образцов Код: Код: Код: Источник: codeby.net Комментарии: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||