По словам Fortinet, объявившийся в мае Android-зловред создан с помощью SDK Flutter, что сильно затрудняет анализ. Новейший образец Fluhorse, изученный экспертами, использует также упаковщик для сокрытия вредоносной полезной нагрузки.
Набор инструментов Flutter с открытым исходным кодом позволяет на основе одних и тех же исходников выстраивать приложения, совместимые с Android, iOS, Linux, Windows. Реверс-инжиниринг таких программ затруднителен, и аналитики обычно воспринимают их как черный ящик.
Вирусописатели ценят эти свойства Flutter, но обычно используют его для создания элементов кросс-платформенного UI, поэтому сам зловред легко поддается анализу. Троян Fluhorse, как оказалось, — редкое исключение: его вредоносные компоненты встроены непосредственно в Flutter-код.
Майские семплы Fluhorse, по данным Fortinet, не использовали обфускацию либо сжатие. В этом месяце исследователям попался запакованный исполняемый файл. Зловред маскировался под легитимное приложение для контроля расходов на платных дорогах, популярное в Юго-Восточной Азии.
После запуска вредонос пытается выманить у жертвы и украсть учетные данные, а также ворует одноразовые коды 2FA: отслеживает входящие СМС-сообщения и пересылает их на свой сервер. Для распространения трояна обычно используются имейл-рассылки; на его счету уже более 100 тыс. загрузок.
Текущая версия Fluhorse (уровень детектирования 24/65 на момент анализа) была впервые загружена на VirusTotal 11 июня. Она отдается в виде APK-файла с сайта hxxps://fasd1[.]oss-ap-southeast-1.aliyuncs.com; обращения к нему из Азии, по данным телеметрии, наблюдаются с 12 июня.
Полезная нагрузка зашифрована (AES-128-CBC), архивирована, и итог обработан упаковщиком.
После установки в систему пейлоад загружает Flutter-приложение, которое при запуске запрашивает разрешения для мониторинга входящих СМС. Прослушка осуществляется в фоновом режиме, с этой целью зловреду придан Dart Telephony — легитимный Flutter-плагин с открытым исходным кодом.