Болезни Военный билет Призыв

Как убрать автонабор в айфоне. Использование T9 на iPhone. Как это работает

Вы хорошо поработали, и вот ваше приложение в App Store!

  • Храните учётные записи юзеров?
  • Используете встроенные покупки?
  • Не хотите показывать своё ноу-хау?
Повод задуматься о безопасности кода и данных! Мы будем искать уязвимости в тестовом приложении. В этой статье поговорим о безопасности данных, а в следующей - перейдём к коду.

Disclaimer

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

Disclaimer от переводчика: из оригинального текста убрано много «воды» и отсылок к Голливуду (и так длинно). Добавлен ряд ключевых пояснений.

Итак

Ни одно приложение не является безопасным! Если кто-то действительно захочет найти у вас уязвимости, то он их найдёт. Нет гарантированного способа предотвратить атаку. Разве что, не выпускать приложение. Но есть отличные способы помешать взломщикам. (По мнению автора, им надоест, и они пойдут спать искать более лёгкую добычу, ага. - Прим. пер. )

Приступим

Нам понадобится:
1. Утилита class-dump-z ;
2. Прокси для отладки по сети, например, Charles (триал-версия отличается надоедливыми сообщениями и работает максимум 30 минут за 1 сеанс). В комментах к исходнику статьи советуют альтернативу Чарльзу - Burpsuite .

Чтобы вы творчески подошли к процессу, предлагаю вам сценарий. Представьте: вышло новое приложение для айпада - «Собиратель мемов» (Meme Collector). Всем нравится. Но вам шепнули на ухо, что встроенные покупки вытянут из вас значительную сумму денег.

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

Небольшое упрощение

Из-за длины этого урока мы изначально допустили некоторые упрощения в тестовом проекте. Например, «покупка» игровой валюты представляет из себя не настоящий in-app purchase, а фэйковый запрос к StoreKit (всё происходит локально на девайсе).

Что к чему? «Карта» приложения (application mapping)

Взглянем на приложение с высоты птичьего полёта! Что оно делает, с точки зрения пользователя? Какова его основная структура?

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

Тем не менее, не стоит полностью полагаться на одну только Связку ключей! И вот почему. Связку ключей поддерживает Apple. (Ну вы уже всё поняли, да?) Информация в ней зашифрована паролем пользователя, который обычно является простым 4-значным цифровым кодом. А это значит, что атака брутфорсом займёт минут двадцать. Узнав пароль, легко сдампить всю связку ключей.

  • Шифруйте данные! Связка ключей вроде как безопасна, но это приоритетная цель для хакеров, поэтому её ломают в первую очередь. (Про джейлбрейкнутые устройства вообще нечего говорить - для них существуют утилиты, показывающие содержимое Связки ключей.) Усложните жизнь взломщикам хотя бы ненамного: шифруйте данные с помощью CommonCrypto API , который входит в состав стандартного Security Framework (пример).
  • Не прописывайте ключ шифрования в приложении. Длинная строка в секции данных представляет потенциальный интерес для хакера. И вообще: если закрытый ключ прописан в приложении, злоумышленник может выложить его в сеть, скомпрометировав данные всех пользователей приложения! Обязательно генерировать уникальный ключ шифрования на каждом устройстве.
  • Контролируйте код! Конкретно - следите за возможностью хакера использовать ваш код в своих целях. Ваш метод шифрования/дешифрования может быть самым прекрасным решением. Но хакеры возьмут отладчик и применят ваш метод дешифрования к вашим же зашифрованным данным. Вы увидите это во второй части данного туториала (следующий пост).
  • Это точно нужно хранить? Раз злоумышленник может искать, модифицировать и выполнять ваши бинарники - просто спросите себя: эту информацию действительно нужно хранить на девайсе?

Сеть: тестирование на проникновение

Ещё хакеры любят наблюдать, как приложение взаимодействует с сетью. Самый тупой способ увидеть, происходит ли какая-то работа с сетью на устройстве, это поискать URL"ы в бинарнике.

Находясь в папке бандла (Meme Collector.app), наберите в терминале:

Strings "Meme Collector"
Стой, куда столько! Команда strings идёт по разделам бинарника и выводит все элементы данных, похожие на строки. Отфильтруем шум:

Strings "Meme Collector" | grep http
А, ну вот, одна строка:

Http://version1.api.memegenerator.net/Generator_Select_ByUrlNameOrGeneratorID
Похоже, в какой-то момент приложение обращается к генератору мемов по этому урлу. Будучи хакером, вы бы хотели исследовать это дело дальше, изучив сетевой трафик приложения. Для этого нам понадобится сетевой монитор, перехватывающий все входящие и исходящие запросы.

Charles, упомянутый в начале статьи - хороший вариант для такого исследования. Скачайте его, если ещё не сделали это. Установите и запустите.

