macOS Sensitive Locations & Interesting Daemons
Parolalar
Gölge Parolaları
Gölge parolaları, kullanıcının yapılandırmasıyla birlikte /var/db/dslocal/nodes/Default/users/
konumunda bulunan plist dosyalarında saklanır.
Aşağıdaki oneliner, kullanıcılar hakkındaki tüm bilgileri (hash bilgileri dahil) dökmek için kullanılabilir:
Bu örnekteki betikler veya bu örnekteki betikler, hashcat formatına dönüştürmek için kullanılabilir.
Tüm hizmet hesaplarında olmayan kimlik bilgilerini hashcat formatına dökecek alternatif bir tek satırlık komut -m 7100
(macOS PBKDF2-SHA512):
Anahtarlık Dökümü
Güvenlik ikilisini kullanarak şifreleri şifrelenmiş olarak dökmek istendiğinde, birkaç uyarı kullanıcıdan bu işlemi izlemesini isteyecektir.
Bu yorum temel alınarak juuso/keychaindump#10 (comment) gibi görünüyor ki bu araçlar artık Big Sur'da çalışmıyor.
Keychaindump Genel Bakış
keychaindump adlı bir araç, macOS anahtarlıklarından şifreleri çıkarmak için geliştirilmiştir, ancak Big Sur gibi yeni macOS sürümlerinde sınırlamalarla karşılaşmaktadır, tartışmada belirtildiği gibi. keychaindump'ın kullanımı, saldırganın root erişimi elde etmesini ve ayrıcalıkları yükseltmesini gerektirir. Araç, anahtarlığın kullanıcı girişinde varsayılan olarak kilidini açık tutulması gerçeğinden yararlanır, bu da uygulamaların kullanıcının şifresini sürekli olarak girmesini gerektirmeksizin buna erişmesine olanak tanır. Bununla birlikte, bir kullanıcının her kullanımdan sonra anahtarlığını kilitlemeyi tercih etmesi durumunda, keychaindump etkisiz hale gelir.
Keychaindump, Apple tarafından yetkilendirme ve kriptografik işlemler için bir daemon olarak tanımlanan securityd adlı belirli bir işlemi hedef alarak çalışır. Çıkarma işlemi, kullanıcının giriş şifresinden türetilen bir Anahtar Anahtarını tanımlamayı içerir. Bu anahtar, anahtarlık dosyasını okumak için gereklidir. Master Key'i bulmak için keychaindump, potansiyel anahtarları aramak için MALLOC_TINY
olarak işaretlenen alanlarda securityd'nin bellek yığınını vmmap
komutunu kullanarak tarar. Bu bellek konumlarını incelemek için aşağıdaki komut kullanılır:
Potansiyel anahtarları tanımladıktan sonra, keychaindump, anahtar için bir adayı gösteren (0x0000000000000018
) belirli bir deseni aramak için heap'leri tarar. Bu anahtarı kullanabilmek için deşifre etme de dahil olmak üzere daha fazla adım, keychaindump'ın kaynak kodunda belirtildiği gibi gereklidir. Bu alana odaklanan analistler, anahtar zincirini şifrelemek için gerekli olan kritik verilerin securityd işlemi belleğinde saklandığını unutmamalıdır. keychaindump'ı çalıştırmak için bir örnek komut:
chainbreaker
Chainbreaker, bir OSX anahtar zincirinden aşağıdaki türde bilgileri adli bütünlük kurallarına uygun bir şekilde çıkarmak için kullanılabilir:
Hashlenmiş Keychain şifresi, hashcat veya John the Ripper ile kırılmak üzere uygun
İnternet Şifreleri
Genel Şifreler
Özel Anahtarlar
Genel Anahtarlar
X509 Sertifikaları
Güvenli Notlar
Appleshare Şifreleri
Anahtar zincirini açma şifresi, volafox veya volatility ile elde edilen bir anahtar veya SystemKey gibi bir açma dosyası ile, Chainbreaker ayrıca düz metin şifreler sağlayacaktır.
Anahtar Zincirini açmanın bu yöntemlerinden biri olmadan, Chainbreaker tüm diğer mevcut bilgileri gösterecektir.
Anahtar zinciri anahtarlarını dök
SystemKey ile anahtarlık anahtarlarını (şifrelerle birlikte) dökün
Anahtarlık anahtarlarını (şifrelerle birlikte) kırarak dökün
Hafıza dökümü ile anahtarlık anahtarlarını (şifrelerle birlikte) dökün
Hafıza dökümü yapmak için bu adımları izleyin
Kullanıcı şifresini kullanarak anahtarlık anahtarlarını (şifrelerle birlikte) dökme
Kullanıcı şifresini bildiğinizde, bunu kullanarak kullanıcıya ait anahtarlıkları dökebilir ve şifreleyebilirsiniz.
kcpassword
kcpassword dosyası, yalnızca sistem sahibi otomatik girişi etkinleştirmişse kullanıcının giriş şifresini tutan bir dosyadır. Bu nedenle, kullanıcıya şifre sorulmadan otomatik olarak giriş yapılacaktır (bu çok güvenli değildir).
Şifre, /etc/kcpassword
dosyasında 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
anahtarı ile xorlanmış olarak saklanır. Kullanıcının şifresi anahtardan daha uzunsa, anahtar tekrar kullanılacaktır.
Bu, şifrenin oldukça kolay bir şekilde kurtarılmasını sağlar, örneğin bu gibi betikler kullanılarak.
Bildirimler
Bildirim verilerini $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
dizininde bulabilirsiniz.
Çoğu ilginç bilgi blob içinde olacaktır. Bu nedenle, o içeriği çıkarmalı ve insanların okuyabileceği hale dönüştürmelisiniz ya da strings
kullanmalısınız. Buna erişmek için şunu yapabilirsiniz:
Notlar
Kullanıcıların notları, ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
dizininde bulunabilir.
Tercihler
MacOS uygulamalarındaki tercihler $HOME/Library/Preferences
konumundadır ve iOS'ta ise /var/mobile/Containers/Data/Application/<UUID>/Library/Preferences
konumundadır.
MacOS'ta defaults
adlı cli aracı Tercihler dosyasını değiştirmek için kullanılabilir.
/usr/sbin/cfprefsd
, XPC hizmetlerini com.apple.cfprefsd.daemon
ve com.apple.cfprefsd.agent
iddialıdır ve tercihleri değiştirmek gibi eylemleri gerçekleştirmek için çağrılabilir.
Sistem Bildirimleri
Darwin Bildirimleri
Bildirimler için ana daemon /usr/sbin/notifyd
'dir. Bildirimleri alabilmek için istemciler, com.apple.system.notification_center
Mach portu üzerinden kayıt olmak zorundadır (sudo lsmp -p <pid notifyd>
ile kontrol edilebilir). Daemon, /etc/notify.conf
dosyası ile yapılandırılabilir.
Bildirimler için kullanılan isimler benzersiz ters DNS gösterimleridir ve bir bildirim birine gönderildiğinde, bunu işleyebileceğini belirten istemciler alacaktır.
Mevcut durumu (ve tüm isimleri görmek) görmek için, sinyal SIGUSR2'yi notifyd işlemine göndererek ve oluşturulan dosyayı okuyarak /var/run/notifyd_<pid>.status
dosyasını boşaltmak mümkündür:
Dağıtılmış Bildirim Merkezi
Ana ikili dosyası /usr/sbin/distnoted
olan Dağıtılmış Bildirim Merkezi, bildirimler göndermenin başka bir yoludur. Bazı XPC hizmetlerini açığa çıkarır ve istemcileri doğrulamak için bazı kontroller yapar.
Apple Push Bildirimleri (APN)
Bu durumda, uygulamalar konular için kayıt oluşturabilir. İstemci, Apple'ın sunucularına apsd
aracılığıyla ulaşarak bir belirteç oluşturacaktır.
Daha sonra, sağlayıcılar da bir belirteç oluşturacak ve Apple'ın sunucularına bağlanarak istemcilere mesaj gönderebilecektir. Bu mesajlar yerel olarak apsd
tarafından alınacak ve bekleyen uygulamaya iletilen bildirimi iletecektir.
Tercihler, /Library/Preferences/com.apple.apsd.plist
konumundadır.
macOS'ta /Library/Application\ Support/ApplePushService/aps.db
ve iOS'ta /var/mobile/Library/ApplePushService
konumunda mesajların yerel veritabanı bulunmaktadır. 3 tabloya sahiptir: incoming_messages
, outgoing_messages
ve channel
.
Ayrıca, şu kullanılarak daemon ve bağlantılar hakkında bilgi almak mümkündür:
Kullanıcı Bildirimleri
Bu, kullanıcının ekranda görmesi gereken bildirimlerdir:
CFUserNotification
: Bu API, ekranda bir mesajla birlikte bir pop-up göstermenin bir yolunu sağlar.Bülten Panosu: Bu, iOS'ta kaybolan bir banner gösterir ve Bildirim Merkezi'nde saklanır.
NSUserNotificationCenter
: Bu, MacOS'ta iOS bülten panosudur. Bildirimlerle ilgili veritabanı,/var/folders/<user temp>/0/com.apple.notificationcenter/db2/db
konumundadır.
Last updated