Mobile AppSec World
3.58K subscribers
99 photos
5 videos
15 files
634 links
Новости из мира безопасности мобильных приложений, а так же интересные статьи, обзоры инструментов, доклады, митапы и многое другое...

По всем вопросам - @Mr_R1p
Download Telegram
​​Всё тайное становится явным или как анализировать приложение, защищённое при помощи DexGuard.

На рынке представлены два популярных продукта, которые позволяют реализовывать различные механизмы защиты приложения, это DexGuard и DexProtector. Уверен, что их намного больше, но мне знакомы эти два.

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

И не зря, как оказалось 😁
Крайне интересный цикл статей по механизмам работы проверок в DexGuard и, самое главное, о недостатках и способах всё это обойти! 😱

#Android #DexGuard #DexProtector #Encryption #Obfuscation
Быстрый способ проверить наличие обфускации, тип шифрования apk и различных проверок

Очень полезный инструмент для быстрого анализа приложения на наличие обфускации или специального пакера, который зашифровывает dex файлы.

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

|-> anti_vm : Build.FINGERPRINT check, Build.MANUFACTURER check, Build.MODEL check, Build.PRODUCT check, Build.TAGS check, SIM operator check, device ID check, network operator name check, ro.kernel.qemu check
|-> compiler : r8
|-> obfuscator : unreadable field names, unreadable method names

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

Конечно, инструмент не покрывает всех проверок, но в качестве отправной точки может неплохо помочь.

Удачного использования!

#android #obfuscation #apk #emulation
Вторая часть исследования iOS-приложений под обфускацией

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

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

Что мне понравилось, это способ "защиты" от анализа crash-лога приложения, когда оно падает или аварийно завершается при обнаружении Frida или jailbreak. А именно, перед завершением работы обфускатор затирает некоторые регистры, например LR. А в твуом формате iOS-служба для анализа сбоев не может правильно построить стек вызовов функций, которые привели к сбою. Очень занятно, так как из crash-лога можно было бы получить нужную информацию.о том, где происходят проверки.

Как и в первой статье, подробно расписано, как и что автор делал, чтобы найти точки в приложении, где реализована защита, как он ее обходил и как именно это приложение было защищено.

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

- Deobfuscation: recovering an OLLVM-protected program
- Automated Detection of Control-flow Flattening
- D810: A journey into control flow unflattening

В общем, настоятельно рекомендую ознакомиться всем, кто занимается iOS и реверсом, крайне полезная штука.

#ios #reverse #rasp #frida #obfuscation
Пишем Android-приложение практически полностью в NDK

Привет любителям прятать строки в .so файлах, что бы их сложнее было найти!

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

На самом деле, что-то в этом есть, особенно мне понравилась часть про вызов Binder напрямую из нативного кода через reflection, и вызов соответствующих сервисов далее:

class.forName("android.os.ServiceManager").getMethod("getService", String.class);

Это тебе уже не просто ключ шифрования в сошку положить, тут поинтереснее.

Доклад интересен глубиной погружения и способом подачи, то есть после того, как разбирается очередной пример "скрытия" чего-либо, идет небольшой блок демо, как это выглядит в коде, как переписать привычные нам действия с Java на натив. Ну и в конце пара выводов, как еще можно усилить подобное, да и надо ли оно такое вообще?

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

В общем, весьма смешанные чувства после просмотра =)

#android #ndk #obfuscation
Определение обфускации приложения при помощи обученной модели.

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

По факту, инструмент через androguard получает имена классов и загоняет их на вход обученной модели и после определяет, какой процент от общего количества классов обфусцирован.

Интересно, что мы пошли похожим путем, с единственной разницей, что мы сами определяем обфусцирован класс или нет, что дает больше контроля, чем модель предсказания и плюс есть возможность настроить параметры. Но, это не так популярно и тв не можешь говорить, что везде используешь AI&ML :D

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

Будьте бдительны на фронтах контроля обфускации 😈

#android #obfuscation #ml