- Зміст статті З кожним роком користувачам мобільних пристроїв стає все складніше уникнути зараження....
- джерело епідемії
- Де я?
- Стара вразливість краще нових двох
- женемо рекламу
- Продовження доступно тільки учасникам
- Варіант 2. Відкрий один матеріал
Зміст статті
З кожним роком користувачам мобільних пристроїв стає все складніше уникнути зараження. За перше півріччя «Лабораторія Касперського» за допомогою свого антивіруса зафіксувала (читай: не дала встановити) більше 3 мільйонів шкідливих додатків. І хоча статистично в порівнянні з 2016 роком особливого зростання немає, звітів про мобільних зловредів стало набагато більше. Після прочитання таких звітів не залишається відчуття «мильної бульбашки», проблема дійсно є: без використання будь-яких унікальних технік людям вдається збивати мільйонні ботнети.
WARNING
Матеріал адресований фахівцям з безпеки і тим, хто збирається ними стати. Вся інформація надана виключно в ознайомлювальних цілях. Ні редакція, ні автор не несуть відповідальності за будь-можливу шкоду, заподіяну матеріалами даної статті.
джерело епідемії
До речі, а звідки взагалі береться андроїд-орієнтована малваре? Напевно, з піратських програм? З піратських дискет? З піратських компакт-дисків? Ні, постривай-ка, адже зараз у нас не 1997 рік, а цілий 2017-й ... напевно, з підпільних сховищ? Але ж ні, виявляється, найпопулярніший репозиторій мобільних додатків, Google Play, серйозно зіпсував свою репутацію - в 2017 році все найуспішніші мобільні трояни і віруси поширювалися через нього. Схоже, проблема в дуже багатому виборі для користувача. На будь-який запит знайдеться кілька десятків додатків, і більшість з них буде сміттям.
Малоінформативні і підозрілі відгуки
Навіть якщо уважно вивчати опис додатка, до його установки все одно важко зрозуміти, що саме воно робить. Спиратися на досвід інших користувачів теж не виходить - в Google Play дуже багато додатків з купленими відгуками. Як ти розумієш, варто один раз запустити троян і потім буде дуже складно від нього позбутися. А якщо ж у трояна буде ще й корисне навантаження, то простому користувачеві обчислити наявність шкідливого контенту практично неможливо.
Де я?
Ефективність трояна багато в чому залежить від того, наскільки добре він уміє адаптуватися під різні пристрої. Починати доводиться з малого - визначення версії ОС на пристрої жертви, ця інформація є в класі Build.
Build.VERSION.SDK_INT
Але цієї інформації буде недостатньо, вендори люблять модифікувати прошивку так, що без падінь не вдається обійтися навіть легальним додатків. Напевно ти знайомий з оболонкою MIUI, яка серйозно змінила принципи роботи ОС, а китайських телефонів зараз дуже багато. Більше даних про пристрій доступно з консольної команди getprop.
public static String fullSystemProperties () {java.lang.Process p = Runtime.getRuntime (). exec ( "getprop"); input = new BufferedReader (new InputStreamReader (p.getInputStream ()), 1024); while (input.readLine ()! = null) {line = line + "n" + input.readLine (); } ...
Виклик getprop дасть багато інформації, можна відкинути частину за допомогою grep (більш докладні вихідні дивись тут ).
Досить часто «просунутий користувач» отримує права суперкористувача в системі. Рут відкриває не тільки розширені можливості для користувача, але і роздолля для трояна. Стратегій визначення наявності прав на пристрої багато. Найпростіше - пройтися по директоріях в пошуках бінарники su. Ось приблизний набір відповідних для нього шляхів:
String [] places = { "/ sbin /", "/ system / bin /", "/ system / xbin /", "/ data / local / xbin /", "/ data / local / bin /", "/ system / sd / xbin / "," / system / bin / failsafe / "," / data / local / "};
Наявність його хоча б в одному місці з високою ймовірністю вкаже, що на пристрої доступні права суперкористувача.
for (String where: places) {if (new File (where + "su"). exists ()) {found = true; break; }}
Якщо троян зможе потрапити в простір інших додатків, то користувача врятує тільки повна перевстановлення ОС. Root-права дозволяють Інжект в системні виклики, вставляючи шкідливий код в найнесподіваніші місця. Для таких «хуков» є готові фреймворки, більш докладно можеш подивитися в нашій статті про Xposed .
Якщо коротко, то подібні Інжект надають злохакерам найширші можливості - від заміни ID рекламних банерів, що дозволяє отримувати гроші за чужий показ реклами, до модифікації системних утиліт.
Стара вразливість краще нових двох
Якщо ти не стежиш впритул за статистикою світу Android, то можеш здивуватися: ще в квітні кожне третє Android-пристрій працював під операційною системою версії 4.4 і нижче. Це старі операційки, для яких вже довгий час в публічному доступі є безліч хакерських утиліт.
На GitHub давно викладені вихідні добре написаного трояна GmBot . Він якраз заточений під четверту версію ОС і вміє практично все: маніпулювати персональною інформацією, СМС, камерою та інше.
GmBot зроблений дуже якісно, і не дивно, що з'явилася ціла плеяда малварі, заснованої на викладеному вихідному коді. Один з найбільш успішних мисливців за старими пристроями - троян CopyCat. За статистикою Check Point, у нього 14 мільйонів заражень і на вісім мільйонів з них отримано root-доступ. При цьому CopyCat не використав ніяких секретних експлойтів - суцільний паблік. Наприклад, ось один з них на GitHub .
женемо рекламу
Згідно зі статистикою, в цьому році найбільше зростання показали так звані Adware - віруси, які заробляють на демонстрації реклами користувачеві. Влітку в Google Play була виявлена корейська малваре Judy: для її поширення створили понад сорок додатків, кожне з яких користувалося великим успіхом - мільйони завантажень і активних користувачів.
Додатки дійсно працювали, це були невигадливі гри, розраховані на користувачів шкільного віку. Поки дитина гралася в клон «Веселої ферми», троян самостійно кликав по рекламних банерів, заробляючи копійчину своїм творцям.
Приваблива гра з поганим вмістом
Щоб не ганяти зайвий трафік, троян вмів знаходити посилання на партнерки і переходив тільки по ним. Спочатку Judy отримував з керуючого центру посилання на сторінку з рекламою, на якій висіли партнерські банери, і завантажував собі її контент. Реалізувати це можна, наприклад, за допомогою HttpURLConnection.
HttpURLConnection connection = null; URL url = new URL (ccUrl); connection = (HttpURLConnection) url.openConnection (); connection.connect (); InputStream input = connection.getInputStream (); BufferedReader br = new BufferedReader (new InputStreamReader (input)); String inputLine; while ((inputLine = br.readLine ())! = null) {output.append (inputLine);} ... String webPageContent = output.toString ();
На завантаженої сторінці відкривалися не всі посилання поспіль, а тільки рекламні. Для парсинга рядків є клас Pattern, повністю повторює синтаксис регулярних виразів мови Perl. Спочатку це схоже на мішанину, а потім розбираєшся і парсинг йде на ура. У партнерки будуть якісь загальні ознаки - один домен, реферер і так далі. Ось такий регулярки витягуються всі посилання на піддомени google.com:
Pattern urlFinder = Pattern.compile ( "https: //w+.google.com/w+"); Matcher matcher = urlFinder.matcher (test); List <String> links = new ArrayList <> (); while (matcher.find ()) {links.add (webPageContent.substring (matcher.start (), matcher.end ())); }
Господарі рекламного майданчика не повинні знати, що банери завантажуються в автоматичному режимі, значить, потрібно відкривати посилання справжнім браузером. Це нескладно, в Android є клас WebView - повноцінний браузер на движку Chrome. Цікаво, що, відкриваючи сторінку, малваре мімікрувала під повноцінний комп'ютер - мабуть, для таких переходів вартість кліка вище.
webView.getSettings (). setUserAgentString ( "Mozilla / 5.0 (Windows NT 6.1) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 41.0.2228.0 Safari / 537.36");
Продовження доступно тільки учасникам
Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті
Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше
Варіант 2. Відкрий один матеріал
Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.
Напевно, з піратських програм?
З піратських дискет?
З піратських компакт-дисків?
Напевно, з підпільних сховищ?
Де я?
Ru»?