• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья MobileHunter Анализ с использованием glorifiedgrep

$talk3r

RAM
Пользователь
Регистрация
25.06.2019
Сообщения
134
Реакции
132
Переведено специально для xss.pro by Stalker
Ссылка на ориг. статью

MobileHunter Анализ с использованием glorifiedgrep

Это быстрое и краткое описание того, как модуль Python "glorifiedgrep" можно использовать для быстрого анализа приложений Android. Это не полный анализ приложения. Анализ проводился с использованием glorifiedgrep версии 0.9.3. Анализ можно посмотреть в следующем asciinema. Пожалуйста, поймите, что это не полный анализ, а очень краткое введение в glorifiedgrep.
Прочитать полный анализ тут и тут.

Класс GlorifiedAndroid для glorifiedgrep предлагает более 200+ различных методов для анализа Android, но здесь показаны только очень немногие. Обратитесь к полной документации для всего анализа.

Также имейте в виду, что glorifiedgrep не является модулем обнаружения уязвимостей. Это помогает быстро определить области, представляющие интерес, что следует дополнительно изучить.

glorifiedgrep

asciicast




Анализ


Для использования glorifiedgrep, во-первых, нам нужно создать экземпляр класса GlorifiedAndroid.

Код:
g = GlorifiedAndroid('/tmp/base.apk')

Получение хэш приложения.

Мы можем получить хеш приложения, используя:

Код:
>>> g.file_hash_of_apk()
{'md5': '155945a28c2b0158f47eb6a6351d795d',
'sha1': 'ac9516e7cb14dced53504a93ef36b7a1edc6e017',
'sha256': 'dc12d5c78117af8167d8e702dd131f838fe86930187542cf904b2122ba32afd1'}


Опасные разрешения
Мы можем получить список опасных разрешений, которые используются приложением, используя :


Код:
>>> g.manifest_dangerous_permission()
['android.permission.READ_CALENDAR',
'android.permission.READ_SMS',
'android.permission.READ_CONTACTS',
'android.permission.READ_PHONE_STATE',
'android.permission.WRITE_EXTERNAL_STORAGE',
'android.permission.RECEIVE_SMS',
'android.permission.CAMERA',
'android.permission.RECORD_AUDIO',
'android.permission.ACCESS_COARSE_LOCATION']


Типы файлов

Наши поиски указали на то, что этот apk файл находится с несколькими исполняемыми файлами. Давайте использовать glorifiedgrep, чтобы получить все типы файлов, которые связаны с этим приложением.


Код:
>>> g.file_get_file_types(exclude=['xml', 'png'])
{'application/octet-stream': ['/tmp/GlorifiedAndroid/unzipped/resources.arsc',
  '/tmp/GlorifiedAndroid/unzipped/classes.dex',
  '/tmp/GlorifiedAndroid/unzipped/META-INF/CERT.RSA',
  '/tmp/GlorifiedAndroid/unzipped/assets/xbin/bk_samples.bin'],
'image/png': [],
'audio/x-wav': ['/tmp/GlorifiedAndroid/unzipped/res/raw/beep.wav'],
'text/plain': ['/tmp/GlorifiedAndroid/unzipped/META-INF/MANIFEST.MF',
  '/tmp/GlorifiedAndroid/unzipped/META-INF/CERT.SF',
  '/tmp/GlorifiedAndroid/unzipped/assets/xbin/id.conf',
  '/tmp/GlorifiedAndroid/unzipped/assets/xbin/terrorism_apps.csv'],
'application/x-sharedlib': ['/tmp/GlorifiedAndroid/unzipped/assets/xbin/getVirAccount',
  '/tmp/GlorifiedAndroid/unzipped/assets/xbin/gen_wifi_cj_flag_pie',
  '/tmp/GlorifiedAndroid/unzipped/assets/xbin/wifiscan_pie'],
'application/x-executable': ['/tmp/GlorifiedAndroid/unzipped/assets/xbin/wifiscan',
  '/tmp/GlorifiedAndroid/unzipped/assets/xbin/gen_wifi_cj_flag']}

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



Выполнение команд оболочки

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

Код:
>>> g.code_command_exec().out
[{'file': 'sources/com/fenghuo/utils/ShellCommands.java',
  'line': '43',
  'match': '.exec(str)'},
{'file': 'sources/com/fenghuo/utils/ShellCommands.java',
  'line': '76',
  'match': '.exec(str)'},
{'file': 'sources/com/fenghuo/utils/ShellCommands.java',
  'line': '89',
  'match': '.exec("chmod 777 " + str).waitFor()'}]


Чтение конфиденциальной информации
Поиски также указали, что приложение будет читать различную конфиденциальную информацию о пользователях, включая SMS, записи календаря и журналы вызовов. Как правило, эта информация получается из средств разрешения контента. glorifiedgrep предлагает удобный метод получения URL-адресов для различного содержимого. Используя небольшое понимание списка, давайте соберем все средства разрешения контента, к которым обращается это приложение. Мы также включим в наш анализ только код приложения.

Код:
>>> [x['match'] for x in g.other_content_urlhandler().in_file('feng').out]
['content://com.android.calendar/events',
'content://calendar/events',
'content://sms',
'content://sms/icc',
'content://sms/sim',
'content://com.android.contacts/contacts',
'content://com.android.contacts/contacts/',
'content://icc/adn',
'content://sim/adn',
'content://sim/adn',
'content://icc/adn']


Запросы приложений для установленных пакетов
Собственный класс PackageManager и его метод getInstalledPackages из Android SDK могут использоваться приложением для перечисления установленных приложений на устройстве. Мы можем видеть это, используя:

Код:
>>> g.code_package_installed()
[{'file': 'sources/com/fenghuo/qzj/WelcomeActivity.java', 'line': '715', 'match': '.getInstalledPackages(8192)'}]


Приложение делает POST-запросы
Исследования показали, что это приложение будет публиковать все перечисленные данные. Мы можем увидеть запросы POST в

Код:
>>> g.code_apache_http_post_request()
[{'file': 'sources/com/fenghuo/http/HttpManager.java', 'line': '65', 'match': 'new HttpPost(reqEvent.getReqUrl())'}]


Кодированный IP-адрес
Мы знаем, что приложение попытается отправить данные на локальный 192 IP-адрес. Мы можем увидеть те, в

Код:
>>> g.other_ip_address().out
[{'file': 'sources/com/fenghuo/utils/Global.java',
  'line': '554',
  'match': '192.168.43.1'},
{'file': 'sources/com/fenghuo/utils/Util.java',
  'line': '1045',
  'match': '0.0.0.0'}]


Переменные среды
Мы также видим, что приложение пытается получить доступ к внешнему хранилищу, чтобы сохранить свои данные. Мы можем сделать это, проверив, к каким переменным среды он пытается получить доступ.

Код:
>>> g.code_get_environment_var().out
[{'file': 'sources/com/fenghuo/qzj/WelcomeActivity.java',
  'line': '322',
  'match': 'getenv("EXTERNAL_STORAGE")'},
{'file': 'sources/com/fenghuo/qzj/WelcomeActivity.java',
  'line': '325',
  'match': 'getenv("SECONDARY_STORAGE")'}]



Заключение
Как мы видим, мы можем выполнить анализ приложений Android с помощью glorifiedgrep очень быстро.


P.S. Поддержать переводы печеньками к чаю:
QIWI +380999543560
Yandex.Money 410018707581713
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх