macOS Auto Start
Last updated
Last updated
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
यह अनुभाग ब्लॉग श्रृंखला Beyond the good ol' LaunchAgents पर आधारित है, जिसका लक्ष्य है अधिक ऑटोस्टार्ट स्थान जोड़ना (यदि संभव हो) और यह संकेत देना कि कौन सी तकनीकें आजकल काम कर रही हैं नवीनतम macOS (13.4) के संस्करण के साथ और आवश्यक अनुमतियों को निर्दिष्ट करना।
यहां आप सैंडबॉक्स बायपास के लिए उपयोगी स्टार्ट स्थान पा सकते हैं जो आपको किसी चीज़ को एक फ़ाइल में लिखकर और एक बहुत सामान्य क्रिया, एक निर्धारित समय या एक क्रिया जिसे आप आमतौर पर सैंडबॉक्स के अंदर बिना रूट अनुमतियों की आवश्यकता के कर सकते हैं, द्वारा सरलता से निष्पादित करने की अनुमति देता है।
/Library/LaunchAgents
ट्रिगर: रिबूट
रूट आवश्यक
/Library/LaunchDaemons
ट्रिगर: रिबूट
रूट आवश्यक
/System/Library/LaunchAgents
ट्रिगर: रिबूट
रूट आवश्यक
/System/Library/LaunchDaemons
ट्रिगर: रिबूट
रूट आवश्यक
~/Library/LaunchAgents
ट्रिगर: फिर से लॉगिन
~/Library/LaunchDemons
ट्रिगर: फिर से लॉगिन
एक दिलचस्प तथ्य के रूप में, launchd
में Mach-o अनुभाग __Text.__config
में एक एम्बेडेड प्रॉपर्टी लिस्ट है जिसमें अन्य प्रसिद्ध सेवाएँ शामिल हैं जिन्हें launchd को शुरू करना चाहिए। इसके अलावा, इन सेवाओं में RequireSuccess
, RequireRun
और RebootOnSuccess
हो सकते हैं जिसका अर्थ है कि उन्हें चलाना और सफलतापूर्वक पूरा करना चाहिए।
बेशक, इसे कोड साइनिंग के कारण संशोधित नहीं किया जा सकता है।
launchd
OX S कर्नेल द्वारा स्टार्टअप पर निष्पादित होने वाली पहली प्रक्रिया है और शटडाउन पर समाप्त होने वाली अंतिम प्रक्रिया है। इसे हमेशा PID 1 होना चाहिए। यह प्रक्रिया ASEP plist में निर्दिष्ट कॉन्फ़िगरेशन को पढ़ेगी और निष्पादित करेगी:
/Library/LaunchAgents
: व्यवस्थापक द्वारा स्थापित प्रति-उपयोगकर्ता एजेंट
/Library/LaunchDaemons
: व्यवस्थापक द्वारा स्थापित प्रणाली-व्यापी डेमन
/System/Library/LaunchAgents
: Apple द्वारा प्रदान किए गए प्रति-उपयोगकर्ता एजेंट।
/System/Library/LaunchDaemons
: Apple द्वारा प्रदान किए गए प्रणाली-व्यापी डेमन।
जब एक उपयोगकर्ता लॉग इन करता है, तो /Users/$USER/Library/LaunchAgents
और /Users/$USER/Library/LaunchDemons
में स्थित plist को लॉग इन उपयोगकर्ताओं की अनुमतियों के साथ शुरू किया जाता है।
एजेंट और डेमन के बीच मुख्य अंतर यह है कि एजेंट तब लोड होते हैं जब उपयोगकर्ता लॉग इन करता है और डेमन सिस्टम स्टार्टअप पर लोड होते हैं (क्योंकि ऐसे सेवाएँ हैं जैसे ssh जिन्हें किसी भी उपयोगकर्ता के सिस्टम में प्रवेश करने से पहले निष्पादित करने की आवश्यकता होती है)। इसके अलावा, एजेंट GUI का उपयोग कर सकते हैं जबकि डेमन को बैकग्राउंड में चलाना आवश्यक है।
कुछ मामलों में एजेंट को उपयोगकर्ता लॉगिन करने से पहले निष्पादित करने की आवश्यकता होती है, इन्हें PreLoginAgents कहा जाता है। उदाहरण के लिए, यह लॉगिन पर सहायक तकनीक प्रदान करने के लिए उपयोगी है। इन्हें /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
पहला उपयोगकर्ता मोड प्रक्रिया है जो kernel से शुरू होती है। प्रक्रिया प्रारंभ सफल होना चाहिए और यह बंद या क्रैश नहीं हो सकती। यह कुछ किलिंग सिग्नल्स के खिलाफ भी संरक्षित है।
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
: TCP में पोर्ट 1640 पर सुनता है
पाथ डेमन्स जो एक निर्दिष्ट पाथ के बदलने पर निष्पादित होते हैं:
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
के कुंजी FB86416D-6164-2070-726F-70735C216EC0
के तहत CFPluginFactories
शब्दकोश में इंगित करता है।
Writeup: https://theevilbit.github.io/beyond/beyond_0001/ Writeup (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 में मौजूद हैं, उन्हें उपयोग करने के लिए स्पष्ट रूप से बुलाया जाना चाहिए।
zsh का मैन पृष्ठ, जिसे हम man zsh
के साथ पढ़ सकते हैं, स्टार्टअप फ़ाइलों का एक लंबा विवरण है।
संकेतित शोषण को कॉन्फ़िगर करना और लॉग आउट और लॉग इन करना या यहां तक कि रिबूट करना मेरे लिए ऐप को निष्पादित करने के लिए काम नहीं किया। (ऐप निष्पादित नहीं हो रहा था, शायद इसे इन क्रियाओं के प्रदर्शन के समय चलना चाहिए)
लेख: 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}'
के साथ पाया जा सकता है।
पुनः खोली जाने वाली एप्लिकेशनों की जांच करने के लिए आप कर सकते हैं:
इस सूची में एक एप्लिकेशन जोड़ने के लिए आप उपयोग कर सकते हैं:
Sandbox को बायपास करने के लिए उपयोगी: ✅
TCC बायपास: ✅
टर्मिनल का उपयोग करने के लिए उपयोगकर्ता के FDA अनुमतियाँ
~/Library/Preferences/com.apple.Terminal.plist
Trigger: टर्मिनल खोलें
~/Library/Preferences
में उपयोगकर्ता की एप्लिकेशन की प्राथमिकताएँ संग्रहीत होती हैं। इनमें से कुछ प्राथमिकताएँ अन्य एप्लिकेशन/स्क्रिप्ट्स को निष्पादित करने के लिए एक कॉन्फ़िगरेशन रख सकती हैं।
उदाहरण के लिए, टर्मिनल स्टार्टअप में एक कमांड निष्पादित कर सकता है:
यह कॉन्फ़िगरेशन फ़ाइल ~/Library/Preferences/com.apple.Terminal.plist
में इस तरह से परिलक्षित होता है:
तो, यदि सिस्टम में टर्मिनल की प्राथमिकताओं का plist ओवरराइट किया जा सकता है, तो open
कार्यक्षमता का उपयोग टर्मिनल खोलने और उस कमांड को निष्पादित करने के लिए किया जा सकता है।
आप इसे cli से जोड़ सकते हैं:
सैंडबॉक्स को बायपास करने के लिए उपयोगी: ✅
TCC बायपास: ✅
टर्मिनल का उपयोग उपयोगकर्ता के FDA अनुमतियों को प्राप्त करने के लिए करें
कहीं भी
ट्रिगर: टर्मिनल खोलें
यदि आप एक .terminal
स्क्रिप्ट बनाते हैं और इसे खोलते हैं, तो टर्मिनल एप्लिकेशन स्वचालित रूप से वहां निर्दिष्ट कमांड को निष्पादित करने के लिए सक्रिय हो जाएगा। यदि टर्मिनल ऐप के पास कुछ विशेष विशेषाधिकार हैं (जैसे TCC), तो आपका कमांड उन विशेष विशेषाधिकारों के साथ चलाया जाएगा।
इसे आजमाएं:
आप .command
, .tool
एक्सटेंशन का उपयोग कर सकते हैं, जिनमें नियमित शेल स्क्रिप्ट सामग्री होती है और इन्हें भी टर्मिनल द्वारा खोला जाएगा।
यदि टर्मिनल के पास पूर्ण डिस्क एक्सेस है, तो यह उस क्रिया को पूरा करने में सक्षम होगा (ध्यान दें कि निष्पादित कमांड एक टर्मिनल विंडो में दिखाई देगा)।
Writeup: https://theevilbit.github.io/beyond/beyond_0013/ Writeup: 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 या कंप्यूटर को पुनरारंभ करें
पिछले लेखों के अनुसार, कुछ ऑडियो प्लगइन्स को संकलित करना और उन्हें लोड करना संभव है।
Writeup: https://theevilbit.github.io/beyond/beyond_0028/
/System/Library/QuickLook
/Library/QuickLook
~/Library/QuickLook
/Applications/AppNameHere/Contents/Library/QuickLook/
~/Applications/AppNameHere/Contents/Library/QuickLook/
क्विकलुक प्लगइन्स को तब निष्पादित किया जा सकता है जब आप एक फ़ाइल का पूर्वावलोकन ट्रिगर करते हैं (फाइंडर में फ़ाइल का चयन करके स्पेस बार दबाएं) और एक प्लगइन जो उस फ़ाइल प्रकार का समर्थन करता है स्थापित है।
यह संभव है कि आप अपना खुद का क्विकलुक प्लगइन संकलित करें, इसे पिछले स्थानों में से एक में रखें ताकि इसे लोड किया जा सके और फिर एक समर्थित फ़ाइल पर जाएं और इसे ट्रिगर करने के लिए स्पेस दबाएं।
यह मेरे लिए काम नहीं किया, न ही उपयोगकर्ता LoginHook के साथ और न ही रूट LogoutHook के साथ
Writeup: 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
यहाँ आप sandbox bypass के लिए उपयोगी प्रारंभ स्थान पा सकते हैं जो आपको किसी फ़ाइल में लिखकर और विशिष्ट "कार्यक्रमों के स्थापित होने, "असामान्य" उपयोगकर्ता क्रियाओं या वातावरणों जैसी अपेक्षाकृत सामान्य स्थितियों की उम्मीद न करके** कुछ सरलता से निष्पादित करने की अनुमति देता है।
Writeup: https://theevilbit.github.io/beyond/beyond_0004/
Sandbox को बायपास करने के लिए उपयोगी: ✅
हालाँकि, आपको crontab
बाइनरी निष्पादित करने में सक्षम होना चाहिए
या रूट होना चाहिए
TCC बायपास: 🔴
/usr/lib/cron/tabs/
, /private/var/at/tabs
, /private/var/at/jobs
, /etc/periodic/
सीधे लिखने के लिए रूट की आवश्यकता है। यदि आप crontab <file>
निष्पादित कर सकते हैं तो रूट की आवश्यकता नहीं है
Trigger: क्रोन कार्य पर निर्भर करता है
वर्तमान उपयोगकर्ता के क्रोन कार्यों की सूची बनाएं:
आप उपयोगकर्ताओं के सभी क्रॉन कार्य भी देख सकते हैं /usr/lib/cron/tabs/
और /var/at/tabs/
(रूट की आवश्यकता है)।
MacOS में कुछ फ़ोल्डर हैं जो निश्चित आवृत्ति के साथ स्क्रिप्ट निष्पादित करते हैं:
आप वहाँ नियमित cron jobs, at jobs (जिनका बहुत उपयोग नहीं होता) और periodic jobs (मुख्य रूप से अस्थायी फ़ाइलों को साफ़ करने के लिए उपयोग किया जाता है) पा सकते हैं। दैनिक आवधिक कार्यों को उदाहरण के लिए इस तरह चलाया जा सकता है: periodic daily
।
एक user cronjob programatically जोड़ने के लिए, इसका उपयोग करना संभव है:
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
में संग्रहीत स्क्रिप्ट्स निष्पादित की जाएंगी। उदाहरण के लिए:
या:
स्क्रिप्ट ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
भी निष्पादित की जाएगी:
iTerm2 की प्राथमिकताएँ ~/Library/Preferences/com.googlecode.iterm2.plist
में स्थित हैं, जो iTerm2 टर्मिनल खुलने पर निष्पादित करने के लिए एक कमांड को इंगित कर सकती हैं।
यह सेटिंग iTerm2 सेटिंग्स में कॉन्फ़िगर की जा सकती है:
और कमांड प्राथमिकताओं में परिलक्षित होता है:
आप कमांड को निष्पादित करने के लिए सेट कर सकते हैं:
बहुत संभावना है कि iTerm2 प्राथमिकताओं का दुरुपयोग करने के अन्य तरीके हैं ताकि मनमाने आदेशों को निष्पादित किया जा सके।
Writeup: https://theevilbit.github.io/beyond/beyond_0007/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: ✅
लेकिन xbar को स्थापित होना चाहिए
TCC बायपास: ✅
यह एक्सेसिबिलिटी अनुमतियों की मांग करता है
~/Library/Application\ Support/xbar/plugins/
ट्रिगर: एक बार xbar निष्पादित होने पर
यदि लोकप्रिय प्रोग्राम xbar स्थापित है, तो ~/Library/Application\ Support/xbar/plugins/
में एक शेल स्क्रिप्ट लिखना संभव है जो xbar शुरू होने पर निष्पादित होगी:
Writeup: https://theevilbit.github.io/beyond/beyond_0008/
Sandbox को बायपास करने के लिए उपयोगी: ✅
लेकिन Hammerspoon को स्थापित करना आवश्यक है
TCC बायपास: ✅
यह Accessibility अनुमतियों की मांग करता है
~/.hammerspoon/init.lua
Trigger: एक बार hammerspoon निष्पादित होने पर
Hammerspoon macOS के लिए एक स्वचालन प्लेटफ़ॉर्म के रूप में कार्य करता है, जो अपनी संचालन के लिए LUA स्क्रिप्टिंग भाषा का उपयोग करता है। विशेष रूप से, यह पूर्ण AppleScript कोड के एकीकरण और शेल स्क्रिप्टों के निष्पादन का समर्थन करता है, जिससे इसकी स्क्रिप्टिंग क्षमताओं में काफी वृद्धि होती है।
ऐप एकल फ़ाइल, ~/.hammerspoon/init.lua
की तलाश करता है, और जब शुरू किया जाता है तो स्क्रिप्ट निष्पादित होगी।
सैंडबॉक्स को बायपास करने के लिए उपयोगी: ✅
लेकिन BetterTouchTool को स्थापित करना आवश्यक है
TCC बायपास: ✅
यह Automation-Shortcuts और Accessibility अनुमतियों की मांग करता है
~/Library/Application Support/BetterTouchTool/*
यह उपकरण उन अनुप्रयोगों या स्क्रिप्टों को इंगित करने की अनुमति देता है जिन्हें कुछ शॉर्टकट दबाने पर निष्पादित किया जाना है। एक हमलावर अपने शॉर्टकट और क्रिया को डेटाबेस में कॉन्फ़िगर करने में सक्षम हो सकता है ताकि यह मनमाना कोड निष्पादित कर सके (एक शॉर्टकट बस एक कुंजी दबाने के लिए हो सकता है)।
सैंडबॉक्स को बायपास करने के लिए उपयोगी: ✅
लेकिन Alfred को स्थापित करना आवश्यक है
TCC बायपास: ✅
यह Automation, Accessibility और यहां तक कि Full-Disk एक्सेस अनुमतियों की मांग करता है
???
यह कार्यप्रवाह बनाने की अनुमति देता है जो कुछ शर्तें पूरी होने पर कोड निष्पादित कर सकते हैं। संभावित रूप से, एक हमलावर एक कार्यप्रवाह फ़ाइल बना सकता है और Alfred को इसे लोड करने के लिए मजबूर कर सकता है (कार्यप्रवाह का उपयोग करने के लिए प्रीमियम संस्करण का भुगतान करना आवश्यक है)।
Writeup: https://theevilbit.github.io/beyond/beyond_0006/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: ✅
लेकिन ssh को सक्षम और उपयोग करना आवश्यक है
TCC बायपास: ✅
SSH का उपयोग FDA एक्सेस के लिए किया जाता था
~/.ssh/rc
ट्रिगर: ssh के माध्यम से लॉगिन
/etc/ssh/sshrc
रूट आवश्यक
ट्रिगर: ssh के माध्यम से लॉगिन
ssh को चालू करने के लिए Full Disk Access की आवश्यकता होती है:
डिफ़ॉल्ट रूप से, जब तक कि /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 फ़ाइल को लॉगिन आइटम के रूप में संग्रहीत करते हैं, तो Archive Utility
इसे खोलेगा और यदि ज़िप उदाहरण के लिए ~/Library
में संग्रहीत किया गया था और इसमें LaunchAgents/file.plist
फ़ोल्डर था जिसमें एक बैकडोर था, तो वह फ़ोल्डर बनाया जाएगा (यह डिफ़ॉल्ट रूप से नहीं होता) और plist जोड़ा जाएगा ताकि अगली बार जब उपयोगकर्ता फिर से लॉगिन करे, तो plist में इंगित बैकडोर निष्पादित होगा।
एक और विकल्प होगा कि उपयोगकर्ता HOME के अंदर फ़ाइलें .bash_profile
और .zshenv
बनाई जाएं, ताकि यदि फ़ोल्डर LaunchAgents पहले से मौजूद है, तो यह तकनीक अभी भी काम करेगी।
Writeup: https://theevilbit.github.io/beyond/beyond_0014/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: ✅
लेकिन आपको at
को निष्पादित करना होगा और इसे सक्षम होना चाहिए।
TCC बायपास: 🔴
आपको at
को निष्पादित करना होगा और इसे सक्षम होना चाहिए।
at
कार्यों को एक बार के कार्यों को निश्चित समय पर निष्पादित करने के लिए डिज़ाइन किया गया है। क्रॉन कार्यों के विपरीत, at
कार्य निष्पादन के बाद स्वचालित रूप से हटा दिए जाते हैं। यह ध्यान रखना महत्वपूर्ण है कि ये कार्य सिस्टम रिबूट के दौरान स्थायी होते हैं, जो उन्हें कुछ परिस्थितियों में संभावित सुरक्षा चिंताओं के रूप में चिह्नित करता है।
डिफ़ॉल्ट रूप से ये निष्क्रिय होते हैं लेकिन रूट उपयोगकर्ता इन्हें सक्षम कर सकता है:
यह 1 घंटे में एक फ़ाइल बनाएगा:
atq:
का उपयोग करके नौकरी की कतार की जांच करें:
ऊपर हम दो निर्धारित कार्य देख सकते हैं। हम at -c JOBNUMBER
का उपयोग करके कार्य का विवरण प्रिंट कर सकते हैं।
यदि AT कार्य सक्षम नहीं हैं, तो बनाए गए कार्य निष्पादित नहीं होंगे।
The job files can be found at /private/var/at/jobs/
The filename contains the queue, the job number, and the time it’s scheduled to run. For example let’s take a loot at a0001a019bdcd2
.
a
- यह कतार है
0001a
- जॉब नंबर हेक्स में, 0x1a = 26
019bdcd2
- समय हेक्स में। यह युग से बीते मिनटों का प्रतिनिधित्व करता है। 0x019bdcd2
दशमलव में 26991826
है। यदि हम इसे 60 से गुणा करते हैं तो हमें 1619509560
मिलता है, जो कि GMT: 2021. अप्रैल 27., मंगलवार 7:46:00
है।
If we print the job file, we find that it contains the same information we got using at -c
.
Writeup: https://theevilbit.github.io/beyond/beyond_0024/ Writeup: https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d
Useful to bypass sandbox: ✅
But you need to be able to call osascript
with arguments to contact System Events
to be able to configure Folder Actions
TCC bypass: 🟠
It has some basic TCC permissions like Desktop, Documents and Downloads
/Library/Scripts/Folder Action Scripts
Root required
Trigger: Access to the specified folder
~/Library/Scripts/Folder Action Scripts
Trigger: Access to the specified folder
Folder Actions are scripts automatically triggered by changes in a folder such as adding, removing items, or other actions like opening or resizing the folder window. These actions can be utilized for various tasks, and can be triggered in different ways like using the Finder UI or terminal commands.
To set up Folder Actions, you have options like:
Crafting a Folder Action workflow with Automator and installing it as a service.
Attaching a script manually via the Folder Actions Setup in the context menu of a folder.
Utilizing OSAScript to send Apple Event messages to the System Events.app
for programmatically setting up a Folder Action.
This method is particularly useful for embedding the action into the system, offering a level of persistence.
The following script is an example of what can be executed by a Folder Action:
Folder Actions के द्वारा उपरोक्त स्क्रिप्ट को उपयोगी बनाने के लिए, इसे निम्नलिखित का उपयोग करके संकलित करें:
स्क्रिप्ट संकलित होने के बाद, नीचे दिए गए स्क्रिप्ट को निष्पादित करके फ़ोल्डर क्रियाएँ सेट करें। यह स्क्रिप्ट वैश्विक रूप से फ़ोल्डर क्रियाओं को सक्षम करेगी और विशेष रूप से पूर्व में संकलित स्क्रिप्ट को डेस्कटॉप फ़ोल्डर से जोड़ देगी।
setup स्क्रिप्ट चलाएँ:
यह 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/"
और यह मेरे लिए काम नहीं किया, लेकिन ये लिखावट से निर्देश हैं:(
लिखावट: https://theevilbit.github.io/beyond/beyond_0027/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: ✅
लेकिन आपको सिस्टम के अंदर एक दुर्भावनापूर्ण एप्लिकेशन स्थापित करना होगा
TCC बायपास: 🔴
~/Library/Preferences/com.apple.dock.plist
ट्रिगर: जब उपयोगकर्ता डॉक के अंदर ऐप पर क्लिक करता है
सभी एप्लिकेशन जो डॉक में दिखाई देते हैं, उन्हें plist में निर्दिष्ट किया गया है: ~/Library/Preferences/com.apple.dock.plist
आप केवल निम्नलिखित के साथ एक एप्लिकेशन जोड़ना संभव है:
कुछ सोशल इंजीनियरिंग का उपयोग करके आप उदाहरण के लिए Google Chrome की नकल कर सकते हैं डॉक के अंदर और वास्तव में अपना खुद का स्क्रिप्ट चला सकते हैं:
Writeup: 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
Writeup: https://theevilbit.github.io/beyond/beyond_0026/ Writeup: https://objective-see.org/blog/blog_0x11.html
सैंडबॉक्स को बायपास करने के लिए उपयोगी: नहीं, क्योंकि आपको अपना ऐप चलाना होगा
TCC बायपास: ???
एक विशिष्ट ऐप
एक एप्लिकेशन उदाहरण जिसमें एक Finder Sync Extension यहां पाया जा सकता है.
एप्लिकेशन में Finder Sync Extensions
हो सकते हैं। यह एक्सटेंशन एक एप्लिकेशन के अंदर जाएगा जिसे निष्पादित किया जाएगा। इसके अलावा, एक्सटेंशन को अपना कोड निष्पादित करने के लिए साइन किया जाना चाहिए किसी मान्य Apple डेवलपर प्रमाणपत्र के साथ, इसे सैंडबॉक्स किया जाना चाहिए (हालांकि ढीले अपवाद जोड़े जा सकते हैं) और इसे कुछ इस तरह से पंजीकृत किया जाना चाहिए:
Writeup: https://theevilbit.github.io/beyond/beyond_0016/ Writeup: 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 खोलें और यदि आप बस उस पर क्लिक करते हैं, तो यह बहुत सारे लॉग उत्पन्न करना चाहिए:
ध्यान दें कि इस कोड को लोड करने वाले बाइनरी के अधिकारों के अंदर (/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver
) आप com.apple.security.app-sandbox
पा सकते हैं, आप सामान्य एप्लिकेशन सैंडबॉक्स के अंदर होंगे।
Saver code:
writeup: https://theevilbit.github.io/beyond/beyond_0011/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: 🟠
लेकिन आप एक एप्लिकेशन सैंडबॉक्स में समाप्त होंगे
TCC बायपास: 🔴
सैंडबॉक्स बहुत सीमित लगता है
~/Library/Spotlight/
Trigger: एक नई फ़ाइल बनाई जाती है जिसमें स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक्सटेंशन होता है।
/Library/Spotlight/
Trigger: एक नई फ़ाइल बनाई जाती है जिसमें स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक्सटेंशन होता है।
रूट आवश्यक
/System/Library/Spotlight/
Trigger: एक नई फ़ाइल बनाई जाती है जिसमें स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक्सटेंशन होता है।
रूट आवश्यक
Some.app/Contents/Library/Spotlight/
Trigger: एक नई फ़ाइल बनाई जाती है जिसमें स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक्सटेंशन होता है।
नई ऐप आवश्यक
Spotlight macOS की अंतर्निहित खोज सुविधा है, जिसे उपयोगकर्ताओं को अपने कंप्यूटर पर डेटा तक त्वरित और व्यापक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है। इस त्वरित खोज क्षमता को सुविधाजनक बनाने के लिए, Spotlight एक स्वामित्व डेटाबेस बनाए रखता है और अधिकांश फ़ाइलों को पार्स करके एक अनुक्रमणिका बनाता है, जिससे फ़ाइल नामों और उनके सामग्री के माध्यम से तेज़ खोजें संभव होती हैं।
Spotlight का अंतर्निहित तंत्र एक केंद्रीय प्रक्रिया 'mds' नामक है, जिसका अर्थ है 'मेटाडेटा सर्वर'। यह प्रक्रिया पूरी Spotlight सेवा का संचालन करती है। इसके साथ, कई 'mdworker' डेमन होते हैं जो विभिन्न रखरखाव कार्य करते हैं, जैसे विभिन्न फ़ाइल प्रकारों का अनुक्रमण ( ps -ef | grep mdworker
)। ये कार्य Spotlight आयातक प्लगइनों, या ".mdimporter bundles" के माध्यम से संभव होते हैं, जो Spotlight को विभिन्न फ़ाइल प्रारूपों में सामग्री को समझने और अनुक्रमित करने में सक्षम बनाते हैं।
प्लगइन्स या .mdimporter
बंडल पहले उल्लेखित स्थानों में स्थित होते हैं और यदि एक नया बंडल प्रकट होता है, तो इसे एक मिनट के भीतर लोड किया जाता है (किसी सेवा को पुनः प्रारंभ करने की आवश्यकता नहीं है)। इन बंडलों को यह संकेत देना आवश्यक है कि वे कौन से फ़ाइल प्रकार और एक्सटेंशन प्रबंधित कर सकते हैं, इस तरह, Spotlight उन्हें तब उपयोग करेगा जब एक नई फ़ाइल बनाई जाती है जिसमें निर्दिष्ट एक्सटेंशन होता है।
यह संभव है कि सभी mdimporters
को लोड किया गया हो:
और उदाहरण के लिए /Library/Spotlight/iBooksAuthor.mdimporter इन प्रकार की फ़ाइलों (एक्सटेंशन .iba
और .book
सहित) को पार्स करने के लिए उपयोग किया जाता है:
यदि आप अन्य mdimporter
का Plist चेक करते हैं, तो आपको प्रविष्टि UTTypeConformsTo
नहीं मिल सकती। इसका कारण यह है कि यह एक अंतर्निहित Uniform Type Identifiers (UTI) है और इसे एक्सटेंशन निर्दिष्ट करने की आवश्यकता नहीं है।
इसके अलावा, सिस्टम डिफ़ॉल्ट प्लगइन्स हमेशा प्राथमिकता लेते हैं, इसलिए एक हमलावर केवल उन फ़ाइलों तक पहुँच सकता है जो अन्यथा एप्पल के अपने mdimporters
द्वारा अनुक्रमित नहीं हैं।
अपने स्वयं के आयातक को बनाने के लिए, आप इस प्रोजेक्ट से शुरू कर सकते हैं: https://github.com/megrimm/pd-spotlight-importer और फिर नाम, CFBundleDocumentTypes
को बदलें और UTImportedTypeDeclarations
जोड़ें ताकि यह उस एक्सटेंशन का समर्थन करे जिसे आप समर्थन करना चाहते हैं और उन्हें schema.xml
में परिलक्षित करें।
फिर GetMetadataForFile
फ़ंक्शन के कोड को बदलें ताकि जब एक फ़ाइल बनाई जाए जिसमें संसाधित एक्सटेंशन हो, तो आपका पेलोड निष्पादित हो।
अंत में, अपना नया .mdimporter
बनाएं और कॉपी करें और इसे पिछले स्थानों में से एक में रखें और आप यह चेक कर सकते हैं कि यह कब लोड होता है लॉग की निगरानी करके या mdimport -L.
चेक करके।
यह अब काम करता हुआ नहीं लगता।
Writeup: https://theevilbit.github.io/beyond/beyond_0009/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: 🟠
इसे एक विशिष्ट उपयोगकर्ता क्रिया की आवश्यकता है
TCC बायपास: 🔴
/System/Library/PreferencePanes
/Library/PreferencePanes
~/Library/PreferencePanes
यह अब काम करता हुआ नहीं लगता।
यहां आप सैंडबॉक्स बायपास के लिए उपयोगी प्रारंभ स्थान पा सकते हैं जो आपको फाइल में लिखकर कुछ निष्पादित करने की अनुमति देता है, रूट होने पर और/या अन्य अजीब शर्तों की आवश्यकता होती है।
Writeup: 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
) को launch daemons के कारण निष्पादित किया जाता है जो /System/Library/LaunchDaemons/com.apple.periodic*
में कॉन्फ़िगर किए गए हैं। ध्यान दें कि /etc/periodic/
में संग्रहीत स्क्रिप्ट को फाइल के मालिक के रूप में निष्पादित किया जाता है, इसलिए यह संभावित विशेषाधिकार वृद्धि के लिए काम नहीं करेगा।
अन्य आवधिक स्क्रिप्ट हैं जो /etc/defaults/periodic.conf
में निर्दिष्ट की गई हैं:
यदि आप /etc/daily.local
, /etc/weekly.local
या /etc/monthly.local
में से किसी भी फ़ाइल को लिखने में सफल होते हैं, तो यह जल्द या बाद में निष्पादित होगा।
ध्यान दें कि आवधिक स्क्रिप्ट स्क्रिप्ट के मालिक के रूप में निष्पादित होगी। इसलिए यदि एक नियमित उपयोगकर्ता स्क्रिप्ट का मालिक है, तो यह उस उपयोगकर्ता के रूप में निष्पादित होगी (यह विशेषाधिकार वृद्धि हमलों को रोक सकता है)।
Writeup: Linux Hacktricks PAM Writeup: https://theevilbit.github.io/beyond/beyond_0005/
हमेशा रूट की आवश्यकता होती है
चूंकि PAM स्थिरता और मैलवेयर पर अधिक केंद्रित है, जो macOS के अंदर आसान निष्पादन पर है, यह ब्लॉग इस तकनीक को बेहतर ढंग से समझने के लिए विस्तृत व्याख्या नहीं देगा, इस तकनीक को बेहतर समझने के लिए लेखों को पढ़ें।
PAM मॉड्यूल की जांच करें:
एक स्थायीता/अधिकार वृद्धि तकनीक जो PAM का दुरुपयोग करती है, उतनी ही आसान है जितनी कि मॉड्यूल /etc/pam.d/sudo को संशोधित करना और शुरुआत में यह पंक्ति जोड़ना:
तो यह इस तरह कुछ ऐसा दिखेगा:
और इसलिए sudo
का उपयोग करने का कोई भी प्रयास काम करेगा।
ध्यान दें कि यह निर्देशिका TCC द्वारा सुरक्षित है, इसलिए यह अत्यधिक संभावना है कि उपयोगकर्ता को पहुंच के लिए एक प्रॉम्प्ट मिलेगा।
एक और अच्छा उदाहरण su है, जहाँ आप देख सकते हैं कि PAM मॉड्यूल को पैरामीटर देना भी संभव है (और आप इस फ़ाइल को भी बैकडोर कर सकते हैं):
Writeup: https://theevilbit.github.io/beyond/beyond_0028/ Writeup: https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65
सैंडबॉक्स को बायपास करने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए और अतिरिक्त कॉन्फ़िगरेशन करनी होगी
TCC बायपास: ???
/Library/Security/SecurityAgentPlugins/
रूट की आवश्यकता
प्लगइन का उपयोग करने के लिए प्राधिकरण डेटाबेस को कॉन्फ़िगर करना भी आवश्यक है
आप एक प्राधिकरण प्लगइन बना सकते हैं जो तब निष्पादित होगा जब एक उपयोगकर्ता लॉग-इन करता है ताकि स्थिरता बनाए रखी जा सके। इन प्लगइनों में से एक बनाने के बारे में अधिक जानकारी के लिए पिछले लेखों की जांच करें (और सावधान रहें, एक खराब तरीके से लिखा गया प्लगइन आपको लॉक कर सकता है और आपको अपने मैक को रिकवरी मोड से साफ़ करना होगा)।
स्थानांतरित करें बंडल को उस स्थान पर लोड करने के लिए:
अंत में इस प्लगइन को लोड करने के लिए नियम जोड़ें:
evaluate-mechanisms
यह अधिकृतता ढांचे को बताएगा कि इसे अधिकृतता के लिए एक बाहरी तंत्र को कॉल करने की आवश्यकता होगी। इसके अलावा, privileged
इसे रूट द्वारा निष्पादित करेगा।
इसे ट्रिगर करें:
और फिर स्टाफ समूह को sudo एक्सेस होना चाहिए (पुष्टि करने के लिए /etc/sudoers
पढ़ें)।
Writeup: https://theevilbit.github.io/beyond/beyond_0030/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए और उपयोगकर्ता को मैन का उपयोग करना चाहिए
TCC बायपास: 🔴
/private/etc/man.conf
रूट आवश्यक
/private/etc/man.conf
: जब भी मैन का उपयोग किया जाता है
कॉन्फ़िग फ़ाइल /private/etc/man.conf
यह संकेत करती है कि मैन दस्तावेज़ फ़ाइलें खोलते समय कौन सा बाइनरी/स्क्रिप्ट का उपयोग करना है। इसलिए निष्पादन योग्य का पथ संशोधित किया जा सकता है ताकि जब भी उपयोगकर्ता कुछ दस्तावेज़ पढ़ने के लिए मैन का उपयोग करे, एक बैकडोर निष्पादित हो।
उदाहरण के लिए /private/etc/man.conf
में सेट करें:
और फिर /tmp/view
बनाएं:
Writeup: https://theevilbit.github.io/beyond/beyond_0023/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए और अपाचे चल रहा होना चाहिए
TCC बायपास: 🔴
Httpd के पास अधिकार नहीं हैं
/etc/apache2/httpd.conf
रूट आवश्यक
ट्रिगर: जब Apache2 शुरू होता है
आप /etc/apache2/httpd.conf
में एक लाइन जोड़कर एक मॉड्यूल लोड करने का संकेत दे सकते हैं जैसे:
इस तरह आपका संकलित मॉड्यूल Apache द्वारा लोड किया जाएगा। केवल एक बात है कि या तो आपको इसे एक मान्य Apple प्रमाणपत्र के साथ साइन करना होगा, या आपको सिस्टम में एक नया विश्वसनीय प्रमाणपत्र जोड़ना होगा और इसे इसके साथ साइन करना होगा।
फिर, यदि आवश्यक हो, तो यह सुनिश्चित करने के लिए कि सर्वर शुरू होगा, आप निष्पादित कर सकते हैं:
Dylb के लिए कोड उदाहरण:
Writeup: https://theevilbit.github.io/beyond/beyond_0031/
सैंडबॉक्स को बायपास करने के लिए उपयोगी: 🟠
लेकिन आपको रूट होना चाहिए, auditd चल रहा होना चाहिए और एक चेतावनी उत्पन्न करनी चाहिए
TCC बायपास: 🔴
/etc/security/audit_warn
रूट आवश्यक
प्रेरक: जब auditd एक चेतावनी का पता लगाता है
जब भी auditd एक चेतावनी का पता लगाता है, स्क्रिप्ट /etc/security/audit_warn
चलायी जाती है। इसलिए आप इसमें अपना पेलोड जोड़ सकते हैं।
आप sudo audit -n
के साथ एक चेतावनी मजबूर कर सकते हैं।
यह अप्रचलित है, इसलिए उन निर्देशिकाओं में कुछ नहीं मिलना चाहिए।
StartupItem एक निर्देशिका है जो /Library/StartupItems/
या /System/Library/StartupItems/
में स्थित होनी चाहिए। एक बार यह निर्देशिका स्थापित हो जाने के बाद, इसमें दो विशेष फ़ाइलें होनी चाहिए:
एक rc स्क्रिप्ट: एक शेल स्क्रिप्ट जो स्टार्टअप पर निष्पादित होती है।
एक plist फ़ाइल, विशेष रूप से StartupParameters.plist
नाम की, जिसमें विभिन्न कॉन्फ़िगरेशन सेटिंग्स होती हैं।
सुनिश्चित करें कि दोनों rc स्क्रिप्ट और StartupParameters.plist
फ़ाइल StartupItem निर्देशिका के अंदर सही तरीके से रखी गई हैं ताकि स्टार्टअप प्रक्रिया उन्हें पहचान सके और उनका उपयोग कर सके।
मैं अपने macOS में इस घटक को नहीं ढूंढ पा रहा हूँ, इसलिए अधिक जानकारी के लिए लेख को देखें
लेख: https://theevilbit.github.io/beyond/beyond_0023/
Apple द्वारा पेश किया गया, emond एक लॉगिंग तंत्र है जो अधूरे या संभवतः छोड़ दिए गए प्रतीत होता है, फिर भी यह सुलभ है। जबकि यह एक Mac प्रशासक के लिए विशेष रूप से लाभकारी नहीं है, यह अस्पष्ट सेवा खतरे के अभिनेताओं के लिए एक सूक्ष्म स्थायी विधि के रूप में कार्य कर सकती है, जो संभवतः अधिकांश macOS प्रशासकों द्वारा अनदेखी रह जाएगी।
जो लोग इसके अस्तित्व से अवगत हैं, उनके लिए emond के किसी भी दुर्भावनापूर्ण उपयोग की पहचान करना सीधा है। इस सेवा के लिए सिस्टम का LaunchDaemon एक ही निर्देशिका में निष्पादित करने के लिए स्क्रिप्ट की तलाश करता है। इसे निरीक्षण करने के लिए, निम्नलिखित कमांड का उपयोग किया जा सकता है:
Writeup: https://theevilbit.github.io/beyond/beyond_0018/
/opt/X11/etc/X11/xinit/privileged_startx.d
रूट की आवश्यकता है
Trigger: XQuartz के साथ
XQuartz अब macOS में स्थापित नहीं है, इसलिए यदि आप अधिक जानकारी चाहते हैं तो लेख को देखें।
kext को रूट के रूप में स्थापित करना इतना जटिल है कि मैं इसे सैंडबॉक्स से बचने या यहां तक कि स्थिरता के लिए भी नहीं मानूंगा (जब तक कि आपके पास एक एक्सप्लॉइट न हो)
एक KEXT को स्टार्टअप आइटम के रूप में स्थापित करने के लिए, इसे निम्नलिखित स्थानों में से एक में स्थापित किया जाना चाहिए:
/System/Library/Extensions
KEXT फ़ाइलें OS X ऑपरेटिंग सिस्टम में निर्मित।
/Library/Extensions
KEXT फ़ाइलें 3rd पार्टी सॉफ़्टवेयर द्वारा स्थापित की गईं
आप वर्तमान में लोड की गई kext फ़ाइलों को सूचीबद्ध कर सकते हैं:
For more information about kernel extensions check this section.
Writeup: https://theevilbit.github.io/beyond/beyond_0029/
/usr/local/bin/amstoold
रूट की आवश्यकता है
स्पष्ट रूप से /System/Library/LaunchAgents/com.apple.amstoold.plist
से plist
इस बाइनरी का उपयोग कर रहा था जबकि एक XPC सेवा को उजागर कर रहा था... बात यह है कि बाइनरी मौजूद नहीं थी, इसलिए आप वहां कुछ रख सकते हैं और जब XPC सेवा को कॉल किया जाएगा, तो आपकी बाइनरी को कॉल किया जाएगा।
मैं अब इसे अपने macOS में नहीं ढूंढ पा रहा हूँ।
Writeup: https://theevilbit.github.io/beyond/beyond_0015/
/Library/Preferences/Xsan/.xsanrc
रूट की आवश्यकता है
Trigger: जब सेवा चलाई जाती है (कभी-कभी)
स्पष्ट रूप से इस स्क्रिप्ट को चलाना बहुत सामान्य नहीं है और मैं इसे अपने macOS में भी नहीं ढूंढ सका, इसलिए यदि आप अधिक जानकारी चाहते हैं तो लेखन देखें।
यह आधुनिक MacOS संस्करणों में काम नहीं कर रहा है
यहां कमांड्स रखना भी संभव है जो स्टार्टअप पर निष्पादित होंगे। उदाहरण के लिए नियमित rc.common स्क्रिप्ट:
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)