hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-protocols.md

19 KiB

macOS नेटवर्क सेवाएं और प्रोटोकॉल

AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

रिमोट एक्सेस सेवाएं

ये macOS की सामान्य सेवाएं हैं जिन्हें दूरस्थ रूप से एक्सेस किया जा सकता है।
आप इन सेवाओं को System Settings --> Sharing में सक्षम/अक्षम कर सकते हैं

  • VNC, जिसे “Screen Sharing” के नाम से जाना जाता है (tcp:5900)
  • SSH, जिसे “Remote Login” कहा जाता है (tcp:22)
  • Apple Remote Desktop (ARD), या “Remote Management” (tcp:3283, tcp:5900)
  • AppleEvent, जिसे “Remote Apple Event” के नाम से जाना जाता है (tcp:3031)

यह जांचने के लिए कि कोई भी सक्षम है या नहीं, निम्नलिखित चलाएं:

rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | wc -l);
flShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | egrep "\*.88|\*.445|\*.548" | wc -l);
rLgn=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.22" | wc -l);
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | wc -l);
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharing: %s\nFile Sharing: %s\nRemote Login: %s\nRemote Mgmt: %s\nRemote Apple Events: %s\nBack to My Mac: %s\n\n" "$scrShrng" "$flShrng" "$rLgn" "$rmMgmt" "$rAE" "$bmM";

ARD पेंटेस्टिंग

(यह भाग इस ब्लॉग पोस्ट से लिया गया है)

यह मूल रूप से एक विकृत VNC है जिसमें कुछ अतिरिक्त macOS विशिष्ट सुविधाएँ हैं।
हालांकि, स्क्रीन शेयरिंग विकल्प एक मूल VNC सर्वर है। एक उन्नत ARD या रिमोट मैनेजमेंट विकल्प भी है जो कंट्रोल स्क्रीन पासवर्ड सेट करने की अनुमति देता है जो ARD को VNC क्लाइंट्स के लिए पीछे की ओर संगत बनाता है। हालांकि इस प्रमाणीकरण विधि में एक कमजोरी है जो इस पासवर्ड को एक 8 अक्षर ऑथ बफर तक सीमित कर देती है, जिससे इसे Hydra या GoRedShell जैसे टूल के साथ ब्रूट फोर्स करना बहुत आसान हो जाता है (और मूल रूप से कोई रेट लिमिट नहीं होती).
आप nmap का उपयोग करके स्क्रीन शेयरिंग या रिमोट मैनेजमेंट के कमजोर उदाहरणों की पहचान कर सकते हैं, स्क्रिप्ट vnc-info का उपयोग करके, और अगर सेवा VNC Authentication (2) का समर्थन करती है तो वे संभवतः ब्रूट फोर्स के लिए कमजोर होते हैं। सेवा सभी पासवर्डों को तार पर भेजे जाने वाले 8 अक्षरों तक सीमित कर देगी, इस प्रकार यदि आप VNC प्रमाणीकरण को "password" सेट करते हैं, तो "passwords" और "password123" दोनों प्रमाणित होंगे।

यदि आप इसे प्रिविलेज एस्केलेशन (TCC प्रॉम्प्ट्स स्वीकार करने), GUI के साथ एक्सेस करने या उपयोगकर्ता की जासूसी करने के लिए सक्षम करना चाहते हैं, तो इसे सक्षम करना संभव है:

{% code overflow="wrap" %}

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes

{% endcode %}

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

आप ARD के जरिए सीधे unix कमांड्स भेज सकते हैं और यदि आप एक प्रशासनिक उपयोगकर्ता हैं तो चीजों को रूट के रूप में निष्पादित करने के लिए रूट उपयोगकर्ता को निर्दिष्ट कर सकते हैं। आप इस unix कमांड विधि का उपयोग विशिष्ट समय पर दूरस्थ कार्यों को निर्धारित करने के लिए भी कर सकते हैं, हालांकि यह निर्दिष्ट समय पर एक नेटवर्क कनेक्शन के रूप में होता है (लक्ष्य सर्वर पर संग्रहीत होने और निष्पादित होने के बजाय)। अंत में, दूरस्थ Spotlight मेरी पसंदीदा सुविधाओं में से एक है। यह वास्तव में अच्छा है क्योंकि आप तेजी से और दूरस्थ रूप से कम प्रभाव, सूचीबद्ध खोज कर सकते हैं। यह संवेदनशील फाइलों की खोज के लिए सोना है क्योंकि यह तेज है, आपको एक साथ कई मशीनों पर खोजें चलाने देता है, और CPU को स्पाइक नहीं करेगा।

Bonjour Protocol