Проверьте, что Charles ловит сетевое взаимодействие с симулятора iOS (путём запуска «Карт», или в Safari набрать урл). Вы увидите, как в Charles побегут сетевые запросы. Если этого не произошло, убедитесь, что в меню Proxy > Mac OS X Proxy галочка установлена.

Кстати, Charles отлично перехватывает SSL-трафик.

Мы не будем это делать, потому что не увидели HTTPS-урлов на выходе команды strings . Но этот шаг потребуется для других приложений, которые могут использовать HTTPS. В меню Proxy > Proxy Settings… > SSL нужно включить SSL-прокси и добавить домены, по которым требуется перехватывать (и расшифровывать) HTTPS-трафик. Пока вы это не сделаете, SSL будет выглядеть примерно так:


При работающем Charles перезапустите Meme Collector. После запуска вы должны увидеть три запроса к version1.api.memegenerator.net , нажав на треугольник слева от урла (см. ниже). Раскроются три запроса, отличающиеся GET-параметрами. Например, у первого один GET-параметр: urlName=Foul-Bachelor-Frog - это видно на вкладке Request.

Выберите вкладку Response и затем внизу JSON. Ответ сервера, расшифрованный из JSON, представлен в виде красивой таблички:

Мы видим здесь множество строк вида «ключ-значение»: заголовок (displayName), описание (description), URL картинки (imageUrl) - в общем, некая информация по данному типу мемов «Four Bachelor Frog» из GET-параметра.

Похоже на то, что мы видели в приложении, правда? Двум другим картинкам в этот раз повезло меньше, они так и не дождались ответа от сервера (Charles сообщает об этом на вкладке Overview) и поэтому не отобразились в приложении.

А я вообще не вижу, чтобы запрашивались картинки!

При повторном запуске картинки могут браться из кэша симулятора, Charles лб этом не знает. Очистите кэш и перезапустите приложение.

Rm -R Library/Caches/

Итак, с определённой долей вероятности делаем вывод: приложение берёт мемы с данного API и представляет их в виде платного контента. А что если попытаться изменить URL с целью приобрести какой-то новый контент, кроме этих трёх мемов? Непохоже, что тут есть проверка, действительно ли приложение получает с сервера то, что ожидал разработчик!

Вам уже надоели эти три мема? Ну-ка попробуем, можно ли отобразить и «купить» что-то новое, скажем, «Success Kid».

Выберите в меню Charles: Tools > Rewrite . Эта функция позволяет перехватывать входящие/исходящие запросы и модифицировать их по тем правилам, которые вы установите. Включите галочку Enable Rewrite . Правила группируются в «наборы» (Sets). Под списком Sets нажмите Add для добавления нового набора правил. По желанию, переименуйте (Name). Мы создали набор правил, но он пока пустой. Давайте добавим правило - в разделе Rules есть кнопка Add , нажмите её.

Открылось окно Rewrite Rule. Измените Type на «Modify Query Param» («Изменить параметр запроса») и заполните два поля:

  • Match > Name: urlName
  • Replace > Value: success-kid

Нажмите OK, OK. Перезапустите приложение… Success! Мы можем покупать контент, который ранее был недоступен.

Интересно: для этого нового мема указана конкретная цена. Откуда? Приложение должно было как-то определить стоимость, исходя из JSON-ответа.

Откройте вкладку Response и посмотрите на JSON, который возвращает сервер. Что может определить стоимость цены?

Попробуйте найти JSON-ключи, которые могут определить стоимость мема в приложении. Может быть, это generatorID, totalVotesScore, instancesCount, templatesCount или ranking. В качестве упражнения для вас: найдите тот ключ, который влияет на стоимость мема.

Чтобы сделать это, перейдите к Proxy > Breakpoints. Нажмите Enable Breakpoints и нажмите Add , чтобы добавить новую точку останова. Появится окно Edit breakpoint, введите в нём следующие данные:

  • Protocol: http
  • Host: version1.api.memegenerator.net
  • опция Response включена

Теперь перезапустите приложение. Как только нам придёт ответ с сервера, сработает точка останова (breakpoint). Когда это произойдёт, щелкните на вкладке Edit Response, внизу выберите JSON:

Здесь вы можете вручную модифицировать JSON-ответ, который пойдёт в приложение. Поиграйтесь с этими параметрами и попробуйте определить, какие ключи влияют на цену, отображаемую в приложении. Изменив JSON-ответ, нажмите Execute (выполнить) для отправки ответа. Приложение делает три запроса к API, поэтому вам понадобится нажать Execute трижды.

Важно: действуйте быстро! AFNetworking имеет таймаут 30 секунд. Если вы перехватили ответ, но не успели внести изменения, AFNetworking вернёт ошибку таймаута запроса и выполнит соответствующий обработчик в коде (который в данном случае не делает ничего). Если у вас вышло время, перезапустите приложение и попробуйте снова.

