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
0f9f0a7546
commit
12084e0be6
@ -16,7 +16,7 @@
|
|||||||
```bash
|
```bash
|
||||||
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
|
rmMgmt=$(netstat -na | grep LISTEN | grep tcp46 | grep "*.3283" | wc -l);
|
||||||
scrShrng=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.5900" | 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);
|
rLgn=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.22" | wc -l);
|
||||||
rAE=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.3031" | 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);
|
bmM=$(netstat -na | grep LISTEN | egrep 'tcp4|tcp6' | grep "*.4488" | wc -l);
|
||||||
@ -24,7 +24,7 @@ printf "\nThe following services are OFF if '0', or ON otherwise:\nScreen Sharin
|
|||||||
```
|
```
|
||||||
### Pentesting ARD
|
### Pentesting ARD
|
||||||
|
|
||||||
Apple Remote Desktop (ARD) є покращеною версією [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing), адаптованою для macOS, що пропонує додаткові функції. Помітною вразливістю в ARD є його метод аутентифікації для пароля контролю екрану, який використовує лише перші 8 символів пароля, що робить його вразливим до [brute force attacks](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) за допомогою інструментів, таких як Hydra або [GoRedShell](https://github.com/ahhh/GoRedShell/), оскільки немає стандартних обмежень швидкості.
|
Apple Remote Desktop (ARD) є покращеною версією [Virtual Network Computing (VNC)](https://en.wikipedia.org/wiki/Virtual_Network_Computing), адаптованою для macOS, що пропонує додаткові функції. Помітною вразливістю в ARD є метод аутентифікації для пароля контролю екрану, який використовує лише перші 8 символів пароля, що робить його вразливим до [brute force attacks](https://thudinh.blogspot.com/2017/09/brute-forcing-passwords-with-thc-hydra.html) за допомогою інструментів, таких як Hydra або [GoRedShell](https://github.com/ahhh/GoRedShell/), оскільки немає стандартних обмежень швидкості.
|
||||||
|
|
||||||
Вразливі екземпляри можна виявити за допомогою скрипта `vnc-info` від **nmap**. Сервіси, що підтримують `VNC Authentication (2)`, особливо схильні до атак методом грубої сили через обрізання пароля до 8 символів.
|
Вразливі екземпляри можна виявити за допомогою скрипта `vnc-info` від **nmap**. Сервіси, що підтримують `VNC Authentication (2)`, особливо схильні до атак методом грубої сили через обрізання пароля до 8 символів.
|
||||||
|
|
||||||
@ -32,16 +32,38 @@ Apple Remote Desktop (ARD) є покращеною версією [Virtual Netwo
|
|||||||
```bash
|
```bash
|
||||||
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -allowAccessFor -allUsers -privs -all -clientopts -setmenuextra -menuextra yes
|
||||||
```
|
```
|
||||||
ARD надає різноманітні рівні контролю, включаючи спостереження, спільний контроль та повний контроль, з сесіями, які зберігаються навіть після зміни пароля користувача. Це дозволяє надсилати команди Unix безпосередньо, виконуючи їх як root для адміністративних користувачів. Планування завдань та пошук Remote Spotlight є помітними функціями, які полегшують віддалений, маловпливовий пошук чутливих файлів на кількох машинах.
|
ARD надає різноманітні рівні контролю, включаючи спостереження, спільний контроль та повний контроль, з сесіями, які зберігаються навіть після зміни пароля користувача. Це дозволяє надсилати команди Unix безпосередньо, виконуючи їх як root для адміністративних користувачів. Планування завдань та пошук Remote Spotlight є помітними функціями, що полегшують віддалений, маловпливовий пошук чутливих файлів на кількох машинах.
|
||||||
|
|
||||||
## Bonjour Protocol
|
#### Останні вразливості Screen-Sharing / ARD (2023-2025)
|
||||||
|
|
||||||
|
| Рік | CVE | Компонент | Вплив | Виправлено в |
|
||||||
|
|------|-----|-----------|--------|----------|
|
||||||
|
|2023|CVE-2023-42940|Screen Sharing|Неправильне відображення сесії може призвести до передачі *неправильного* робочого столу або вікна, що призводить до витоку чутливої інформації|macOS Sonoma 14.2.1 (Грудень 2023) |
|
||||||
|
|2024|CVE-2024-23296|launchservicesd / login|Обхід захисту пам'яті ядра, який можна з'єднати після успішного віддаленого входу (активно експлуатувався в природі)|macOS Ventura 13.6.4 / Sonoma 14.4 (Березень 2024) |
|
||||||
|
|
||||||
|
**Поради з посилення безпеки**
|
||||||
|
|
||||||
|
* Вимкніть *Screen Sharing*/*Remote Management*, коли це не є строго необхідним.
|
||||||
|
* Тримайте macOS повністю оновленою (Apple зазвичай випускає виправлення безпеки для останніх трьох основних версій).
|
||||||
|
* Використовуйте **Сильний Пароль** *та* забезпечте, щоб опція *“VNC viewers may control screen with password”* була **вимкнена**, коли це можливо.
|
||||||
|
* Розмістіть сервіс за VPN замість того, щоб відкривати TCP 5900/3283 в Інтернет.
|
||||||
|
* Додайте правило брандмауера програми, щоб обмежити `ARDAgent` локальною підмережею:
|
||||||
|
|
||||||
|
```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 Протокол
|
||||||
|
|
||||||
Bonjour, технологія, розроблена Apple, дозволяє **пристроям в одній мережі виявляти послуги, які вони пропонують**. Відомий також як Rendezvous, **Zero Configuration** або Zeroconf, він дозволяє пристрою приєднуватися до TCP/IP мережі, **автоматично вибирати IP-адресу** та транслювати свої послуги іншим мережевим пристроям.
|
Bonjour, технологія, розроблена Apple, дозволяє **пристроям в одній мережі виявляти послуги, які вони пропонують**. Відомий також як Rendezvous, **Zero Configuration** або Zeroconf, він дозволяє пристрою приєднуватися до TCP/IP мережі, **автоматично вибирати IP-адресу** та транслювати свої послуги іншим мережевим пристроям.
|
||||||
|
|
||||||
Zero Configuration Networking, наданий Bonjour, забезпечує, що пристрої можуть:
|
Zero Configuration Networking, що надається Bonjour, забезпечує, що пристрої можуть:
|
||||||
|
|
||||||
- **Автоматично отримувати IP-адресу** навіть за відсутності DHCP-сервера.
|
- **Автоматично отримувати IP-адресу** навіть за відсутності DHCP-сервера.
|
||||||
- Виконувати **переклад імен на адреси** без необхідності в DNS-сервері.
|
- Виконувати **переклад імені в адресу** без необхідності в DNS-сервері.
|
||||||
- **Виявляти послуги**, доступні в мережі.
|
- **Виявляти послуги**, доступні в мережі.
|
||||||
|
|
||||||
Пристрої, що використовують Bonjour, призначать собі **IP-адресу з діапазону 169.254/16** та перевірять її унікальність у мережі. Macs підтримують запис у таблиці маршрутизації для цієї підмережі, що можна перевірити за допомогою `netstat -rn | grep 169`.
|
Пристрої, що використовують Bonjour, призначать собі **IP-адресу з діапазону 169.254/16** та перевірять її унікальність у мережі. Macs підтримують запис у таблиці маршрутизації для цієї підмережі, що можна перевірити за допомогою `netstat -rn | grep 169`.
|
||||||
@ -54,7 +76,7 @@ Zero Configuration Networking, наданий Bonjour, забезпечує, щ
|
|||||||
|
|
||||||
Утиліта `dns-sd` може бути використана для **виявлення та реклами мережевих послуг**. Ось кілька прикладів її використання:
|
Утиліта `dns-sd` може бути використана для **виявлення та реклами мережевих послуг**. Ось кілька прикладів її використання:
|
||||||
|
|
||||||
### Searching for SSH Services
|
### Пошук SSH Послуг
|
||||||
|
|
||||||
Щоб шукати SSH послуги в мережі, використовується наступна команда:
|
Щоб шукати SSH послуги в мережі, використовується наступна команда:
|
||||||
```bash
|
```bash
|
||||||
@ -74,7 +96,7 @@ dns-sd -R "Index" _http._tcp . 80 path=/index.html
|
|||||||
```bash
|
```bash
|
||||||
dns-sd -B _http._tcp
|
dns-sd -B _http._tcp
|
||||||
```
|
```
|
||||||
Коли служба запускається, вона оголошує про свою доступність для всіх пристроїв у підмережі, мультикастуючи свою присутність. Пристрої, які зацікавлені в цих службах, не повинні надсилати запити, а просто слухати ці оголошення.
|
Коли служба запускається, вона оголошує про свою доступність для всіх пристроїв у підмережі, мультикастуючи свою присутність. Пристрої, зацікавлені в цих службах, не повинні надсилати запити, а просто слухати ці оголошення.
|
||||||
|
|
||||||
Для більш зручного інтерфейсу додаток **Discovery - DNS-SD Browser**, доступний в Apple App Store, може візуалізувати служби, що пропонуються у вашій локальній мережі.
|
Для більш зручного інтерфейсу додаток **Discovery - DNS-SD Browser**, доступний в Apple App Store, може візуалізувати служби, що пропонуються у вашій локальній мережі.
|
||||||
|
|
||||||
@ -99,9 +121,46 @@ input("Press enter to exit...\n\n")
|
|||||||
finally:
|
finally:
|
||||||
zeroconf.close()
|
zeroconf.close()
|
||||||
```
|
```
|
||||||
|
### Перерахунок Bonjour через мережу
|
||||||
|
|
||||||
|
* **Nmap NSE** – виявлення служб, які рекламує один хост:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nmap -sU -p 5353 --script=dns-service-discovery <target>
|
||||||
|
```
|
||||||
|
|
||||||
|
Скрипт `dns-service-discovery` надсилає запит `_services._dns-sd._udp.local` і потім перераховує кожен рекламований тип служби.
|
||||||
|
|
||||||
|
* **mdns_recon** – інструмент Python, який сканує цілі діапазони в пошуках *неправильно налаштованих* mDNS відповідей, які відповідають на унікатні запити (корисно для знаходження пристроїв, доступних через підмережі/WAN):
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
||||||
|
|
||||||
|
Це поверне хости, які відкривають SSH через Bonjour за межами локального з'єднання.
|
||||||
|
|
||||||
|
### Заходи безпеки та недавні вразливості (2024-2025)
|
||||||
|
|
||||||
|
| Рік | CVE | Серйозність | Проблема | Виправлено в |
|
||||||
|
|------|-----|----------|-------|------------|
|
||||||
|
|2024|CVE-2024-44183|Середня|Логічна помилка в *mDNSResponder* дозволила зловмисному пакету викликати **відмову в обслуговуванні**|macOS Ventura 13.7 / Sonoma 14.7 / Sequoia 15.0 (Вересень 2024) |
|
||||||
|
|2025|CVE-2025-31222|Висока|Проблема коректності в *mDNSResponder* може бути використана для **локального підвищення привілеїв**|macOS Ventura 13.7.6 / Sonoma 14.7.6 / Sequoia 15.5 (Травень 2025) |
|
||||||
|
|
||||||
|
**Рекомендації щодо пом'якшення**
|
||||||
|
|
||||||
|
1. Обмежте UDP 5353 до *link-local* області – заблокуйте або обмежте його на бездротових контролерах, маршрутизаторах та хостових брандмауерах.
|
||||||
|
2. Повністю вимкніть Bonjour на системах, які не потребують виявлення служб:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||||||
|
```
|
||||||
|
3. Для середовищ, де Bonjour потрібен внутрішньо, але ніколи не повинен перетинати мережеві межі, використовуйте обмеження профілю *AirPlay Receiver* (MDM) або mDNS проксі.
|
||||||
|
4. Увімкніть **System Integrity Protection (SIP)** і підтримуйте macOS в актуальному стані – обидві вразливості вище були швидко виправлені, але залежали від увімкнення SIP для повного захисту.
|
||||||
|
|
||||||
### Вимкнення Bonjour
|
### Вимкнення Bonjour
|
||||||
|
|
||||||
Якщо є занепокоєння щодо безпеки або інші причини для вимкнення Bonjour, його можна вимкнути за допомогою наступної команди:
|
Якщо є побоювання щодо безпеки або інші причини для вимкнення Bonjour, його можна вимкнути за допомогою наступної команди:
|
||||||
```bash
|
```bash
|
||||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
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=)
|
- [**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://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)
|
- [**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}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user