Bonjour एक Apple-डिज़ाइन की गई तकनीक है जो कंप्यूटरों और उपकरणों को एक ही नेटवर्क पर स्थित होने पर अन्य कंप्यूटरों और उपकरणों द्वारा प्रदान की गई सेवाओं के बारे में जानने में सक्षम बनाती है। इसे इस तरह से डिज़ाइन किया गया है कि कोई भी Bonjour-जागरूक उपकरण को TCP/IP नेटवर्क में प्लग किया जा सकता है और यह एक IP पता चुनेगा और उस नेटवर्क पर अन्य कंप्यूटरों को उसकी प्रदान की गई सेवाओं के बारे में जागरूक करेगा। Bonjour को कभी-कभी Rendezvous, Zero Configuration, या Zeroconf के रूप में संदर्भित किया जाता है।
Zero Configuration Networking, जैसे कि Bonjour प्रदान करता है:

  • एक IP पता प्राप्त करने में सक्षम होना चाहिए (भले ही DHCP सर्वर न हो)
  • नाम-से-पता अनुवाद करने में सक्षम होना चाहिए (भले ही DNS सर्वर न हो)
  • नेटवर्क पर सेवाओं की खोज करने में सक्षम होना चाहिए

उपकरण को 169.254/16 रेंज में एक IP पता मिलेगा और यह जांचेगा कि कोई अन्य उपकरण उस IP पते का उपयोग कर रहा है या नहीं। यदि नहीं, तो वह IP पता रखेगा। Macs इस सबनेट के लिए अपनी रूटिंग टेबल में एक प्रविष्टि रखते हैं: netstat -rn | grep 169

DNS के लिए Multicast DNS (mDNS) प्रोटोकॉल का उपयोग किया जाता हैmDNS सेवाएं पोर्ट 5353/UDP पर सुनती हैं, नियमित DNS प्रश्नों का उपयोग करती हैं और एक IP पते पर अनुरोध भेजने के बजाय मल्टीकास्ट पते 224.0.0.251 का उपयोग करती हैं। इन अनुरोधों को सुनने वाली कोई भी मशीन प्रतिक्रिया देगी, आमतौर पर एक मल्टीकास्ट पते पर, ताकि सभी उपकरण अपनी तालिकाओं को अपडेट कर सकें।
प्रत्येक उपकरण नेटवर्क तक पहुँचने पर अपना नाम चुनेगा, उपकरण एक नाम चुनेगा जो .local में समाप्त होता है (यह होस्टनाम पर आधारित हो सकता है या एक पूरी तरह से यादृच्छिक एक हो सकता है)।

सेवाओं की खोज के लिए DNS Service Discovery (DNS-SD) का उपयोग किया जाता है।

Zero Configuration Networking की अंतिम आवश्यकता DNS Service Discovery (DNS-SD) द्वारा पूरी की जाती है। DNS Service Discovery DNS SRV रिकॉर्ड्स के सिंटैक्स का उपयोग करती है, लेकिन यदि एक से अधिक होस्ट किसी विशेष सेवा की पेशकश करते हैं तो कई परिणाम वापस करने के लिए DNS PTR रिकॉर्ड्स का उपयोग करती है। एक क्लाइंट <Service>.<Domain> के नाम के लिए PTR लुकअप का अनुरोध करता है और शून्य या अधिक PTR रिकॉर्ड्स की एक सूची प्राप्त करता है जो <Instance>.<Service>.<Domain> के रूप में होते हैं।

dns-sd बाइनरी का उपयोग सेवाओं का विज्ञापन करने और सेवाओं के लिए लुकअप करने के लिए किया जा सकता है:

#Search ssh services
dns-sd -B _ssh._tcp

Browsing for _ssh._tcp
DATE: ---Tue 27 Jul 2021---
12:23:20.361  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
12:23:20.362  Add        3   1 local.               _ssh._tcp.           M-C02C934RMD6R
12:23:20.362  Add        3  10 local.               _ssh._tcp.           M-C02C934RMD6R
12:23:20.362  Add        2  16 local.               _ssh._tcp.           M-C02C934RMD6R
#Announce HTTP service
dns-sd -R "Index" _http._tcp . 80 path=/index.html

#Search HTTP services
dns-sd -B _http._tcp

जब एक नई सेवा शुरू होती है, तो नई सेवा अपनी उपस्थिति सबनेट पर सभी को मल्टीकास्ट करती है। श्रोता को पूछना नहीं पड़ा; उसे केवल सुनना था।

आप अपने वर्तमान स्थानीय नेटवर्क में प्रस्तावित सेवाओं को देखने के लिए इस उपकरण का उपयोग कर सकते हैं।
या आप python-zeroconf के साथ अपनी खुद की स्क्रिप्ट्स पायथन में लिख सकते हैं:

from zeroconf import ServiceBrowser, Zeroconf


class MyListener:

def remove_service(self, zeroconf, type, name):
print("Service %s removed" % (name,))

def add_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
print("Service %s added, service info: %s" % (name, info))


zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)
try:
input("Press enter to exit...\n\n")
finally:
zeroconf.close()

यदि आपको लगता है कि Bonjour disabled होने पर अधिक सुरक्षित हो सकता है, तो आप इसे निम्नलिखित के साथ कर सकते हैं:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

संदर्भ

htARTE (HackTricks AWS Red Team Expert) के साथ शून्य से नायक तक AWS हैकिंग सीखें!

HackTricks का समर्थन करने के अन्य तरीके: