Статья опубликована в рамках: XXXI Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 28 апреля 2015 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
- Условия публикаций
- Все статьи конференции
дипломов
ИССЛЕДОВАНИЕ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ МОБИЛЬНОЙ ОС ANDROID
Князев Денис Михайлович
Грибанов Иван Алексеевич
студенты 3 курса, факультет информатики, СГАУ им. академика С.П. Королева, РФ, г. Самара
E -mail:
E -mail:
Климентьев Константин Евгеньевич
научный руководитель, доцент, канд. техн. наук, кафедра информационных систем и технологий, СГАУ им. академика С.П. Королева, РФ, г. Самара
Вредоносный код для мобильных устройств часто рассматривается как миф из-за ограничений аппаратного и программного обеспечения.
Тем не менее, история показывает, что мобильные устройства также подвержены такого рода угрозам.
Рассмотрим исследование вредоносного кода на примере приложения iCalendar для мобильной операционной системы Android. Это приложение, полученное в формате APK, было найдено на одном из сайтов, распространяющих «варезное» ПО.
Формат Android Package (APK) представляет собой незашифрованный архив, содержащий в себе метаинформацию о приложении, байт код, а также медиаресурсы (иконки, строки, xml разметки). Для получения доступа к этим файлам воспользуемся утилитой apktools, распространяемой бесплатно, запустив ее с параметром -d. После исполнения программы, получим следующую директорию, показанную на рисунке 1.
Рисунок 1. Директория с распакованным APK
В первую очередь нас интересует файл AndroidManifest.xml. В нем содержится вся необходимая для системы служебная информация. К ней относятся список Activity (экранов приложения), сервисов и широковещательных каналов. Но в прежде всего нас интересуют разрешения (permission), которые необходимо прописать в AndroidManifest, чтобы использовать те или иные возможности операционной системы [2]. Открыв AndroidManifest, мы увидим следующие строки:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
Если объяснить необходимость доступа к календарю и интернету еще представляется возможным, то чтение и отправка SMS-сообщений совершенно не входят в обязанности приложения-календаря. Таким образом, взглянув на содержимое файла AndroidManifest, мы достаточно точно представляем, что нужно искать в коде.
Теперь перейдем непосредственно к коду. Как правило, приложения для Android создаются с использованием языка Java, код которого компилируется в dex-файлы. Такие файлы легко поддаются декомпиляции. Получить исходный код приложения можно в два этапа. Сперва воспользуемся утилитой dex2jar, передав ей в качестве параметра путь до APK файла. После ее применения получаем файл вида <apk_name>_dex2jar.jar. Файл JAR (Java ARchive) — это архив, в котором содержится часть программы на языке JAVA. Второй этап декомпиляции — вытащить исходный код из фала jar. В этом поможет утилита Java Decompiler, которая после завершения работы выдаст директорию с исходным кодом проекта. Директория будет иметь вид, представленный на рисунке 2.
Рисунок 2. Директория с исходным кодом после декомпиляции
По названию файлов (а именно a.java, aa.java и т. д.) мы можем предположить, что исходный код был обфусцирован [3]. Такой обфускатор, предоставляемый вместе с Android SDK, меняет имена файлов, классов и методов, чтобы усложнить понимание работы программы при ее исследовании. Поскольку разработка для системы Android является Framework-ориентированной, имена классов и методов системных библиотек не будут меняться при обфускации. Эта особенность позволяет нам искать код, который имеет интересующую нас функциональность.
Учитывая строки, которые мы видели в файле AndroidManifest, воспользуемся поиском по именам методов и классов. Будем искать классы, связанные с SMS, а именно класс SMSManager, описанный в документации к Android SDK. Результаты, полученные после поиска по ключевому слову “sms”, показаны на рисунке 3.
Рисунок 3. Результаты поиска по слову “sms”
Посмотрим содержимое файла iCalendar.java. Мы увидим, что он унаследован от класса Activity. Это объясняет, почему имя класса осталось неизменным после обфускации. Все классы-activity прописываются в файле AndroidManifest, а значит обфускатор не может изменить их имена, не вызвав ошибки компиляции.
Вернемся к анализу кода. Автор приложения никак не маскирует вредоносный код. В данном случае мы видим использование функции sendTextMessage(), принимающую в качестве параметров, кроме всего прочего, номер получателя и текст сообщения [1].
Рисунок 4. Фрагмент вредоносного кода
Анализируя фрагмент, представленный на рисунке 4, можно смело утверждать, что за отправку SMS сообщения на указанный в параметрах метода номер телефона со счета абонента будет списана неприлично большая сумма. Отсюда вытекает способ монетизации, используемый автором приложения. Ничего не подозревающий пользователь скачивает приложение-календарь, которое без его ведома отправляет SMS, принося деньги в карман разработчика.
Такой вид вредоносного ПО получил широкое распространение, поскольку создается за короткое время, не требует каких-либо затрат и специальных знаний. Однако существенным недостатком такого метода является тот факт, что перед установкой операционная система запросит у пользователя разрешение на весь функционал, прописанный в файле AndroidManifest. Отсюда следует вывод, что метод рассчитан прежде всего на невнимательного пользователя, не читающего предупреждений, любезно предоставленных разработчиками операционной системы Android.
Список литературы:
1.Официальный сайт «Android». [Электронный ресурс] — Режим доступа. — URL: https://developer.android.com/reference/android/telephony/gsm/SmsManager.html (дата обращения 20.04.15).
2.Официальный сайт «Android». [Электронный ресурс] — Режим доступа. — URL: https://developer.android.com/guide/topics/security/permissions.html (дата обращения 20.04.15).
3.Официальный сайт «Android». [Электронный ресурс] — Режим доступа. — URL: https://developer.android.com/tools/help/proguard.html (дата обращения 20.04.15).
дипломов
Оставить комментарий