Специалист «Лаборатории Касперского» Алексей Фирш опубликовал подробный доклад об уязвимости, обнаруженной в Windows-клиенте для Telegram. Исследователь пишет, что проблема была обнаружена еще в октябре 2017 года, и ее эксплуатировали для многоцелевых атак против российских пользователей. Согласно отчету, баг заключался в использовании классической атаки right-to-left override при отправке файлов собеседнику.
Данная техника атак далеко не нова, ее «история» насчитывает добрый десяток лет. Так, специальный непечатный символ right-to-left override (RLO) служит для изменения порядка следующих за ним в строке знаков на обратный, в таблице Unicode он представлен как ‘U+202E’. Легитимной областью использования RLO, в частности, является набор текста на арабском языке. RLO-атака подразумевает использование символа с целью введения жертвы в заблуждение, чаще всего, при отображении имени и расширения исполняемого файла: уязвимое к этой атаке ПО отображает имя частично или полностью в перевернутом виде.
Фирш рассказывает, что в Telegram эксплуатация бага выглядела следующим образом:
- Злоумышленник подготавливает свою малварь к отправке. Например, JS-файл переименовывается следующим образом:
evil.js -> photo_high_re*U+202E*gnp.js
Где *U+202E* — RLO символ, который должен заставить Telegram перевернуть оставшиеся символы gnp.js. Причем это все тот же файл с расширением *.js. - Атакующий отправляет жертве сообщение, но вместо JS-файла получатель видит такую PNG-картинку:
При открытии этого файла появится стандартное уведомление безопасности Windows, но только в том случае, если соответствующая опция не была отключена в системных настройках. После подтверждения от пользователя, вредоносный файл будет запущен.
Специалисты «Лаборатории Касперского» выявили сразу несколько сценариев реальной эксплуатации бага. Так, атака использовалась для получения контроля над системой жертвы путем изучения окружения и установки дополнительных модулей. На первой стадии такой атаки жертве отправляли загрузчик, написанный на .Net и использующий Telegram API в качестве командного протокола. То есть для управления использовался Telegram-бот, причем команды были реализованы на русском языке.
Перечень доступных команд показывает, что бот мог скрытно разворачивать на целевой системе произвольные бэкдоры, логгеры и другое вредоносное ПО. В таблице ниже перечислен полный список команд.
Команда | Функция |
«Онлайн | Отправить управляющему боту список файлов из своей директории. |
«Запус | Запустить исполняемый файл через Process.Start(). |
«Логгер | Проверяет, запущен ли процесс tor, скачивает logg.zip, распаковывает, удаляет сам архив и запускает содержимое. |
«Скачать | Скачать файл в свою директорию. |
«Удалить | Удалить файл из своей директории. |
«Распаковать | Распаковать архив с указанным паролем из своей директории. |
убить | Остановить указанный процесс через process.Kill() |
скачат | То же, что «»Скачать», отличается только парсинг команды. |
запуск | То же, что «»Запус», отличается только парсинг команды. |
удалить | То же, что «»Удалить», отличается только парсинг команды. |
распаковать | То же, что «»Распаковать», отличается только парсинг команды. |
процессы | Отправить управляющему боту список запущенных на ПК процессов. |
Кроме того на устройства пострадавших пользователей устанавливали криптовалютные майнеры. На первой стадии атаки использовался SFX-архив со сценарием, запускающим содержащийся в нем исполняемый файл run.exe. Этот файл на самом деле являлся BAT-файлом. После извлечения самого batch-скрипта он выглядел следующим образом:
Первым делом вредонос открывал файл-приманку, который в рассматриваемом случае являлся картинкой, необходимой для усыпления бдительности жертвы. Далее поочередно стартовали майнеры, причем они запускались как сервисы, с помощью утилиты nssm.exe, упакованной в тот же SFX-архив.
Так, nheq.exe запускал Equihash-майнер для NiceHash (добывал криптовалюту Zcash), способный задействовать ресурсы ЦП и графического ускорителя. В свою очередь, taskmgn.exe — это еще один широко известный майнер, работающий по алгоритму CryptoNight, который майнил криптовалюты Fantomcoin и Monero.
Эксперты обнаружили и другие вариаций данного batch-скрипта, некоторые из которых обладали дополнительными возможностями. К примеру, могли отключаеть защитные системы Windows, а после этого авторизоваться на FTP-сервере злоумышленников, скачивать и запускать полезную нагрузку. Последняя представляла собой SFX-архив, начиненный новыми майнерами и клиентом Remote Manipulator System — аналогом TeamViewer. Используя скрипты AutoIt, малварь разворачивала на атакуемой системе RMS для последующего удаленного доступа.
Еще один сценарий атаки (см. схему выше), как и в предыдущем случае, начинался с SFX-архива, который при открытии запускал содержащийся внутри VBS-скрипт. Его основная задача так же заключалась в открытии картинки для отвлечения внимания жертвы, а затем он скачивал и запускал полезную нагрузку: SFX-архив со следующим сценарием.
Скрипт svchost.vbs контролировал запуск майнера CryptoNight (csrs.exe), следил за списком процессов и при обнаружении среди них диспетчера задач (taskmgr.exe, processhacker.exe) завершал процесс майнера с последующим перезапуском (после того как диспетчер будет закрыт). Адрес пула соответствовал криптовалюте Monero.
В заключение Фирш пишет, что о данной проблеме в Windows-клиенте Telegram, очевидно, было известно только злоумышленникам из России. Дело в том, что все обнаруженные случаи эксплуатации бага происходили именно в РФ. Кроме того, в ходе подробного изучения атак было обнаружено множество «артефактов», указывающих на русскоязычных киберпреступников.
«Мы не обладаем точной информацией о том, как долго и в каких версиях была открыта уязвимость, но, со своей стороны, можем отметить, что случаи эксплуатации начались в марте 2017 года. Мы уведомили разработчиков о проблеме, и на сегодняшний день уязвимость не проявляется в продуктах Telegram», — резюмирует исследователь.
Фото: "Лаборатория Касперского"