mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
115 lines
10 KiB
Markdown
115 lines
10 KiB
Markdown
# macOS Network Services & Protocols
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Remote Access Services
|
||
|
||
Це загальні служби 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)
|
||
|
||
Перевірте, чи будь-яка з них увімкнена, запустивши:
|
||
```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);
|
||
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";
|
||
```
|
||
### 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/), оскільки немає стандартних обмежень швидкості.
|
||
|
||
Вразливі екземпляри можна виявити за допомогою скрипта `vnc-info` від **nmap**. Сервіси, що підтримують `VNC Authentication (2)`, особливо схильні до атак методом грубої сили через обрізання пароля до 8 символів.
|
||
|
||
Щоб увімкнути ARD для різних адміністративних завдань, таких як підвищення привілеїв, доступ до GUI або моніторинг користувачів, використовуйте наступну команду:
|
||
```bash
|
||
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 є помітними функціями, які полегшують віддалений, маловпливовий пошук чутливих файлів на кількох машинах.
|
||
|
||
## Bonjour Protocol
|
||
|
||
Bonjour, технологія, розроблена Apple, дозволяє **пристроям в одній мережі виявляти послуги, які вони пропонують**. Відомий також як Rendezvous, **Zero Configuration** або Zeroconf, він дозволяє пристрою приєднуватися до TCP/IP мережі, **автоматично вибирати IP-адресу** та транслювати свої послуги іншим мережевим пристроям.
|
||
|
||
Zero Configuration Networking, наданий Bonjour, забезпечує, що пристрої можуть:
|
||
|
||
- **Автоматично отримувати IP-адресу** навіть за відсутності DHCP-сервера.
|
||
- Виконувати **переклад імен на адреси** без необхідності в DNS-сервері.
|
||
- **Виявляти послуги**, доступні в мережі.
|
||
|
||
Пристрої, що використовують Bonjour, призначать собі **IP-адресу з діапазону 169.254/16** та перевірять її унікальність у мережі. Macs підтримують запис у таблиці маршрутизації для цієї підмережі, що можна перевірити за допомогою `netstat -rn | grep 169`.
|
||
|
||
Для DNS Bonjour використовує **протокол Multicast DNS (mDNS)**. mDNS працює через **порт 5353/UDP**, використовуючи **стандартні DNS-запити**, але націлюючись на **мульткаст-адресу 224.0.0.251**. Цей підхід забезпечує, що всі прослуховуючі пристрої в мережі можуть отримувати та відповідати на запити, полегшуючи оновлення своїх записів.
|
||
|
||
При приєднанні до мережі кожен пристрій самостійно вибирає ім'я, яке зазвичай закінчується на **.local**, що може бути похідним від імені хоста або випадково згенерованим.
|
||
|
||
Виявлення послуг у мережі полегшується за допомогою **DNS Service Discovery (DNS-SD)**. Використовуючи формат DNS SRV записів, DNS-SD використовує **DNS PTR записи** для можливості переліку кількох послуг. Клієнт, що шукає конкретну послугу, запитуватиме PTR запис для `<Service>.<Domain>`, отримуючи у відповідь список PTR записів у форматі `<Instance>.<Service>.<Domain>`, якщо послуга доступна з кількох хостів.
|
||
|
||
Утиліта `dns-sd` може бути використана для **виявлення та реклами мережевих послуг**. Ось кілька прикладів її використання:
|
||
|
||
### Searching for SSH Services
|
||
|
||
Щоб шукати SSH послуги в мережі, використовується наступна команда:
|
||
```bash
|
||
dns-sd -B _ssh._tcp
|
||
```
|
||
Ця команда ініціює перегляд для \_ssh.\_tcp сервісів і виводить деталі, такі як мітка часу, прапори, інтерфейс, домен, тип сервісу та ім'я екземпляра.
|
||
|
||
### Реклама HTTP Сервісу
|
||
|
||
Щоб рекламувати HTTP сервіс, ви можете використовувати:
|
||
```bash
|
||
dns-sd -R "Index" _http._tcp . 80 path=/index.html
|
||
```
|
||
Ця команда реєструє HTTP-сервіс з назвою "Index" на порту 80 з шляхом `/index.html`.
|
||
|
||
Щоб потім шукати HTTP-сервіси в мережі:
|
||
```bash
|
||
dns-sd -B _http._tcp
|
||
```
|
||
Коли служба запускається, вона оголошує про свою доступність для всіх пристроїв у підмережі, мультикастуючи свою присутність. Пристрої, які зацікавлені в цих службах, не повинні надсилати запити, а просто слухати ці оголошення.
|
||
|
||
Для більш зручного інтерфейсу додаток **Discovery - DNS-SD Browser**, доступний в Apple App Store, може візуалізувати служби, що пропонуються у вашій локальній мережі.
|
||
|
||
Альтернативно, можна написати власні скрипти для перегляду та виявлення служб, використовуючи бібліотеку `python-zeroconf`. Скрипт [**python-zeroconf**](https://github.com/jstasiak/python-zeroconf) демонструє створення браузера служб для `_http._tcp.local.`, виводячи додані або видалені служби:
|
||
```python
|
||
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
|
||
|
||
Якщо є занепокоєння щодо безпеки або інші причини для вимкнення Bonjour, його можна вимкнути за допомогою наступної команди:
|
||
```bash
|
||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
|
||
```
|
||
## Посилання
|
||
|
||
- [**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)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|