macOS Sensitive Locations & Interesting Daemons
पासवर्ड
शैडो पासवर्ड
शैडो पासवर्ड उपयोगकर्ता की कॉन्फ़िगरेशन के साथ /var/db/dslocal/nodes/Default/users/
में स्थित plist में संग्रहीत होता है।
निम्नलिखित एकल पंक्ति का उपयोग उपयोगकर्ताओं के बारे में सभी जानकारी (हैश जानकारी सहित) को डंप करने के लिए किया जा सकता है:
इस तरह के स्क्रिप्ट या यह वाला हैश को hashcat फॉर्मेट में बदलने के लिए उपयोग किया जा सकता है।
एक वैकल्पिक वन-लाइनर जो hashcat फॉर्मेट -m 7100
(macOS PBKDF2-SHA512) में सभी गैर-सेवा खातों के क्रेडेंशियल्स को डंप करेगा:
Keychain Dump
ध्यान दें कि सुरक्षा बाइनरी का उपयोग करके डिक्रिप्ट किए गए पासवर्ड को डंप करने पर, कई प्रॉम्प्ट उपयोगकर्ता से इस ऑपरेशन की अनुमति देने के लिए पूछेंगे।
इस टिप्पणी के आधार पर juuso/keychaindump#10 (comment) ऐसा लगता है कि ये उपकरण अब Big Sur में काम नहीं कर रहे हैं।
Keychaindump का अवलोकन
keychaindump नामक एक उपकरण macOS की कीचेन से पासवर्ड निकालने के लिए विकसित किया गया है, लेकिन यह Big Sur जैसे नए macOS संस्करणों पर सीमाओं का सामना करता है, जैसा कि एक चर्चा में बताया गया है। keychaindump का उपयोग करने के लिए हमलावर को root तक पहुंच प्राप्त करनी और विशेषाधिकार बढ़ाने की आवश्यकता होती है। यह उपकरण इस तथ्य का लाभ उठाता है कि कीचेन उपयोगकर्ता लॉगिन पर डिफ़ॉल्ट रूप से अनलॉक होता है, जिससे अनुप्रयोगों को बार-बार उपयोगकर्ता का पासवर्ड मांगे बिना इसे एक्सेस करने की अनुमति मिलती है। हालाँकि, यदि कोई उपयोगकर्ता प्रत्येक उपयोग के बाद अपनी कीचेन को लॉक करने का विकल्प चुनता है, तो keychaindump अप्रभावी हो जाता है।
Keychaindump एक विशिष्ट प्रक्रिया securityd को लक्षित करके काम करता है, जिसे Apple द्वारा प्राधिकरण और क्रिप्टोग्राफिक संचालन के लिए एक डेमन के रूप में वर्णित किया गया है, जो कीचेन तक पहुंच के लिए महत्वपूर्ण है। निष्कर्षण प्रक्रिया में उपयोगकर्ता के लॉगिन पासवर्ड से निकाली गई Master Key की पहचान करना शामिल है। यह कुंजी कीचेन फ़ाइल को पढ़ने के लिए आवश्यक है। Master Key को खोजने के लिए, keychaindump vmmap
कमांड का उपयोग करके securityd की मेमोरी हीप को स्कैन करता है, संभावित कुंजियों को MALLOC_TINY
के रूप में चिह्नित क्षेत्रों के भीतर देखता है। इन मेमोरी स्थानों का निरीक्षण करने के लिए निम्नलिखित कमांड का उपयोग किया जाता है:
बाद में संभावित मास्टर कुंजियों की पहचान करने के बाद, keychaindump एक विशिष्ट पैटर्न (0x0000000000000018
) के लिए ढेरों में खोज करता है जो मास्टर कुंजी के लिए एक उम्मीदवार को इंगित करता है। इस कुंजी का उपयोग करने के लिए आगे के कदम, जिसमें डिओबफस्केशन शामिल है, आवश्यक हैं, जैसा कि keychaindump के स्रोत कोड में वर्णित है। इस क्षेत्र पर ध्यान केंद्रित करने वाले विश्लेषकों को यह ध्यान रखना चाहिए कि कुंजीचेन को डिक्रिप्ट करने के लिए महत्वपूर्ण डेटा securityd प्रक्रिया की मेमोरी में संग्रहीत होता है। keychaindump चलाने के लिए एक उदाहरण कमांड है:
chainbreaker
Chainbreaker का उपयोग OSX कीचेन से फोरेंसिक रूप से सही तरीके से निम्नलिखित प्रकार की जानकारी निकालने के लिए किया जा सकता है:
हैश किया गया कीचेन पासवर्ड, hashcat या John the Ripper के साथ क्रैक करने के लिए उपयुक्त
इंटरनेट पासवर्ड
सामान्य पासवर्ड
निजी कुंजी
सार्वजनिक कुंजी
X509 प्रमाणपत्र
सुरक्षित नोट्स
Appleshare पासवर्ड
कीचेन अनलॉक पासवर्ड, volafox या volatility का उपयोग करके प्राप्त मास्टर कुंजी, या SystemKey जैसे अनलॉक फ़ाइल के बिना, Chainbreaker सभी अन्य उपलब्ध जानकारी प्रदर्शित करेगा।
Dump keychain keys
सिस्टमकी के साथ कीचेन कुंजी (पासवर्ड के साथ) डंप करें
कीचेन कुंजी (पासवर्ड के साथ) डंप करना हैश को क्रैक करना
कीचेन कुंजियों (पासवर्ड के साथ) को मेमोरी डंप के साथ डंप करें
इन चरणों का पालन करें मेमोरी डंप करने के लिए
उपयोगकर्ता के पासवर्ड का उपयोग करके कीचेन कुंजी (पासवर्ड के साथ) डंप करें
यदि आप उपयोगकर्ता का पासवर्ड जानते हैं, तो आप इसका उपयोग उपयोगकर्ता के स्वामित्व वाले कीचेन को डंप और डिक्रिप्ट करने के लिए कर सकते हैं।
kcpassword
kcpassword फ़ाइल एक फ़ाइल है जो उपयोगकर्ता का लॉगिन पासवर्ड रखती है, लेकिन केवल तभी जब सिस्टम के मालिक ने स्वचालित लॉगिन सक्षम किया हो। इसलिए, उपयोगकर्ता बिना पासवर्ड पूछे स्वचालित रूप से लॉगिन हो जाएगा (जो बहुत सुरक्षित नहीं है)।
पासवर्ड फ़ाइल /etc/kcpassword
में 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
कुंजी के साथ XOR किया गया है। यदि उपयोगकर्ता का पासवर्ड कुंजी से लंबा है, तो कुंजी का पुन: उपयोग किया जाएगा।
यह पासवर्ड को पुनर्प्राप्त करना काफी आसान बनाता है, उदाहरण के लिए इस स्क्रिप्ट का उपयोग करके।
Interesting Information in Databases
Messages
Notifications
आप Notifications डेटा को $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
में पा सकते हैं।
सबसे दिलचस्प जानकारी blob में होगी। इसलिए आपको उस सामग्री को extract करना होगा और human readable में transform करना होगा या strings
का उपयोग करना होगा। इसे एक्सेस करने के लिए आप कर सकते हैं:
नोट्स
उपयोगकर्ताओं के नोट्स ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
में पाए जा सकते हैं
Preferences
macOS ऐप्स की प्राथमिकताएँ $HOME/Library/Preferences
में स्थित होती हैं और iOS में ये /var/mobile/Containers/Data/Application/<UUID>/Library/Preferences
में होती हैं।
macOS में CLI टूल defaults
का उपयोग प्राथमिकताएँ फ़ाइल को संशोधित करने के लिए किया जा सकता है।
/usr/sbin/cfprefsd
XPC सेवाओं com.apple.cfprefsd.daemon
और com.apple.cfprefsd.agent
का दावा करता है और प्राथमिकताओं को संशोधित करने जैसी क्रियाएँ करने के लिए इसे कॉल किया जा सकता है।
System Notifications
Darwin Notifications
सूचनाओं के लिए मुख्य डेमन /usr/sbin/notifyd
है। सूचनाएँ प्राप्त करने के लिए, क्लाइंट को com.apple.system.notification_center
Mach पोर्ट के माध्यम से पंजीकरण कराना होगा (इन्हें sudo lsmp -p <pid notifyd>
के साथ जांचें)। डेमन को फ़ाइल /etc/notify.conf
के साथ कॉन्फ़िगर किया जा सकता है।
सूचनाओं के लिए उपयोग किए जाने वाले नाम अद्वितीय रिवर्स DNS नोटेशन हैं और जब इनमें से किसी को सूचना भेजी जाती है, तो वे क्लाइंट जो इसे संभालने के लिए संकेतित करते हैं, इसे प्राप्त करेंगे।
वर्तमान स्थिति को डंप करना संभव है (और सभी नामों को देखना) notifyd प्रक्रिया को SIGUSR2 सिग्नल भेजकर और उत्पन्न फ़ाइल को पढ़कर: /var/run/notifyd_<pid>.status
:
Distributed Notification Center
Distributed Notification Center जिसका मुख्य बाइनरी /usr/sbin/distnoted
है, सूचनाएँ भेजने का एक और तरीका है। यह कुछ XPC सेवाओं को उजागर करता है और यह क्लाइंट्स को सत्यापित करने के लिए कुछ जांच करता है।
Apple Push Notifications (APN)
इस मामले में, अनुप्रयोग topics के लिए पंजीकरण कर सकते हैं। क्लाइंट apsd
के माध्यम से Apple के सर्वरों से संपर्क करके एक टोकन उत्पन्न करेगा।
फिर, प्रदाता भी एक टोकन उत्पन्न करेंगे और Apple के सर्वरों से जुड़कर क्लाइंट्स को संदेश भेज सकेंगे। ये संदेश स्थानीय रूप से apsd
द्वारा प्राप्त किए जाएंगे जो इसे प्रतीक्षा कर रहे अनुप्रयोग को सूचना भेजेगा।
प्राथमिकताएँ /Library/Preferences/com.apple.apsd.plist
में स्थित हैं।
macOS में संदेशों का एक स्थानीय डेटाबेस /Library/Application\ Support/ApplePushService/aps.db
में और iOS में /var/mobile/Library/ApplePushService
में स्थित है। इसमें 3 तालिकाएँ हैं: incoming_messages
, outgoing_messages
और channel
।
यहां तक कि डेमन और कनेक्शनों के बारे में जानकारी प्राप्त करना भी संभव है:
User Notifications
ये सूचनाएँ हैं जो उपयोगकर्ता को स्क्रीन पर देखनी चाहिए:
CFUserNotification
: ये API स्क्रीन पर एक संदेश के साथ पॉप-अप दिखाने का एक तरीका प्रदान करती है।The Bulletin Board: यह iOS में एक बैनर दिखाता है जो गायब हो जाता है और सूचना केंद्र में संग्रहीत होता है।
NSUserNotificationCenter
: यह MacOS में iOS का बुलेटिन बोर्ड है। सूचनाओं के साथ डेटाबेस/var/folders/<user temp>/0/com.apple.notificationcenter/db2/db
में स्थित है।
Last updated