December 28, 2020

Rotexy. Как действовал один из опаснейших троянов 2020 года

С момен­та появ­ления тро­яна Rotexy центр реаги­рова­ния на компь­ютер­ные инци­ден­ты BI.ZONE заб­локиро­вал более 1000 домен­ных имен, которые зло­умыш­ленни­ки исполь­зовали в качес­тве сер­веров управле­ния. Все это вре­мя мы вни­матель­но отсле­жива­ли деятель­ность извес­тно­го вре­доно­са для Android. В этой статье (наде­емся, что эпи­тафии) рас­ска­жем об активнос­ти Rotexy в пос­ледние годы и пос­мотрим, как он устро­ен.

Rotexy, помесь бан­кера и вымога­теля, появил­ся в 2018 году и про­вел десят­ки тысяч атак на поль­зовате­лей в Рос­сии. В течение все­го 2020 года активность вре­доно­са пос­тоян­но сни­жалась, но в октябре — нояб­ре мы сно­ва зафик­сирова­ли рост. Воп­рос, будет ли неког­да один из самых замет­ных бан­ков­ских тро­янов акти­вен вновь, пока оста­ется откры­тым.

КАК ПРОХОДИТ АТАКА

Rotexy рас­простра­няет­ся, мас­киру­ясь под при­ложе­ния популяр­ных тор­говых онлайн‑пло­щадок. Ата­ка начина­ется впол­не обы­ден­но: на телефон потен­циаль­ной жер­твы при­ходит СМС, которое приг­лаша­ет открыть вре­донос­ную ссыл­ку, внеш­не похожую на адрес той или иной тор­говой пло­щад­ки. По ссыл­ке заг­ружа­ется бан­ков­ский тро­ян. Инте­рес­но, что по коман­де зло­умыш­ленни­ков такие фишин­говые сооб­щения рас­простра­няют ранее заражен­ные устрой­ства.

Фун­кции бан­кера зак­люча­ются в том, что Rotexy побуж­дает жер­тву ввес­ти дан­ные бан­ков­ской кар­ты на фишин­говой стра­нице. Так­же трой дей­ству­ет как вымога­тель: он может заб­локиро­вать экран устрой­ства жер­твы по коман­де с управля­юще­го сер­вера. В боль­шинс­тве таких слу­чаев отоб­ража­ется стра­ница с сооб­щени­ем о том, что для раз­бло­киров­ки экра­на необ­ходимо «опла­тить штраф» за прос­мотр кон­тента (нап­ример, пор­ногра­фичес­кого).

РАСПРОСТРАНЕНИЕ

В пос­леднее вре­мя опе­рато­ры Rotexy край­не изби­ратель­но отно­сились к рас­простра­нению сво­ей вре­донос­ной прог­раммы. Пос­ле перехо­да поль­зовате­ля по вре­донос­ной ссыл­ке из СМС зло­умыш­ленни­ки про­веря­ли User-Agent его устрой­ства. И толь­ко если девайс ока­зывал­ся мобиль­ным, заг­ружалась вре­донос­ная прог­рамма.

Кро­ме того, управля­ющие сер­веры нас­тра­ивают­ся таким обра­зом, что за одну рас­сылку они не поз­воля­ют ска­чивать вре­донос­ные фай­лы боль­ше 2000 раз. Эти огра­ниче­ния приз­ваны пре­дот­вра­тить детек­тирова­ние тро­яна и бло­киров­ку домена.

СТАТИСТИКА АКТИВНОСТИ

В течение прак­тичес­ки все­го года мы наб­людали зна­читель­ное сни­жение активнос­ти Rotexy. Если в начале 2020-го BI.ZONE-CERT отпра­вил на бло­киров­ку поч­ти 50 доменов, зарегис­три­рован­ных опе­рато­рами Rotexy, то в сен­тябре мы обна­ружи­ли толь­ко один.

При этом в октябре сно­ва начал­ся рост активнос­ти — за месяц мы обна­ружи­ли 17 доменов, а в нояб­ре — уже 30.

Ко­личес­тво доменов, отправ­ленных на бло­киров­ку в течение 2020 года

