macOS Sandbox
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã
åºæ¬æ å ±
MacOS SandboxïŒæåã¯SeatbeltãšåŒã°ããŠããŸããïŒã¯ããµã³ãããã¯ã¹å ã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ããã¢ããªãå®è¡ãããŠãããµã³ãããã¯ã¹ãããã¡ã€ã«ã§æå®ãããèš±å¯ãããã¢ã¯ã·ã§ã³ã«å¶éããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ãäºæããããªãœãŒã¹ã®ã¿ãã¢ã¯ã»ã¹ããããšãä¿èšŒãããŸãã
com.apple.security.app-sandboxãšããæš©éãæã€ã¢ããªã¯ããµã³ãããã¯ã¹å
ã§å®è¡ãããŸããAppleã®ãã€ããªã¯éåžžãµã³ãããã¯ã¹å
ã§å®è¡ãããApp Storeã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã®æš©éãæã£ãŠããŸãããããã£ãŠãããã€ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãµã³ãããã¯ã¹å
ã§å®è¡ãããŸãã
ããã»ã¹ãäœãã§ãããããŸãã¯ã§ããªãããå¶åŸ¡ããããã«ããµã³ãããã¯ã¹ã¯ã»ãŒãã¹ãŠã®æäœã«ããã¯ãæã£ãŠããŸãïŒã»ãšãã©ã®ã·ã¹ãã ã³ãŒã«ãå«ãïŒMACFã䜿çšããŠããŸãããã ããã¢ããªã®æš©éã«å¿ããŠããµã³ãããã¯ã¹ã¯ããã»ã¹ã«å¯ŸããŠããèš±å¯çã«ãªãå ŽåããããŸãã
ãµã³ãããã¯ã¹ã®éèŠãªã³ã³ããŒãã³ãã¯æ¬¡ã®ãšããã§ãïŒ
- ã«ãŒãã«æ¡åŒµ
/System/Library/Extensions/Sandbox.kext - ãã©ã€ããŒããã¬ãŒã ã¯ãŒã¯
/System/Library/PrivateFrameworks/AppSandbox.framework - ãŠãŒã¶ãŒã©ã³ãã§å®è¡ãããããŒã¢ã³
/usr/libexec/sandboxd - ã³ã³ãã
~/Library/Containers
ã³ã³ãã
ãã¹ãŠã®ãµã³ãããã¯ã¹åãããã¢ããªã±ãŒã·ã§ã³ã¯ã~/Library/Containers/{CFBundleIdentifier}ã«ç¬èªã®ã³ã³ãããæã¡ãŸãïŒ
ls -l ~/Library/Containers
total 0
drwx------@ 4 username staff 128 May 23 20:20 com.apple.AMPArtworkAgent
drwx------@ 4 username staff 128 May 23 20:13 com.apple.AMPDeviceDiscoveryAgent
drwx------@ 4 username staff 128 Mar 24 18:03 com.apple.AVConference.Diagnostic
drwx------@ 4 username staff 128 Mar 25 14:14 com.apple.Accessibility-Settings.extension
drwx------@ 4 username staff 128 Mar 25 14:10 com.apple.ActionKit.BundledIntentHandler
[...]
åãã³ãã«IDãã©ã«ããŒå ã«ã¯ãplistãšã¢ããªã®ããŒã¿ãã£ã¬ã¯ããªããããããŒã ãã©ã«ããŒã«äŒŒãæ§é ã«ãªã£ãŠããŸãã
cd /Users/username/Library/Containers/com.apple.Safari
ls -la
total 104
drwx------@ 4 username staff 128 Mar 24 18:08 .
drwx------ 348 username staff 11136 May 23 20:57 ..
-rw-r--r-- 1 username staff 50214 Mar 24 18:08 .com.apple.containermanagerd.metadata.plist
drwx------ 13 username staff 416 Mar 24 18:05 Data
ls -l Data
total 0
drwxr-xr-x@ 8 username staff 256 Mar 24 18:08 CloudKit
lrwxr-xr-x 1 username staff 19 Mar 24 18:02 Desktop -> ../../../../Desktop
drwx------ 2 username staff 64 Mar 24 18:02 Documents
lrwxr-xr-x 1 username staff 21 Mar 24 18:02 Downloads -> ../../../../Downloads
drwx------ 35 username staff 1120 Mar 24 18:08 Library
lrwxr-xr-x 1 username staff 18 Mar 24 18:02 Movies -> ../../../../Movies
lrwxr-xr-x 1 username staff 17 Mar 24 18:02 Music -> ../../../../Music
lrwxr-xr-x 1 username staff 20 Mar 24 18:02 Pictures -> ../../../../Pictures
drwx------ 2 username staff 64 Mar 24 18:02 SystemData
drwx------ 2 username staff 64 Mar 24 18:02 tmp
Caution
泚æããŠãã ãããã·ã³ããªãã¯ãªã³ã¯ãSandboxãããè±åºãããŠä»ã®ãã©ã«ãã«ã¢ã¯ã»ã¹ããããã«ååšããŠããŠããã¢ããªã¯ãããã«ã¢ã¯ã»ã¹ããããã®æš©éãæã£ãŠããå¿ èŠããããŸãããããã®æš©éã¯
RedirectablePathsã®**.plist**å ã«ãããŸãã
**SandboxProfileData**ã¯ãB64ã«ãšã¹ã±ãŒããããã³ã³ãã€ã«æžã¿ã®ãµã³ãããã¯ã¹ãããã¡ã€ã«CFDataã§ãã
# Get container config
## You need FDA to access the file, not even just root can read it
plutil -convert xml1 .com.apple.containermanagerd.metadata.plist -o -
# Binary sandbox profile
<key>SandboxProfileData</key>
<data>
AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf...
# In this file you can find the entitlements:
<key>Entitlements</key>
<dict>
<key>com.apple.MobileAsset.PhishingImageClassifier2</key>
<true/>
<key>com.apple.accounts.appleaccount.fullaccess</key>
<true/>
<key>com.apple.appattest.spi</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>6N38VWS5BX.ru.keepcoder.Telegram</string>
<string>6N38VWS5BX.ru.keepcoder.TelegramShare</string>
</array>
[...]
# Some parameters
<key>Parameters</key>
<dict>
<key>_HOME</key>
<string>/Users/username</string>
<key>_UID</key>
<string>501</string>
<key>_USER</key>
<string>username</string>
[...]
# The paths it can access
<key>RedirectablePaths</key>
<array>
<string>/Users/username/Downloads</string>
<string>/Users/username/Documents</string>
<string>/Users/username/Library/Calendars</string>
<string>/Users/username/Desktop</string>
<key>RedirectedPaths</key>
<array/>
[...]
Warning
ãµã³ãããã¯ã¹ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠäœæãŸãã¯å€æŽããããã¹ãŠã®ãã®ã«ã¯ãéé¢å±æ§ãä»äžãããŸããããã¯ããµã³ãããã¯ã¹ã¢ããªã**
open**ã䜿çšããŠäœããå®è¡ããããšããå Žåã«ãGatekeeperãããªã¬ãŒããŠãµã³ãããã¯ã¹ã¹ããŒã¹ãé²ãããšã«ãªããŸãã
ãµã³ãããã¯ã¹ãããã¡ã€ã«
ãµã³ãããã¯ã¹ãããã¡ã€ã«ã¯ããã®ãµã³ãããã¯ã¹ã§äœãèš±å¯/çŠæ¢ããããã瀺ãèšå®ãã¡ã€ã«ã§ããããã¯ãSchemeããã°ã©ãã³ã°èšèªã䜿çšãã**ãµã³ãããã¯ã¹ãããã¡ã€ã«èšèªïŒSBPLïŒ**ã䜿çšããŸãã
ããã«äŸããããŸã:
(version 1) ; First you get the version
(deny default) ; Then you shuold indicate the default action when no rule applies
(allow network*) ; You can use wildcards and allow everything
(allow file-read* ; You can specify where to apply the rule
(subpath "/Users/username/")
(literal "/tmp/afile")
(regex #"^/private/etc/.*")
)
(allow mach-lookup
(global-name "com.apple.analyticsd")
)
Tip
ãã®ç ç©¶ã確èªããŠãèš±å¯ãŸãã¯æåŠãããå¯èœæ§ã®ããã¢ã¯ã·ã§ã³ãããã«ç¢ºèªããŠãã ããã
ãããã¡ã€ã«ã®ã³ã³ãã€ã«çã§ã¯ãæäœã®ååãdylibããã³kextã«ãã£ãŠç¥ãããé åã®ãšã³ããªã«çœ®ãæããããã³ã³ãã€ã«çãçããèªã¿ã¥ãããªããŸãã
éèŠãªã·ã¹ãã ãµãŒãã¹ããmdnsresponderãµãŒãã¹ã®ããã«ç¬èªã®ã«ã¹ã¿ã ãµã³ãããã¯ã¹å
ã§å®è¡ãããŸãããããã®ã«ã¹ã¿ã ãµã³ãããã¯ã¹ãããã¡ã€ã«ã¯ä»¥äžã§ç¢ºèªã§ããŸãïŒ
/usr/share/sandbox/System/Library/Sandbox/Profiles- ãã®ä»ã®ãµã³ãããã¯ã¹ãããã¡ã€ã«ã¯https://github.com/s7ephen/OSX-SandboxâSeatbeltâProfilesã§ç¢ºèªã§ããŸãã
App Storeã¢ããªã¯**ãããã¡ã€ã«****/System/Library/Sandbox/Profiles/application.sbã䜿çšããŸãããã®ãããã¡ã€ã«ã§ãcom.apple.security.network.server**ã®ãããªæš©éãããã»ã¹ã«ãããã¯ãŒã¯ã䜿çšããããšãèš±å¯ããæ¹æ³ã確èªã§ããŸãã
次ã«ãäžéšã®AppleããŒã¢ã³ãµãŒãã¹ã¯ã/System/Library/Sandbox/Profiles/*.sbãŸãã¯/usr/share/sandbox/*.sbã«ããç°ãªããããã¡ã€ã«ã䜿çšããŸãããããã®ãµã³ãããã¯ã¹ã¯ãAPI sandbox_init_XXXãåŒã³åºãã¡ã€ã³é¢æ°ã«é©çšãããŸãã
SIPã¯ã/System/Library/Sandbox/rootless.confã«ããplatform_profileãšãããµã³ãããã¯ã¹ãããã¡ã€ã«ã§ãã
ãµã³ãããã¯ã¹ãããã¡ã€ã«ã®äŸ
ç¹å®ã®ãµã³ãããã¯ã¹ãããã¡ã€ã«ã§ã¢ããªã±ãŒã·ã§ã³ãèµ·åããã«ã¯ã次ã®ããã«ããŸãïŒ
sandbox-exec -f example.sb /Path/To/The/Application
(version 1)
(deny default)
(allow file* (literal "/tmp/hacktricks.txt"))
# This will fail because default is denied, so it cannot execute touch
sandbox-exec -f touch.sb touch /tmp/hacktricks.txt
# Check logs
log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last 30s
[...]
2023-05-26 13:42:44.136082+0200 localhost kernel[0]: (Sandbox) Sandbox: sandbox-exec(41398) deny(1) process-exec* /usr/bin/touch
2023-05-26 13:42:44.136100+0200 localhost kernel[0]: (Sandbox) Sandbox: sandbox-exec(41398) deny(1) file-read-metadata /usr/bin/touch
2023-05-26 13:42:44.136321+0200 localhost kernel[0]: (Sandbox) Sandbox: sandbox-exec(41398) deny(1) file-read-metadata /var
2023-05-26 13:42:52.701382+0200 localhost kernel[0]: (Sandbox) 5 duplicate reports for Sandbox: sandbox-exec(41398) deny(1) file-read-metadata /var
[...]
(version 1)
(deny default)
(allow file* (literal "/tmp/hacktricks.txt"))
(allow process* (literal "/usr/bin/touch"))
; This will also fail because:
; 2023-05-26 13:44:59.840002+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-metadata /usr/bin/touch
; 2023-05-26 13:44:59.840016+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data /usr/bin/touch
; 2023-05-26 13:44:59.840028+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data /usr/bin
; 2023-05-26 13:44:59.840034+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-metadata /usr/lib/dyld
; 2023-05-26 13:44:59.840050+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) sysctl-read kern.bootargs
; 2023-05-26 13:44:59.840061+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data /
(version 1)
(deny default)
(allow file* (literal "/private/tmp/hacktricks.txt"))
(allow process* (literal "/usr/bin/touch"))
(allow file-read-data (literal "/"))
; This one will work
Tip
Appleãäœæãã ãœãããŠã§ã¢ã¯ãWindowsäžã§è¿œå ã®ã»ãã¥ãªãã£å¯ŸçãäŸãã°ã¢ããªã±ãŒã·ã§ã³ãµã³ãããã¯ã¹ããããŸããã
ãã€ãã¹ã®äŸ:
- https://lapcatsoftware.com/articles/sandbox-escape.html
- https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c (圌ãã¯
~$ã§å§ãŸãååã®ãã¡ã€ã«ããµã³ãããã¯ã¹ã®å€ã«æžã蟌ãããšãã§ããŸã)ã
ãµã³ãããã¯ã¹ãã¬ãŒã¹
ãããã¡ã€ã«çµç±
ã¢ã¯ã·ã§ã³ããã§ãã¯ããããã³ã«ãµã³ãããã¯ã¹ãå®è¡ãããã¹ãŠã®ãã§ãã¯ããã¬ãŒã¹ããããšãå¯èœã§ãããã®ããã«ã¯ã次ã®ãããã¡ã€ã«ãäœæããŠãã ãã:
(version 1)
(trace /tmp/trace.out)
ãã®ãããã¡ã€ã«ã䜿çšããŠäœããå®è¡ããŸã:
sandbox-exec -f /tmp/trace.sb /bin/ls
/tmp/trace.out ã§ã¯ãåŒã³åºããããã³ã«å®è¡ãããåãµã³ãããã¯ã¹ãã§ãã¯ãèŠãããšãã§ããŸãïŒã€ãŸããå€ãã®éè€ããããŸãïŒã
-t ãã©ã¡ãŒã¿ã䜿çšããŠãµã³ãããã¯ã¹ããã¬ãŒã¹ããããšãå¯èœã§ã: sandbox-exec -t /path/trace.out -p "(version 1)" /bin/ls
APIçµç±
libsystem_sandbox.dylib ã«ãšã¯ã¹ããŒããããŠãã颿° sandbox_set_trace_path ã¯ããµã³ãããã¯ã¹ãã§ãã¯ãæžã蟌ãŸãããã¬ãŒã¹ãã¡ã€ã«åãæå®ããããšãå¯èœã«ããŸããsandbox_vtrace_enable() ãåŒã³åºãããã®åŸ sandbox_vtrace_report() ãåŒã³åºãããšã§ãããã¡ãããã°ãšã©ãŒãååŸããããšãå¯èœã§ãã
ãµã³ãããã¯ã¹æ€æ»
libsandbox.dylib ã¯ãããã»ã¹ã®ãµã³ãããã¯ã¹ç¶æ
ã®ãªã¹ãïŒæ¡åŒµãå«ãïŒãæäŸãã sandbox_inspect_pid ãšãã颿°ããšã¯ã¹ããŒãããŠããŸãããã ãããã®é¢æ°ã¯ãã©ãããã©ãŒã ãã€ããªã®ã¿ã䜿çšã§ããŸãã
MacOS & iOS ãµã³ãããã¯ã¹ãããã¡ã€ã«
MacOS ã¯ãã·ã¹ãã ãµã³ãããã¯ã¹ãããã¡ã€ã«ã2ã€ã®å Žæã«ä¿åããŸã: /usr/share/sandbox/ ãš /System/Library/Sandbox/Profilesã
ãµãŒãããŒãã£ã¢ããªã±ãŒã·ã§ã³ã com.apple.security.app-sandbox æš©éãæã£ãŠããå Žåãã·ã¹ãã ã¯ãã®ããã»ã¹ã« /System/Library/Sandbox/Profiles/application.sb ãããã¡ã€ã«ãé©çšããŸãã
iOS ã§ã¯ãããã©ã«ããããã¡ã€ã«ã¯ container ãšåŒã°ããSBPL ããã¹ã衚çŸã¯ãããŸãããã¡ã¢ãªå ã§ã¯ããã®ãµã³ãããã¯ã¹ã¯ãµã³ãããã¯ã¹ããã®åæš©éã®ããã®èš±å¯/æåŠãã€ããªããªãŒãšããŠè¡šçŸãããŸãã
App Store ã¢ããªã®ã«ã¹ã¿ã SBPL
äŒæ¥ãã¢ããªã ã«ã¹ã¿ã ãµã³ãããã¯ã¹ãããã¡ã€ã« ã§å®è¡ããããšãå¯èœã§ãïŒããã©ã«ãã®ãã®ã§ã¯ãªãïŒã圌ã㯠com.apple.security.temporary-exception.sbpl æš©éã䜿çšããå¿
èŠãããããã㯠Apple ã«ãã£ãŠæ¿èªãããå¿
èŠããããŸãã
ãã®æš©éã®å®çŸ©ã¯ /System/Library/Sandbox/Profiles/application.sb: ã§ç¢ºèªã§ããŸãã
(sandbox-array-entitlement
"com.apple.security.temporary-exception.sbpl"
(lambda (string)
(let* ((port (open-input-string string)) (sbpl (read port)))
(with-transparent-redirection (eval sbpl)))))
ãã®æš©éã®åŸã®æååãevalããSandboxãããã¡ã€ã«ãšããŠæ±ããŸãã
Sandboxãããã¡ã€ã«ã®ã³ã³ãã€ã«ãšãã³ã³ãã€ã«
**sandbox-exec**ããŒã«ã¯ãlibsandbox.dylibã®sandbox_compile_*颿°ã䜿çšããŸãããšã¯ã¹ããŒããããäž»ãªé¢æ°ã¯æ¬¡ã®ãšããã§ãïŒsandbox_compile_fileïŒãã¡ã€ã«ãã¹ãæåŸ
ããã©ã¡ãŒã¿-fïŒãsandbox_compile_stringïŒæååãæåŸ
ããã©ã¡ãŒã¿-pïŒãsandbox_compile_nameïŒã³ã³ããã®ååãæåŸ
ããã©ã¡ãŒã¿-nïŒãsandbox_compile_entitlementsïŒæš©éplistãæåŸ
ïŒã
ãã®éã³ã³ãã€ã«ãããsandbox-execããŒã«ã®ãªãŒãã³ãœãŒã¹çã¯ã**sandbox-exec**ãã³ã³ãã€ã«ãããSandboxãããã¡ã€ã«ããã¡ã€ã«ã«æžã蟌ãããšãå¯èœã«ããŸãã
ããã«ãã³ã³ããå
ã§ããã»ã¹ãå¶éããããã«ãsandbox_spawnattrs_set[container/profilename]ãåŒã³åºããã³ã³ãããŸãã¯æ¢åã®ãããã¡ã€ã«ãæž¡ãããšããããŸãã
Sandboxã®ãããã°ãšãã€ãã¹
macOSã§ã¯ãiOSãšã¯ç°ãªããããã»ã¹ã¯ã«ãŒãã«ã«ãã£ãŠæåãããµã³ãããã¯ã¹åãããŠããããã§ã¯ãªããããã»ã¹ã¯èªããµã³ãããã¯ã¹ã«åå ããå¿ èŠããããŸããããã¯ãmacOSã§ã¯ããã»ã¹ãç©æ¥µçã«ãµã³ãããã¯ã¹ã«å ¥ãããšã決å®ãããŸã§ããµã³ãããã¯ã¹ã«ãã£ãŠå¶éãããªãããšãæå³ããŸãããApp Storeã¢ããªã¯åžžã«ãµã³ãããã¯ã¹åãããŠããŸãã
ããã»ã¹ã¯ãæš©écom.apple.security.app-sandboxãæã£ãŠããå ŽåããŠãŒã¶ãŒã©ã³ãããèªåçã«ãµã³ãããã¯ã¹åãããŸãããã®ããã»ã¹ã®è©³çްãªèª¬æã«ã€ããŠã¯ã以äžã確èªããŠãã ããïŒ
Sandboxæ¡åŒµ
æ¡åŒµã¯ãªããžã§ã¯ãã«ãããªãæš©éãäžããããšãå¯èœã«ããæ¬¡ã®é¢æ°ã®ãããããåŒã³åºãããšã§è¡ãããŸãïŒ
sandbox_issue_extensionsandbox_extension_issue_file[_with_new_type]sandbox_extension_issue_machsandbox_extension_issue_iokit_user_client_classsandbox_extension_issue_iokit_registry_rentry_classsandbox_extension_issue_genericsandbox_extension_issue_posix_ipc
æ¡åŒµã¯ãããã»ã¹ã®è³æ Œæ
å ±ããã¢ã¯ã»ã¹å¯èœãª2çªç®ã®MACFã©ãã«ã¹ãããã«ä¿åãããŸããæ¬¡ã®**sbtool**ããã®æ
å ±ã«ã¢ã¯ã»ã¹ã§ããŸãã
æ¡åŒµã¯éåžžãèš±å¯ãããããã»ã¹ã«ãã£ãŠä»äžãããããšã«æ³šæããŠãã ãããããšãã°ãtccdã¯ãããã»ã¹ãåçã«ã¢ã¯ã»ã¹ããããšããXPCã¡ãã»ãŒãžã§èš±å¯ãããå Žåã«ãcom.apple.tcc.kTCCServicePhotosã®æ¡åŒµããŒã¯ã³ãä»äžããŸãããã®åŸãããã»ã¹ã¯æ¡åŒµããŒã¯ã³ãæ¶è²»ããå¿
èŠããããããã远å ãããŸãã
æ¡åŒµããŒã¯ã³ã¯ãä»äžãããæš©éããšã³ã³ãŒãããé·ã16鲿°ã§ããããšã«æ³šæããŠãã ããããã ããèš±å¯ãããPIDãããŒãã³ãŒãã£ã³ã°ãããŠããªããããããŒã¯ã³ã«ã¢ã¯ã»ã¹ã§ããä»»æã®ããã»ã¹ãè€æ°ã®ããã»ã¹ã«ãã£ãŠæ¶è²»ãããå¯èœæ§ããããŸãã
æ¡åŒµã¯æš©éãšãéåžžã«é¢é£ããŠãããããç¹å®ã®æš©éãæã€ããšãç¹å®ã®æ¡åŒµãèªåçã«ä»äžããå¯èœæ§ããããŸãã
PIDæš©éã®ç¢ºèª
ããã«ãããšãsandbox_check颿°ïŒããã¯__mac_syscallã§ãïŒã¯ãç¹å®ã®PIDãç£æ»ããŒã¯ã³ããŸãã¯ãŠããŒã¯IDã«ãã£ãŠãµã³ãããã¯ã¹ã§æäœãèš±å¯ãããŠãããã©ããã確èªã§ããŸãã
ããŒã«sbtoolïŒããã§ã³ã³ãã€ã«ããããã®ãèŠã€ããŠãã ããïŒã¯ãPIDãç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ãããã©ããã確èªã§ããŸãïŒ
sbtool <pid> mach #Check mac-ports (got from launchd with an api)
sbtool <pid> file /tmp #Check file access
sbtool <pid> inspect #Gives you an explanation of the sandbox profile and extensions
sbtool <pid> all
[un]suspend
ãµã³ãããã¯ã¹ãäžæåæ¢ããã³åéããããšãå¯èœã§ãlibsystem_sandbox.dylibã®sandbox_suspendããã³sandbox_unsuspend颿°ã䜿çšããŸãã
äžæåæ¢é¢æ°ãåŒã³åºãã«ã¯ã以äžã®ããã«åŒã³åºãå ãèªå¯ããããã«ããã€ãã®æš©éããã§ãã¯ãããããšã«æ³šæããŠãã ããã
- com.apple.private.security.sandbox-manager
- com.apple.security.print
- com.apple.security.temporary-exception.audio-unit-host
mac_syscall
ãã®ã·ã¹ãã ã³ãŒã« (#381) ã¯ãæåã®åŒæ°ãšããŠå®è¡ããã¢ãžã¥ãŒã«ã瀺ãæååãæåŸ ããæ¬¡ã®åŒæ°ã«ã¯å®è¡ãã颿°ã瀺ãã³ãŒããæå®ããŸãã3çªç®ã®åŒæ°ã¯å®è¡ããã颿°ã«äŸåããŸãã
颿°___sandbox_msã®åŒã³åºãã¯ãæåã®åŒæ°ã«"Sandbox"ãæå®ããŠmac_syscallãã©ããããŸããåæ§ã«ã___sandbox_mspã¯mac_set_proc (#387) ã®ã©ãããŒã§ããæ¬¡ã«ã___sandbox_msã«ãã£ãŠãµããŒããããã³ãŒãã®äžéšã¯ä»¥äžã®è¡šã«ç€ºãããŠããŸãã
- set_profile (#0): ããã»ã¹ã«ã³ã³ãã€ã«æžã¿ãŸãã¯ååä»ãã®ãããã¡ã€ã«ãé©çšããŸãã
- platform_policy (#1): ãã©ãããã©ãŒã åºæã®ããªã·ãŒãã§ãã¯ã匷å¶ããŸãïŒmacOSãšiOSã§ç°ãªããŸãïŒã
- check_sandbox (#2): ç¹å®ã®ãµã³ãããã¯ã¹æäœã®æåãã§ãã¯ãå®è¡ããŸãã
- note (#3): ãµã³ãããã¯ã¹ã«æ³šéã远å ããŸãã
- container (#4): éåžžã¯ãããã°ãŸãã¯èå¥ã®ããã«ããµã³ãããã¯ã¹ã«æ³šéãæ·»ä»ããŸãã
- extension_issue (#5): ããã»ã¹ã®æ°ããæ¡åŒµãçæããŸãã
- extension_consume (#6): æå®ãããæ¡åŒµãæ¶è²»ããŸãã
- extension_release (#7): æ¶è²»ãããæ¡åŒµã«é¢é£ä»ããããã¡ã¢ãªãè§£æŸããŸãã
- extension_update_file (#8): ãµã³ãããã¯ã¹å ã®æ¢åã®ãã¡ã€ã«æ¡åŒµã®ãã©ã¡ãŒã¿ã倿ŽããŸãã
- extension_twiddle (#9): æ¢åã®ãã¡ã€ã«æ¡åŒµã調æŽãŸãã¯å€æŽããŸãïŒäŸïŒTextEditãrtfãrtfdïŒã
- suspend (#10): ãã¹ãŠã®ãµã³ãããã¯ã¹ãã§ãã¯ãäžæçã«åæ¢ããŸãïŒé©åãªæš©éãå¿ èŠã§ãïŒã
- unsuspend (#11): 以åã«äžæåæ¢ããããã¹ãŠã®ãµã³ãããã¯ã¹ãã§ãã¯ãåéããŸãã
- passthrough_access (#12): ãµã³ãããã¯ã¹ãã§ãã¯ããã€ãã¹ããŠãªãœãŒã¹ãžã®çŽæ¥ãã¹ã¹ã«ãŒã¢ã¯ã»ã¹ãèš±å¯ããŸãã
- set_container_path (#13): (iOSã®ã¿) ã¢ããªã°ã«ãŒããŸãã¯çœ²åIDã®ããã®ã³ã³ãããã¹ãèšå®ããŸãã
- container_map (#14): (iOSã®ã¿)
containermanagerdããã³ã³ãããã¹ãååŸããŸãã - sandbox_user_state_item_buffer_send (#15): (iOS 10+) ãµã³ãããã¯ã¹å ã®ãŠãŒã¶ãŒã¢ãŒãã¡ã¿ããŒã¿ãèšå®ããŸãã
- inspect (#16): ãµã³ãããã¯ã¹åãããããã»ã¹ã«é¢ãããããã°æ å ±ãæäŸããŸãã
- dump (#18): (macOS 11) åæã®ããã«ãµã³ãããã¯ã¹ã®çŸåšã®ãããã¡ã€ã«ããã³ãããŸãã
- vtrace (#19): ç£èŠãŸãã¯ãããã°ã®ããã«ãµã³ãããã¯ã¹æäœããã¬ãŒã¹ããŸãã
- builtin_profile_deactivate (#20): (macOS < 11) ååä»ããããã¡ã€ã«ãç¡å¹ã«ããŸãïŒäŸïŒ
pe_i_can_has_debuggerïŒã - check_bulk (#21): åäžã®åŒã³åºãã§è€æ°ã®
sandbox_checkæäœãå®è¡ããŸãã - reference_retain_by_audit_token (#28): ãµã³ãããã¯ã¹ãã§ãã¯ã§äœ¿çšããããã®ç£æ»ããŒã¯ã³ã®åç §ãäœæããŸãã
- reference_release (#29): 以åã«ä¿æãããç£æ»ããŒã¯ã³ã®åç §ãè§£æŸããŸãã
- rootless_allows_task_for_pid (#30):
task_for_pidãèš±å¯ãããŠãããã©ããã確èªããŸãïŒcsrãã§ãã¯ã«é¡äŒŒïŒã - rootless_whitelist_push (#31): (macOS) ã·ã¹ãã æŽåæ§ä¿è·ïŒSIPïŒãããã§ã¹ããã¡ã€ã«ãé©çšããŸãã
- rootless_whitelist_check (preflight) (#32): å®è¡åã«SIPãããã§ã¹ããã¡ã€ã«ããã§ãã¯ããŸãã
- rootless_protected_volume (#33): (macOS) ãã£ã¹ã¯ãŸãã¯ããŒãã£ã·ã§ã³ã«SIPä¿è·ãé©çšããŸãã
- rootless_mkdir_protected (#34): ãã£ã¬ã¯ããªäœæããã»ã¹ã«SIP/DataVaultä¿è·ãé©çšããŸãã
Sandbox.kext
iOSã§ã¯ãã«ãŒãã«æ¡åŒµã__TEXT.__constã»ã°ã¡ã³ãå
ã«ãã¹ãŠã®ãããã¡ã€ã«ãããŒãã³ãŒãã£ã³ã°ããŠããããã倿Žãããªãããã«ããŠããŸãã以äžã¯ã«ãŒãã«æ¡åŒµããã®ããã€ãã®è峿·±ã颿°ã§ãã
hook_policy_init:mpo_policy_initãããã¯ããmac_policy_registerã®åŸã«åŒã³åºãããŸãããµã³ãããã¯ã¹ã®åæåã®ã»ãšãã©ãå®è¡ããŸãããŸããSIPãåæåããŸããhook_policy_initbsd:security.mac.sandbox.sentinelãsecurity.mac.sandbox.audio_activeãããã³security.mac.sandbox.debug_modeãç»é²ããsysctlã€ã³ã¿ãŒãã§ãŒã¹ãèšå®ããŸãïŒPE_i_can_has_debuggerã§ããŒããããå ŽåïŒãhook_policy_syscall: âSandboxâãæåã®åŒæ°ãšããŠãæäœã瀺ãã³ãŒãã2çªç®ã®åŒæ°ãšããŠmac_syscallã«ãã£ãŠåŒã³åºãããŸããèŠæ±ãããã³ãŒãã«å¿ããŠå®è¡ããã³ãŒããèŠã€ããããã«ã¹ã€ããã䜿çšãããŸãã
MACF Hooks
Sandbox.kextã¯ãMACFãä»ããŠ100以äžã®ããã¯ã䜿çšããŠããŸããã»ãšãã©ã®ããã¯ã¯ãã¢ã¯ã·ã§ã³ãå®è¡ã§ãããã©ããã確èªããããã®äºçްãªã±ãŒã¹ããã§ãã¯ããããã§ãªãå Žåã¯cred_sb_evalutateãåŒã³åºããæäœãå®è¡ããããã®è³æ Œæ
å ±ãšåºåçšã®ãããã¡ãæž¡ããŸãã
ãã®è¯ãäŸããããã¯ããã**_mpo_file_check_mmap颿°ã§ãããã¯mmapãããã¯ããæ°ããã¡ã¢ãªãæžã蟌ã¿å¯èœãã©ããããã§ãã¯ãïŒããã§ãªãå Žåã¯å®è¡ãèš±å¯ïŒã次ã«ãããdyldå
±æãã£ãã·ã¥ã«äœ¿çšãããŠãããã©ããããã§ãã¯ããããã§ããã°å®è¡ãèš±å¯ããæåŸã«sb_evaluate_internal**ïŒãŸãã¯ãã®ã©ãããŒã®1ã€ïŒãåŒã³åºããŠãããªãèš±å¯ãã§ãã¯ãå®è¡ããŸãã
ããã«ããµã³ãããã¯ã¹ã䜿çšããæ°çŸã®ããã¯ã®äžã§ãç¹ã«è峿·±ã3ã€ããããŸãã
mpo_proc_check_for: å¿ èŠã«å¿ããŠãããã¡ã€ã«ãé©çšãã以åã«é©çšãããŠããªãã£ãå Žåãmpo_vnode_check_exec: ããã»ã¹ãé¢é£ãããã€ããªãããŒããããšãã«åŒã³åºããããããã¡ã€ã«ãã§ãã¯ãšSUID/SGIDå®è¡ãçŠæ¢ãããã§ãã¯ãè¡ãããŸããmpo_cred_label_update_execve: ã©ãã«ãå²ãåœãŠããããšãã«åŒã³åºãããŸããããã¯ããã€ããªãå®å šã«ããŒããããããŸã å®è¡ãããŠããªããšãã«åŒã³åºããããããæãé·ããã®ã§ãããµã³ãããã¯ã¹ãªããžã§ã¯ãã®äœæãkauthè³æ Œæ å ±ãžã®ãµã³ãããã¯ã¹æ§é ã®æ·»ä»ãmachããŒããžã®ã¢ã¯ã»ã¹ã®åé€ãªã©ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
_cred_sb_evalutateã¯sb_evaluate_internalã®ã©ãããŒã§ããããã®é¢æ°ã¯æž¡ãããè³æ Œæ
å ±ãååŸããæ¬¡ã«eval颿°ã䜿çšããŠè©äŸ¡ãå®è¡ããŸãããã®é¢æ°ã¯éåžžããã¹ãŠã®ããã»ã¹ã«ããã©ã«ãã§é©çšããããã©ãããã©ãŒã ãããã¡ã€ã«ãè©äŸ¡ãããã®åŸç¹å®ã®ããã»ã¹ãããã¡ã€ã«ãè©äŸ¡ããŸãããã©ãããã©ãŒã ãããã¡ã€ã«ã¯ãmacOSã®SIPã®äž»èŠãªã³ã³ããŒãã³ãã®1ã€ã§ããããšã«æ³šæããŠãã ããã
Sandboxd
ãµã³ãããã¯ã¹ã«ã¯ãXPC MachãµãŒãã¹com.apple.sandboxdãå
¬éããã«ãŒãã«æ¡åŒµãéä¿¡ã«äœ¿çšããç¹å¥ãªããŒã14ïŒHOST_SEATBELT_PORTïŒããã€ã³ããããŠãŒã¶ãŒããŒã¢ã³ããããŸããMIGã䜿çšããŠããã€ãã®é¢æ°ãå
¬éããŠããŸãã
References
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã


