macOS Auto Start
यह खंड ब्लॉग श्रृंखला Beyond the good ol' LaunchAgents पर आधारित है, उद्देश्य है अधिक ऑटोस्टार्ट स्थान (यदि संभव हो) जोड़ना, कौन सी तकनीकें अब भी काम कर रही हैं आजकल के macOS के नवीनतम संस्करण (13.4) के साथ और आवश्यक अनुमतियाँ निर्दिष्ट करना।
सैंडबॉक्स बाइपास
यहाँ आपको सैंडबॉक्स बाइपास के लिए उपयोगी स्टार्ट स्थान मिलेंगे जो आपको केवल किसी फ़ाइल में लिखकर कुछ को आसानी से निष्पादित करने की अनुमति देते हैं, बहुत सामान्य क्रिया, निर्धारित समय की मात्रा या एक क्रिया जो आप सामान्यत: सैंडबॉक्स के अंदर से कर सकते हैं बिना रूट अनुमतियों की आवश्यकता के।
Launchd
स्थान
/Library/LaunchAgents
ट्रिगर: पुनरारंभ
रूट आवश्यक
/Library/LaunchDaemons
ट्रिगर: पुनरारंभ
रूट आवश्यक
/System/Library/LaunchAgents
ट्रिगर: पुनरारंभ
रूट आवश्यक
/System/Library/LaunchDaemons
ट्रिगर: पुनरारंभ
रूट आवश्यक
~/Library/LaunchAgents
ट्रिगर: पुनरारंभ
~/Library/LaunchDemons
ट्रिगर: पुनरारंभ
विवरण और शोषण
launchd
ओएक्स एस कर्नेल द्वारा स्टार्टअप पर पहला प्रक्रिया है और शट डाउन पर अंतिम होने वाला है। इसे हमेशा पीआईडी 1 होना चाहिए। यह प्रक्रिया ASEP प्लिस्ट्स में निर्दिष्ट किए गए विन्यासों को पढ़े और निष्पादित करेगा:
/Library/LaunchAgents
: प्रशासक द्वारा स्थापित प्रति-उपयोगकर्ता एजेंट्स/Library/LaunchDaemons
: प्रशासक द्वारा स्थापित सिस्टम-व्यापी डेमन्स/System/Library/LaunchAgents
: Apple द्वारा प्रदान किए गए प्रति-उपयोगकर्ता एजेंट्स।/System/Library/LaunchDaemons
: Apple द्वारा प्रदान किए गए सिस्टम-व्यापी डेमन्स।
जब एक उपयोगकर्ता लॉग इन करता है तो /Users/$USER/Library/LaunchAgents
और /Users/$USER/Library/LaunchDemons
में स्थित प्लिस्ट्स लॉग इन किए गए उपयोगकर्ताओं की अनुमतियों के साथ शुरू हो जाते हैं।
एजेंट्स और डेमन्स के मुख्य अंतर है कि एजेंट्स उपयोगकर्ता लॉग इन करते समय लोड होते हैं और डेमन्स सिस्टम स्टार्टअप पर लोड होते हैं (क्योंकि ssh जैसी सेवाएं हैं जो किसी भी उपयोगकर्ता को सिस्टम तक पहुंचने से पहले निष्पादित होने की आवश्यकता है)। इसके अलावा एजेंट्स GUI का उपयोग कर सकते हैं जबकि डेमन्स को पिछले में चलाने की आवश्यकता है।
ऐसे मामले होते हैं जहां एक एजेंट को उपयोगकर्ता लॉगिन करने से पहले चलाया जाना चाहिए, इन्हें प्रीलॉगिन एजेंट्स कहा जाता है। उदाहरण के लिए, यह लॉगिन पर सहायक प्रौद्योगिकी प्रदान करने के लिए उपयोगी है। इन्हें /Library/LaunchAgents
में भी पाया जा सकता है (एक उदाहरण के लिए यहाँ देखें)।
नए डेमन या एजेंट कॉन्फ़िग फ़ाइलें अगले बूट के बाद या launchctl load <target.plist>
का उपयोग करके लोड किए जाएंगे। इसके साथ ही .plist
एक्सटेंशन के बिना भी launchctl -F <file>
के साथ फ़ाइलें लोड करना संभव है (हालांकि वे plist फ़ाइलें बूट के बाद स्वचालित रूप से लोड नहीं होंगी)।
इसे launchctl unload <target.plist>
के साथ अनलोड करना भी संभव है (इसके द्वारा इशारा किया गया प्रक्रिया समाप्त हो जाएगी)।
सुनिश्चित करने के लिए कि कोई एजेंट या डेमन चलने से रोकने वाली कोई चीज़ नहीं है (जैसे ओवरराइड), चलाएं: sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist
वर्तमान उपयोगकर्ता द्वारा लोड किए गए सभी एजेंट और डेमन की सूची:
यदि एक plist एक उपयोगकर्ता के द्वारा स्वामित्व में है, तो यदि यह एक डेमन सिस्टम वाइड फोल्डर में है, कार्य उपयोगकर्ता के रूप में और न कि रूट के रूप में निष्पादित किया जाएगा। यह कुछ प्रिविलेज उन्नति हमलों को रोक सकता है।
शैल स्टार्टअप फ़ाइलें
लेख: https://theevilbit.github.io/beyond/beyond_0001/ लेख (xterm): https://theevilbit.github.io/beyond/beyond_0018/
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
TCC छलना: ✅
लेकिन आपको एक एप्लिकेशन ढूंढने की आवश्यकता है जिसमें TCC छलना हो जो एक शैल लोड करता है जो ये फ़ाइलें लोड करता है
स्थान
~/.zshrc
,~/.zlogin
,~/.zshenv.zwc
,~/.zshenv
,~/.zprofile
ट्रिगर: zsh के साथ एक टर्मिनल खोलें
/etc/zshenv
,/etc/zprofile
,/etc/zshrc
,/etc/zlogin
ट्रिगर: zsh के साथ एक टर्मिनल खोलें
रूट की आवश्यकता है
~/.zlogout
ट्रिगर: zsh के साथ एक टर्मिनल से बाहर निकलें
/etc/zlogout
ट्रिगर: zsh के साथ एक टर्मिनल से बाहर निकलें
रूट की आवश्यकता है
संभावना है कि और भी हो:
man zsh
~/.bashrc
ट्रिगर: bash के साथ एक टर्मिनल खोलें
/etc/profile
(काम नहीं किया)~/.profile
(काम नहीं किया)~/.xinitrc
,~/.xserverrc
,/opt/X11/etc/X11/xinit/xinitrc.d/
ट्रिगर: xterm के साथ ट्रिगर होने की उम्मीद है, लेकिन यह स्थापित नहीं है और स्थापित करने के बाद भी यह त्रुटि फेंकी जाती है: xterm:
DISPLAY is not set
विवरण और शोषण
जब zsh
या bash
जैसे शैल पर्यावरण प्रारंभ किया जाता है, निश्चित स्टार्टअप फ़ाइलें चलाई जाती हैं। macOS वर्तमान में डिफ़ॉल्ट शैल के रूप में /bin/zsh
का उपयोग करता है। यह शैल स्वचालित रूप से पहुंचा जाता है जब टर्मिनल एप्लिकेशन लॉन्च किया जाता है या जब एक डिवाइस SSH के माध्यम से एक्सेस किया जाता है। जबकि bash
और sh
भी macOS में मौजूद हैं, उन्हें उपयोग करने के लिए स्पष्ट रूप से आमंत्रित किया जाना चाहिए।
हम man zsh
के साथ पढ़ सकते हैं जो zsh की मैन पेज है जिसमें स्टार्टअप फ़ाइलों का एक लंबा विवरण है।
फिर से खुली एप्लिकेशन
सूचित अनुशासन को कॉन्फ़िगर करना और लॉगआउट और लॉगइन या फिर रीबूट करना मेरे लिए काम नहीं किया एप्लिकेशन को निष्पादित करने के लिए। (एप्लिकेशन निष्पादित नहीं हो रहा था, शायद यह चालू होना चाहिए जब ये कार्रवाई की जाती है)
Writeup: https://theevilbit.github.io/beyond/beyond_0021/
स्थान
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
ट्रिगर: फिर से खुलने वाली एप्लिकेशनों को पुनरारंभ करें
विवरण और शोषण
सभी एप्लिकेशन जो पुनरारंभ करने के लिए हैं, वे सभी हैं plist ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
में
तो, अपनी एप्लिकेशन को सूची में जोड़ने के लिए उन एप्लिकेशनों को पुनरारंभ करें।
UUID उस निर्देशिका को सूचीबद्ध करके या ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'
के साथ पाया जा सकता है।
पुनरारंभ होने वाली एप्लिकेशनों की जांच करने के लिए आप कर सकते हैं:
इस सूची में एक एप्लिकेशन जोड़ने के लिए आप इस्तेमाल कर सकते हैं:
टर्मिनल प्राथमिकताएँ
सैंडबॉक्स को छलना के लिए उपयोगी: ✅
TCC छलना: ✅
उपयोगकर्ता की एफडीए अनुमतियों के लिए टर्मिनल का उपयोग करें
स्थान
~/Library/Preferences/com.apple.Terminal.plist
ट्रिगर: टर्मिनल खोलें
विवरण और शोषण
~/Library/Preferences
में एप्लिकेशन में उपयोगकर्ता की प्राथमिकताएँ संग्रहित होती हैं। इन प्राथमिकताओं में से कुछ प्राथमिकताएँ अन्य एप्लिकेशन/स्क्रिप्ट को निष्पादित करने के लिए एक विन्यास रख सकती हैं।
उदाहरण के लिए, टर्मिनल स्टार्टअप में एक कमांड निष्पादित कर सकती है:
यह विन्यास फ़ाइल ~/Library/Preferences/com.apple.Terminal.plist
में इस प्रकार दर्शाया जाता है:
इसलिए, अगर सिस्टम में टर्मिनल की प्राथमिकताओं की plist को अधिलेखित किया जा सकता है, तो open
कार्यक्षमता का उपयोग करके टर्मिनल खोली जा सकती है और उस कमांड को क्रियान्वित किया जाएगा।
आप इसे कमांड लाइन से जोड़ सकते हैं:
टर्मिनल स्क्रिप्ट / अन्य फ़ाइल एक्सटेंशन
सैंडबॉक्स को छलना करने के लिए उपयोगी: ✅
TCC छलना: ✅
उपयोगकर्ता को उसका उपयोग करने के लिए टर्मिनल को FDA अनुमतियाँ होती हैं
स्थान
कहीं भी
ट्रिगर: टर्मिनल खोलें
विवरण और शोषण
यदि आप एक .terminal
स्क्रिप्ट बनाते हैं और उसे खोलते हैं, तो टर्मिनल एप्लिकेशन स्वचालित रूप से आमंत्रित होगा ताकि वहाँ दर्शाए गए कमांड को क्रियान्वित कर सके। यदि टर्मिनल ऐप के पास कुछ विशेष अधिकार हैं (जैसे TCC), तो आपका कमांड उन विशेष अधिकारों के साथ चलाया जाएगा।
इसे आज़माएं:
Audio Plugins
लेख: https://theevilbit.github.io/beyond/beyond_0013/ लेख: https://posts.specterops.io/audio-unit-plug-ins-896d3434a882
स्थान
/Library/Audio/Plug-Ins/HAL
रूट की आवश्यकता है
ट्रिगर: coreaudiod या कंप्यूटर को पुनरारंभ करें
/Library/Audio/Plug-ins/Components
रूट की आवश्यकता है
ट्रिगर: coreaudiod या कंप्यूटर को पुनरारंभ करें
~/Library/Audio/Plug-ins/Components
ट्रिगर: coreaudiod या कंप्यूटर को पुनरारंभ करें
/System/Library/Components
रूट की आवश्यकता है
ट्रिगर: coreaudiod या कंप्यूटर को पुनरारंभ करें
विवरण
पिछले लेखों के अनुसार कुछ ऑडियो प्लगइन्स को कंपाइल करना संभव है और उन्हें लोड करने में सक्षम हो सकता है।
QuickLook Plugins
लेख: https://theevilbit.github.io/beyond/beyond_0028/
स्थान
/System/Library/QuickLook
/Library/QuickLook
~/Library/QuickLook
/Applications/AppNameHere/Contents/Library/QuickLook/
~/Applications/AppNameHere/Contents/Library/QuickLook/
विवरण और शोषण
QuickLook प्लगइन्स को आप जब आप किसी फ़ाइल का पूर्वावलोकन ट्रिगर करते हैं (फाइंडर में फ़ाइल का चयन करके स्पेस बार दबाएं) और एक फ़ाइल प्रकार का समर्थन करने वाला प्लगइन स्थापित होता है, तो उसे निष्पादित किया जा सकता है।
अपना खुद का QuickLook प्लगइन कंपाइल करना संभव है, उसे पिछले स्थानों में रखना और फिर समर्थित फ़ाइल पर जाने और उसे ट्रिगर करने के लिए स्पेस बार दबाने के लिए।
लॉगिन/लॉगआउट हुक्स
यह मेरे लिए काम नहीं किया, न तो उपयोगकर्ता LoginHook के साथ न रूट LogoutHook के साथ
लेख: https://theevilbit.github.io/beyond/beyond_0022/
स्थान
आपको
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
जैसी कुछ चला सकने की आवश्यकता हैLo
cated in~/Library/Preferences/com.apple.loginwindow.plist
वे पुराने हैं लेकिन उपयोगकर्ता लॉग इन करते समय कमांड निष्पादित करने के लिए उपयोग किया जा सकता है।
यह सेटिंग /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
में स्टोर की जाती है।
इसे हटाने के लिए:
The root user one is stored in /private/var/root/Library/Preferences/com.apple.loginwindow.plist
Conditional Sandbox Bypass
यहाँ आपको सैंडबॉक्स बाईपास के लिए उपयोगी स्टार्ट स्थान मिलेंगे जो आपको किसी चीज को एक फ़ाइल में लिखकर आसानी से कुछ को निष्क्रिय करने देता है और अपेक्षित गैर सामान्य स्थितियों की जैसे कि विशेष प्रोग्राम स्थापित होना, "असामान्य" उपयोगकर्ता क्रियाएँ या परिवेश।
Cron
Writeup: https://theevilbit.github.io/beyond/beyond_0004/
सैंडबॉक्स को बाईपास करने के लिए उपयोगी: ✅
हालांकि, आपको
crontab
बाइनरी को निष्पादित करने की क्षमता होनी चाहिएया रूट होना चाहिए
TCC बाईपास: 🔴
स्थान
/usr/lib/cron/tabs/
,/private/var/at/tabs
,/private/var/at/jobs
,/etc/periodic/
सीधी लेखन पहुंच के लिए रूट की आवश्यकता है। यदि आप
crontab <file>
को निष्पादित कर सकते हैं तो रूट की आवश्यकता नहीं हैट्रिगर: क्रॉन जॉब पर निर्भर करता है
विवरण और शोषण
वर्तमान उपयोगकर्ता के क्रॉन जॉब्स की सूची देखें:
आप यूजर्स के सभी cron jobs को /usr/lib/cron/tabs/
और /var/at/tabs/
में देख सकते हैं (रूट की आवश्यकता है)।
मैकओएस में कई फोल्डर्स में स्क्रिप्ट्स को निश्चित अंतराल के साथ चलाया जा सकता है:
वहाँ आपको नियमित cron जॉब्स, at जॉब्स (कम प्रयोग किया जाता है) और periodic जॉब्स (मुख्य रूप से अस्थायी फ़ाइलें साफ करने के लिए प्रयोग किया जाता है) मिलेंगे। दैनिक periodic jobs को उदाहरण के लिए इस तरह से निष्पादित किया जा सकता है: periodic daily
.
उपयोगकर्ता cronjob कार्य को प्रोग्रामेटिक रूप से जोड़ने के लिए निम्नलिखित का प्रयोग किया जा सकता है:
iTerm2
Writeup: https://theevilbit.github.io/beyond/beyond_0002/
स्थान
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
ट्रिगर: iTerm खोलें
~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
ट्रिगर: iTerm खोलें
~/Library/Preferences/com.googlecode.iterm2.plist
ट्रिगर: iTerm खोलें
विवरण और शोषण
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
में संग्रहित स्क्रिप्ट निष्पादित किए जाएंगे। उदाहरण के लिए:
macOS Auto Start Locations
Launch Agents
Launch Agents are used to run processes when a user logs in. They are located in ~/Library/LaunchAgents/
and /Library/LaunchAgents/
.
Launch Daemons
Launch Daemons are used to run processes at system startup. They are located in /Library/LaunchDaemons/
and /System/Library/LaunchDaemons/
.
Login Items
Login Items are applications that open when a user logs in. They can be managed in System Preferences > Users & Groups > Login Items
.
Startup Items
Startup Items are legacy items that automatically launch when a system starts up. They are located in /Library/StartupItems/
.
स्क्रिप्ट ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
भी निष्पादित किया जाएगा:
iTerm2 प्राथमिकताएं ~/Library/Preferences/com.googlecode.iterm2.plist
में स्थित होती हैं जो इस्तेम2 टर्मिनल खोला जाता है जब कोई कमांड निष्पादित करने के लिए संकेत दे सकती है।
यह सेटिंग iTerm2 सेटिंग में कॉन्फ़िगर की जा सकती है:
और कमांड प्राथमिकताओं में प्रतिबिम्बित होता है:
आप निम्नलिखित के साथ कमांड सेट कर सकते हैं:
उच्च संभावना है कि iTerm2 preferences का दुरुपयोग करने के लिए अन्य तरीके होंगे।
xbar
Writeup: https://theevilbit.github.io/beyond/beyond_0007/
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन xbar को स्थापित किया जाना चाहिए
TCC बायपास: ✅
यह पहुंचने की अनुमति मांगता है
स्थान
~/Library/Application\ Support/xbar/plugins/
ट्रिगर: जब xbar क्रियान्वित होता है
विवरण
यदि लोकप्रिय कार्यक्रम xbar स्थापित है, तो संभावना है कि एक शैल स्क्रिप्ट लिखा जा सकता है ~/Library/Application\ Support/xbar/plugins/
जिसे xbar शुरू होने पर क्रियान्वित किया जाए:
हैमरस्पून
लेखन: https://theevilbit.github.io/beyond/beyond_0008/
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन हैमरस्पून को स्थापित किया जाना चाहिए
TCC छलांग: ✅
यह पहुंचने की अनुमतियाँ मांगता है
स्थान
~/.hammerspoon/init.lua
ट्रिगर: एक बार हैमरस्पून क्रियान्वित होता है
विवरण
हैमरस्पून macOS के लिए एक स्वचालन प्लेटफ़ॉर्म के रूप में काम करता है, जिसमें इसके कार्यों के लिए LUA स्क्रिप्टिंग भाषा का उपयोग किया जाता है। विशेष रूप से, यह पूरे AppleScript कोड का एकीकरण समर्थित करता है और शैल स्क्रिप्टों का क्रियान्वयन करता है, जिससे इसकी स्क्रिप्टिंग क्षमताएँ काफी बढ़ जाती हैं।
ऐप एक एकल फ़ाइल, ~/.hammerspoon/init.lua
, की खोज करता है, और जब शुरू किया जाता है, तो स्क्रिप्ट क्रियान्वित होगा।
BetterTouchTool
बैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन BetterTouchTool को स्थापित किया जाना चाहिए
TCC बायपास: ✅
यह Automation-Shortcuts और Accessibility अनुमतियाँ मांगता है
स्थान
~/Library/Application Support/BetterTouchTool/*
यह उपकरण इसका संकेत देता है कि किसी ऐप्लिकेशन या स्क्रिप्ट को किस समय क्रियान्वित करने के लिए निर्दिष्ट करने की अनुमति देता है। एक हमलावार अपने खुद के संकेत और क्रिया को डेटाबेस में क्रियान्वित करने के लिए इसे अवशोषित कर सकता है ताकि यह विचारशील कोड को क्रियान्वित करे (किसी कुंजी को दबाने के लिए एक संकेत हो सकता है)।
Alfred
बैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन Alfred को स्थापित किया जाना चाहिए
TCC बायपास: ✅
यह Automation, Accessibility और अब पूर्ण-डिस्क एक्सेस अनुमतियाँ मांगता है
स्थान
???
यह वहाँ कोड को क्रियान्वित करने के लिए वर्कफ़्लो बनाने की अनुमति देता है जब कुछ शर्तें पूरी होती हैं। संभावना है कि एक हमलावार एक वर्कफ़्लो फ़ाइल बना सकता है और Alfred को इसे लोड करने के लिए बना सकता है (वर्कफ़्लो का उपयोग करने के लिए प्रीमियम संस्करण का उपयोग करना आवश्यक है)।
SSHRC
Writeup: https://theevilbit.github.io/beyond/beyond_0006/
बैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन ssh को सक्षम और उपयोग किया जाना चाहिए
TCC बायपास: ✅
SSH को FDA एक्सेस होने की आवश्यकता है
स्थान
~/.ssh/rc
ट्रिगर: SSH के माध्यम से लॉगिन
/etc/ssh/sshrc
रूट की आवश्यकता है
ट्रिगर: SSH के माध्यम से लॉगिन
SSH को चालू करने के लिए पूर्ण डिस्क एक्सेस की आवश्यकता है:
विवरण और शोषण
डिफ़ॉल्ट रूप से, जब तक /etc/ssh/sshd_config
में PermitUserRC no
न हो, जब एक उपयोगकर्ता SSH के माध्यम से लॉगिन करता है तो स्क्रिप्ट /etc/ssh/sshrc
और ~/.ssh/rc
क्रियान्वित हो जाएंगे।
लॉगिन आइटम
लेख: https://theevilbit.github.io/beyond/beyond_0003/
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन आपको
osascript
को तार्किक के साथ क्रियान्वित करना होगाTCC छलांग: 🔴
स्थान
~/Library/Application Support/com.apple.backgroundtaskmanagementagent
ट्रिगर: लॉगिन
शोषण पेलोड को कॉल करने के लिए संग्रहीत
osascript
/var/db/com.apple.xpc.launchd/loginitems.501.plist
ट्रिगर: लॉगिन
रूट आवश्यक है
विवरण
सिस्टम प्राथमिकताएँ -> उपयोगकर्ता और समूह -> लॉगिन आइटम में आप उपयोगकर्ता लॉग इन करते समय क्रियान्वित करने के लिए आइटम पा सकते हैं। इन्हें सूचीत करना, जोड़ना और हटाना संभव है कमांड लाइन से:
These items are stored in the file ~/Library/Application Support/com.apple.backgroundtaskmanagementagent
लॉगिन आइटम को एपीआई SMLoginItemSetEnabled का उपयोग करके भी निर्दिष्ट किया जा सकता है जो कि विन्यास को /var/db/com.apple.xpc.launchd/loginitems.501.plist
में संग्रहित करेगा।
ZIP के रूप में लॉगिन आइटम
(लॉगिन आइटम के बारे में पिछले खंड की जांच करें, यह एक विस्तार है)
यदि आप एक ZIP फ़ाइल को एक लॉगिन आइटम के रूप में संग्रहित करते हैं तो Archive Utility
इसे खोलेगा और यदि ज़िप उदाहरण के लिए ~/Library
में संग्रहीत था और फ़ोल्डर LaunchAgents/file.plist
शामिल था जिसमें एक बैकडोर था, तो वह फ़ोल्डर बनाया जाएगा (यह डिफ़ॉल्ट रूप से नहीं है) और प्लिस्ट जोड़ दिया जाएगा ताकि अगली बार जब उपयोगकर्ता फिर से लॉग इन करें, प्लिस्ट में निर्दिष्ट बैकडोर कार्यान्वित होगा।
एक और विकल्प हो सकता है कि उपयोगकर्ता होम में फ़ाइलें .bash_profile
और .zshenv
बनाएं ताकि यदि फ़ोल्डर LaunchAgents पहले से मौजूद है तो यह तकनीक फिर भी काम करेगी।
At
लेख: https://theevilbit.github.io/beyond/beyond_0014/
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन आपको
at
को क्रियाशील करने की आवश्यकता है और यह सक्षम होना चाहिएTCC छलना: 🔴
स्थान
आपको
at
को क्रियाशील करने की आवश्यकता है और यह सक्षम होना चाहिए
विवरण
at
कार्यों को निश्चित समय पर क्रियान्वित करने के लिए डिज़ाइन किया गया है। क्रॉन जॉब्स की तरह, at
कार्यों को स्वचालित रूप से प्रवर्तन के बाद हटा दिया जाता है। यह महत्वपूर्ण है कि ये कार्य सिस्टम रीबूट के बाद भी स्थायी होते हैं, जिसे कुछ परिस्थितियों में सुरक्षा संबंधित चिंताओं के रूप में चिह्नित किया जाता है।
डिफ़ॉल्ट रूप से वे अक्षम होते हैं लेकिन रूट उपयोगकर्ता उन्हें निम्नलिखित के साथ सक्षम कर सकता है:
यह 1 घंटे में एक फ़ाइल बनाएगा:
जॉब कतार की जाँच करें atq:
ऊपर हम दो नौकरियां निर्धारित की गई हैं। हम at -c JOBNUMBER
का उपयोग करके नौकरी का विवरण प्रिंट कर सकते हैं।
यदि AT tasks सक्षम नहीं हैं तो बनाए गए tasks को क्रियान्वित नहीं किया जाएगा।
नौकरी फ़ाइलें /private/var/at/jobs/
में मिल सकती हैं।
फ़ाइल का नाम कतार, नौकरी संख्या, और यह समय शामिल है जिसे यह निर्धारित किया गया है कि कब चलाया जाएगा। उदाहरण के लिए चलो a0001a019bdcd2
पर एक नज़र डालते हैं।
a
- यह कतार है0001a
- हेक्स में नौकरी संख्या,0x1a = 26
019bdcd2
- हेक्स में समय। यह इपॉक से बीते हुए मिनटों को प्रतिनिधित करता है।0x019bdcd2
दसमलवी में26991826
है। यदि हम इसे 60 से गुणा करें तो हमें1619509560
मिलता है, जोGMT: 2021. अप्रैल 27, मंगलवार 7:46:00
है।
अगर हम नौकरी फ़ाइल को प्रिंट करते हैं, तो हमें at -c
का उपयोग करके प्राप्त की गई जानकारी मिलती है।
फ़ोल्डर क्रियाएँ
लेख: https://theevilbit.github.io/beyond/beyond_0024/ लेख: https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन आपको
System Events
से संपर्क करने के लिएosascript
को तर्कों के साथ बुलाने की आवश्यकता है ताकि आप फ़ोल्डर क्रियाएँ कॉन्फ़िगर कर सकेंTCC छलावा: 🟠
इसमें डेस्कटॉप, दस्तावेज़ और डाउनलोड की तरह कुछ मौलिक TCC अनुमतियाँ हैं
स्थान
/Library/Scripts/Folder Action Scripts
रूट की आवश्यकता है
ट्रिगर: निर्दिष्ट फ़ोल्डर तक पहुंच
~/Library/Scripts/Folder Action Scripts
ट्रिगर: निर्दिष्ट फ़ोल्डर तक पहुंच
विवरण और शोषण
फ़ोल्डर क्रियाएँ स्क्रिप्ट हैं जो फ़ोल्डर में परिवर्तनों द्वारा स्वचालित रूप से ट्रिगर होते हैं जैसे आइटम जोड़ना, हटाना, या अन्य क्रियाएँ जैसे फ़ोल्डर विंडो खोलना या आकार बदलना। ये क्रियाएँ विभिन्न कार्यों के लिए उपयोगी हो सकती हैं, और इन्हें विभिन्न तरीकों से ट्रिगर किया जा सकता है जैसे फाइंडर UI या टर्मिनल कमांड्स का उपयोग करके।
फ़ोल्डर क्रियाएँ सेट करने के लिए, आपके पास विकल्प हैं जैसे:
Automator के साथ एक फ़ोल्डर क्रिया वर्कफ़्लो बनाना और इसे एक सेवा के रूप में स्थापित करना।
फ़ोल्डर क्रियाएँ सेटअप में एक स्क्रिप्ट मैन्युअल रूप से जोड़ना जैसे किसी फ़ोल्डर के संदर्भ मेनू में।
System Events.app
के लिए Apple इवेंट संदेश भेजने के लिए OSAScript का उपयोग करना जिससे फ़ोल्डर क्रिया सेटअप करने के लिए कार्यक्रमात्मक रूप से सेट किया जा सके।
यह विधि विशेष रूप से सिस्टम में क्रिया को समाहित करने के लिए उपयोगी है।
निम्नलिखित स्क्रिप्ट एक उदाहरण है कि फ़ोल्डर क्रिया द्वारा क्या क्रियान्वित किया जा सकता है:
ऊपर दिए गए स्क्रिप्ट को फ़ोल्डर क्रियाएँ द्वारा उपयोग के लिए कंपाइल करने के लिए:
धारणा करें कि स्क्रिप्ट को कंपाइल कर दिया गया है, नीचे दिए गए स्क्रिप्ट को निष्पादित करके फोल्डर क्रियाएँ सेट करें। यह स्क्रिप्ट फोल्डर क्रियाएँ सार्वजनिक रूप से सक्षम करेगा और पिछले कंपाइल किए गए स्क्रिप्ट को विशेष रूप से डेस्कटॉप फोल्डर से जोड़ेगा।
उपस्थापन स्क्रिप्ट को निम्नलिखित के साथ चलाएं:
यह उस स्थिरता को GUI के माध्यम से लागू करने का तरीका है:
यह वह स्क्रिप्ट है जो क्रियान्वित किया जाएगा:
इसे इस प्रकार कंपाइल करें: osacompile -l JavaScript -o folder.scpt source.js
इसे इस स्थान पर ले जाएँ:
तो, Folder Actions Setup
ऐप्लिकेशन खोलें, वह फ़ोल्डर चुनें जिसे आप देखना चाहें और अपने मामले में folder.scpt
को चुनें (मेरे मामले में मैंने इसे output2.scp कहा था):
अब, अगर आप Finder के साथ उस फ़ोल्डर को खोलते हैं, तो आपका स्क्रिप्ट चलाया जाएगा।
यह विन्यास plist में संग्रहित था जो ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
में base64 प्रारूप में स्थित है।
अब, इस परिस्थिति को GUI एक्सेस के बिना तैयार करने का प्रयास करें:
~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
की/tmp
में बैकअप बनाने के लिए कॉपी करें:
cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp
आपने जो Folder Actions सेट किए हैं, उन्हें हटाएं:
अब हमारे पास एक खाली वातावरण है
बैकअप फ़ाइल कॉपी करें:
cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/
इस कॉन्फ़िगरेशन को उपभोक्ता करने के लिए Folder Actions Setup.app खोलें:
open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"
और यह मेरे लिए काम नहीं किया, लेकिन ये व्राइटअप से निर्देश हैं:(
डॉक शॉर्टकट्स
Writeup: https://theevilbit.github.io/beyond/beyond_0027/
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
लेकिन आपको सिस्टम के अंदर एक हानिकारक एप्लिकेशन इंस्टॉल करना चाहिए
TCC बायपास: 🔴
स्थान
~/Library/Preferences/com.apple.dock.plist
ट्रिगर: जब उपयोगकर्ता डॉक के अंदर ऐप पर क्लिक करता है
विवरण और शोषण
डॉक में जो सभी एप्लिकेशन दिखाई देते हैं, वे सभी plist में निर्दिष्ट हैं: ~/Library/Preferences/com.apple.dock.plist
एक एप्लिकेशन जोड़ना संभव है बस इसके साथ:
कुछ सामाजिक इंजीनियरिंग का उपयोग करके आप उदाहरण के रूप में Google Chrome का अनुकरण डॉक के अंदर कर सकते हैं और वास्तव में अपनी स्क्रिप्ट को निष्पादित कर सकते हैं:
रंग चुनने वाले
लेख: https://theevilbit.github.io/beyond/beyond_0017
सैंडबॉक्स को छलने के लिए उपयोगी: 🟠
एक बहुत विशिष्ट क्रिया होनी चाहिए
आप एक और सैंडबॉक्स में समाप्त हो जाएंगे
TCC बायपास: 🔴
स्थान
/Library/ColorPickers
रूट की आवश्यकता है
ट्रिगर: रंग चुनने वाला उपयोग करें
~/Library/ColorPickers
ट्रिगर: रंग चुनने वाला उपयोग करें
विवरण और शोषण
अपने कोड के साथ एक रंग चुनने वाले बंडल को कंपाइल करें (आप इसका उदाहरण देख सकते हैं) और एक निर्माता जोड़ें (जैसे स्क्रीन सेवर खंड में) और बंडल को ~/Library/ColorPickers
में कॉपी करें।
फिर, जब रंग चुनने वाला ट्रिगर होता है, तो आपका कोड भी होना चाहिए।
ध्यान दें कि आपकी पुस्तकालय को लोड करने वाला बाइनरी बहुत प्रतिबंधक सैंडबॉक्स है: /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64
फाइंडर सिंक प्लगइन
लेख: https://theevilbit.github.io/beyond/beyond_0026/ लेख: https://objective-see.org/blog/blog_0x11.html
सैंडबॉक्स को छलने के लिए उपयोगी: नहीं, क्योंकि आपको अपना एप्लिकेशन चलाना होगा
TCC बायपास: ???
स्थान
एक विशिष्ट एप्लिकेशन
विवरण और उत्पीड़न
एक एप्लिकेशन उदाहरण जिसमें फाइंडर सिंक एक्सटेंशन है यहाँ पाया जा सकता है.
एप्लिकेशनों में फाइंडर सिंक एक्सटेंशन
हो सकता है। यह एक्सटेंशन एक एप्लिकेशन के अंदर जाएगा जो क्रियान्वित किया जाएगा। इसके अतिरिक्त, एक्सटेंशन अपना कोड निष्क्रिय करने के लिए किसी वैध एप्पल डेवलपर प्रमाणपत्र के साथ साइन किया जाना चाहिए, इसे सैंडबॉक्स में रखा जाना चाहिए (हालांकि ढीली छूटें जोड़ी जा सकती हैं) और ऐसा कुछ ऐसे के साथ पंजीकृत किया जाना चाहिए:
स्क्रीन सेवर
लेख: https://theevilbit.github.io/beyond/beyond_0016/ लेख: https://posts.specterops.io/saving-your-access-d562bf5bf90b
सैंडबॉक्स को छलने के लिए उपयोगी: 🟠
लेकिन आप एक सामान्य एप्लिकेशन सैंडबॉक्स में खत्म हो जाएंगे
TCC बायपास: 🔴
स्थान
/System/Library/Screen Savers
रूट की आवश्यकता
ट्रिगर: स्क्रीन सेवर का चयन करें
/Library/Screen Savers
रूट की आवश्यकता
ट्रिगर: स्क्रीन सेवर का चयन करें
~/Library/Screen Savers
ट्रिगर: स्क्रीन सेवर का चयन करें
विवरण और एक्सप्लॉइट
Xcode में एक नया परियोजना बनाएं और एक नया स्क्रीन सेवर उत्पन्न करने के लिए टेम्पलेट का चयन करें। फिर, उसमें अपना कोड जोड़ें, उदाहरण के लिए निम्नलिखित कोड तक लॉग उत्पन्न करने के लिए।
इसे बनाएं, और .saver
बंडल को ~/Library/Screen Savers
में कॉपी करें। फिर, स्क्रीन सेवर GUI खोलें और जब आप उस पर क्लिक करें, तो यह बहुत सारे लॉग उत्पन्न करना चाहिए:
ध्यान दें कि इस कोड को लोड करने वाले बाइनरी की entitlements में (/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver
) आपको com.apple.security.app-sandbox
मिलेगा, इसलिए आप सामान्य एप्लिकेशन सैंडबॉक्स के अंदर होंगे।
Saver code:
स्पॉटलाइट प्लगइन
लेख: https://theevilbit.github.io/beyond/beyond_0011/
सैंडबॉक्स को छलने के लिए उपयोगी: 🟠
लेकिन आप एक एप्लिकेशन सैंडबॉक्स में खत्म हो जाएंगे
TCC बायपास: 🔴
सैंडबॉक्स बहुत सीमित लगती है
स्थान
~/Library/Spotlight/
ट्रिगर: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक नया फ़ाइल बनाई जाती है।
/Library/Spotlight/
ट्रिगर: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक नया फ़ाइल बनाई जाती है।
रूट की आवश्यकता है
/System/Library/Spotlight/
ट्रिगर: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक नया फ़ाइल बनाई जाती है।
रूट की आवश्यकता है
Some.app/Contents/Library/Spotlight/
ट्रिगर: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक नया फ़ाइल बनाई जाती है।
नई एप्लिकेशन की आवश्यकता है
विवरण और शोषण
स्पॉटलाइट macOS की एक निर्मित खोज सुविधा है, जिसका उद्देश्य उपयोगकर्ताओं को उनके कंप्यूटर पर डेटा तक तेजी से और व्यापक रूप से पहुंचने की सुविधा प्रदान करना है। इस त्वरित खोज क्षमता को सुविधाजनक बनाने के लिए, स्पॉटलाइट एक स्वाधिकारी डेटाबेस बनाए रखता है और एक सूची बनाता है जिसमें अधिकांश फ़ाइलों को पार्स करके, फ़ाइलों के नाम और उनकी सामग्री के माध्यम से त्वरित खोज की अनुमति देता है।
स्पॉटलाइट के अंतर्निहित मेकेनिज़्म में एक केंद्रीय प्रक्रिया है जिसका नाम 'mds' है, जो 'मेटाडेटा सर्वर' के लिए खड़ा है। इस प्रक्रिया के साथ, कई 'mdworker' डेमन हैं जो विभिन्न रखरखाव कार्य करते हैं, जैसे कि विभिन्न फ़ाइल प्रकारों को इंडेक्स करना (ps -ef | grep mdworker
). ये कार्य संभव होते हैं स्पॉटलाइट इम्पोर्टर प्लगइन्स, या ".mdimporter बंडल्स", जो स्पॉटलाइट को विभिन्न फ़ाइल प्रारूपों के साथ सामग्री को समझने और इंडेक्स करने की अनुमति देते हैं।
प्लगइन्स या .mdimporter
बंडल पहले से उल्लिखित स्थानों में स्थित हैं और यदि एक नया बंडल दिखाई देता है तो इसे मिनटों के भीतर लोड किया जाता है (किसी भी सेवा को पुनः आरंभ करने की आवश्यकता नहीं है)। ये बंडल्स इंडिकेट करने की आवश्यकता है कि वे कौन से फ़ाइल प्रकार और एक्सटेंशन को प्रबंधित कर सकते हैं, इस प्रकार, स्पॉटलाइट उन्हें उपयोग करेगा जब एक नयी फ़ाइल जिसमें उल्लिखित एक्सटेंशन बनाई जाती है।
सभी mdimporters
को खोजना संभव है जोड़कर चलाते हुए:
और उदाहरण के लिए /Library/Spotlight/iBooksAuthor.mdimporter इन प्रकार के फ़ाइलों को पार्स करने के लिए उपयोग किया जाता है (एक्सटेंशन .iba
और .book
आदि):
यदि आप अन्य mdimporter
की Plist की जाँच करते हैं तो आपको प्रविष्टि UTTypeConformsTo
नहीं मिलेगा। इसका कारण यह है कि यह एक बिल्ट-इन यूनिफॉर्म टाइप पहचानकर्ता (UTI) है और इसे विस्तारित करने की आवश्यकता नहीं है।
इसके अतिरिक्त, सिस्टम डिफ़ॉल्ट प्लगइन हमेशा प्राथमिकता देते हैं, इसलिए एक हमलावर केवल उन फ़ाइलों तक पहुँच सकता है जिन्हें एप्पल के अपने mdimporters
द्वारा अन्यथा सूचीबद्ध नहीं किया गया है।
अपना खुद का इम्पोर्टर बनाने के लिए आप इस परियोजना से शुरू कर सकते हैं: https://github.com/megrimm/pd-spotlight-importer और फिर नाम, CFBundleDocumentTypes
बदलें और UTImportedTypeDeclarations
जो आप समर्थन देना चाहेंगे उन एक्सटेंशन को समर्थन देने के लिए जोड़ें और उन्हें schema.xml
में पुनरावलोकन करें।
फिर GetMetadataForFile
फ़ंक्शन को बदलें ताकि जब एक फ़ाइल बनाई जाती है जिसमें प्रोसेस की गई एक्सटेंशन हो, तो आपका पेलोड निष्पादित हो।
अंततः अपना नया .mdimporter
बनाएं और कॉपी करें एक में से तीन पिछले स्थानों में और आप जब भी यह लोड होता है लॉगों की मॉनिटरिंग या mdimport -L
की जांच कर सकते हैं।
प्राथमिकता पैन
ऐसा लगता नहीं है कि यह अब काम कर रहा है।
लेखन: https://theevilbit.github.io/beyond/beyond_0009/
स्थान
/System/Library/PreferencePanes
/Library/PreferencePanes
~/Library/PreferencePanes
विवरण
ऐसा लगता नहीं है कि यह अब काम कर रहा है।
रूट सैंडबॉक्स छलावा
यहाँ आपको सैंडबॉक्स छलावा के लिए उपयोगी शुरू स्थान मिलेंगे जो आपको बस किसी फ़ाइल में लिखकर कुछ को निष्पादित करने की अनुमति देता है जो रूट होने पर होता है और/या अन्य अजीब शर्तों की आवश्यकता होती है।
आवधिक
लेखन: https://theevilbit.github.io/beyond/beyond_0019/
स्थान
/etc/periodic/daily
,/etc/periodic/weekly
,/etc/periodic/monthly
,/usr/local/etc/periodic
रूट की आवश्यकता है
ट्रिगर: जब समय आता है
/etc/daily.local
,/etc/weekly.local
या/etc/monthly.local
रूट की आवश्यकता है
ट्रिगर: जब समय आता है
विवरण और शोषण
आवधिक स्क्रिप्ट (/etc/periodic
) /System/Library/LaunchDaemons/com.apple.periodic*
में कॉन्फ़िगर किए गए लॉन्च डेमन्स के कारण निष्पादित होते हैं। ध्यान दें कि /etc/periodic/
में स्टोर किए गए स्क्रिप्ट फ़ाइल के मालिक के रूप में निष्पादित किए जाते हैं, इसलिए यह किसी संभावित प्रिविलेज उन्नति के लिए काम नहीं करेगा।
वहाँ अन्य आवधिक स्क्रिप्ट हैं जो निष्पादित किए जाएंगे जिन्हें /etc/defaults/periodic.conf
में दिखाया गया है:
यदि आप /etc/daily.local
, /etc/weekly.local
या /etc/monthly.local
फ़ाइलों में से किसी भी फ़ाइल को लिखने में कामयाब होते हैं तो यह जल्दी या धीरे से क्रियान्वित होगा।
ध्यान दें कि आवधिक स्क्रिप्ट स्क्रिप्ट के मालिक के रूप में क्रियान्वित किया जाएगा। इसलिए यदि एक सामान्य उपयोगकर्ता स्क्रिप्ट का मालिक है, तो यह उस उपयोगकर्ता के रूप में क्रियान्वित किया जाएगा (यह विशेषाधिकार उन्नति हमलों को रोक सकता है)।
PAM
Writeup: Linux Hacktricks PAM Writeup: https://theevilbit.github.io/beyond/beyond_0005/
स्थान
रूट हमेशा आवश्यक है
विवरण और शोषण
क्योंकि PAM अधिक स्थायित्व और मैलवेयर पर ध्यान केंद्रित है जो macOS के अंदर आसान निष्पादन पर है, इस ब्लॉग में एक विस्तृत व्याख्या नहीं दी जाएगी, इस तकनीक को बेहतर समझने के लिए व्रीटअप्स पढ़ें।
PAM मॉड्यूल्स की जांच करें:
macOS Auto Start Locations
एक persistence/privilege escalation तकनीक PAM का दुरुपयोग करना इतना आसान है जितना कि मॉड्यूल /etc/pam.d/sudo में पंक्ति जोड़ना:
इसका रूप यहाँ जैसा दिखेगा:
और इसलिए sudo
का उपयोग करने का प्रयास किया जाएगा।
ध्यान दें कि यह निर्देशिका TCC द्वारा संरक्षित है, इसलिए उपयोगकर्ता को पहुंच के लिए पूछा जाएगा।
अधिकृति प्लगइन
लेख: https://theevilbit.github.io/beyond/beyond_0028/ लेख: https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65
सैंडबॉक्स को छलने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए और अतिरिक्त कॉन्फ़िगरेशन करनी होगी
TCC बायपास: ???
स्थान
/Library/Security/SecurityAgentPlugins/
रूट की आवश्यकता है
अधिकृति डेटाबेस को प्लगइन का उपयोग करने के लिए कॉन्फ़िगर करना भी आवश्यक है
विवरण और शोषण
आप एक अधिकृति प्लगइन बना सकते हैं जो एक उपयोगकर्ता लॉग-इन करते समय निष्क्रिय रहने के लिए क्रियान्वित होगा। इन प्लगइन्स में से एक बनाने के लिए अधिक जानकारी के लिए पिछले लेखों की जाँच करें (और सावधान रहें, एक खराब लिखा हुआ प्लगइन आपको बाहर निकाल सकता है और आपको अपने मैक को पुनर्प्राप्ति मोड से साफ करने की आवश्यकता होगी)।
बंडल को लोड होने वाले स्थान पर मूव करें:
अंत में इस प्लगइन को लोड करने के लिए नियम जोड़ें:
evaluate-mechanisms
अधिकृति फ्रेमवर्क को बताएगा कि इसे अधिकृति के लिए बाहरी तंत्र को कॉल करने की आवश्यकता होगी। इसके अतिरिक्त, privileged
इसे रूट द्वारा निष्पादित करेगा।
इसे ट्रिगर करें:
और फिर कर्मचारी समूह को सुडो एक्सेस होना चाहिए (पढ़ें /etc/sudoers
को कन्फर्म करने के लिए)।
Man.conf
लेख: https://theevilbit.github.io/beyond/beyond_0030/
सैंडबॉक्स को बाईपास करने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए और उपयोगकर्ता को man का उपयोग करना चाहिए
TCC बाईपास: 🔴
स्थान
/private/etc/man.conf
रूट की आवश्यकता है
/private/etc/man.conf
: जबकि man का उपयोग किया जाता है
विवरण और एक्सप्लॉइट
कॉन्फ़िग फ़ाइल /private/etc/man.conf
दर्शाती है कि man दस्तावेज़ फ़ाइलों को खोलने के लिए कौन सा बाइनरी/स्क्रिप्ट उपयोग करना है। इसलिए, एक्सीक्यूटेबल का पथ संशोधित किया जा सकता है ताकि हर बार जब उपयोगकर्ता किसी दस्तावेज़ को पढ़ने के लिए man का उपयोग करता है, एक बैकडोर निष्पादित हो।
उदाहरण के लिए /private/etc/man.conf
में सेट करें:
और फिर /tmp/view
को इस प्रकार बनाएं:
Apache2
लेख: https://theevilbit.github.io/beyond/beyond_0023/
सैंडबॉक्स को बाईपास करने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए और एपाचे को चलाया जाना चाहिए
TCC बाईपास: 🔴
Httpd के पास entitlements नहीं हैं
स्थान
/etc/apache2/httpd.conf
रूट की आवश्यकता
ट्रिगर: जब Apache2 शुरू होता है
विवरण और उत्पीड़न
आप /etc/apache2/httpd.conf
में इंडिकेट कर सकते हैं कि एक मॉड्यूल लोड करने के लिए एक लाइन जोड़ें जैसे:
इस तरह आपके संकलित मॉड्यूल Apache द्वारा लोड किए जाएंगे। एकमात्र बात यह है कि आपको इसे एक मान्य Apple प्रमाणपत्र के साथ साइन करने की आवश्यकता है, या फिर आपको सिस्टम में एक नया विश्वसनीय प्रमाणपत्र जोड़ने और उसके साथ साइन करने की आवश्यकता है।
फिर, यदि आवश्यक हो, सर्वर को शुरू होने की सुनिश्चित करने के लिए आपको निम्नलिखित को निष्पादित करना होगा:
कोड उदाहरण Dylb के लिए:
BSM ऑडिट फ्रेमवर्क
लेख: https://theevilbit.github.io/beyond/beyond_0031/
सैंडबॉक्स को छलने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए, auditd चल रहा होना चाहिए और चेतावनी का कारण होना चाहिए
TCC छलांग: 🔴
स्थान
/etc/security/audit_warn
रूट की आवश्यकता
ट्रिगर: जब auditd चेतावनी का पता लगाता है
विवरण और शोषण
जबकि auditd चेतावनी का पता लगाता है, तो स्क्रिप्ट /etc/security/audit_warn
क्रियान्वित होती है। इसलिए आप अपने पेलोड को इस पर जोड़ सकते हैं।
स्टार्टअप आइटम्स
यह पुराना हो गया है, इसलिए इन निर्देशिकाओं में कुछ भी नहीं मिलना चाहिए।
StartupItem एक निर्दिष्ट निर्देशिका है जो या तो /Library/StartupItems/
या /System/Library/StartupItems/
के भीतर स्थित होना चाहिए। एक बार यह निर्देशिका स्थापित होता है, तो इसमें दो विशिष्ट फ़ाइलें होनी चाहिए:
एक rc स्क्रिप्ट: स्टार्टअप पर निष्पादित एक शैल स्क्रिप्ट।
एक plist फ़ाइल, विशेष रूप से
StartupParameters.plist
नामक, जिसमें विभिन्न कॉन्फ़िगरेशन सेटिंग्स होती हैं।
सुनिश्चित करें कि एरसी स्क्रिप्ट और StartupParameters.plist
फ़ाइल दोनों सही ढंग से StartupItem निर्देशिका के भीतर स्थापित हैं ताकि स्टार्टअप प्रक्रिया उन्हें पहचान और उपयोग कर सके।
सुपर सेवा नाम
लोकेशन:
/Library/LaunchDaemons
विवरण: यहाँ प्रणाली के स्तर पर सेवाओं को आरंभ करने के लिए आवश्यक फ़ाइलें होती हैं। यहाँ आरंभिक स्तर पर सेवाओं को आरंभ करने के लिए आवश्यक फ़ाइलें होती हैं। यह सेवाएं उपयोगकर्ता के लॉगिन के पहले आरंभ होती हैं।
सुरक्षा सुझाव: केवल आवश्यक सेवाओं को इस लोकेशन पर जोड़ें और अनावश्यक सेवाओं को हटाएं। सेवा की फ़ाइलों को सुरक्षित रखने के लिए अनुमतियाँ संशोधित करें।
emond
मैं अपने macOS में इस कॉम्पोनेंट को नहीं ढूंढ पा रहा हूँ, इसके बारे में अधिक जानकारी के लिए व्रिटअप देखें
व्रिटअप: https://theevilbit.github.io/beyond/beyond_0023/
एप्पल द्वारा पेश किया गया, emond एक लॉगिंग मेकेनिज़्म है जो अविकसित या संभावित तौर पर छोड़ दिया गया लगता है, फिर भी यह उपलब्ध है। एक Mac प्रशासक के लिए विशेष रूप से फायदेमंद न होने के बावजूद, यह अप्रसिद्ध सेवा एक सूक्ष्म स्थिरता विधि के रूप में काम कर सकती है जो धारावाहिक कलाकारों के लिए सेवा कर सकती है, जिसे अधिकांश macOS प्रशासक शायद न देखें।
इसके अस्तित्व के जानकारों के लिए, emond का किसी भी दुरुपयोग की पहचान सीधी है। इस सेवा के लिए सिस्टम का लॉन्चडेमन स्क्रिप्ट को एक ही निर्देशिका में निष्पादित करने की तलाश में होता है। इसे जांचने के लिए, निम्नलिखित कमांड का उपयोग किया जा सकता है:
XQuartz
Writeup: https://theevilbit.github.io/beyond/beyond_0018/
स्थान
/opt/X11/etc/X11/xinit/privileged_startx.d
रूट की आवश्यकता है
ट्रिगर: XQuartz के साथ
विवरण और शोषण
XQuartz अब macOS में स्थापित नहीं है, इसलिए अधिक जानकारी के लिए व्रिटअप देखें।
kext
केक्स्ट को इंस्टॉल करना इतना जटिल है कि मैं इसे सैंडबॉक्स से बाहर निकलने या स्थिरता के लिए नहीं मानता (जब तक आपके पास कोई शोषण नहीं है)
स्थान
केक्स्ट को स्टार्टअप आइटम के रूप में इंस्टॉल करने के लिए, इसे निम्नलिखित स्थानों में इंस्टॉल किया जाना चाहिए:
/System/Library/Extensions
ओएस एक्स ऑपरेटिंग सिस्टम में बिल्ट इन केक्स्ट फ़ाइलें।
/Library/Extensions
तृतीय पक्ष सॉफ़्टवेयर द्वारा इंस्टॉल की गई केक्स्ट फ़ाइलें
आप वर्तमान में लोड केक्स्ट फ़ाइलों की सूची नीचे दिए गए कमांड के साथ देख सकते हैं:
amstoold
लिखावट: https://theevilbit.github.io/beyond/beyond_0029/
स्थान
/usr/local/bin/amstoold
रूट की आवश्यकता है
विवरण और शोषण
जैसा कि प्रतीत होता है, /System/Library/LaunchAgents/com.apple.amstoold.plist
से plist
इस बाइनरी का उपयोग कर रहा था जबकि एक XPC सेवा को उजागर कर रहा था... बात यह है कि बाइनरी मौजूद नहीं थी, इसलिए आप कुछ वहाँ रख सकते थे और जब XPC सेवा को बुलाया जाता है तो आपकी बाइनरी को बुलाया जाएगा।
मुझे अब अपने macOS में इसे नहीं मिला।
xsanctl
लिखावट: https://theevilbit.github.io/beyond/beyond_0015/
स्थान
/Library/Preferences/Xsan/.xsanrc
रूट की आवश्यकता है
ट्रिगर: जब सेवा चलाई जाती है (कम होता है)
विवरण और शोषण
ऐसा लगता है कि इस स्क्रिप्ट को चलाना बहुत सामान्य नहीं है और मुझे अपने macOS में यह भी नहीं मिला, इसलिए अगर आप अधिक जानकारी चाहते हैं तो लिखावट देखें।
/etc/rc.common
यह आधुनिक MacOS संस्करणों में काम नहीं कर रहा है
यहाँ ऐसे कमांड रखना भी संभव है जो प्रारंभ में निष्पादित किए जाएंगे। सामान्य rc.common स्क्रिप्ट का उदाहरण:
Persistence techniques and tools
Last updated