Пик чис­ла новых регис­тра­ций доменов опе­рато­рами Rotexy зафик­сирован в 2019 году (вид­но на рисун­ке ниже), пос­коль­ку тог­да рас­сылки были мас­совыми и наб­людались по всей Рос­сии. В 2018-м вре­донос толь­ко появил­ся, при­чем лишь во вто­рой полови­не года, одна­ко количес­тво обна­ружен­ных доменов за это вре­мя зна­читель­но пре­выша­ет показа­тель за один­надцать месяцев 2020-го. Это мож­но свя­зать с тем, что в пос­леднее вре­мя опе­рато­ры Rotexy ста­ли более изби­ратель­но рас­простра­нять вре­донос­ные APK-фай­лы и, как пра­вило, в день регис­три­рова­ли не боль­ше двух доменов.

Ко­личес­тво доменов, отправ­ленных на бло­киров­ку в течение трех лет

ДЕТЕКТИРОВАНИЕ

Све­жие сем­плы вре­донос­ной прог­раммы не детек­тиру­ются анти­виру­сами, пос­коль­ку обфусци­руют­ся с помощью при­ват­ных крип­торов.

От­личитель­ная осо­бен­ность Rotexy — уме­ние обхо­дить антифрод‑сис­темы бан­ков. Прог­рамма попол­няет баланс мобиль­ного сче­та с бан­ков­ской кар­ты жер­твы, а затем перево­дит средс­тва через лич­ный кабинет на дру­гой номер.

ОСНОВНАЯ ФУНКЦИОНАЛЬНОСТЬ

Вспом­ним, какие основные фун­кци­ональ­ные воз­можнос­ти есть в арсе­нале Rotexy, на при­мере фай­ла b848e1cfb58b6e6bdcd44104d04877bd.

Ис­ходный исполня­емый APK-файл Rotexy зна­читель­но обфусци­рован. Зло­умыш­ленни­ки исполь­зуют три спо­соба обфуска­ции:

  • мер­твый код;
  • прок­си‑методы;
  • шиф­рование строк.

Мертвый код

Код вре­доно­са запол­нен боль­шим количес­твом так называ­емо­го мер­тво­го кода, который меша­ет ана­лизу. В боль­шинс­тве слу­чаев это реали­зова­но сле­дующим обра­зом: в перемен­ную помеща­ется нулевое зна­чение, пос­ле чего про­веря­ется, дей­стви­тель­но ли перемен­ная рав­на нулю, и при истиннос­ти усло­вия (а такое усло­вие истинно всег­да) выпол­няет­ся переход на опре­делен­ную мет­ку. Сле­дова­тель­но, часть кода ока­зыва­ется про­пуще­на.

При­мер мер­тво­го кода при­веден на рисун­ке ниже. Код меж­ду ком­мента­риями «начало мер­тво­го кода» и «конец мер­тво­го кода» никог­да не исполнит­ся.

Лис­тинг с при­мером мер­тво­го кода

Прокси-методы

«Прок­си‑метода­ми» мы наз­вали методы, которые пос­ледова­тель­но вызыва­ют друг дру­га по цепоч­ке, пока не будет дос­тигнут целевой метод. При­мер исполь­зования прок­си‑метода при­веден на рисун­ке ниже: при сра­баты­вании onTick() будет по оче­реди выз­вано девять методов и лишь десятым — тот, который про­изве­дет нуж­ное дей­ствие.

Пос­ледова­тель­ность вызовов до дос­тижения целево­го метода

Шифрование строк

Стро­ки в фай­ле зашиф­рованы алго­рит­мом AES-256 в режиме CBC. Зашиф­рован­ные стро­ки хра­нят­ся в виде мас­сивов, где пер­вый эле­мент — зашиф­рован­ные дан­ные, вто­рой — ключ шиф­рования, тре­тий — век­тор ини­циали­зации. В лис­тинге зашиф­рован­ная стро­ка выг­лядит сле­дующим обра­зом.

При­мер зашиф­рован­ной стро­ки

РАБОТА ВРЕДОНОСНОЙ ПРОГРАММЫ

