SHA1-хеш:
- 9b557feeb5a2e910b3261f31ebab1ac75d8651d4 (com.youmus)
Описание
Троянская программа для Android-устройств, которая по команде управляющего сервера меняет поведение и вместо заявленной функциональности загружает в своем окне содержимое целевых веб-сайтов, чаще всего онлайн-казино. Она использует модифицированный код библиотеки dnsjava, с помощью которой через DNS-запрос получает конфигурацию у вредоносного DNS-сервера. Android.FakeApp.1669 представлен различными модификациями, которые распространяются под видом разнообразных приложений, в том числе через каталог Google Play.
Дальнейшее описание принципа работы Android.FakeApp.1669 основано на анализе модификации 9b557feeb5a2e910b3261f31ebab1ac75d8651d4.
Принцип действия
При запуске троян выполняет DNS-запрос к серверу 113[.]30.190[.]193, запрашивая TXT-запись домена 3gEBkayjVYcMiztlrcJXHFSABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]simpalm[.]com.. В имени его субдомена закодированы данные о зараженном устройстве. После декодирования префикса из формата Base64 получаем массив, в котором:
- первые 2 байта — константа;
- следующие 4 байта — число, первая часть id — время установки в формате unix;
- следующие 8 байтов — число, вторая часть id — случайное число;
- следующий 1 байт — уровень заряда батареи;
- следующий 1 байт — содержит 2 флага: заряжается ли батарея (0x40) и включен ли режим разработчика (0x80);
- следующие 2 байта — число, ширина экрана;
- следующие 2 байта — число, высота экрана;
- следующие 20 байтов — строка, модель и бренд устройства.
Примечание: числа в данном массиве — беззнаковые, big-endian.
Ниже приведены данные, декодируемые из заданного выше URL домена. Для удобства добавлены имена параметров и использован формат JSON:
{
"hardcoded_flag": -34,
"screen_width": 1080,
"screen_height": 2408,
"appsflyerUID": "1725178271111-903881458110846748",
"is_battery_charging": false,
"is_adb_or_dev_enabled": true,
"model_plus_brand": "SM-S721B/DSSamsung",
"batteryLevel": 84
}
Ответ сервера будет зависеть от того, какое подключение к интернету используется на устройстве. Если оно выполнено через целевых провайдеров, в том числе операторов мобильного интернета, сервер отдаст трояну запрошенную TXT-запись домена. В иных же случаях запись предоставлена не будет.
В получаемой трояном TXT-записи находится его зашифрованная конфигурация.
Пример запроса к DNS-серверу c помощью программы dig:
Содержимое записи:
=AAAAsGe3n8/AAgmaq1GakRmlspJnoR6lSqWmsuJYglmorVJbaS6buhJmilGZc6SG8yzv9AXNLwSDOzUMvysyqS/CNAnLKdXMydXbPMlMjPtEbP8/jCov+UMnACr1OzI5EzJx8TP/8lSYDKpkOaP8mjytsyAAAAAAAAAIs4H
Для расшифровки использован следующий алгоритм:
- перевернуть строку;
- декодировать Base64;
- разжать gzip;
- разбить на строки по символу ÷.
Расшифрованные данные:
url
hxxps[:]//goalachievplan[.]pro
af_id
DF3DgrCPUNxkkx7eiStQ6E
os_id
f109ec36-c6a8-481c-a8ff-3ac6b6131954
где:
- url — ссылка, которую должен загрузить троян;
- af_id — идентификатор для аналитической платформы AppsFlyer SDK;
- os_id — идентификатор для сервиса отправки push-уведомлений OneSignal SDK.
Android.FakeApp.1669 загружает полученную ссылку в WebView поверх своего основного интерфейса. С этого адреса начинается цепочка перенаправлений на множество промежуточных сайтов, последним из которых становится сайт онлайн-казино:
hxxps[:]//goalachievplan[.]pro?...
hxxps[:]//goalachievplan[.]pro/traf.php?...
hxxps[:]//offers[.]nsq[.]network/click?...
hxxps[:]//7000-promo[.]com/l/6577015f34b0985bf008581f?...
hxxps[:]//partners7redirect[.]com/?...
hxxps[:]//cda7k-ddok[.]com/cda/v2?...
hxxps[:]//7k476[.]casino/cda?...
hxxps[:]//7k476[.]casino/register?...
hxxps[:]//7k476[.]casino/en/register?...
В результате пользователь вместо ожидаемой функциональности видит в окне вредоносного приложения содержимое целевого сайта.
Если троян не получает от вредоносного DNS-сервера TXT-запись, он продолжает работать как обычная программа:
DNS-запросы различных модификаций трояна к управляющему серверу
Имя пакета трояна | DNS-сервер | Сгенерированное имя домена | Содержимое TXT-записи домена |
---|---|---|---|
com.llx | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFSABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]actionbutton[.]com. | ==AAAAwZFI7LtDwAYihWYuFGYW6mnkpmqnlpmaS6ZkJmauemkaqWpnBpZuZGmY6GLZwLP/2Dc1sALN4MTx8KzKrK9L0Acuo0dxI3dt9wUyM+0Ss9w/PKg+6X3UzNnUDLxiCp/+lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.youmus | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFSABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]simpalm[.]com. | =AAAAsGe3n8/AAgmaq1GakRmlspJnoR6lSqWmsuJYglmorVJbaS6buhJmilGZc6SG8yzv9AXNLwSDOzUMvysyqS/CNAnLKdXMydXbPMlMjPtEbP8/jCov+UMnACr1OzI5EzJx8TP/8lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.amazon.avod.thirdparty | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]revolt[.]digital. | ==AAAAga1lKGrDgAZWSGmQapnqhpZpppqbqpaaC6YVKGai+GZcqmpfCJbp5GYgxWLZwLP/2Dc1sALN4MTx8KzKrK9L0Acuo0dxI3dt9wUyM+0Ss9w/PKg+KWgOLJl+SM4sbO1MSO/8lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.kumobius.android.wal | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFSABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]somniosoftware[.]com. | =AAAAsGpbV/zAAAmZpBGZZSWaeSGZox6aiJWap+JaSqmrTimlY66acCJaphWks5SG8yzv9AXNLwSDOzUMvysyqS/CNAnLKdXMydXbPMlMjPtEbP81/yMn8yPvs1P/kjM3eDNyWbK/8lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.amazon.avod.thirdpart | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]dteam[.]dev. | ==AAAAAZ2lkYnAwAbuRGkuZJYaqJaplmqrlmmqV6aeKmaqeJmshJpbCpYaaGnkxpLZwLP/2Dc1sALN4MTx8KzKrK9L0Acuo0dxI3dt9wUyM+0Ss9w/PKg+6T10zP3UzN/8lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.durakm.durak | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]emizentech[.]com. | ==AAAAgaAsQVeDAAYq5mlkZmmQCpZqhWpn5paai6ZUCJaquWnuhJrvpGmc6mZq5WLZwLP/2Dc1sALN4MTx8KzKrK9L0Acuo0dxI3dt9wUyM+0Ss9w/PKg+aXvMDL/ejMxeCI4ObJ/8lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.word.count | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]mindsea[.]com. | AAAAp195YGHADgxpaohmZaqmZdCGaueJbQiWobqpkoJ6mm1GmsuGbUimYkhGbskBv88bPwVzCs0gzMFzrMrsq0vQDw5iS3Fjc312DTJz4TLx2D//oA6rABask8KN/mTJo8LP/+lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.kumobius.android.walljum | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFSABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]azikus[.]com. | ==AAAAgZAifV/5TlgGIFIPKQJbElNbBysS+SWmCOuchWv5O3xQTQ6Hj4X9cPufq62+mXtRdMQnPoGsD2EPMYux9ClSjyjvX3GuC23vteLcBg80M0qRCFU58Udgmiy8stSHqRZNB0AABIAqwSJ3xAAAAAAAAAIs4H |
com.dessertdreams.recipes | 113[.]30.188[.]48 | 3gEBkayjVYcMiztlrcJXHFWABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]outorigin[.]com. | ==AAAAgaDqfMaAQAkkVpZQiWao5GZopGorhWZYS6acCmaqOGYVqJrvxmnohpapxmLZwLP/2Dc1sALN4MTx8KzKrK9L0Acuo0dxI3dt9wUyM+0Ss9w/PKg+KW3GTNoUKJoWLO4WbJ/8lSYDKpkOaP8mjytsy/CcGIE3BAIs4H |
com.dualtext.compare | 113[.]30.188[.]48 | 3gEBkayjVYcMiztlrcJXHFSABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]halcyonmobile[.]com. | =AAAAUmALHs7AEwJlkRmlohJliBWkql6maiGaheGlSqmpjpWZZ66Yq1JlUaJnu5SG8yzv9AXNLwSDOzUMvysyqS/CNAnLKdXMydXbPMlMjPtEbP8/jCovSko1SypxQTp/8lSYDKpkOaP8mjytsy/CcGIEzNAIs4H |
com.vivo.eas | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]tridhyatech[.]com. | =AAAAUGhT/P/AMQmYgVpmmRplYKJYYa6nqZpmkemmilmrnhJnoh6auBmaZKJnu5SG8yzv9AXNLwSDOzUMvysyqS/CNAnLKdXMydXbPMlMjPtEbP8/jCovS0rxcCI0+rM/+lSYDKpkOaP8mjytsyAAAAAAAAAIs4H |
com.fruitypic.editor | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]qualhon[.]com. | |
com.kumobius.android.wall | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]fingent[.]com. | |
com.alibaba.aliexpre | 113[.]30.190[.]193 | 3gEBkayjVYcMiztlrcJXHFTAAyoHDlNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]rakeingrass[.]com. | AAAADrxOwn7/OGNQAEGpFfXjhwRIkwOKcVWhsfJMMkiL6wYoKg0ZIWyKpbQlBjYxk1eEbV3yoYJ4HxaOqUoITxRRQIyKIY6R1mbLx9kS/LUTGuRf3/4LbYe05m7L9+Ta5y9SOFhpzuj3Zijg+Rg5n1Fmr5qeLrUXJP2i8fZE1ILUGe9lfzKJFj+BsytJlWCDh8xhN5aMjuko3eQnhMR4AhBMC6QSM3xAAAAAAAAAIs4H |
com.score.time | 113[.]30.188[.]48 | 3gEBkayjVYcMiztlrcJXHFaABDgJaFNNLVM3MjFCL0RTU2Ftc3VuZyAg[.]wdipl[.]com. | AAAAmlKpbPGACcymaqZmaiBGYoFmatOmkilWqrZJkqZ6noJpahepkUqplcimbukBv88bPwVzCs0gzMFzrMrsq0vQDw5iS3Fjc312DTJz4TLx2D//oA6rVdzMkULK/mDO/+lSYDKpkOaP8mjytsy/CcWMOLHAIs4H |