iOS UIPasteboard

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Обмін даними між додатками на пристроях iOS здійснюється за допомогою механізму UIPasteboard, який поділяється на дві основні категорії:

  • Системна загальна буферна пам'ять: Використовується для обміну даними з будь-яким додатком і призначена для збереження даних між перезавантаженнями пристрою та видаленнями додатків, функція, яка доступна з iOS 10.

  • Користувацькі / Іменовані буферні пам'яті: Призначені спеціально для обміну даними в межах додатка або з іншим додатком, який має той же ідентифікатор команди, і не призначені для збереження після завершення процесу додатка, відповідно до змін, введених в iOS 10.

Безпекові міркування відіграють значну роль при використанні буферних пам'ятей. Наприклад:

  • Немає механізму для користувачів для управління дозволами додатків на доступ до буферної пам'яті.

  • Щоб зменшити ризик несанкціонованого моніторингу буферної пам'яті у фоновому режимі, доступ обмежений до моменту, коли додаток знаходиться на передньому плані (з iOS 9).

  • Використання постійних іменованих буферних пам'ятей не рекомендується на користь спільних контейнерів через проблеми конфіденційності.

  • Функція Універсального буфера (Universal Clipboard), введена з iOS 10, що дозволяє обмінюватися вмістом між пристроями через загальну буферну пам'ять, може бути керована розробниками для встановлення терміну дії даних та відключення автоматичного перенесення вмісту.

Забезпечення того, щоб чутлива інформація не зберігалася ненавмисно в глобальній буферній пам'яті, є критично важливим. Крім того, додатки повинні бути спроектовані так, щоб запобігти зловживанню даними глобальної буферної пам'яті для ненавмисних дій, і розробників заохочують впроваджувати заходи для запобігання копіюванню чутливої інформації в буфер обміну.

Статичний аналіз

Для статичного аналізу шукайте в вихідному коді або бінарному файлі:

  • generalPasteboard, щоб виявити використання системної загальної буферної пам'яті.

  • pasteboardWithName:create: та pasteboardWithUniqueName для створення користувацьких буферних пам'ятей. Перевірте, чи увімкнено збереження, хоча це застаріло.

Динамічний аналіз

Динамічний аналіз передбачає підключення або трасування конкретних методів:

  • Моніторинг generalPasteboard для системного використання.

  • Трасування pasteboardWithName:create: та pasteboardWithUniqueName для користувацьких реалізацій.

  • Спостереження за застарілими викликами методу setPersistent:, щоб перевірити налаштування збереження.

Ключові деталі для моніторингу включають:

  • Імена буферних пам'ятей та вміст (наприклад, перевірка рядків, URL, зображень).

  • Кількість елементів та типи даних, використовуючи стандартні та користувацькі перевірки типів даних.

  • Опції терміну дії та локального використання шляхом перевірки методу setItems:options:.

Приклад використання інструменту моніторингу - монітор буферної пам'яті objection, який опитує generalPasteboard кожні 5 секунд на наявність змін і виводить нові дані.

Ось простий приклад скрипту JavaScript, натхненного підходом objection, для читання та запису змін з буферної пам'яті кожні 5 секунд:

const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();

setInterval(function () {
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();

if (currentCount === count) { return; }

items = currentItems;
count = currentCount;

console.log('[* Pasteboard changed] count: ' + count +
' hasStrings: ' + Pasteboard.hasStrings().toString() +
' hasURLs: ' + Pasteboard.hasURLs().toString() +
' hasImages: ' + Pasteboard.hasImages().toString());
console.log(items);

}, 1000 * 5);

References

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримати HackTricks

Last updated