Пос­ле запус­ка вре­донос­ное при­ложе­ние пыта­ется получить ряд при­виле­гий, а так­же отправ­ляет информа­цию о заражен­ной сис­теме на сер­вер управле­ния.

Дан­ные о себе, сво­их дей­стви­ях, а так­же о заражен­ном устрой­стве Rotexy хра­нит в локаль­ной базе дан­ных SQLite.

Запуск

Пос­ле запус­ка Rotexy зап­рашива­ет при­виле­гии, которые поз­воля­ют тро­яну выпол­нять вре­донос­ные дей­ствия на заражен­ном устрой­стве.

Вре­донос­ная прог­рамма зап­рашива­ет пра­ва адми­нис­тра­тора и исполь­зование служ­бы спе­циаль­ных воз­можнос­тей, с их помощью мож­но получить осталь­ные пра­ва. Ей необ­ходимы при­виле­гии, обес­печива­ющие авто­запуск вре­донос­ного при­ложе­ния пос­ле перезаг­рузки устрой­ства, что­бы оно фун­кци­они­рова­ло неп­рерыв­но. Так­же Rotexy тре­буют­ся при­виле­гии, пре­дос­тавля­ющие воз­можнос­ти работы с Google Cloud Messaging и СМС, которые исполь­зуют­ся для вза­имо­дей­ствия с управля­ющим сер­вером. Кро­ме того, вре­донос­ной прог­рамме необ­ходим дос­туп к спис­ку кон­тактов, а так­же воз­можность управлять под­клю­чени­ем к сети Wi-Fi и изме­нять сос­тояние сетево­го под­клю­чения, для чего так­же нуж­ны отдель­ные пра­ва. Важ­ная при­виле­гия — воз­можность соз­дать окно, которое отоб­ража­ется поверх дру­гих при­ложе­ний, пос­коль­ку за счет это­го реали­зова­на основная вре­донос­ная фун­кци­ональ­ность.

При стар­те Rotexy про­веря­ет, в какой стра­не запус­кает­ся. Активность вре­донос­ное при­ложе­ние про­явля­ет лишь в Рос­сии.

Сервисы

В фоновом режиме могут запус­кать­ся некото­рые сер­висы. Сер­вис запус­ка бан­кера, вымога­теля или обновле­ния показы­вает поль­зовате­лю HTML-стра­ницу, получен­ную с управля­юще­го сер­вера и соот­ветс­тву­ющую бан­керу, вымога­телю или стра­нице обновле­ния (если сер­вер управле­ния вклю­чает дан­ные режимы). Вре­донос­ное при­ложе­ние име­ет сра­зу три воз­можных источни­ка получе­ния команд от управля­юще­го сер­вера: Google Cloud Messaging, HTTP-зап­росы и СМС. Соот­ветс­твен­но, вре­донос­ным при­ложе­нием могут быть запуще­ны сер­вис Google Cloud Messaging (GCM), сер­вис обра­бот­ки интернет‑команд и сер­вис обра­бот­ки СМС, которые и будут отве­чать за вза­имо­дей­ствие с сер­вером управле­ния.

Взаимодействие с сервером управления

Как уже упо­мина­лось, вза­имо­дей­ствие с сер­вером управле­ния воз­можно с помощью HTTP-зап­росов, СМС и сер­виса GCM.

Пос­ле запус­ка тро­ян отсы­лает на управля­ющий сер­вер информа­цию о текущем сос­тоянии устрой­ства, вклю­чающая SID, IMEI, наличие адми­нис­тра­тив­ных при­виле­гий, ста­тус бло­киро­вания экра­на, ста­тус «имму­ните­та», тип сети, к которой под­клю­чен смар­тфон, сос­тояние экра­на (вклю­чен или нет), ста­тус дос­тупа к служ­бе спе­циаль­ных воз­можнос­тей, ста­тус наличия при­виле­гий СМС‑при­ложе­ния. На сер­вер управле­ния так­же может отправ­лять­ся спи­сок запущен­ных про­цес­сов и спи­сок уста­нов­ленных при­ложе­ний.

