macOS Sensitive Locations & Interesting Daemons
Last updated
Last updated
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
शैडो पासवर्ड उपयोगकर्ता की कॉन्फ़िगरेशन के साथ /var/db/dslocal/nodes/Default/users/
में स्थित plist में संग्रहीत होता है।
उपयोगकर्ताओं के बारे में सभी जानकारी (हैश जानकारी सहित) निकालने के लिए निम्नलिखित एकल पंक्ति का उपयोग किया जा सकता है:
इस तरह के स्क्रिप्ट या यह स्क्रिप्ट हैश को hashcat फॉर्मेट में बदलने के लिए उपयोग किया जा सकता है।
एक वैकल्पिक वन-लाइनर जो सभी गैर-सेवा खातों के क्रेडेंशियल्स को हैशकैट फॉर्मेट -m 7100
(macOS PBKDF2-SHA512) में डंप करेगा:
एक और तरीका है ShadowHashData
प्राप्त करने का, जो उपयोगकर्ता का है, dscl
का उपयोग करके: sudo dscl . -read /Users/`whoami` ShadowHashData
यह फ़ाइल केवल उपयोग की जाती है जब सिस्टम सिंगल-यूज़र मोड में चल रहा हो (इसलिए बहुत बार नहीं)।
ध्यान दें कि जब सुरक्षा बाइनरी का उपयोग करके डिक्रिप्ट किए गए पासवर्ड्स को डंप किया जाता है, तो कई प्रॉम्प्ट उपयोगकर्ता से इस ऑपरेशन की अनुमति देने के लिए पूछेंगे।
इस टिप्पणी के आधार पर juuso/keychaindump#10 (comment) ऐसा लगता है कि ये उपकरण अब Big Sur में काम नहीं कर रहे हैं।
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 का उपयोग OSX कीचेन से फोरेंसिक रूप से सही तरीके से निम्नलिखित प्रकार की जानकारी निकालने के लिए किया जा सकता है:
हैश किया गया कीचेन पासवर्ड, hashcat या John the Ripper के साथ क्रैक करने के लिए उपयुक्त
इंटरनेट पासवर्ड
सामान्य पासवर्ड
निजी कुंजी
सार्वजनिक कुंजी
X509 प्रमाणपत्र
सुरक्षित नोट्स
Appleshare पासवर्ड
कीचेन अनलॉक पासवर्ड, volafox या volatility का उपयोग करके प्राप्त मास्टर कुंजी, या SystemKey जैसे अनलॉक फ़ाइल के बिना, Chainbreaker सभी अन्य उपलब्ध जानकारी प्रदर्शित करेगा।
इन चरणों का पालन करें मेमोरी डंप करने के लिए
यदि आप उपयोगकर्ता का पासवर्ड जानते हैं, तो आप इसका उपयोग उपयोगकर्ता के स्वामित्व वाले कीचेन को डंप और डिक्रिप्ट करने के लिए कर सकते हैं।
kcpassword फ़ाइल एक फ़ाइल है जो उपयोगकर्ता का लॉगिन पासवर्ड रखती है, लेकिन केवल तभी जब सिस्टम के मालिक ने स्वचालित लॉगिन सक्षम किया हो। इसलिए, उपयोगकर्ता बिना पासवर्ड पूछे स्वचालित रूप से लॉगिन हो जाएगा (जो बहुत सुरक्षित नहीं है)।
पासवर्ड फ़ाइल /etc/kcpassword
में 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
कुंजी के साथ XOR किया गया है। यदि उपयोगकर्ता का पासवर्ड कुंजी से लंबा है, तो कुंजी का पुन: उपयोग किया जाएगा।
यह पासवर्ड को पुनर्प्राप्त करना काफी आसान बनाता है, उदाहरण के लिए इस स्क्रिप्ट का उपयोग करके।
आप Notifications डेटा को $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
में पा सकते हैं।
सबसे दिलचस्प जानकारी blob में होगी। इसलिए आपको उस सामग्री को extract करना होगा और human readable में transform करना होगा या strings
का उपयोग करना होगा। इसे एक्सेस करने के लिए आप कर सकते हैं:
उपयोगकर्ताओं के नोट्स ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
में पाए जा सकते हैं
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/Library/OpenDirectory/permissions.plist
नोड विशेषताओं पर लागू की गई अनुमतियों को शामिल करती है और इसे SIP द्वारा सुरक्षित किया गया है।
यह फ़ाइल UUID द्वारा विशिष्ट उपयोगकर्ताओं को अनुमतियाँ प्रदान करती है (और uid द्वारा नहीं) ताकि वे ShadowHashData
, HeimdalSRPKey
और KerberosKeys
जैसी विशिष्ट संवेदनशील जानकारी तक पहुँच सकें:
सूचनाओं के लिए मुख्य डेमन /usr/sbin/notifyd
है। सूचनाएँ प्राप्त करने के लिए, क्लाइंट को com.apple.system.notification_center
मच पोर्ट के माध्यम से पंजीकरण कराना होगा (इन्हें sudo lsmp -p <pid notifyd>
के साथ जांचें)। डेमन को फ़ाइल /etc/notify.conf
के साथ कॉन्फ़िगर किया जा सकता है।
सूचनाओं के लिए उपयोग किए जाने वाले नाम अद्वितीय रिवर्स DNS नोटेशन हैं और जब इनमें से किसी को सूचना भेजी जाती है, तो वे क्लाइंट जो इसे संभालने के लिए संकेतित हैं, इसे प्राप्त करेंगे।
वर्तमान स्थिति को डंप करना संभव है (और सभी नामों को देखना) notifyd प्रक्रिया को SIGUSR2 सिग्नल भेजकर और उत्पन्न फ़ाइल को पढ़कर: /var/run/notifyd_<pid>.status
:
Distributed Notification Center जिसका मुख्य बाइनरी /usr/sbin/distnoted
है, सूचनाएँ भेजने का एक और तरीका है। यह कुछ XPC सेवाओं को उजागर करता है और यह क्लाइंट्स को सत्यापित करने के लिए कुछ जांच करता है।
इस मामले में, एप्लिकेशन 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
।
यहां तक कि डेमन और कनेक्शनों के बारे में जानकारी प्राप्त करना भी संभव है:
ये सूचनाएँ हैं जो उपयोगकर्ता को स्क्रीन पर देखनी चाहिए:
CFUserNotification
: ये API स्क्रीन पर एक संदेश के साथ पॉप-अप दिखाने का एक तरीका प्रदान करती है।
The Bulletin Board: यह iOS में एक बैनर दिखाता है जो गायब हो जाता है और सूचना केंद्र में संग्रहीत होता है।
NSUserNotificationCenter
: यह MacOS में iOS का बुलेटिन बोर्ड है। सूचनाओं के साथ डेटाबेस /var/folders/<user temp>/0/com.apple.notificationcenter/db2/db
में स्थित है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)