Фишинг, или мошенничество с целью кражи данных при помощи копирования внешних образов популярных ресурсов, только-только приходит в мобильный мир. В этой статье мы разберем анатомию подобных атак и узнаем, как именно хакеры успешно покушаются на деньги пользователей андроидофонов.

WARNING

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

 

Статистика

Смартфоны и планшеты так быстро ворвались в нашу жизнь, что поведение героев из фильмов пятилетней давности уже кажется анахронизмом. Естественно, что вместе с полезными и не очень привычками пользователь приобрел и новых интернет-врагов.

По статистике, на 85% всех мобильных устройств установлена одна из версий Android, и неудивительно, что большинство атак и зловредов нацелены именно на нашу любимую операционную систему. Конечно, ситуация еще не так плоха, как с Windows лет десять назад, но тенденция пугает.

В январе прошлого года мы разбирали, насколько легко создать криптолокер под Android — программу, шифрующую пользовательские данные. И чуть позже, в апреле 2016 года, «Лаборатория Касперского» подтвердила наши опасения: компания заявила о появлении трояна-локера Fusob, атаковавшего смартфоны пользователей более чем из ста стран.

Рис. 1. Работа Fusob
Рис. 1. Работа Fusob
 

Многообразие фишинга

Мимикрирование вредоносных программ подо что-то полезное — довольно старый тренд. Лет десять-пятнадцать назад был бум популярности сайтов, которые очень похожи на официальные порталы банков или платежных систем. Такие фишинговые ресурсы старались вытянуть пользовательские аккаунты, а еще лучше — данные кредитных карт.

Но та волна хищений обошла страны СНГ стороной. Просто брать у нас было нечего: Павел Дуров еще ничего не написал, а пластиковые карты популярностью не пользовались. Сейчас же для мошенников ситуация стала по-настоящему «вкусной»: интернет-покупки, мобильный банкинг, всевозможные социальные сети — очень многое теперь доступно через мобильный телефон, подключенный к интернету.

Пока еще не было историй об эпидемиях фишинга, но неприятные звоночки уже есть. Серфинг интернета с мобильных устройств стал намного менее безопасным: сначала веб-мастера адаптировали рекламу под мобильный контент, а затем подтянулись и нечистые на руку люди. Совсем недавно, в начале декабря 2016 года, на одном популярном спортивном ресурсе выскакивало окошко с предложением «обновить устаревший WhatsApp» — естественно, разработчики мессенджера никакого отношения к такой рекламе не имеют.

Рис. 2. Вирусная партнерка на крупном ресурсе
Рис. 2. Вирусная партнерка на крупном ресурсе

Такие сообщения генерируются на стороне сервера и выглядят достаточно топорно. Но, попав внутрь устройства, злоумышленник может совершить более элегантную и эффективную атаку. Давай разберемся, насколько сложно в Android подменить рабочее приложение на его вредоносный «аналог».

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

 

Почти Google Market

Чтобы убедить пользователя поделиться данными карты, нужно воспользоваться его доверием к популярному и знакомому приложению. Практически в каждом Android-устройстве установлена утилита Google Play — портал доступа к музыке, фильмам и другим приложениям. Это полноценный магазин, позволяющий совершать покупки, и для многих пользователей не будет большой неожиданностью, если приложение попросит ввести данные банковской карты.

Для фишинга не нужно точь-в-точь реализовывать функциональность Google Market — проще написать приложение, расширяющее его возможности без изменения исходного кода. Интересно узнать, как хакеры проворачивают подобное? Тогда поехали!

 

Выбор

Будет неправильным пытаться подделать приложение, которым владелец устройства совсем не пользуется. Как и при обычном вторжении, мошеннику нужно сначала оценить, в какую среду он попал. Многообразие вендоров, выпускающих мобильные устройства, привело к большим изменениям и в самой ОС. И хотя, со слов маркетологов, все они работают на единой платформе Android, набор запущенных приложений может быть совершенно разным. В Android есть встроенный API для получения списка запущенных процессов — это системный сервис ACTIVITY_SERVICE.

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();

Google в целях безопасности с каждым годом все больше ограничивает возможности приложений взаимодействовать между собой. В документации это явно не указано, но для Android версии 4.0 и новее такой вызов вернет список только из одного приложения — твоего собственного. Не все потеряно — в основе Android лежит ядро Linux, а значит, у нас есть консоль. К ней можно добраться руками с помощью утилиты adb, входящей в Android Studio.

user@user-workPC ~/Desktop $ adb shell

Команды задаются с помощью утилиты toolbox, запущенной с несколькими аргументами, список процессов выдается командой ps.

root@generic_x86:/ # toolbox ps -p -P -x -c

Результат работы ожидаемо похож на вывод, который дает одноименная линуксовая команда, — таблица с множеством значений, разделенных табуляцией.

media_rw  1730  1176  7668   1876  1  20    0     0     0     fg  inotify_re b75c3c46 S /system/bin/sdcard (u:0, s:3)
u0_a15    1798  1202  1298044 30520 0  20    0     0     0     fg  SyS_epoll_ b72f9d35 S com.google.android.googlequicksearchbox:interactor (u:3, s:1)
u0_a35    1811  1202  1272580 37692 1  20    0     0     0     fg  SyS_epoll_ b72f9d35 S com.android.inputmethod.latin (u:9, s:1)
u0_a8     1871  1202  1428180 77468 0  20    0     0     0     fg  SyS_epoll_ b72f9d35 S com.google.android.gms.persistent (u:168, s:163)

Собственно, в этом выводе содержится достаточная для фишинга информация: имя процесса, его идентификатор, приоритет выполнения и так далее. Запустить утилиту можно не только руками, но и из приложения — для доступа к шеллу в стандартном API есть класс Shell.

List<String> stdout = Shell.SH.run("toolbox ps -p -P -x -c");

Линуксоидам часто приходится писать однострочные скрипты, поэтому распарсить такой вывод для них не проблема. Но ООП-разработчики более нежные и наверняка не захотят таким заниматься.

На Гитхабе уже есть проект, в котором реализована необходимая функциональность. Создал его некто Джаред Раммлер (Jared Rummler), за что скажем ему спасибо. Обработка результата выполнения toolbox создана в виде библиотеки, которую можно подключить прямо через Gradle.

compile 'com.jaredrummler:android-processes:1.0.9'

Принцип работы остается тот же самый: на выходе будет список данных, но уже в более привычном для ООП формате.

List<AndroidAppProcess> processes = AndroidProcesses.getRunningAppProcesses();

Вся информация о запущенных процессах обернута в объект класса AndroidAppProcess. Если посмотреть исходники библиотеки, то ничего лишнего там нет — только парсинг консольного вывода. Информацию о конкретном приложении придется вытаскивать прямым перебором.

for (AndroidAppProcess pr : processes) {
    if (pr.getPackageName().equals(ps_name)) {
        //do smth
    }
}

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

В Google Play снова нашли малварь, объединявшую устройства в рекламный ботнет

Специалисты Symantec обнаружили в приложениях из Google Play вредоноса Sockbot, который об…