Быстро развивающийся модульный троян DanaBot подвергся новым изменениям. В версии, выпущенной в конце января 2019 года, реализован совершенно новый коммуникационный протокол, добавляющий несколько уровней шифрования в коммуникацию трояна и его C&C-сервера. Помимо этого, была изменена архитектура DanaBot и идентификаторы кампаний.
После обнаружения в мае 2018 года в составе спам-кампании, нацеленной на Австралию, DanaBot фигурировал в ряде других атак, включая спам-кампанию в Польше, Италии, Германии, Австрии и Украине, а также США. В европейских кампаниях функциональность трояна была расширена с помощью новых плагинов и возможностей рассылки спама.
25 января мы обнаружили в данных телеметрии необычные исполняемые файлы, связанные с DanaBot. В ходе дальнейшей проверки выяснилось, что эти бинарные файлы действительно являются версиями DanaBot, но для связи с C&C-сервером они используют иной протокол связи. С 26 января операторы трояна остановили сборку бинарных файлов со старым протоколом.
На момент написания поста новая версия DanaBot распространялась по двум сценариям:
В протоколе, который использовался до 25 января, пакеты не были зашифрованы, как показано на рисунке 1.
Рисунок 1. Перехват пакета, показывающий старый протокол с данными в незашифрованном виде
После доработки DanaBot использует в коммуникации с С&C-сервером алгоритмы шифрования AES и RSA. Новый протокол связи более сложен, поскольку использует несколько уровней шифрования, как показано на рисунке ниже.
Рисунок 2. Схема нового коммуникационного протокола DanaBot
Эти изменения позволяют избежать детектирования с применением существующих сетевых сигнатур и затрудняют написание новых правил для систем обнаружения и предотвращения вторжений. Кроме того, без доступа к соответствующим ключам RSA невозможно декодировать отправленные или полученные пакеты; таким образом, файлы РСАР из облачных систем анализа (таких как ANY.RUN) непригодны для исследования.
Рисунок 3. Захват пакета с новым коммуникационным протоколом
Каждый пакет, отправляемый клиентом, имеет 24 (0x18)-байтный заголовок:
Для каждого пакета за заголовком следуют данные пакета, зашифрованные AES, затем 4-байтовое значение, указывающее размер сдвига AES, и далее ключ AES, зашифрованный RSA. Все пакеты зашифрованы разными ключами AES.
Ответы сервера используют тот же формат. В отличие от предыдущих версий, данные пакета в ответах сервера не соответствуют какой-то определенной структуре (за некоторыми исключениями).
Прежняя структура данных пакета была детально описана Proofpoint в октябре 2018 года. В последней версии DanaBot эта схема немного изменена, как показано на рисунке ниже.
Рисунок 4. Сравнение структуры данных пакета в старой и новой версиях DanaBot
Помимо протокола связи, в DanaBot несколько изменена архитектура. Предыдущие версии трояна включали компонент, который скачивал и выполнял основной модуль. Затем основной модуль загружал и выполнял плагины и конфигурации.
В последней версии эти функции выполняет новый загрузчик, который используется для скачивания всех плагинов вместе с основным модулем. Персистентность обеспечивается путем регистрации компонента загрузчика в качестве службы.
Рисунок 5. Сравнение архитектуры старой и новой версий DanaBot
Согласно анализу, компонент загрузчика использует следующие команды:
Загруженные плагины и файлы конфигурации зашифрованы с ключом AES, полученным из идентификатора клиента. В дополнение к этому плагины архивируются в формате ZIP с использованием сжатия LZMA, в то время как файлы конфигурации – с использованием zlib.
Команды с ID 0x130–0x134 отправляются основным модулем:
Предыдущее исследование показало, что DanaBot распространяется под разными ID.
В предыдущей версии DanaBot использовалось около 20 идентификаторов кампании. В последней версии идентификаторы изменились незначительно. По состоянию на 5 февраля 2019 года мы наблюдаем следующие ID:
В 2018 году мы наблюдали развитие DanaBot с точки зрения распространения и функциональности. В начале 2019 года троян подвергся «внутренним» изменениям, указывающим на активную работу его создателей. Последние обновления предполагают, что создатели DanaBot прилагают усилия, чтобы избежать обнаружения на сетевом уровне. Не исключено, что авторы трояна обращают внимание на публикуемые исследования, чтобы оперативно вносить изменения в код, опережая разработчиков продуктов для безопасности.
Продукты ESET детектируют и блокируют все компоненты и плагины DanaBot. Имена детектирования приведены в следующем разделе.
C&C-серверы, используемые новой версией DanaBot
Серверы для веб-инжекта и редиректа
Примеры хешей
Новые сборки DanaBot выходят регулярно, поэтому мы можем предоставить только часть хешей:
Дроппер
Загрузчик (x86), ID=3
Загрузчик (x64), ID=3
Загрузчик (x86), ID=9
Загрузчик (x64), ID=9
Основной модуль (x86)
Основной модуль (x64)
Плагины
RDPWrap
Stealer (x86)
Stealer (x64)
Sniffer
VNC
TOR
Эволюция DanaBot
После обнаружения в мае 2018 года в составе спам-кампании, нацеленной на Австралию, DanaBot фигурировал в ряде других атак, включая спам-кампанию в Польше, Италии, Германии, Австрии и Украине, а также США. В европейских кампаниях функциональность трояна была расширена с помощью новых плагинов и возможностей рассылки спама.
25 января мы обнаружили в данных телеметрии необычные исполняемые файлы, связанные с DanaBot. В ходе дальнейшей проверки выяснилось, что эти бинарные файлы действительно являются версиями DanaBot, но для связи с C&C-сервером они используют иной протокол связи. С 26 января операторы трояна остановили сборку бинарных файлов со старым протоколом.
На момент написания поста новая версия DanaBot распространялась по двум сценариям:
- в качестве «обновлений», доставляемых жертвам DanaBot;
- посредством спам-рассылки (в Польше).
Новый коммуникационный протокол
В протоколе, который использовался до 25 января, пакеты не были зашифрованы, как показано на рисунке 1.
Рисунок 1. Перехват пакета, показывающий старый протокол с данными в незашифрованном виде
После доработки DanaBot использует в коммуникации с С&C-сервером алгоритмы шифрования AES и RSA. Новый протокол связи более сложен, поскольку использует несколько уровней шифрования, как показано на рисунке ниже.
Рисунок 2. Схема нового коммуникационного протокола DanaBot
Эти изменения позволяют избежать детектирования с применением существующих сетевых сигнатур и затрудняют написание новых правил для систем обнаружения и предотвращения вторжений. Кроме того, без доступа к соответствующим ключам RSA невозможно декодировать отправленные или полученные пакеты; таким образом, файлы РСАР из облачных систем анализа (таких как ANY.RUN) непригодны для исследования.
Рисунок 3. Захват пакета с новым коммуникационным протоколом
Каждый пакет, отправляемый клиентом, имеет 24 (0x18)-байтный заголовок:
Для каждого пакета за заголовком следуют данные пакета, зашифрованные AES, затем 4-байтовое значение, указывающее размер сдвига AES, и далее ключ AES, зашифрованный RSA. Все пакеты зашифрованы разными ключами AES.
Ответы сервера используют тот же формат. В отличие от предыдущих версий, данные пакета в ответах сервера не соответствуют какой-то определенной структуре (за некоторыми исключениями).
Структура пакета данных
Прежняя структура данных пакета была детально описана Proofpoint в октябре 2018 года. В последней версии DanaBot эта схема немного изменена, как показано на рисунке ниже.
Рисунок 4. Сравнение структуры данных пакета в старой и новой версиях DanaBot
Изменения архитектуры DanaBot
Помимо протокола связи, в DanaBot несколько изменена архитектура. Предыдущие версии трояна включали компонент, который скачивал и выполнял основной модуль. Затем основной модуль загружал и выполнял плагины и конфигурации.
В последней версии эти функции выполняет новый загрузчик, который используется для скачивания всех плагинов вместе с основным модулем. Персистентность обеспечивается путем регистрации компонента загрузчика в качестве службы.
Рисунок 5. Сравнение архитектуры старой и новой версий DanaBot
Команды
Согласно анализу, компонент загрузчика использует следующие команды:
- 0x12C – Hello. Первая команда, отправляемая с клиента на сервер
- 0x12D – загрузить 32/64-битный компонент средства запуска
- 0x12E – запросить список плагинов и файлов конфигурации
- 0x12F – загрузить плагины/файлы конфигурации
Загруженные плагины и файлы конфигурации зашифрованы с ключом AES, полученным из идентификатора клиента. В дополнение к этому плагины архивируются в формате ZIP с использованием сжатия LZMA, в то время как файлы конфигурации – с использованием zlib.
Команды с ID 0x130–0x134 отправляются основным модулем:
- 0x130 – передать собранную информацию на C&C-сервер (например, снимок экрана компьютера жертвы; системные данные)
- 0x131 – передать собранную информацию на C&C-сервер (например, список файлов на жестком диске зараженного компьютера)
- 0x132 – запросить у C&C-сервера дальнейшие команды. Есть порядка 30 команд, типичных для бэкдоров, включая запуск плагинов, сбор системной информации и изменение файлов в клиентской системе
- 0x133 – обновить список C&C-серверов через прокси Tor
- 0x134 – точное назначение неизвестно, скорее всего, используется для связи между плагинами и C&C-сервером
Изменение идентификаторов кампании
Предыдущее исследование показало, что DanaBot распространяется под разными ID.
В предыдущей версии DanaBot использовалось около 20 идентификаторов кампании. В последней версии идентификаторы изменились незначительно. По состоянию на 5 февраля 2019 года мы наблюдаем следующие ID:
- ID=2 по видимости, тестовая версия, обслуживающая незначительное число файлов конфигурации, без веб-инжектов
- ID=3 активно распространяется, ориентирован на пользователей в Польше и Италии, обслуживает все файлы конфигурации и веб-инжекты для польских и итальянских целей
- ID=5 обслуживает файлы конфигурации для австралийских целей
- ID=7 распространяется только в Польше, обслуживает веб-инжекты для польских целей
- ID=9 по видимости, также является тестовой версией с ограниченным распространением и без специального таргетинга, обслуживает ограниченное число файлов конфигурации, без веб-инжектов
Выводы
В 2018 году мы наблюдали развитие DanaBot с точки зрения распространения и функциональности. В начале 2019 года троян подвергся «внутренним» изменениям, указывающим на активную работу его создателей. Последние обновления предполагают, что создатели DanaBot прилагают усилия, чтобы избежать обнаружения на сетевом уровне. Не исключено, что авторы трояна обращают внимание на публикуемые исследования, чтобы оперативно вносить изменения в код, опережая разработчиков продуктов для безопасности.
Продукты ESET детектируют и блокируют все компоненты и плагины DanaBot. Имена детектирования приведены в следующем разделе.
Индикаторы компрометации (IoCs)
C&C-серверы, используемые новой версией DanaBot
84.54.37[.]102
89.144.25[.]243
89.144.25[.]104
178.209.51[.]211
185.92.222[.]238
192.71.249[.]51
Серверы для веб-инжекта и редиректа
47.74.249[.]106
95.179.227[.]160
185.158.249[.]144
Примеры хешей
Новые сборки DanaBot выходят регулярно, поэтому мы можем предоставить только часть хешей:
Дроппер
98C70361EA611BA33EE3A79816A88B2500ED7844
Win32/TrojanDropper.Danabot.OЗагрузчик (x86), ID=3
0DF17562844B7A0A0170C9830921C3442D59C73C
Win32/Spy.Danabot.LЗагрузчик (x64), ID=3
B816E90E9B71C85539EA3BB897E4F234A0422F85
Win64/Spy.Danabot.GЗагрузчик (x86), ID=9
5F085B19657D2511A89F3172B7887CE29FC70792
Win32/Spy.Danabot.IЗагрузчик (x64), ID=9
4075375A08273E65C223116ECD2CEF903BA97B1E
Win64/Spy.Danabot.FОсновной модуль (x86)
28139782562B0E4CAB7F7885ECA75DFCA5E1D570
Win32/Spy.Danabot.KОсновной модуль (x64)
B1FF7285B49F36FE8D65E7B896FCCDB1618EAA4B
Win64/Spy.Danabot.CПлагины
RDPWrap
890B5473B419057F89802E0B6DA011B315F3EF94
Win32/Spy.Danabot.H Stealer (x86)
E50A03D12DDAC6EA626718286650B9BB858B2E69
Win32/Spy.Danabot.C Stealer (x64)
9B0EC454401023DF6D3D4903735301BA669AADD1
Win64/Spy.Danabot.E Sniffer
DBFD8553C66275694FC4B32F9DF16ADEA74145E6
Win32/Spy.Danabot.B VNC
E0880DCFCB1724790DFEB7DFE01A5D54B33D80B6
Win32/Spy.Danabot.D TOR
73A5B0BEE8C9FB4703A206608ED277A06AA1E384
Win32/Spy.Danabot.G