Что дальше?

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

Возможно, эти знания повысят безопасность вашего iOS-приложения… чуть-чуть. В следующей части мы углубимся гораздо дальше в недры приложения, будем изменять его функционал! А пока вы ждёте, когда я выложу перевод (до следующей пятницы), можно много чего попробовать на тему хранения данных в приложении:

Замечания по поводу перевода или неработающих примеров можно отправлять на почту dev @ x128.ru .

Я хочу редактировать Info.plist для TextEdit. (Вот почему.) Я использую OS 10.7, и у меня установлен Xcode. Но каждый раз, когда я пытаюсь редактировать файл, он блокируется, и я не могу сохранить свои изменения.

Если я пытаюсь сохранить его с помощью XCode, XCode спрашивает, хочу ли я его разблокировать. Я говорю «Разблокировать», но затем появляется сообщение об ошибке The file "Info.plist" could not be unlocked." Он говорит, что это потому, что я do not own it владею.

Если я открываю Info.plist с помощью vi в Терминале (vi Info.plist), я не могу сохранить изменения, даже используя:w! , Ошибка E212: Can"t open file for writing .

Как я могу внести изменения в Info.plist файла TextEdit?

Ответы

Ян С.

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

Использование Finder

Выберите файл plist в Finder и выполните File> Get Info. В нижней части окна информации о файле вы увидите раздел « Общий доступ и разрешения» . Вы хотите убедиться, что находитесь в этом списке и имеете доступ к файлу на уровне Read & Write .

Прежде чем вы сможете добавить себя в права доступа к файлу, вам нужно будет разблокировать его. Нажмите на маленький значок замка (1) в правом нижнем углу и введите свой пароль. Если вы не являетесь администратором этого компьютера, вы не сможете пройти этот шаг.

Разблокировав файл, вы можете изменить права доступа на « Read & Write . Если вы не показаны в списке людей, которые могут получить доступ к файлу, нажмите кнопку + под списком и найдите всплывающий список « Users & Groups .

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

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

Использование командной строки

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

Перейдите в место, где находится файл plist:

cd ~/Library/Preferences/

Измените владельца и права доступа к файлу, чтобы вы могли читать и записывать его:

sudo chown $USER aomDSP.plist sudo chmod u+w aomDSP.plist

Вам, вероятно, не нужен sudo во время второго звонка, но это не повредит. Для этого вам понадобится доступ администратора к машине.

KatieK

Инструкция "Finder" сработала для меня - спасибо!

user495470

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

jzadra

Инструкции по поиску не сработали для меня - когда я пошел, чтобы добавить пользователя или отредактировать разрешения для всех, он сказал: «Операция не может быть завершена, потому что у вас нет необходимых разрешений». Моя учетная запись администратора. В командной строке также указано, что операция не разрешена.

Ян С. ♦

@jzadra, если он выделен серым цветом, предполагает, что учетная запись, с которой вы пытаетесь это сделать, не имеет прав администратора.

До

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

А именно, это программы по defaults и PlistBuddy (запускаются как sudo /usr/libexec/PlistBuddy). Хотя по defaults это более прямой способ изменения файла, PlistBuddy имеет интерактивный режим, который позволяет вам предварительно просмотреть изменения перед сохранением.

Наверное, каждый продвинутый пользователь Mac OS X в жизни хоть раз, да сталкивался с plist-файлами. Сегодня я расскажу читателям про очень интересное и простое приложение для работы с ними под названием PlistEdit Pro.

Для начала, очень краткий ликбез. Файл с расширением.plist (Property List) представляет собой обыкновенный XML-файл с настройками приложений. Данный формат хорош тем, что он удобен и быстр в работе. Многие настройки приложений в таких файлах лежат в /Home/Library/Preferences, а их названия обычно состоят из 4 частей: приставка.компания.приложение.plist (к примеру, com.apple.iTunes.plist).

Большинство таких файлов могут быть открыты в любом текстовом редакторе, но вот только их изменение может оказаться не простым занятием. В этом случае нам, как раз, и может пригодиться утилита PlistEdit Pro, которая отображает «сырой» текст файла в виде списка с тремя параметрами: название переменной (Key), тип данных (Class) и значение (Value).

В приложении поддерживается drag-n-drop, поэтому отдельные переменные или целые секции можно перетаскивать мышкой, при этом не требуется вручную переписывать содержимое файла. Кстати, выбрав один из видов отображения его содержимого (бинарный, ASCII или XML), можно автоматически просматривать изменения в нижней части окна. А если добавить туда код «руками», то он синхронизируется с верхним XML-деревом.

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

Также, в PlistEdit Pro предусмотрен продвинутый поиск с возможностью замены найденных элементов. Сужать и расширять диапазон поиска можно при помощи разнообразных критериев.

