paradiSEcurity – Telegram
paradiSEcurity
2.07K subscribers
72 photos
6 videos
1 file
143 links
Проблемы разработки, безопасности и жизни
Cтикеры – https://news.1rj.ru/str/addstickers/hackerwomanParadisecurity
Есть вопросы, пиши @mother_paradisecurity_bot
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Обесценивание опыта

Иногда мне кажется, что я занимаюсь какой-то ерундой и зачем об этом рассказывать, ведь все очевидно и все итак все это знают. И я каждый раз удивляюсь, когда выясняется, что нет, не знают. Такое часто происходит, когда очень долго варишься в одной теме и вокруг тебя люди тоже идут в таком же направлении 🤷‍♀️

Кстати, вот хороший ресурс, где есть почти все что нужно, чтобы писать безопасные приложения.
Интересненько 🧐

Решила залезть в Google Trends, посмотреть как там поживает популярность языков программирования. Аналитика выходит наизабавнейшая 😎

К слову на графике изменения за последние 5 лет. И что же мы видим?

Популярность Java снижается. В то время как интерес к Python – уверенно растет. Несмотря на это, Kotlin до Java – как до Китая.

И еще интересная тенденция. Интерес ко всем языкам программирования в преддверии новогодних праздников падает, в то время как к Dart наоборот возрастает. Типа все решают в следующем году резко изменить свою жизнь что ли и попробовать таки Flutter?
Я пропала, потому что у меня завал. Пожалейте меня 😢
Apple убьет миллиардную рекламную индустрию с помощью диалога

Когда стартовало WWDC 2020, посвященное только цифровым технологиям, все внимание было приковано к новой MacOS и амбициозным чипам Apple Silicon.

Но, с точки зрения рекламных агентств, именно новые функции iOS 14, основанные на конфиденциальности, вызвали шок в их отрасли и стали главной темой для разговоров.

Когда релизился Android 11, мы с вами уделили много внимания обновлениям конфиденциальности, которых было чуть ли не больше, чем всех остальных. И iOS 14 не стала исключением.

Для непосвященных, сегодня многие приложения используют рекламный идентификатор (IDFA). Это позволяет разработчикам и маркетологам отслеживать активность в рекламных целях.

Сегодня в App Store более 100 тысяч приложений интегрированы с Facebook или Google SDK, которые отслеживают и отправляют ваши данные техническим гигантам и сторонним брокерам.

Но iOS 14 все изменит.

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

Этим пользуются, а чаще злоупотребляют рекламные агентства. Мало кто задумывается о том, как в действительности зарабатывает тот же Facebook, Вконтакте или TikTok. Мы знаем, что потенциально они собирают все наши данные, до которых могут дотянуться, потом что-то с ними делают и вуаля, мы уже смотрим рекламу нового что-то там пролистывая ленту в Инстаграме. Ох уж эта персонализированная реклама.

Вроде ничего страшного, но почему же не посмотреть на практическую составляющую? Проблема персонализированной рекламы только в том, что никто не гарантирует, что вам показывают качественные продукты. А из-за того что между запросом и вашим контактом с рекламой проходит так мало времени – вы заряжены покупать прямо сейчас. Так что, о да, это безумно выгодно!

Однако если убрать идентификаторы – то вся эта индустрия сразу же перестает быть эффективной. Хорошо это или плохо сейчас сказать затруднительно. Реклама – это полезная штука, на самом деле. Но не когда рынок перенасыщен и нам в мозг пытаются запихнуть ненужную нам фигню просто из-за того что мы сейчас в готовом для покупки настроении.
​​Кек, утёк Windows XP. Скачала исходники, сижу изучаю 😛

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

Многие заблуждаются, что им достаточно изучить то, как работает реверс инжиниринг чтобы не допускать глупых ошибок во время разработки. Но вот в чем проблема, пентестер, которому попадется в руки ваше приложение – не разработчик. И выходит так, что для того чтобы взломать ваше приложение не обязательно быть разработчиком. Соответственно и все обучающие материалы для мобильных реверс инженеров сформированы НЕ для разработчиков. Там не будет каких-то конкретных решений, для того чтобы поправить ваш код или изначально избежать ошибок. Есть какие-то обрывки, по которым вам самостоятельно придется изобретать собственное решение и что самое печальное, появится желания поместить его под замок и никому не рассказывать, тк будет казаться, что вы сразу же начинаете рисковать тем самым безопасностью вашего приложения. Так и делает большинство крупных и не очень компаний, которым кажется что они изобрели какую-то невероятную защиту, а на самом деле сделали кривой велосипед. А ведь можно было просто взять нормальный аудит? 🙂

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

Потому что когда ваше приложение поставили на чужой смартфон – вы уже не можете ему доверять.
ААААааааААааа
Простой реверс Android-приложения

