mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
46564cecf3
commit
ed877e2283
@ -16,7 +16,7 @@ Herhangi birinin etkin olup olmadığını kontrol etmek için:
|
||||
```bash
|
||||
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);
|
||||
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);
|
||||
@ -24,35 +24,57 @@ printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharin
|
||||
```
|
||||
### Pentesting ARD
|
||||
|
||||
Apple Remote Desktop (ARD), macOS için özel olarak tasarlanmış, ek özellikler sunan [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) 'nin geliştirilmiş bir versiyonudur. ARD'deki dikkat çekici bir zafiyet, kontrol ekranı şifresi için kimlik doğrulama yöntemidir; bu yöntem yalnızca şifrenin ilk 8 karakterini kullanır, bu da onu [brute force attacks](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) gibi Hydra veya [GoRedShell](https://github.com/ahhh/GoRedShell/) gibi araçlarla saldırılara karşı savunmasız hale getirir, çünkü varsayılan hız sınırlamaları yoktur.
|
||||
Apple Remote Desktop (ARD), macOS için özel olarak tasarlanmış [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing) 'nin geliştirilmiş bir versiyonudur ve ek özellikler sunar. ARD'deki dikkat çekici bir güvenlik açığı, kontrol ekranı şifresi için kimlik doğrulama yöntemidir; bu yöntem yalnızca şifrenin ilk 8 karakterini kullanır, bu da onu [brute force attacks](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) gibi Hydra veya [GoRedShell](https://github.com/ahhh/GoRedShell/) gibi araçlarla saldırılara karşı savunmasız hale getirir, çünkü varsayılan hız sınırlamaları yoktur.
|
||||
|
||||
Zayıf örnekler, **nmap**'in `vnc-info` betiği kullanılarak tanımlanabilir. `VNC Authentication (2)`'yi destekleyen hizmetler, 8 karakterli şifre kısaltması nedeniyle brute force saldırılarına özellikle açıktır.
|
||||
Savunmasız örnekler, **nmap**'in `vnc-info` betiği kullanılarak tanımlanabilir. `VNC Authentication (2)`'yi destekleyen hizmetler, 8 karakterli şifre kısaltması nedeniyle brute force saldırılarına özellikle açıktır.
|
||||
|
||||
ARD'yi ayrıcalık yükseltme, GUI erişimi veya kullanıcı izleme gibi çeşitli yönetim görevleri için etkinleştirmek için aşağıdaki komutu kullanın:
|
||||
```bash
|
||||
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 dahil olmak üzere çok yönlü kontrol seviyeleri sağlar ve oturumlar kullanıcı şifre değişikliklerinden sonra bile devam eder. Yönetici kullanıcılar için kök olarak Unix komutlarını doğrudan göndermeye ve çalıştırmaya olanak tanır. Görev zamanlama ve Uzaktan Spotlight arama, birden fazla makine arasında hassas dosyalar için uzaktan, düşük etkili aramalar yapmayı kolaylaştıran dikkate değer özelliklerdir.
|
||||
ARD, gözlem, paylaşılan kontrol ve tam kontrol dahil olmak üzere çok yönlü kontrol seviyeleri sağlar ve oturumlar kullanıcı şifre değişikliklerinden sonra bile devam eder. Unix komutlarını doğrudan gönderme ve bunları yönetici kullanıcılar için root olarak yürütme imkanı tanır. Görev zamanlama ve Uzaktan Spotlight arama, birden fazla makinede hassas dosyalar için uzaktan, düşük etkili aramalar yapmayı kolaylaştıran dikkate değer özelliklerdir.
|
||||
|
||||
#### Son Ekran Paylaşımı / ARD güvenlik açıkları (2023-2025)
|
||||
|
||||
| Yıl | CVE | Bileşen | Etki | Düzeltildiği Sürüm |
|
||||
|------|-----|-----------|--------|----------|
|
||||
|2023|CVE-2023-42940|Ekran Paylaşımı|Yanlış oturum render'ı, *yanlış* masaüstü veya pencerenin iletilmesine neden olabilir, bu da hassas bilgilerin sızmasına yol açar|macOS Sonoma 14.2.1 (Aralık 2023) |
|
||||
|2024|CVE-2024-23296|launchservicesd / login|Başarılı bir uzaktan girişten sonra zincirleme yapılabilen çekirdek bellek koruma atlatması (doğada aktif olarak istismar ediliyor)|macOS Ventura 13.6.4 / Sonoma 14.4 (Mart 2024) |
|
||||
|
||||
**Güçlendirme ipuçları**
|
||||
|
||||
* Gerektiğinde *Ekran Paylaşımı*/*Uzaktan Yönetim* özelliğini devre dışı bırakın.
|
||||
* macOS'u tamamen güncel tutun (Apple genellikle son üç büyük sürüm için güvenlik düzeltmeleri gönderir).
|
||||
* **Güçlü Bir Şifre** kullanın *ve* mümkünse *“VNC görüntüleyicileri şifre ile ekranı kontrol edebilir”* seçeneğini **devre dışı** bırakın.
|
||||
* Servisi bir VPN arkasına koyun, TCP 5900/3283'ü internete açmak yerine.
|
||||
* `ARDAgent`'i yerel alt ağa sınırlamak için bir Uygulama Güvenlik Duvarı kuralı ekleyin:
|
||||
|
||||
```bash
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setblockapp /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent on
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bonjour Protokolü
|
||||
|
||||
Bonjour, Apple tarafından tasarlanmış bir teknoloji olup, **aynı ağdaki cihazların birbirlerinin sunduğu hizmetleri tespit etmesine olanak tanır**. Rendezvous, **Sıfır Konfigürasyon** veya Zeroconf olarak da bilinir, bir cihazın 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.
|
||||
Apple tarafından tasarlanan Bonjour, **aynı ağdaki cihazların birbirlerinin sunduğu hizmetleri tespit etmesine** olanak tanır. Rendezvous, **Sıfır Konfigürasyon** veya Zeroconf olarak da bilinir, 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 Sıfır Konfigürasyon Ağı, cihazların:
|
||||
|
||||
- **Bir IP Adresi otomatik olarak elde etmesini** sağlar, DHCP sunucusu yoksa bile.
|
||||
- **isimden-adrese çeviri** yapmasını, DNS sunucusu gerektirmeden gerçekleştirir.
|
||||
- **Bir IP Adresi otomatik olarak edinmesini** sağlar, DHCP sunucusu yoksa bile.
|
||||
- **isimden-adrese çeviri** yapmasını, DNS sunucusu gerektirmeden sağlar.
|
||||
- Ağda mevcut olan **hizmetleri keşfetmesini** sağlar.
|
||||
|
||||
Bonjour kullanan cihazlar, kendilerine **169.254/16 aralığından bir IP adresi atar** ve ağdaki benzersizliğini doğrular. Mac'ler, bu alt ağ için bir yönlendirme tablosu girişi tutar, bu da `netstat -rn | grep 169` komutuyla doğrulanabilir.
|
||||
Bonjour kullanan cihazlar, kendilerine **169.254/16 aralığından bir IP adresi** atar ve ağ üzerindeki benzersizliğini doğrular. Mac'ler, bu alt ağ için bir yönlendirme tablosu girişi tutar, bu da `netstat -rn | grep 169` ile doğrulanabilir.
|
||||
|
||||
DNS için Bonjour, **Multicast DNS (mDNS) protokolünü** kullanır. mDNS, **port 5353/UDP** üzerinden çalışır ve **standart DNS sorgularını** kullanarak **multicast adresi 224.0.0.251**'yi hedef alır. Bu yaklaşım, ağdaki tüm dinleyen cihazların sorguları almasını ve yanıt vermesini sağlar, böylece kayıtlarını güncelleyebilirler.
|
||||
DNS için Bonjour, **Multicast DNS (mDNS) protokolünü** kullanır. mDNS, **port 5353/UDP** üzerinden çalışır, **standart DNS sorguları** kullanır ancak **multicast adres 224.0.0.251**'yi hedef alır. Bu yaklaşım, ağ üzerindeki tüm dinleyen cihazların sorguları almasını ve yanıt vermesini sağlar, böylece kayıtlarını güncelleyebilirler.
|
||||
|
||||
Ağa katıldığında, her cihaz kendine bir isim seçer, genellikle **.local** ile biter ve bu isim ana bilgisayardan türetilmiş veya rastgele oluşturulmuş olabilir.
|
||||
Ağa katıldığında, her cihaz kendine genellikle **.local** ile biten bir isim seçer, bu isim ana bilgisayardan türetilmiş veya rastgele oluşturulmuş olabilir.
|
||||
|
||||
Ağ içindeki hizmet keşfi, **DNS Hizmet Keşfi (DNS-SD)** ile 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 hizmet arayan bir istemci, `<Service>.<Domain>` için bir PTR kaydı talep eder ve hizmet birden fazla ana bilgisayardan mevcutsa, `<Instance>.<Service>.<Domain>` formatında bir dizi PTR kaydı alır.
|
||||
Ağ içindeki hizmet keşfi, **DNS Hizmet Keşfi (DNS-SD)** ile 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 hizmet arayan bir istemci, `<Service>.<Domain>` için bir PTR kaydı talep eder ve eğer hizmet birden fazla hosttan mevcutsa, `<Instance>.<Service>.<Domain>` formatında bir dizi PTR kaydı alır.
|
||||
|
||||
`dns-sd` aracı, **ağ hizmetlerini keşfetmek ve tanıtmak için** kullanılabilir. İşte kullanımına dair bazı örnekler:
|
||||
Ağ hizmetlerini **keşfetmek ve duyurmak** için `dns-sd` aracı kullanılabilir. İşte kullanımına dair bazı örnekler:
|
||||
|
||||
### SSH Hizmetlerini Arama
|
||||
|
||||
@ -64,7 +86,7 @@ Bu komut, \_ssh.\_tcp hizmetleri için tarama başlatır ve zaman damgası, bayr
|
||||
|
||||
### HTTP Hizmetini Duyurma
|
||||
|
||||
Bir HTTP hizmetini duyurmak için şunu kullanabilirsiniz:
|
||||
HTTP hizmetini duyurmak için şunu kullanabilirsiniz:
|
||||
```bash
|
||||
dns-sd -R "Index" _http._tcp . 80 path=/index.html
|
||||
```
|
||||
@ -74,11 +96,11 @@ Daha sonra ağda HTTP hizmetlerini aramak için:
|
||||
```bash
|
||||
dns-sd -B _http._tcp
|
||||
```
|
||||
Bir hizmet başladığında, varlığını alt ağdaki tüm cihazlara çoklu yayın yaparak duyurur. Bu hizmetlerle ilgilenen cihazların istek göndermesine gerek yoktur, sadece bu duyuruları dinlemeleri yeterlidir.
|
||||
Bir hizmet başladığında, varlığını alt ağdaki tüm cihazlara çoklu yayın yaparak duyurur. Bu hizmetlerle ilgilenen cihazların istek göndermesine gerek yoktur; sadece bu duyuruları dinlemeleri yeterlidir.
|
||||
|
||||
Daha kullanıcı dostu bir arayüz için, Apple App Store'da bulunan **Discovery - DNS-SD Browser** uygulaması, yerel ağınızdaki sunulan hizmetleri görselleştirebilir.
|
||||
|
||||
Alternatif olarak, `python-zeroconf` kütüphanesini kullanarak hizmetleri taramak ve keşfetmek için özel betikler yazılabilir. [**python-zeroconf**](https://github.com/jstasiak/python-zeroconf) betiği, `_http._tcp.local.` hizmetleri için bir hizmet tarayıcısı oluşturmayı gösterir ve eklenen veya kaldırılan hizmetleri yazdırır:
|
||||
Alternatif olarak, `python-zeroconf` kütüphanesini kullanarak hizmetleri taramak ve keşfetmek için özel betikler yazılabilir. [**python-zeroconf**](https://github.com/jstasiak/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:
|
||||
```python
|
||||
from zeroconf import ServiceBrowser, Zeroconf
|
||||
|
||||
@ -99,9 +121,46 @@ input("Press enter to exit...\n\n")
|
||||
finally:
|
||||
zeroconf.close()
|
||||
```
|
||||
### Ağa üzerinden Bonjour'u Sıralama
|
||||
|
||||
* **Nmap NSE** – tek bir host tarafından ilan edilen hizmetleri keşfetmek için:
|
||||
|
||||
```bash
|
||||
nmap -sU -p 5353 --script=dns-service-discovery <target>
|
||||
```
|
||||
|
||||
`dns-service-discovery` scripti, `_services._dns-sd._udp.local` sorgusu gönderir ve ardından her ilan edilen hizmet türünü sıralar.
|
||||
|
||||
* **mdns_recon** – *yanlış yapılandırılmış* mDNS yanıtlayıcılarını bulmak için tüm aralıkları tarayan Python aracı (alt ağlar/WAN üzerinden erişilebilen cihazları bulmak için yararlıdır):
|
||||
|
||||
```bash
|
||||
git clone https://github.com/chadillac/mdns_recon && cd mdns_recon
|
||||
python3 mdns_recon.py -r 192.0.2.0/24 -s _ssh._tcp.local
|
||||
```
|
||||
|
||||
Bu, yerel bağlantı dışındaki Bonjour üzerinden SSH sunan hostları döndürecektir.
|
||||
|
||||
### Güvenlik dikkate alındığında & son güvenlik açıkları (2024-2025)
|
||||
|
||||
| Yıl | CVE | Ciddiyet | Sorun | Yamanmış |
|
||||
|------|-----|----------|-------|------------|
|
||||
|2024|CVE-2024-44183|Orta|*mDNSResponder*'da bir mantık hatası, hazırlanmış bir paketin **hizmet reddi** tetiklemesine izin verdi|macOS Ventura 13.7 / Sonoma 14.7 / Sequoia 15.0 (Eyl 2024) |
|
||||
|2025|CVE-2025-31222|Yüksek|*mDNSResponder*'da bir doğruluk sorunu, **yerel ayrıcalık yükseltmesi** için kötüye kullanılabilir|macOS Ventura 13.7.6 / Sonoma 14.7.6 / Sequoia 15.5 (May 2025) |
|
||||
|
||||
**Hafifletme rehberi**
|
||||
|
||||
1. UDP 5353'ü *link-local* kapsamıyla sınırlayın – kablosuz denetleyiciler, yönlendiriciler ve host tabanlı güvenlik duvarlarında engelleyin veya hız sınırlaması uygulayın.
|
||||
2. Hizmet keşfine ihtiyaç duymayan sistemlerde Bonjour'u tamamen devre dışı bırakın:
|
||||
|
||||
```bash
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||
```
|
||||
3. Bonjour'un dahili olarak gerekli olduğu ancak asla ağ sınırlarını aşmaması gereken ortamlarda *AirPlay Receiver* profil kısıtlamalarını (MDM) veya bir mDNS proxy'sini kullanın.
|
||||
4. **Sistem Bütünlüğü Koruması (SIP)**'nı etkinleştirin ve macOS'u güncel tutun – yukarıdaki her iki güvenlik açığı da hızlı bir şekilde yamanmış ancak tam koruma için SIP'nin etkin olmasına dayanıyordu.
|
||||
|
||||
### Bonjour'u Devre Dışı Bırakma
|
||||
|
||||
Eğer güvenlik endişeleri veya Bonjour'u devre dışı bırakmak için başka nedenler varsa, aşağıdaki komut kullanılarak kapatılabilir:
|
||||
Güvenlik endişeleri veya Bonjour'u devre dışı bırakmak için başka nedenler varsa, aşağıdaki komut kullanılarak kapatılabilir:
|
||||
```bash
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||
```
|
||||
@ -110,5 +169,7 @@ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.p
|
||||
- [**The Mac Hacker's Handbook**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt_other?_encoding=UTF8&me=&qid=)
|
||||
- [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
|
||||
- [**https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html**](https://lockboxx.blogspot.com/2019/07/macos-red-teaming-206-ard-apple-remote.html)
|
||||
- [**NVD – CVE-2023-42940**](https://nvd.nist.gov/vuln/detail/CVE-2023-42940)
|
||||
- [**NVD – CVE-2024-44183**](https://nvd.nist.gov/vuln/detail/CVE-2024-44183)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user