Фішинг, або шахрайство з метою крадіжки даних за допомогою копіювання зовнішніх образів популярних ресурсів, тільки-тільки приходить в мобільний світ. У цій статті ми розберемо анатомію подібних атак і дізнаємося, як саме хакери успішно зазіхають на гроші користувачів андроідофонов.
Статистика
За статистикою, на 85% всіх мобільних пристроїв встановлена одна з версій Android, і не дивно, що більшість атак і зловредів націлені саме на нашу улюблену операційну систему. Звичайно, ситуація ще не така погана, як з Windows років десять тому, але тенденція лякає.
Мал. 1. Робота Fusobрізноманіття фішингу
Мал. 2. Вірусна партнерка на великому ресурсіТакі повідомлення генеруються на стороні сервера і виглядають досить незграбно. Але, потрапивши всередину пристрою, зловмисник може здійснити більш елегантну і ефективну атаку. Давай розберемося, наскільки складно в Android підмінити робоче додаток на його шкідливий «аналог».
У світі до сих пір немає нічого більш універсального, ніж гроші, тому варто спробувати отримати доступ до гаманця користувача. Як списують гроші за допомогою відправки СМС на короткі номери, ми вже говорили, сьогодні доберемося до банківської карти.
Майже Google Market
Щоб переконати користувача поділитися даними карти, потрібно скористатися його довірою до популярного і знайомому з додатком. Практично в кожному Android-пристрої встановлена утиліта Google Play - портал доступу до музики, фільмів і інших додатків. Це повноцінний магазин, що дозволяє здійснювати покупки, і для багатьох користувачів не буде великою несподіванкою, якщо додаток попросить ввести дані банківської картки.
Для фішингу не потрібно точь-в-точь реалізовувати функціональність Google Market - простіше написати додаток, що розширює його можливості без зміни вихідного коду. Цікаво дізнатися, як хакери провертають подібне? Тоді поїхали!
Буде неправильним намагатися підробити додаток, яким власник пристрою зовсім не користується. Як і при звичайному вторгнення, шахраєві потрібно спочатку оцінити, в яку середу він потрапив. Різноманіття вендорів, що випускають мобільні пристрої, призвело до великих змін і в самій ОС. І хоча, за словами маркетологів, всі вони працюють на єдиній платформі Android, набір запущених додатків може бути абсолютно різним. В Android є вбудований API для отримання списку запущених процесів - це системний сервіс ACTIVITY_SERVICE.
Google з метою безпеки з кожним роком все більше обмежує можливості додатків взаємодіяти між собою. У документації це явно не вказано, але для Android версії 4.0 і новіше такий виклик поверне список тільки з однієї програми - твого власного. Чи не все втрачено - в основі Android лежить ядро Linux, а значить, у нас є консоль. До неї можна дістатися руками за допомогою утиліти adb. що входить в Android Studio.
Команди задаються за допомогою утиліти toolbox, запущеної з декількома аргументами, список процесів видається командою ps.
Результат роботи очікувано схожий на висновок, який дає однойменна лінуксових команда, - таблиця з безліччю значень, розділених табуляцією.
Власне, в цьому висновку міститься достатня для фішингу інформація: ім'я процесу, його ідентифікатор, пріоритет виконання і так далі. Запустити утиліту можна не тільки руками, але і з програми - для доступу до Шеллі стандартному API є клас Shell.
Линуксоидов часто доводиться писати однорядкові скрипти, тому розпарсити такий висновок для них не проблема. Але ООП-розробники ніжніші і напевно не захочуть таким займатися.
На Гітхабе вже є проект, в якому реалізована необхідна функціональність. Створив його хтось Джаред Раммлер (Jared Rummler), за що скажемо йому спасибі. Обробка результату виконання toolbox створена у вигляді бібліотеки, яку можна підключити прямо через Gradle.
Принцип роботи залишається той же самий: на виході буде список даних, але вже в більш звичному для ООП форматі.
Вся інформація про запущені процеси обгорнута в об'єкт класу AndroidAppProcess. Якщо подивитися вихідні бібліотеки, то нічого зайвого там немає - тільки парсинг консольного виведення. Інформацію про конкретний додатку доведеться витягувати прямим перебором.