🥕 Создайте каталог для работы
🥕 Скачайте и распакуйте dex2jar
🥕 Скачайте JD-GUI
🥕 Выберите приложение для реверса
🥕 Скачайте apk-файл с помощью apkpure и поместите его в каталог dex2jar-2.0
🥕 Откройте терминал и перейдите в целевой каталог ->
cd /Users/ololo/Desktop/your_directory/dex2jar-2.0
chmod 0777 *
./d2j-dex2jar.sh your_apk.apk

🥕 Перейдите в jd-gui->build->libs и запустите jd-gui-1.6.1.jar
🥕 Перетащите your_apk.com-dex2jar.jar в интерфейс
🌟 Вуаля, можно ковырять!

В разделе com будут находиться сторонние библиотеки, которые использует приложение. Можете посмотреть что происходит в файлах .class, фактически, это код приложения. Правда если приложение защищено каким-либо инструментом премиум-класса или даже просто обфусцировало код перед выпуском, мы не смогли бы так легко понять код после реверса. Однако он все равно остался бы более менее читаемым, к тому же есть инструменты, которые помогают это обойти 😉

К сожалению, большинство разработчиков приложений для Android до сих пор не знают о реверс-инжиниринге, а мы легко можем перепроектировать приложение.
iPhone 12 mini — 699$
iPhone 12 — 799 $

Ура, есть 5G, но использовать его вы, конечно же, не сможете.
А еще из iPhone 12 Pro можно сделать скальпель.
Инструменты для реверса Android-приложений

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

⚡️ javadecompilers позволит декомпилировать apk или jar файлы онлайн (иногда правда отваливается или приходится ждать пока подойдет очередь);
⚡️ jadx – декомпелятор dex -> java. Пожалуй, сейчас единственный более менее живой инструмент в этой нише;
⚡️ bytecodeviewer – тоже самое что и jadx, правда непонятно поддерживается ли на данный момент;
⚡️ wireshark – бесплатный анализатор сетевых пакетов с открытым исходным кодом.

Конечно же, инструментов для реверса много. Но, на мой взгляд, не все из них действительно заслуживают внимания, тем более на начальном этапе 😎
Довелось мне тут поковыряться в ios-ном коде. Что я могу сказать…

Apple – ты пиздец.
Реверс-инжиниринг и Право

Сейчас информационная безопасность мобильных приложений набрала обороты. Я давно в этой сфере и четко вижу изменения в индустрии. Раньше вакансий по реверсу приложений и днем с огнем было не сыскать. Теперь же их становится все больше. Компании предлагают за такие услуги лучшие условия и готовы бороться за кадры. Забавно, но сейчас быть реверсером приложений может быть даже выгоднее, чем их разработчиком 😊

Для меня удивительно, что на моем канале набралось столько людей, которым все это интересно. Раньше мне казалось что 200 человек – это предел. Но с тем как растет интерес, многие забывают об ответственности. Сейчас объясню о чем я.

Большинство контрактов которые заключаются на реверс/аудит приложений конкретной компании никогда не будут содержать слово “реверс”. Это слово аккуратно заменяется на “тестирование”. Уже догадываетесь о чем я?

Реверс – это весьма серая сфера, но многие даже не задумываются о ее законности. Ревес, любая декомпиляция и нарушение целостности конечного пакета приложения, даже с согласия его автора – это не законно. А все потому что автор приложения – на самом деле не является его настоящим владельцем. А Apple и Google имеют все права на то, чтобы заблочить вас на всех своих площадках и выписать любой штраф – это написано в их лицензиях, с которой вы соглашаетесь, когда регистрируетесь на Develop-площадках. Правда всегда есть оговорки, поэтому я сделаю небольшую сноску чтобы вы понимали что к чему.

Реверс-инжиниринг и Российское право, когда он незаконен:

🔥 Если вы получили доступ к приложению неправомерно (торрент, скачали на форуме);
🔥 Если цель реверс-инжиниринга изучить продукт конкурента для разработки своего собственного;
🔥 Отсутствие документации или тз к реверс-инжинирингу;
🔥 Любая другая причина, потому что нефиг лезть.

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

“Запрещается декомпилировать, дизассемблировать, модифицировать или выполнять производные работы, основанные на ПО, целиком или частично за исключением случаев, предусмотренных применимым законодательством.”

Скажу честно, в России еще не было громких дел в данном направлении. Но за рубежом – достаточно. Это связано с тем что Российское право весьма размытое, особенно когда оно касается авторского права и работы с ПО и ЭВМ. Однако это и не хорошо, потому что реверсера за уши могут притянуть за что угодно. А потом бегай по судам и доказывай что ты не верблюд. К тому же, будет куда печальнее если вы по незнанию расскажете публично, а что такого интересного вы нашли в инстаграме и фейсбуке, когда его разреверсили, это взлетит и дойдет до компаний, и вам потом запретят въезд в EC и Америку 😁