Среди других преимуществ данного приложения можно выделить такие:

  • Полная история изменений.
  • Поддержка клавиатурных сокращений для быстрого доступа к некоторым функциям.
  • Интеграция с XCode.
  • Поддержка AppleScript.

Единственное, что на мой взгляд, омрачает впечатление от PlistEdit Pro, - это его цена в 30$.

Сайт разработчика: Fat Cat Software
Стоимость: 29.95$

Что такое файл PLIST?

Файлы в формате PLIST являются установочными файлами, которые включают информацию о конфигурации и свойствах многих программ в среде Mac OS X. Поэтому они также называются «файлами предпочтений». Файлы PLIST часто хранят пользовательские настройки и данные в пакетах . Файлы являются стандартным элементом системы Apple OS X Core Foundation.

Различные формы файлов PLIST

Файлы PLIST могут храниться с использованием двух методов - как текстовых, так и двоичных - они используют формат XML, поскольку он упорядочивает содержимое файла по порядку. Файлы, хранящиеся в виде текста, можно просматривать и редактировать с помощью текстового редактора, однако существуют специальные программы, которые могут облегчить редактирование таких файлов.

Преобразование файлов PLIST

Файлы PLIST можно легко конвертировать между текстовым и XML-форматами, используя командную строку и команду «plutil». Команды относительно преобразования:

  • двоичный формат в XML - plutil -convert xml1 file.plist,
  • Формат XML в двоичный файл - plutil -convert двоичного файла file.plist

Дополнительная информация

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

Программы, которые поддерживают PLIST расширение файла

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

Программы, обслуживающие файл PLIST

Updated: 12/06/2019

Как открыть файл PLIST?

Причин, по которым у вас возникают проблемы с открытием файлов PLIST в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением PLIST, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.

Шаг 1. Получить Apple Property List Editor

Проблемы с открытием и работой с файлами PLIST, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами PLIST на вашем компьютере. Этот легкий. Выберите Apple Property List Editor или одну из рекомендованных программ (например, Text editor , PrefEdit , Property List Tools) и загрузите ее из соответствующего источника и установите в своей системе. Выше вы найдете полный список программ, которые поддерживают PLIST файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Если вы хотите загрузить установщик Apple Property List Editor наиболее безопасным способом, мы рекомендуем вам посетить сайт и загрузить его из официальных репозиториев.

Шаг 2. Убедитесь, что у вас установлена последняя версия Apple Property List Editor

Вы по-прежнему не можете получить доступ к файлам PLIST, хотя Apple Property List Editor установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Причиной того, что Apple Property List Editor не может обрабатывать файлы с PLIST, может быть то, что программное обеспечение устарело. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Apple Property List Editor.

Шаг 3. Назначьте Apple Property List Editor для PLIST файлов

После установки Apple Property List Editor (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия PLIST файлов. Метод довольно прост и мало меняется в разных операционных системах.

Windows

  • Щелкните правой кнопкой мыши на файле PLIST и выберите «Открыть с помощью опцией».
  • Выберите Выбрать другое приложение → Еще приложения
  • Наконец, выберите Найти другое приложение на этом... , укажите папку, в которой установлен Apple Property List Editor, установите флажок Всегда использовать это приложение для открытия PLIST файлы свой выбор, нажав кнопку ОК

Изменить приложение по умолчанию в

  • Нажав правую кнопку мыши на выбранном файле PLIST, откройте меню файла и выберите Информация.
  • Перейдите к разделу Открыть с помощью . Если он закрыт, щелкните заголовок, чтобы получить доступ к доступным параметрам.
  • Выберите из списка соответствующую программу и подтвердите, нажав « Изменить для всех» .
  • Если вы выполнили предыдущие шаги, должно появиться сообщение: Это изменение будет применено ко всем файлам с расширением PLIST . Затем нажмите кнопку Вперед» , чтобы завершить процесс.

Шаг 4. Убедитесь, что PLIST не неисправен

Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл PLIST действительным. Проблемы с открытием файла могут возникнуть по разным причинам.

1. Убедитесь, что PLIST не заражен компьютерным вирусом

Если PLIST действительно заражен, возможно, вредоносное ПО блокирует его открытие. Сканируйте файл PLIST и ваш компьютер на наличие вредоносных программ или вирусов. PLIST файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.

2. Убедитесь, что файл с расширением PLIST завершен и не содержит ошибок

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

3. Проверьте, есть ли у вашей учетной записи административные права

Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Mac OS X Property List Format.

4. Убедитесь, что в системе достаточно ресурсов для запуска Apple Property List Editor

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

5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений

Последние версии программ и драйверов могут помочь вам решить проблемы с файлами Mac OS X Property List Format и обеспечить безопасность вашего устройства и операционной системы. Возможно, файлы PLIST работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.

Вы хотите помочь?

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