Сегодня в выпуске: история о том, как Google безуспешно борется с малварью, статья о платной разблокировке загрузчика Huawei, гайд по борьбе с упаковщиками с помощью Frida. А также: подборка трюков и советов для Kotlin-программистов, инструменты профайлинга сетевых функций, лучшее объяснение отличия короутин от потоков и, конечно же, очередная подборка свежих библиотек и инструментов.

 

Почитать

 

Как Google борется с малварью

Combating Potentially Harmful Applications with Machine Learning at Google: Datasets and Models — рассказ разработчиков команды безопасности Android о том, как работает система Google Play Protect, которая выявляет вредоносные приложения в Google Play и на смартфонах пользователей. Несколько тезисов:

  • Google анализирует не только приложения из Google Play, но и любые APK-файлы, найденные в интернете.
  • Для каждого приложения запускаются процедуры статического и динамического анализа, которые выявляют определенные шаблоны: запрашиваемые разрешения, поведение приложения в тех или иных обстоятельствах.
  • Данные, полученные от статических и динамических анализаторов, передаются ИИ, натренированному на выявление определенных типов зловредных приложений: SMS-фрод, фишинг, повышение привилегий.
  • Кроме данных о самих приложениях, Google также собирает и агрегирует данные о приложении из Google Play: средняя оценка приложений разработчика, рейтинги, количество установок и удалений; эта информация также передается ИИ.
  • На основе всех этих данных ИИ выносит решение о том, может ли приложение быть потенциально зловредным.
  • Google постоянно совершенствует ИИ, скармливая ему данные свежевыявленных зловредов.

На фоне всей этой бравады стоит напомнить, что в тестах антивирусов Google Play Protect набирает 0 очков и плетется в конце рейтинга. По информации на январь 2018-го он смог обнаружить лишь 63% вирусов.

 

Huawei и платная разблокировка загрузчика

Bootloader unlocking is still possible for Huawei and Honor devices, but it’ll cost you — интересная заметка о страданиях владельцев смартфонов Huawei, желающих разблокировать загрузчик своего устройства.

В мае этого года Huawei официально заявила, что больше не будет предоставлять коды для разблокировки загрузчиков своих смартфонов (а также смартфонов своего суббренда Honor). Загрузчик отвечает за проверку целостности и цифровой подписи ядра ОС, а также за возможность прошивки устройства, так что те, кто не успел получить свой код разблокировки, теперь не могут установить на нее кастомную прошивку или даже получить права root с помощью Magisk.

Выяснилось, однако, что совсем недавно сервис FunkyHuawei, занимающийся выпуском утилит для восстановления окирпиченных смартфонов и смены их региона, начал предоставлять возможность разблокировки загрузчика всех моделей Huawei, включая самые свежие. Но есть один нюанс: стоимость кода разблокировки составляет 55 долларов, и он привязан к IMEI устройства, а значит, не может быть использован повторно.

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

 

Как использовать Frida для обхода упаковщиков

How-to Guide: Defeating an Android Packer with FRIDA — вводная статья об использовании Frida для помощи в анализе вируса.

Дано: вредоносное приложение с подозрительным файлом внутри пакета и небольшим сильно обфусцированным исполняемым dex-файлом. Анализ логов запуска logcat показывает, что приложение при работе создает и загружает еще один dex-файл (запакованный в JAR), а это значит, что, скорее всего, первый исполняемый файл — это всего лишь загрузчик (а точнее, упаковщик), а найденный ранее подозрительный файл — зашифрованный код приложения. При загрузке приложения упаковщик дешифрует файл и загружает его. Но есть одна проблема — сразу после загрузки дешифрованный файл удаляется и его невозможно проанализировать.

К сожалению, декомпиляция и статический анализ упаковщика ничего не дают — он слишком сильно обфусцирован и почти непригоден для чтения. Однако запуск приложения под управлением трассировочной утилиты strace показывает, что удаление происходит с помощью системного вызова unlink.

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

console.log("[*] FRIDA started");
console.log("[*] skip native unlink function");

var unlinkPtr = Module.findExportByName(null, 'unlink');

Interceptor.replace(unlinkPtr, new NativeCallback(function (){  
    console.log("[*] unlink() encountered, skipping it.");
}, 'int', []));
Трассировочный листинг, показывающий создание и удаление файла с расшифрованным кодом приложения
Трассировочный листинг, показывающий создание и удаление файла с расшифрованным кодом приложения

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

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


Check Also

Игра на доверии. Пентестим Multicast DNS и Service discovery

Multicast DNS (mDNS) и Service Discovery (DNS-SD) — это повсеместно распространенные прото…

Оставить мнение