Be safe 💔
Как думаете, мне уже пора начинать бороться за права реверсеров? 🤣
У МТС опять фейл. Если кратко, то у чувака украли паспортные данные, пришли в МТС, показали справку о потере паспорта из паспортного стола и попросили перевыпустить симку. В итоге злоумышленник получил доступ ко всем учеткам и успел увести инстаграм. Благо парень быстро это просек и побежал ругаться в ближайший салон МТС.

Винить тут на самом деле некого, потому что сотрудник МТС, который перевыпустил симку действовал в рамках правил, а в условиях жесткой конкуренции между провайдерами компании вынуждены становиться “удобными”. Так что это не первый и далеко не последний подобный случай.
Тру стори: однажды я обновила Android Studio и все работало. (Это не так, если что)
Ребят, ну шо такое. Опять нашла довольно крупный продукт, по которому даже дефолтным proguard-ом не прошлись. Это же просто, смотрите:

Уан. minifyEnabled true
Ту. Читаем тысячи статей или официальную документацию
Фри. Настраиваем под свой проект proguard rules

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

Я вот, например, никогда ничего особо не выращивала. Был у меня как-то кактус Федор, но Федора почти сразу же забрала моя мама, потому что по ее словам: “я недостойно с ним обращалась” и так я осталась одна. Но с тех пор прошло много лет, думаю теперь моего IQ должно хватить чтобы вырастить какой-нибудь салатик.

Короче, умные грядки – это очень прикольно, там все идет сразу набором. То есть просто засыпаешь семена, засовываешь в эту штуку и все растет само. Однако мне стало интересно, есть ли такие же штуки, но с приложением. Типа оно тебе говорит когда все это дело надо поливать, а может влажность недостаточная или свет слишком яркий и типа уровень топовости твоего салатика и тд. Что-то вроде ксяомовского чайника, только грядка.

Вы только представьте, грядка-тамагочи! И что-то я не нашла ничего такого 😩

Если вы видели – киньте мне, плиз. Я в активном поиске.
Как создавать безопасные приложения

Несколько правил, пробежавшись по которым вы сделаете свое приложение максимально безопасным:

🔥 Безопасная связь между приложениями
• Неявные интеты. Стоит относится к ним с осторожностью, потому что на такой вид интентов может отреагировать любое приложение, установленное у пользователя.
• Разрешения на уровне подписи. Так можно проверить, что приложения, получающие доступ к данным, подписаны с использованием того же ключа подписи.
• Неэкспортируемый контент. Если вы не собираетесь отправлять данные из своего приложения в другие приложения, явно запретите другим приложениям доступ к вашему ContentProvider в манифесте с помощью
android:exported=false
.

🔥 Безопасное сетевое взаимодействие
Для любого типа сетевого взаимодействия нужно использовать HTTPS c проверкой сертификата. Не забудьте добавить networkSecurityConfig.

🔥 Аутентификация высокого уровня
Конфиденциальная информация может быть защищена с помощью многофакторной аутентификации, надежного управления сессией и таймаутами. Также важно настроить расширенную авторизацию с поддержкой таких инструментов, как веб-токены OAuth 2.0 или JSON.

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

🔥 Безопасное хранение данных
Криптография – это самый эффективный способ обеспечить безопасность данных. Используйте соответствующий механизм шифрования при работе с данными.
• Чтобы добиться большей безопасности при хранении ключей, используйте систему Android Keystore.
• Храните все личные данные пользователя во внутренней памяти устройства, которая изолирована от других приложений. А когда пользователь решит удалить приложение, устройство удалит и все файлы, сохраненные приложением во внутренней памяти. Советую изучить работу EncryptedFile и почитать вот эту статью.
• Если вашему приложению требуется доступ только к определенному каталогу во внешнем хранилище устройства, используйте доступ к выделенным каталогам, чтобы ограничить доступ вашего приложения к внешнему хранилищу устройства.
• Если файл не содержит частной или конфиденциальной информации, но представляет ценность для пользователя только в вашем приложении, сохраните файл в каталоге для конкретного приложения во внешнем хранилище.
• Храните в файлах кеша только не конфиденциальные данные. Для кэшей размером более 1МБ используйте getExternalCacheDir(); в противном случае используйте getCacheDir().
• Используйте SharedPreferences в приватном режиме. Более того, следует использовать для большей безопасности EncryptedSharedPreferences, который автоматически шифрует ключи и значения.

🔥 Регулярно обновляйте зависимости!

🔥 Сжимайте, смешивайте и оптимизируйте код с помощью R8
С его помощью вы можете удалять неиспользуемые классы/поля/методы/атрибуты/зависимости/ресурсы, а также обфусцировать и оптимизировать код.

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