iOS UIPasteboard

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

iOS cihazlarında uygulamalar arasında ve içinde veri paylaşımı, UIPasteboard mekanizması aracılığıyla sağlanır ve iki temel kategoriye ayrılır:

  • Sistem genel panosu: Bu, verilerin herhangi bir uygulama ile paylaşılması için kullanılır ve iOS 10'dan beri mevcut olan verilerin cihaz yeniden başlatmaları ve uygulama kaldırmaları boyunca kalıcı olmasını sağlar.

  • Özel / Adlandırılmış panolar: Bunlar, bir uygulama içinde veya aynı takım kimliğini paylaşan başka bir uygulama ile veri paylaşımı için özeldir ve oluşturan uygulama sürecinin yaşam süresinden öteye geçmeyecek şekilde tasarlanmıştır, iOS 10'da yapılan değişiklikleri takip eder.

Güvenlik düşünceleri, panoları kullanırken önemli bir rol oynar. Örneğin:

  • Kullanıcıların panoya erişim izinlerini yönetmek için bir mekanizma yoktur.

  • Panonun izinsiz arka planda izlenmesi riskini azaltmak için erişim, uygulama önde iken kısıtlanmıştır (iOS 9'dan beri).

  • Gizlilik endişeleri nedeniyle kalıcı adlandırılmış panoların kullanımı yerine paylaşılan konteynerlerin tercih edilir.

  • iOS 10 ile tanıtılan Evrensel Pano özelliği, içeriğin genel panoyoluyla cihazlar arasında paylaşılmasına izin verir ve geliştiriciler tarafından veri süresi ve otomatik içerik transferini devre dışı bırakmak için yönetilebilir.

Hassas bilgilerin yanlışlıkla genel panoya kaydedilmediğinden emin olmak önemlidir. Ayrıca, uygulamaların genel panodaki verilerin yanlış amaçlar için kullanılmasını önlemek için tasarlanması ve geliştiricilerin hassas bilgilerin panoya kopyalanmasını önlemek için önlemler alması teşvik edilir.

Statik Analiz

Statik analiz için kaynak kodu veya ikili dosyada arama yapın:

  • Sistem genel panosu kullanımını belirlemek için generalPasteboard'u arayın.

  • Özel panolar oluşturmak için pasteboardWithName:create: ve pasteboardWithUniqueName'i arayın. Kalıcılığın etkin olup olmadığını doğrulayın, ancak bu yöntem artık kullanımdan kaldırılmıştır.

Dinamik Analiz

Dinamik analiz, belirli yöntemleri kancalama veya izleme işlemi içerir:

  • Sistem genel kullanım için generalPasteboard'u izleyin.

  • Özel uygulamalar için pasteboardWithName:create: ve pasteboardWithUniqueName'i izleyin.

  • Kalıcılık ayarlarını kontrol etmek için kullanılan artık kullanılmayan setPersistent: yöntem çağrılarını izleyin.

İzlenmesi gereken temel detaylar şunlardır:

  • Pano adları ve içerikleri (örneğin, dizeler, URL'ler, resimler kontrol edilir).

  • Standart ve özel veri türü kontrollerinden yararlanarak mevcut öğe sayısı ve veri türleri.

  • setItems:options: yöntemini inceleyerek süre ve yalnızca yerel seçeneklerini kontrol edin.

Bir izleme aracı kullanımı örneği objection'ın pano izleyicisidir, bu araç genelPasteboard'u her 5 saniyede bir değişiklikleri izler ve yeni verileri çıktılar.

İşte, objection'ın yaklaşımından esinlenerek her 5 saniyede bir panodan değişiklikleri okuyan ve kaydeden basit bir JavaScript betiği örneği:

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);

Referanslar

Sıfırdan kahraman oluncaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated