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
में एक एम्बेडेड प्रॉपर्टी सूची है जो अन्य प्रसिद्ध सेवाएं शुरू करने के लिए जिन्हें launchd को शुरू करना है, शामिल है। इसके अलावा, इन सेवाओं में RequireSuccess
, RequireRun
और RebootOnSuccess
शामिल हो सकते हैं जिसका मतलब है कि वे चलाए जाने और सफलतापूर्वक पूरा किया जाना चाहिए।
यह तो स्वायत्त के कारण संशोधित नहीं किया जा सकता।
विवरण और शोषण
launchd
OX S कर्नेल द्वारा स्टार्टअप पर पहला प्रक्रिया है और बंद करने पर अंतिम होने वाला है। यहें हमेशा पीआईडी 1 होना चाहिए। यह प्रक्रिया ASEP प्लिस्ट में निर्दिष्ट की गई विन्यासों को पढ़ेगा और निष्पादित करेगा:
/Library/LaunchAgents
: प्रशासक द्वारा स्थापित प्रति-उपयोगकर्ता एजेंट/Library/LaunchDaemons
: प्रशासक द्वारा स्थापित सिस्टम-व्यापी डेमन्स/System/Library/LaunchAgents
: Apple द्वारा प्रदान किए गए प्रति-उपयोगकर्ता एजेंट्स।/System/Library/LaunchDaemons
: Apple द्वारा प्रदान किए गए सिस्टम-व्यापी डेमन्स।
जब एक उपयोगकर्ता लॉग इन करता है, तो /Users/$USER/Library/LaunchAgents
और /Users/$USER/Library/LaunchDemons
में स्थित प्लिस्ट लॉग इन करने वाले उपयोगकर्ताओं की अनुमतियों के साथ शुरू हो जाते हैं।
एजेंट्स और डेमन्स के मुख्य अंतर है कि एजेंट्स उपयोगकर्ता लॉग इन करते समय लोड होते हैं और डेमन्स सिस्टम स्टार्टअप पर लोड होते हैं (क्योंकि एसएसएच जैसी सेवाएं हैं जो किसी भी उपयोगकर्ता को सिस्टम तक पहुंचने से पहले निष्पादित होने की आवश्यकता है)। इसके अलावा, एजेंट्स में जीयूआई का उपयोग किया जा सकता है जबकि डेमन्स को पिछले में चलाने की आवश्यकता होती है।
ऐसे मामले होते हैं जहां एक एजेंट को उपयोगकर्ता लॉगिन करने से पहले निष्पादित किया जाना चाहिए, इन्हें प्रीलॉगिन एजेंट्स कहा जाता है। उदाहरण के लिए, यह लॉगिन पर सहायक प्रौद्योगिकी प्रदान करने के लिए उपयोगी है। इन्हें /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 किसी उपयोगकर्ता द्वारा स्वामित्व में है, तो यदि यह एक डेमन सिस्टम वाइड फोल्डर में है, कार्य उपयोगकर्ता के रूप में और न कि रूट के रूप में निष्पादित किया जाएगा। यह कुछ प्रिविलेज उन्नति हमलों को रोक सकता है।
लॉन्चड के बारे में अधिक जानकारी
launchd
कर्नेल से शुरू किया जाने वाला पहला उपयोगकर्ता मोड प्रक्रिया है। प्रक्रिया प्रारंभ होना सफल होना चाहिए और यह बाहर नहीं निकल सकता या क्रैश हो सकता है। यह कुछ किलिंग सिग्नल के खिलाफ भी सुरक्षित है।
launchd
की पहली चीजों में से एक है कि यह सभी डेमन को शुरू करेगा जैसे:
समय के आधार पर निष्पादित होने वाले टाइमर डेमन:
atd (
com.apple.atrun.plist
):StartInterval
30 मिनट हैcrond (
com.apple.systemstats.daily.plist
):StartCalendarInterval
00:15 पर शुरू होने के लिएनेटवर्क डेमन जैसे:
org.cups.cups-lpd
: TCP में सुनता है (SockType: stream
) जिसमेंSockServiceName: printer
हैSockServiceName या तो एक पोर्ट होना चाहिए या
/etc/services
से सेवा होनी चाहिएcom.apple.xscertd.plist
: पोर्ट 1640 में TCP पर सुनता हैजब एक निर्दिष्ट पथ परिवर्तित होता है, तो वे निष्पादित होने वाले पथ डेमन:
com.apple.postfix.master
:/etc/postfix/aliases
पथ की जांच कर रहा हैIOKit सूचना डेमन:
com.apple.xartstorageremoted
:"com.apple.iokit.matching" => { "com.apple.device-attach" => { "IOMatchLaunchStream" => 1 ...
Mach पोर्ट:
com.apple.xscertd-helper.plist
: इसमेंMachServices
प्रविष्टि में नामcom.apple.xscertd.helper
दिखा रहा हैUserEventAgent:
यह पिछले से अलग है। यह विशेष घटना के प्रतिक्रिया में ऐप्स को निष्पादित करने के लिए launchd को बनाता है। हालांकि, इस मामले में, मुख्य बाइनरी शामिल नहीं है
launchd
बल्कि/usr/libexec/UserEventAgent
है। यह SIP प्रतिबंधित फ़ोल्डर /System/Library/UserEventPlugins/ से प्लगइन्स लोड करता है जहां प्रत्येक प्लगइन अपनेXPCEventModuleInitializer
कुंजी में अपना प्रारंभक दर्शाता है या, पुराने प्लगइन्स के मामले में, इसकेInfo.plist
केCFPluginFactories
डिक्शनरी के कुंजीFB86416D-6164-2070-726F-70735C216EC0
के तहत अपना प्रारंभक दर्शाता है।
शैल स्टार्टअप फ़ाइलें
लेखन: 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
के साथ पढ़ सकते हैं जो शैल स्टार्टअप फ़ाइलों का विवरण देता है।
फिर से खुली एप्लिकेशन
सूचित शोषण और लॉग-आउट और लॉग-इन या यहाँ तक कि बूट करने से मेरे लिए ऐप को निष्पादित करने में काम नहीं आया। (शायद ऐप निष्पादित नहीं हो रहा था, शायद यह चाहिए कि ये क्रियाएँ किए जाते समय यह चल रहा हो)
Writeup: https://theevilbit.github.io/beyond/beyond_0021/
स्थान
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.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
में इस प्रकार दर्शाया जाता है:
इसलिए, अगर सिस्टम में टर्मिनल की प्राथमिकताओं का प्लिस्ट अधिलिखित किया जा सकता है, तो open
कार्यक्षमता का उपयोग करके टर्मिनल खोली जा सकती है और उस कमांड को क्रियान्वित किया जाएगा।
आप इसे कमांड लाइन से जोड़ सकते हैं:
टर्मिनल स्क्रिप्ट / अन्य फ़ाइल एक्सटेंशन
सैंडबॉक्स को छलने के लिए उपयोगी: ✅
TCC बायपास: ✅
उपयोगकर्ता को इस्तेमाल करने की अनुमतियाँ होने के लिए टर्मिनल का उपयोग करें
स्थान
कहीं भी
ट्रिगर: टर्मिनल खोलें
विवरण और शोषण
यदि आप एक .terminal
स्क्रिप्ट बनाते हैं और उसे खोलते हैं, तो टर्मिनल एप्लिकेशन स्वचालित रूप से आमंत्रित होगा ताकि वहाँ निर्दिष्ट कमांड को निष्पादित कर सके। यदि टर्मिनल ऐप के पास कुछ विशेष अधिकार हैं (जैसे TCC), तो आपका कमांड उन विशेष अधिकारों के साथ चलाया जाएगा।
इसे इसके साथ आजमाएं:
ऑडियो प्लगइन्स
लेख: 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 या कंप्यूटर को पुनरारंभ करें
विवरण
पिछले लेखों के अनुसार कुछ ऑडियो प्लगइन्स को कंपाइल करना संभव है और उन्हें लोड करने में सक्षम हो सकता है।
क्विकलुक प्लगइन्स
लेख: 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 प्लगइन कंपाइल करना संभव है, उसे पिछले स्थानों में रखना और फिर समर्थित फ़ाइल पर जाने और उसे ट्रिगर करने के लिए स्पेस दबाने के लिए जाना।
लॉगिन/लॉगआउट हुक्स
यह मेरे लिए काम नहीं किया, न तो उपयोगकर्ता लॉगिनहुक और न ही रूट लॉगआउटहुक
लेख: 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
में स्टोर की जाती है।
इसे हटाने के लिए:
रूट उपयोगकर्ता का एक स्थान /private/var/root/Library/Preferences/com.apple.loginwindow.plist
में संग्रहीत है।
शर्ताधीन सैंडबॉक्स बाईपास
यहाँ आपको सैंडबॉक्स बाईपास के लिए उपयोगी स्थान मिलेगा जो आपको बस किसी चीज को एक फ़ाइल में लिखकर उसे कुछ अद्वितीय स्थितियों जैसे कि विशेष प्रोग्राम स्थापित, "असामान्य" उपयोगकर्ता क्रियाएँ या परिदृश्यों की उम्मीद नहीं है।
क्रॉन
लेखन: 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/
बालूबॉक्स को छलने के लिए उपयोगी: ✅
TCC बायपास: ✅
iTerm2 का उपयोग TCC अनुमतियों को प्रदान करने के लिए किया गया था
स्थान
~/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 boot or login. 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
.
स्क्रिप्ट ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
भी निष्पादित किया जाएगा:
iTerm2 प्राथमिकताएं ~/Library/Preferences/com.googlecode.iterm2.plist
में स्थित हैं जो इसका संकेत दे सकती हैं कि कौन सा कमांड निष्पादित किया जाए जब iTerm2 टर्मिनल खोला जाता है।
यह सेटिंग 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
ट्रिगर: लॉगिन
रूट की आवश्यकता है
विवरण
सिस्टम प्राथमिकताएँ -> उपयोगकर्ता और समूह -> लॉगिन आइटम्स में आप उपयोगकर्ता लॉग इन करते समय क्रियान्वित करने के लिए आइटम्स पा सकते हैं। इन्हें सूचीत करना, कमांड लाइन से जोड़ना और हटाना संभव है:
ये आइटम फ़ाइल में स्टोर होते हैं ~/Library/Application Support/com.apple.backgroundtaskmanagementagent
लॉगिन आइटम को भी इस्तेमाल करके दिखाया जा सकता है API 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
tasks को निश्चित समय पर निष्पादित करने के लिए शेड्यूल करने के लिए डिज़ाइन किया गया है। क्रॉन जॉब्स की तरह, at
tasks को पोस्ट-निष्पादन स्वचालित रूप से हटा दिया जाता है। यह महत्वपूर्ण है कि ये tasks सिस्टम रीबूट के बाद भी स्थायी होते हैं, जिन्हें कुछ शर्तों के तहत सुरक्षा संबंधित चिंताओं के रूप में चिह्नित किया जाता है।
डिफ़ॉल्ट रूप से वे डिसेबल होते हैं लेकिन रूट उपयोगकर्ता उन्हें एनेबल कर सकता है इन्हें के साथ:
यह 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 अधिक स्थायित्व और मैलवेयर पर ध्यान केंद्रित है, इसलिए इस ब्लॉग में इस तकनीक का विस्तृत विवरण नहीं दिया जाएगा, इस तकनीक को बेहतर समझने के लिए राइटअप्स को पढ़ें।
PAM मॉड्यूल्स की जांच करें:
macOS Auto Start Locations
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 का उपयोग करता है तो एक बैकडोर निष्पादित हो।
उदाहरण के लिए /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 निर्देशिका के भीतर स्थापित हैं ताकि स्टार्टअप प्रक्रिया उन्हें पहचान और उपयोग कर सके।
emond
मैं अपने macOS में इस कॉम्पोनेंट को नहीं ढूंढ सकता हूँ, इसके बारे में अधिक जानकारी के लिए व्रिटअप देखें
Writeup: https://theevilbit.github.io/beyond/beyond_0023/
Apple द्वारा पेश किया गया, emond एक लॉगिंग मेकेनिज़्म है जो अविकसित या संभावित तौर पर छोड़ दिया गया लगता है, फिर भी यह पहुंचने में बना हुआ है। एक Mac प्रशासक के लिए विशेष रूप से फायदेमंद नहीं होता है, यह अप्रसिद्ध सेवा खतरे के कलाकारों के लिए एक सूक्ष्म स्थिरता विधि के रूप में काम कर सकती है, जिसे अधिकांश macOS प्रशासक ध्यान नहीं देंगे।
इसके अस्तित्व के जानकार इसका दुरुपयोग पहचानना सीधा है। इस सेवा के लिए सिस्टम का लॉन्चडेमन स्क्रिप्ट्स को एक ही निर्देशिका में निष्पादित करने की तलाश में होता है। इसे जांचने के लिए, निम्नलिखित कमांड का उपयोग किया जा सकता है:
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
इस बाइनरी का उपयोग कर रहा था जबकि एक एक्सपीसी सेवा को उजागर कर रहा था... बात यह है कि बाइनरी मौजूद नहीं थी, इसलिए आप कुछ वहाँ रख सकते थे और जब एक्सपीसी सेवा को कॉल किया जाता है तो आपकी बाइनरी को कॉल किया जाएगा।
मुझे अब अपने 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