Дан­ные переда­ются в виде зашиф­рован­ного JSON. Сна­чала они кодиру­ются в фор­мат Base64, пос­ле чего зашиф­ровыва­ются с помощью алго­рит­ма AES-256 в режиме CBC с допол­нени­ем бло­ка нулями и далее пре­обра­зуют­ся в шес­тнад­цатерич­ное пред­став­ление. IP-адрес управля­юще­го сер­вера, ключ шиф­рования, век­тор ини­циали­зации, а так­же иден­тифика­тор для GCM хра­нят­ся в кон­фигура­ции при­ложе­ния. Часть кон­фигура­ции для при­мера при­веде­на на рисун­ке ниже.

Кон­фигура­ция Rotexy

При каж­дом зап­росе к управля­юще­му сер­веру генери­рует­ся новый URL вида hxxp://213[.]166[.]68[.]138/repeater/getaway<случайное число от 1 до 10000>. Веро­ятно, зло­умыш­ленни­ки исполь­зуют такой под­ход для пре­дот­вра­щения пов­торно­го исполь­зования зап­росов иссле­дова­теля­ми.

Ге­нери­рующий URL код при­веден на рисун­ке ниже.

Код, генери­рующий URL управля­юще­го сер­вера

На рисун­ке ниже — блок кода, иллюс­три­рующий фор­мирова­ние JSON для отправ­ки дан­ных на управля­ющий сер­вер.

Фор­мирова­ние JSON с дан­ными о заражен­ном устрой­стве

Об­ращение за новыми коман­дами Rotexy выпол­няет по коман­де от ботово­дов.

По коман­де с управля­юще­го сер­вера вре­донос может сох­ранить HTML-шаб­лон для даль­нейше­го исполь­зования в фун­кци­ях бан­кера или вымога­теля и дан­ные для его запол­нения. Так­же он может вклю­чить или вык­лючить отоб­ражение сфор­мирован­ных HTML-стра­ниц. Rotexy разош­лет СМС по спис­ку кон­тактов, получив соот­ветс­тву­ющую коман­ду. Если была получе­на допол­нитель­ная коман­да, вре­донос спо­собен управлять исполь­зовани­ем GCM, обно­вить адрес сер­вера управле­ния, отпра­вить СМС, отоз­вать пра­ва адми­нис­тра­тора, отпра­вить спи­сок кон­тактов на управля­ющий сер­вер, вклю­чить режимы бан­кера, вымога­теля или обновле­ния, а так­же завер­шить их работу.

Rotexy может перех­ватывать все вхо­дящие СМС и обра­баты­вать их в соот­ветс­твии со сво­ими шаб­лонами. При­ложе­ние вза­имо­дей­ству­ет с управля­ющим сер­вером по про­токо­лу HTTP или GCM, а так­же получа­ет коман­ды при помощи СМС. Через СМС Rotexy может получать сле­дующие коман­ды:

  • отоз­вать пра­ва адми­нис­тра­тора;
  • уп­равлять под­клю­чени­ем к интерне­ту через мобиль­ную сеть или Wi-Fi;
  • от­пра­вить СМС;
  • сме­нить адрес сер­вера управле­ния.

Ин­терес­но, что с помощью получен­ной по СМС коман­ды может быть отклю­чена бло­киров­ка экра­на.

ЗАКЛЮЧЕНИЕ

Rotexy появил­ся дав­но и прак­тичес­ки не менял сво­их фун­кци­ональ­ных воз­можнос­тей, за исклю­чени­ем осо­бен­ностей его рас­простра­нения. Нес­мотря на то что на про­тяже­нии все­го 2020 года мы наб­людали зна­читель­ное сни­жение активнос­ти тро­яна, он все еще никуда не про­пал: в пос­ледние два месяца рас­тет чис­ло регис­три­руемых опе­рато­рами доменов.

И хотя опе­рато­ры Rotexy уже дав­но перес­тали исполь­зовать мас­совые рас­сылки для рас­простра­нения сво­ей вре­донос­ной прог­раммы, сто­ит вни­матель­нее отно­сить­ся к получен­ным сооб­щени­ям.