macOS Network Services & Protocols

AWS hacklemeyi sıfırdan kahraman olmak için öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

Uzaktan Erişim Hizmetleri

Bunlar, uzaktan erişim için yaygın olarak kullanılan macOS hizmetleridir. Bu hizmetleri Sistem Ayarları --> Paylaşım bölümünde etkinleştirebilir/devre dışı bırakabilirsiniz.

  • VNC, "Ekran Paylaşımı" olarak bilinir (tcp:5900)

  • SSH, "Uzak Oturum Açma" olarak adlandırılır (tcp:22)

  • Apple Uzak Masaüstü (ARD) veya "Uzak Yönetim" (tcp:3283, tcp:5900)

  • AppleEvent, "Uzak Apple Etkinliği" olarak bilinir (tcp:3031)

Etkin olan birini kontrol etmek için çalıştırın:

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 Pentesting

Apple Remote Desktop (ARD), macOS için özel olarak tasarlanmış Virtual Network Computing (VNC) 'in geliştirilmiş bir versiyonudur ve ek özellikler sunar. ARD'deki dikkate değer bir güvenlik açığı, kontrol ekranı parolası için kullanılan kimlik doğrulama yöntemidir. Bu yöntem sadece parolanın ilk 8 karakterini kullanır ve bu da Hydra veya GoRedShell gibi araçlarla brute force saldırılarına karşı savunmasız hale getirir, çünkü varsayılan bir hız sınırlaması yoktur.

Zayıf noktalara sahip olan örnekler, nmap'in vnc-info komutuyla tespit edilebilir. VNC Authentication (2)'yi destekleyen hizmetler, 8 karakterlik parola kırpılması nedeniyle brute force saldırılarına özellikle savunmasızdır.

Ayrıcalık yükseltme, GUI erişimi veya kullanıcı izleme gibi çeşitli yönetimsel görevler için ARD'yi etkinleştirmek için aşağıdaki komutu kullanın:

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

ARD, Gözlem, Paylaşılan Kontrol ve Tam Kontrol gibi çok yönlü kontrol seviyeleri sağlar ve kullanıcı şifre değişikliklerinden sonra bile oturumlar devam eder. Unix komutlarını doğrudan göndermeye olanak tanır ve yönetici kullanıcılar için root olarak çalıştırır. Görev zamanlama ve Uzaktan Spotlight arama, hassas dosyaların birden fazla makinede uzaktan, düşük etkili aramalarını kolaylaştıran dikkate değer özelliklerdir.

Bonjour Protokolü

Bonjour, Apple tarafından tasarlanan bir teknoloji olan aynı ağdaki cihazların birbirlerinin sunulan hizmetlerini algılamasına olanak sağlar. Rendezvous, Zero Configuration veya Zeroconf olarak da bilinen Bonjour, bir cihazın bir TCP/IP ağına katılmasını, otomatik olarak bir IP adresi seçmesini ve hizmetlerini diğer ağ cihazlarına yayınlamasını sağlar.

Bonjour tarafından sağlanan Zero Configuration Networking, cihazların aşağıdaki işlemleri gerçekleştirmesini sağlar:

  • Bir DHCP sunucusu olmadan bile otomatik olarak bir IP adresi almak.

  • Bir DNS sunucusu gerektirmeden adı-adrese çeviri yapmak.

  • Ağda mevcut olan hizmetleri keşfetmek.

Bonjour kullanan cihazlar, kendilerine 169.254/16 aralığından bir IP adresi atar ve bu adresin ağda benzersiz olduğunu doğrular. Mac'ler, bu alt ağ için bir yönlendirme tablosu girişi tutar ve netstat -rn | grep 169 komutuyla doğrulanabilir.

Bonjour, DNS için Multicast DNS (mDNS) protokolünü kullanır. mDNS, 5353/UDP bağlantı noktası üzerinden çalışır ve standart DNS sorgularını kullanır, ancak 224.0.0.251 çoklu yayın adresine yöneliktir. Bu yaklaşım, ağdaki tüm dinleyen cihazların sorguları almasını ve yanıtlamasını sağlar, böylece kayıtlarını güncellemeleri kolaylaşır.

Ağa katıldığında, her cihaz kendiliğinden bir isim seçer, genellikle .local ile biten bir isim olur ve bu isim, ana bilgisayar adından veya rastgele oluşturulmuş olabilir.

Ağ içindeki hizmet keşfi, DNS Service Discovery (DNS-SD) tarafından kolaylaştırılır. DNS SRV kayıtlarının formatını kullanan DNS-SD, birden fazla hizmetin listelenmesini sağlamak için DNS PTR kayıtlarını kullanır. Belirli bir hizmeti arayan bir istemci, <Hizmet>.<Alan> için bir PTR kaydı isteyecek ve birden fazla sunucudan hizmet mevcutsa, <Örnek>.<Hizmet>.<Alan> formatında bir PTR kayıt listesi alacaktır.

dns-sd yardımcı programı, ağ hizmetlerini keşfetmek ve reklam yapmak için kullanılabilir. İşte kullanım örneklerinden bazıları:

SSH Hizmetlerini Arama

Ağda SSH hizmetlerini aramak için aşağıdaki komut kullanılır:

dns-sd -B _ssh._tcp

Bu komut, _ssh._tcp hizmetlerini tarar ve zaman damgası, bayraklar, arayüz, alan adı, hizmet türü ve örnek adı gibi ayrıntıları çıktılar.

Bir HTTP Hizmeti Reklamı

Bir HTTP hizmeti reklamı yapmak için şunu kullanabilirsiniz:

dns-sd -R "Index" _http._tcp . 80 path=/index.html

Bu komut, /index.html yolunda 80 numaralı bağlantı noktasında "Index" adında bir HTTP hizmeti kaydeder.

Ardından ağda HTTP hizmetlerini aramak için:

dns-sd -B _http._tcp

Bir hizmet başladığında, varlığını çoklu yayın yaparak alt ağdaki tüm cihazlara duyurur. Bu hizmetlere ilgi duyan cihazlar, istek göndermek yerine sadece bu duyuruları dinleyerek hizmetleri bulabilir.

Daha kullanıcı dostu bir arayüz için, Apple App Store'da bulunan Discovery - DNS-SD Browser uygulaması yerel ağınızda sunulan hizmetleri görselleştirebilir.

Alternatif olarak, python-zeroconf kütüphanesini kullanarak hizmetleri taramak ve bulmak için özel betikler yazılabilir. python-zeroconf betiği, _http._tcp.local. hizmetleri için bir hizmet tarayıcısı oluşturmayı ve eklenen veya kaldırılan hizmetleri yazdırmayı göstermektedir:

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 Devre Dışı Bırakma

Eğer güvenlikle ilgili endişeler varsa veya Bonjour'u devre dışı bırakmak için başka nedenler varsa, aşağıdaki komut kullanılarak devre dışı bırakılabilir:

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

Referanslar

AWS hackleme konusunda sıfırdan kahramana dönüşmek için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated