Android Guards – Telegram
Android Guards
3.8K subscribers
93 photos
1 video
7 files
222 links
Статьи, исследования, полезные ссылки и многое другое из мира безопасности Android платформы и приложений. Только проверенный контент!

YouTube: https://www.youtube.com/c/AndroidGuards

Поблагодарить: https://news.1rj.ru/str/+oMgsdsq2ydY5MjQy
Download Telegram
Я вам уже рассказывал про DataStore и даже набросал концепт того, как могло бы выглядеть шифрование этого хранилища, потому что Google не предоставил такую возможность из коробки. С тех пор прошло два года и ничего не изменилось. Встроенного шифрования так и нет. Это заставляет разработчиков городить свои велосипеды, которые я иногда наблюдаю в приложениях. Но если вы хотите просто шифровать данные и не хотите велосипедов, то можно воспользоваться библиотекой, которую разработал и поддерживает мой бывший коллега. Недавно он туда завез поддержку StreamingAead и облагородил документацию.

А если вы сможете найти в этой библиотеке уязвимость, то вам дадут денег заведите пожалуйста issue на github.
👍13
⚡️Государству F снова угрожают хакеры, и их атаки становятся все более изощренными. Что им удастся взломать на этот раз?

Да-да, нас опять ждет осенний Standoff. Вместе с кибербитвой будет проходить митап, который можно смотреть онлайн. А в 14:00, в секции "Безопасность или паранойя? Разбираем клиентскую часть мобильных приложений" - я и небезызвестный @Mr_R1p обсудим темные стороны безопасности мобильных приложений.

Кроме этого выступления, обязательно обратите внимание на доклады "OAuth 2.0 и как его разламывать" и "37 слайдов про багбаунти".

Присоединяйтесь, трансляция начинается в 10:00 MSK.
3👍3
Если вы пропустили трансляцию нашего с @Mr_R1p выступления, то ее уже можно посмотреть на YouTube. Получилось скорее развлекательно чем технически, поэтому можете также показать это выступление вашему менеджеру ;)
1
Кто-нибудь пользуется jadx для повседневной работы? Смотреть код, ресурсы, искать строки и т.д. Мне кажется, что как декомпилятор он неплохой, но смотреть код в нем не удобно. Поэтому мой обычный флоу работы с jadx это File->Save as gradle project и дальше уже смотреть в студии. Но мне захотелось еще больше автоматизировать этот процесс и вообще не заходить в GUI. У jadx есть cli версия, но мне всегда было очень лениво сесть и сопоставить опции из GUI с cli. В какой-то момент, я заметил, что в настройках есть кнопка "Copy to clipboard", которая позволяет выгрузить все текущие настройки в виде json. При этом, проблема сопоставления никуда не делась и я задал автору утилиты вопрос о том как перекатить эти опции из GUI в cli. Оказалось, что такой возможности пока нет, но есть обходной путь. Чем я и воспользовался, написав конвертер json конфигов во флаги командной строки. Мою проблему он решает, но если вашу нет, то создавайте issue или засылайте PR-ы.
Но, строго говоря - это костыль и лучше бы иметь такую возможность в самом jadx, поэтому поставьте лайков под этой issue.
👍18🔥2👌1
Если ваш вечер пятницы выглядит не так, то чем вы вообще там занимаетесь? 😁

Все подробности скоро на канале. Не переключайтесь.
11😁4👍2🤯2
Есть такая местами популярная в вебе штука - security.txt. Этот файл обычно располагают в корне сайта и он содержит контакты куда репортить уязвимости и иногда PGP ключи для шифрования отчетов. Но я ни разу не встречал этого или подобного ему файла в мобильных приложениях. Хотя это кажется полезным. Предлагаю всем разработчикам приложений, располагать такой файл в директории assets. Там его будет легко найти. Чтобы не составлять такой файл руками можно воспользоваться готовым генератором. Как вам такая инициатива?
👍29🤔11🔥4
Не буду разгонять телегу про "это был тяжелый год...". Был. И хватит об этом. Но в этом году удалось сделать много того, до чего долго не доходили руки. Одна из таких вещей - мое небольшое исследование о том, как ведут себя строки в памяти JVM и можно ли их гарантированно оттуда удалить. Как обычно я буду очень рад конструктивным дополнениям и уточнениям к изложенному материалу. Приятного чтения!
👍286🔥2🤩2🏆1
Начнем год с конференций. Вы же не хотите, чтобы на месте этого поста была статья про исследование приложения накрытого DexGuard-ом? Ну вот 🙃

Positive Hack Days 12, который пройдет 19-20 мая в Парке Горького - объявляет Call For Papers. Мне, традиционно, хотелось бы послушать много крутых докладов по уязвимостям в мобилках. Порадуйте меня пожалуйста 😉 Но вообще, там довольно широкий набор тем, и если мобилки вам не очень, то можно подать доклад про расследование действий кибергруппировок, безопасность BIOS, UEFI и другого firmware и даже про архитектурные проблемы современных вычислительных систем. Уж о чем, а об архитектуре тут все мастера потрындеть, да?

Рассматриваются разные варианты участия:
- доклад (50 минут),
- Fast Track (15 минут),
- Hands-on Lab (до 4 часов).

Лабу на 4 часа предлагаю сделать про снятие пиннинга 👨‍💻

Заявки от спикеров будут приниматься до 25 марта 2023 года. Программный комитет ответит на все заявки до 1 апреля.
👍62
Запускаю новую рубрику - Android Hacker Tips. Она будет выходить раз в неделю и содержать полезные советы, которые, теоретически, должны помогать в работе исследователям мобильных приложений. Эти советы будут выходить каждый понедельник под хештегом #aht. Чтобы не делать это сообщение бесполезным, прикрепляю к нему самый первый совет.
——————————————
При изучении сложных конструкций в декомпилированном коде или даже оригинальном исходном коде, полезно в динамике понимать как работает тот или иной алгоритм или его часть. Чтобы не переписывать это на какой-нибудь python или не создавать новый проект в Android Studio/Intellij IDEA - можно воспользоваться scratch-файлами. Кроме того, что они упрощают написание PoC-ов, они также являются кросс-проектными, а значит можно написать несколько базовых скретчей и они сразу будут доступны во всех новых исследуемых приложених. При условии, что вы используете Android Studio/Intellij IDEA конечно.
👍28🔥11
Нужно всегда обращать внимание на блок <query> в манифесте приложении. Там можно найти имена пакетов, с которыми исследуемое приложение как-то взаимодействует. Это взаимодействие может быть очень тесным и доверительным. А отсутствие проверки подписи при таком взаимодействии может дать поистине безграничные возможности. При исследовании этих взаимодействий также помогает поиск по ключевым словам queryIntentActivities, getPackageInfo, resolveActivity и getInstalledPackages.
#aht
👍30
Если приложение использует биометрию, то нужно сразу искать флаги setUserAuthenticationRequired и setInvalidatedByBiometricEnrollment. Если они установлены в false, то это может позволить обойти биометрическую аутентификацию при наличии физического доступа к устройству.
Первый флаг устанавливается когда нужно ограничить использовать ключа шифрования биометрическими данными. Без правильной биометрии - ключ не будет доступен для использования. Соответственно, если он false, то биометрический диалог можно просто скипнуть с помощью Frida.
Второй флаг, установленный в false позволяет злоумышленнику добавить в систему свой палец/лицо и получить доступ к приложению используя уже свои биометрические данные.
#aht
👍34
После декомпиляции приложения нужно поискать секреты в коде. Для этого можно использовать trufflehog или любую другую подобную утилиту. Пример запуска trufflehog: trufflehog filesystem --directory=`pwd` --only-verified
Но иногда, отсутствие флага only-verified дает интересные результаты. Поэтому обязательно попробуйте. А как быть с найденными секретами дальше, подскажет keyhacks
#aht
🔥171🤔1
Четверг, как известно - рыбный день. Почему это важно? Да ни почему. Просто забавный факт. А кроме этого факта я хотел поделиться с вами первой частью моего цикла статей про деобфускацию (и в какой-то степени обратную компиляцию) кода android приложений. Все это, как обычно - лютый эксперимент, который неизвестно куда зайдет и сколько продлится. Но, у самурая нет цели, есть только путь. Приятного чтения.
👍28🔥1🐳1
Когда исследуешь сильно обфусцированное приложение, то приходится заниматься восстановлением оригинальных имен переменных и функций вручную. Или придумывать такие имена самостоятельно исходя из контекста использования. Кроме этого, иногда приходится удалять целые куски мусорного кода и совершать прочие рефакторинги. Чтобы проще было контролировать происходящее, откатываться или проверять гипотезы без вреда для кодовой базы - можно добавить декомпилированный код в локальный git репозиторий и пользоваться всеми прелестями этого инструмента.
#aht
🤔10👍3🤡2🎉1
Попалась мне тут совершенно замечательная ссылка, которой не имею сил не поделиться - https://github.com/krizzsk/HackersCave4StaticAndroidSec.

Там куча ссылок на туториалы, утилиты и исследования по уязвимостями в Android. Звучит скучно да? Верно. Это был бы еще один всратый "awesome list" если бы не одно "но" - там много ссылок на нативные китайские блоги и статьи. И там действительно полезная инфа, которую просто так не загулишь, если не ищешь специально на китайском. Я давно хотел найти что-то подобное и вот оно пришло. Из полезного лично для себя, я нашел там разбор форматов различных файлов (AndroidManifest.xml, resources.arsc и т.п.) и материалы по статическому анализу. Всем 你好 ;)
🔥27💯1
Перепаковка приложения может быть довольно болезненной процедурой. Чтобы избежать возможных глюков после пересборки, можно воспользоваться специальными флагами apktool: -s распакует приложение, но не будет декомпилировать код, а -r распакует без декодирования ресурсов. Если нужно только убрать ssl pinning через network_security_config.xml, то нет нужды декомпилировать код. А если требуется убрать проверку на root, то ресурсы можно не декодировать.
#aht
👍13🤔7
Большие компании часто выпускают разные приложения, но используют в них какие-то общие библиотеки, архитектуру и подходы. Поэтому, для разбора алгоритмов смысл которых непонятен из-за обфускации, можно попробовать разобрать другие приложения этой компании. Их могли писать другие команды с низкой социальной ответственностью, а значит там может вообще не быть обфускации или она будет не такая злая.
#aht
👍6
PHDAYS12 близко (19-20 мая)🌞 И чтобы он получился действительно крутым - нужны крутые доклады. Моя личная установка в этом плане не изменилась - хороших докладов про мобильный инфобез должно быть больше. Особенно хотелось бы послушать что-то междисциплинарное а-ля "Угон аккаунта из Google Calendar через подключенную по BT умную колонку" ;) Тема, кстати, не под копирайтом - забирайте =) К чему я это все? 25 марта заканчивается прием заявок на доклады и у вас есть шанс запрыгнуть с вашим исследованием в этот поезд!

Если угон акканта вы нарисечить еще не успели, то другие темы тоже вполне себе приветствуются:
👨‍🔬 новые техники и векторы атак, эксплуатация уязвимостей;
👨‍🔧 разработка и защита приложений;
🤖 технологии и безопасность ML в ИБ.

Хватит смотреть трансляции, пора их создавать 🚀
🔥7
Даже если на устройстве есть root доступ, команды adb push/pull все равно будут работать в пользовательском режиме. Это значит, что не выйдет скачать или отправить файлы в директории доступные только суперпользователю. Но выход есть. Вместо adb push будет cat file.txt | adb shell su -c "dd of=/data/file.txt", а для замены adb pull - adb shell su -c "dd if=/data/file.txt" >> file.txt. В целом, так можно выполнить любую команду с правами root - adb shell su -c "<command>".
#aht
👍15👎1
Обфусцированный код, при более пристальном рассмотрении, порой оказывается не таким уж и обфусцированным. Например по методу toString() часто можно восстановить оригинальное имя класса и имена полей. Для этого можно поискать по коду все объявления этого метода с помощью ключевого слова toString() { и найти что-то вроде этого:
public final String toString() {
StringBuilder m20399b = C0002b.m20399b("Insets(left=");
m20399b.append(this.f39a);
m20399b.append(", top=");
m20399b.append(this.f40b);
m20399b.append(", right=");
m20399b.append(this.f41c);
m20399b.append(", bottom=");
return C0047d.m19892c(m20399b, this.f42d, ')');
}
Теперь можно переименовывать класс и поля, что сильно упростит дальнейшие исследования.
#aht
👍18🔥8
Тут недавно в чате искали работу реверсером. Я вам принес =) В соседнюю команду ребята ищут толкового реверс инженера. Основная задача: изучение механизмов защиты мобильных приложений от статического и динамического анализа. И конечно же поиск возможностей обхода этих механизмов. Все как вы любите ;)

Помимо умения нажимать F5 в IDAPro, горячо приветствуется навык чтения пейперов, и перекладывания полученных из них знаний в PoC-и. Также нужно понимать основы криптографии и модели безопасности мобильных ОС. В общем, если вы когда-нибудь заглядывали под капот очередному Dex<placeholder>, то и сами знаете что требуется для такой работы. Остальные подробности найдете здесь.

В качестве бонусов: красивая аниме аватарка (если у вас еще нет) и возможность удаленной работы. Ну и IDAPro дадут, наверное...
👍9🔥6👏2