iOS UIPasteboard

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

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

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

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

При використанні буферів обміну важливо враховувати аспекти безпеки. Наприклад:

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

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

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

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

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

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

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

  • generalPasteboard для ідентифікації використання загального буфера обміну для всієї системи.

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

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

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

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

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

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

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

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

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

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

Приклад використання інструменту моніторингу - objection's pasteboard monitor, який опитує загальний буфер обміну кожні 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);

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated