macOS Gatekeeper / Quarantine / XProtect
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ãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã
Gatekeeper
Gatekeeper 㯠macOS ã®ã»ãã¥ãªãã£æ©èœã§ããŠãŒã¶ãŒãã·ã¹ãã ã§ ä¿¡é ŒããããœãããŠã§ã¢ã®ã¿ãå®è¡ãã ããšãç®çãšããŠããŸããããã¯ããŠãŒã¶ãŒãããŠã³ããŒãããŠéãããšãã App Store 以å€ã®ãœãŒã¹ïŒã¢ããªããã©ã°ã€ã³ãã€ã³ã¹ããŒã©ããã±ãŒãžãªã©ïŒããã®ãœãããŠã§ã¢ã æ€èšŒãã ããšã§æ©èœããŸãã
Gatekeeper ã®äž»èŠãªä»çµã¿ã¯ãã® æ€èšŒããã»ã¹ ã«ãããŸããããŠã³ããŒããããœãããŠã§ã¢ã èªèãããéçºè ã«ãã£ãŠçœ²åãããŠããã ã確èªãããœãããŠã§ã¢ã®çæ£æ§ãæ ä¿ããŸããããã«ããœãããŠã§ã¢ã Apple ã«ãã£ãŠ notarisedïŒå ¬èšŒïŒãããŠããã ã確èªããæ¢ç¥ã®æªæããã³ã³ãã³ããå«ãŸããŠããªãããšããŸãå ¬èšŒåŸã«æ¹ãããããŠããªãããšãæ€èšŒããŸãã
å ããŠãGatekeeper ã¯ããŠã³ããŒããããœãããŠã§ã¢ãåããŠéãéã« ãŠãŒã¶ãŒã«èš±å¯ãæ±ãã ããšã§ããŠãŒã¶ãŒã®æäœæ§ãšã»ãã¥ãªãã£ã匷åããŸããããã«ããããŠãŒã¶ãŒãããŒã¿ãã¡ã€ã«ãšèª€èªããŠããŸã£ãæœåšçã«æå®³ãªå®è¡ã³ãŒãã誀ã£ãŠå®è¡ããã®ãé²ããŸãã
ã¢ããªã±ãŒã·ã§ã³çœ²å
ã¢ããªã±ãŒã·ã§ã³çœ²åïŒcode signatures ãšãåŒã°ããïŒã¯ãApple ã®ã»ãã¥ãªãã£ã€ã³ãã©ã¹ãã©ã¯ãã£ã®éèŠãªèŠçŽ ã§ããããã㯠ãœãããŠã§ã¢äœè ã®èº«å ãæ€èšŒããïŒéçºè ïŒããããŸã眲ååŸã«ã³ãŒããæ¹ãããããŠããªãããšãä¿èšŒããããã«äœ¿çšãããŸãã
ä»çµã¿ã¯æ¬¡ã®ãšããã§ã:
- ã¢ããªã±ãŒã·ã§ã³ã®çœ²å: éçºè ãã¢ããªã±ãŒã·ã§ã³ãé åžããæºåãã§ããããç§å¯éµã䜿ã£ãŠã¢ããªã«çœ²åããŸãããã®ç§å¯éµã¯ãApple Developer Program ã«ç»é²ããéçºè ã« Apple ãçºè¡ãã èšŒææž ã«çŽä»ããŠããŸãã眲åããã»ã¹ã§ã¯ãã¢ããªã®å šéšåã®æå·åŠçããã·ã¥ãäœæãããã®ããã·ã¥ãéçºè ã®ç§å¯éµã§æå·åããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®é åž: 眲åãããã¢ããªã¯ã察å¿ããå ¬ééµãå«ãéçºè ã®èšŒææžãšãšãã«ãŠãŒã¶ãŒã«é åžãããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®æ€èšŒ: ãŠãŒã¶ãŒãã¢ããªãããŠã³ããŒãããŠå®è¡ããããšãããšãmacOS ã¯éçºè ã®èšŒææžããå ¬ééµã䜿ã£ãŠæå·åãããããã·ã¥ã埩å·ããŸããæ¬¡ã«ãçŸåšã®ã¢ããªã®ç¶æ ã«åºã¥ããŠããã·ã¥ãåèšç®ãã埩å·ãããããã·ã¥ãšæ¯èŒããŸããäžèŽããã°ãã¢ããªã眲å以éã«æ¹ãããããŠããªã ããšãæå³ããã·ã¹ãã ã¯ã¢ããªã®å®è¡ãèš±å¯ããŸãã
ã¢ããªã±ãŒã·ã§ã³çœ²å㯠Gatekeeper æè¡ã®äžå¯æ¬ ãªéšåã§ãããŠãŒã¶ãŒã ã€ã³ã¿ãŒãããããããŠã³ããŒãããã¢ããªã±ãŒã·ã§ã³ãéãããšããéãGatekeeper ã¯ã¢ããªã®çœ²åãæ€èšŒããŸããApple ãæ¢ç¥ã®éçºè ã«çºè¡ããèšŒææžã§çœ²åããããã€ã³ãŒããæ¹ãããããŠããªããã°ãGatekeeper ã¯ã¢ããªã®å®è¡ãèš±å¯ããŸããããã§ãªãå Žåã¯ãã¢ããªããããã¯ããŠãŒã¶ãŒã«èŠåããŸãã
macOS Catalina 以éãGatekeeper ã¯ã¢ããªã±ãŒã·ã§ã³ã Apple ã«ãã£ãŠ notarized ãããŠãããã©ããã確èªããŸããnotarization ããã»ã¹ã¯ã¢ããªãæ¢ç¥ã®ã»ãã¥ãªãã£åé¡ãæªæããã³ãŒãã«ã€ããŠãã§ãã¯ãããããã®ãã§ãã¯ãééãããš Apple ã¯ã¢ããªã«å¯ŸããŠãã±ãããä»äžããGatekeeper ããããæ€èšŒã§ããããã«ããŸãã
眲åã®ç¢ºèª
ããã€ãã® malware sample ã調æ»ããéã¯ããã€ããªã® 眲åãå¿ ã確èªãã ã¹ãã§ãã眲åãã éçºè ãæ¢ã« malware ãšé¢é£ããŠããå¯èœæ§ãããããã§ãã
# Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
# Check if the appâs contents have been modified
codesign --verify --verbose /Applications/Safari.app
# Get entitlements from the binary
codesign -d --entitlements :- /System/Applications/Automator.app # Check the TCC perms
# Check if the signature is valid
spctl --assess --verbose /Applications/Safari.app
# Sign a binary
codesign -s <cert-name-keychain> toolsdemo
ããŒã¿ãªãŒãŒã·ã§ã³
Apple ã®ããŒã¿ãªãŒãŒã·ã§ã³ããã»ã¹ã¯ãæœåšçã«æå®³ãªãœãããŠã§ã¢ãããŠãŒã¶ãŒãä¿è·ããããã®è¿œå çãªå®å šçã§ããããã¯ãéçºè ãèªåã®ã¢ããªã±ãŒã·ã§ã³ãæ€æ»ã®ããã«æåºããããšãå«ã¿ãAppleâs Notary ServiceïŒApp Review ãšæ··åããªãã§ãã ããïŒã«ãã£ãŠè¡ãããŸãããã®ãµãŒãã¹ã¯èªååãããã·ã¹ãã ã§ãããæåºããããœãããŠã§ã¢ã«æªæã®ããã³ã³ãã³ããå«ãŸããŠããªãããã³ãŒã眲åã«é¢ããæœåšçãªåé¡ããªããã粟æ»ããŸãã
ãœãããŠã§ã¢ããã®æ€æ»ãåé¡ãªãééããå ŽåãNotary Service ã¯ããŒã¿ãªãŒãŒã·ã§ã³ãã±ãããçºè¡ããŸããéçºè ã¯ãã®ãã±ããããœãããŠã§ã¢ã«æ·»ä»ããå¿ èŠãããããããäžè¬ã« âstaplingâ ãšåŒã³ãŸããããã«ããã®ããŒã¿ãªãŒãŒã·ã§ã³ãã±ãã㯠GatekeeperïŒApple ã®ã»ãã¥ãªãã£æè¡ïŒãã¢ã¯ã»ã¹ã§ããããã«ãªã³ã©ã€ã³ã«ãå ¬éãããŸãã
ãŠãŒã¶ãŒããœãããŠã§ã¢ãåããŠã€ã³ã¹ããŒã«ãŸãã¯å®è¡ãããšããããŒã¿ãªãŒãŒã·ã§ã³ãã±ãããå®è¡ãã¡ã€ã«ã«ã¹ããŒãã«ãããŠããããªã³ã©ã€ã³ã§èŠã€ããããåããããã®ååšã¯ Gatekeeper ã«å¯ŸããŠåœè©²ãœãããŠã§ã¢ã Apple ã«ãã£ãŠããŒã¿ãªãŒãŒã·ã§ã³ãããããšãç¥ãããŸãããã®çµæãGatekeeper ã¯ååèµ·åæã®ãã€ã¢ãã°ã«èª¬ææã衚瀺ãããœãããŠã§ã¢ã Apple ã«ããæªæããã³ã³ãã³ãã®ãã§ãã¯ãåããããšã瀺ããŸãããã®ããã»ã¹ã¯ããŠãŒã¶ãŒãã·ã¹ãã ã«ã€ã³ã¹ããŒã«ãŸãã¯å®è¡ãããœãããŠã§ã¢ã®å®å šæ§ã«å¯Ÿããä¿¡é Œãé«ããŸãã
spctl & syspolicyd
Caution
Sequoia ããŒãžã§ã³ä»¥éã
spctlã¯ãã¯ã Gatekeeper ã®èšå®ã倿Žã§ããªãç¹ã«æ³šæããŠãã ããã
spctl 㯠Gatekeeper ãåæã»æäœããããã® CLI ããŒã«ã§ãïŒsyspolicyd ããŒã¢ã³ãš XPC ã¡ãã»ãŒãžçµç±ã§é£æºããŸãïŒãäŸãã°ãGateKeeper ã® ç¶æ
ãæ¬¡ã®ããã«ç¢ºèªã§ããŸã:
# Check the status
spctl --status
Caution
GateKeeper ã®çœ²åãã§ãã¯ã¯ããã¹ãŠã®ãã¡ã€ã«ã§ã¯ãªã Quarantine attribute ãä»äžããããã¡ã€ã«ã®ã¿ã«å¯ŸããŠè¡ãããããšã«æ³šæããŠãã ããã
GateKeeper ã¯ãpreferences & the signature ã«åŸã£ãŠãã€ããªãå®è¡å¯èœãã©ããããã§ãã¯ããŸã:
.png)
syspolicyd 㯠Gatekeeper ã匷å¶ããäž»èŠãªããŒã¢ã³ã§ãã/var/db/SystemPolicy ã«é
眮ãããããŒã¿ããŒã¹ãç¶æããŠãããããŒã¿ããŒã¹ããµããŒãããã³ãŒã㯠database here ãšãSQL ãã³ãã¬ãŒã㯠SQL template here ã§ç¢ºèªã§ããŸããããŒã¿ããŒã¹ã¯ SIP ã«ããå¶éãåãã root ã«ãã£ãŠæžã蟌ã¿å¯èœã§ã仿¹ãç Žæããå Žåã®ãªãªãžãã«ããã¯ã¢ãããšã㊠/var/db/.SystemPolicy-default ã䜿çšãããŸãã
ããã«ããã³ãã« /var/db/gke.bundle ãš /var/db/gkopaque.bundle ã«ã¯ããŒã¿ããŒã¹ã«æ¿å
¥ãããã«ãŒã«ãå«ããã¡ã€ã«ãå«ãŸããŠããŸããroot ã§ãã®ããŒã¿ããŒã¹ã確èªããã«ã¯:
# Open database
sqlite3 /var/db/SystemPolicy
# Get allowed rules
SELECT requirement,allow,disabled,label from authority where label != 'GKE' and disabled=0;
requirement|allow|disabled|label
anchor apple generic and certificate 1[subject.CN] = "Apple Software Update Certification Authority"|1|0|Apple Installer
anchor apple|1|0|Apple System
anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists|1|0|Mac App Store
anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and (certificate leaf[field.1.2.840.113635.100.6.1.14] or certificate leaf[field.1.2.840.113635.100.6.1.13]) and notarized|1|0|Notarized Developer ID
[...]
syspolicyd ã¯ãassessãupdateãrecordãcancel ã®ãããªè€æ°ã®æäœãæã€ XPC ãµãŒããŒãå
¬éããŠãããããã㯠Security.frameworkâs SecAssessment* APIs ã䜿ã£ãŠå°éå¯èœã§ãspctl ã¯å®éã« XPC çµç±ã§ syspolicyd ãšéä¿¡ããŸãã
æåã®ã«ãŒã«ã âApp Storeâ ã§çµããã2ã€ç®ã âDeveloper IDâ ã§çµãã£ãŠããç¹ã«æ³šæããŠãã ããããŸããåã®ç»åã§ã¯ App Store ãš identified developers ããã®ã¢ããªå®è¡ãæå¹ã«ãªã£ãŠããŸããã\
ãã®èšå®ã App Store ã«å€æŽãããšãâNotarized Developer ID ã®ã«ãŒã«ã¯æ¶ããŸãã
ãŸããtype GKE ã®ã«ãŒã«ãäœåããããŸã :
SELECT requirement,allow,disabled,label from authority where label = 'GKE' limit 5;
cdhash H"b40281d347dc574ae0850682f0fd1173aa2d0a39"|1|0|GKE
cdhash H"5fd63f5342ac0c7c0774ebcbecaf8787367c480f"|1|0|GKE
cdhash H"4317047eefac8125ce4d44cab0eb7b1dff29d19a"|1|0|GKE
cdhash H"0a71962e7a32f0c2b41ddb1fb8403f3420e1d861"|1|0|GKE
cdhash H"8d0d90ff23c3071211646c4c9c607cdb601cb18f"|1|0|GKE
ãããã¯æ¬¡ã®ãã¡ã€ã«ããã®ããã·ã¥ã§ã:
/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth/var/db/gke.bundle/Contents/Resources/gk.db/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
ãŸãã¯ãåè¿°ã®æ å ±ãæ¬¡ã®ã³ãã³ãã§äžèŠ§è¡šç€ºã§ããŸã:
sudo spctl --list
spctl ã®ãªãã·ã§ã³ --master-disable ãš --global-disable ã¯ããããã®çœ²åãã§ãã¯ãå®å
šã« ç¡å¹å ããŸãïŒ
# Disable GateKeeper
spctl --global-disable
spctl --master-disable
# Enable it
spctl --global-enable
spctl --master-enable
å®å šã«æå¹åããããšãæ°ãããªãã·ã§ã³ã衚瀺ãããŸã:
.png)
以äžã®ã³ãã³ãã§ãã¢ããªã GateKeeper ã«ãã£ãŠèš±å¯ããããã確èªã§ããŸã:
spctl --assess -v /Applications/App.app
GateKeeper ã«æ°ããã«ãŒã«ã远å ããŠãç¹å®ã®ã¢ããªã®å®è¡ãèš±å¯ããããšãã§ããŸã:
# Check if allowed - nop
spctl --assess -v /Applications/App.app
/Applications/App.app: rejected
source=no usable signature
# Add a label and allow this label in GateKeeper
sudo spctl --add --label "whitelist" /Applications/App.app
sudo spctl --enable --label "whitelist"
# Check again - yep
spctl --assess -v /Applications/App.app
/Applications/App.app: accepted
ã«ãŒãã«æ¡åŒµ ã«é¢ããŠããã©ã«ã /var/db/SystemPolicyConfiguration ã¯ããŒããèš±å¯ããã kext ã®ãªã¹ããå«ããã¡ã€ã«ãä¿æããŠããŸããããã«ãspctl ã¯ãšã³ã¿ã€ãã«ã¡ã³ã com.apple.private.iokit.nvram-csr ãæã£ãŠãããæ°ãã«äºåæ¿èªãããã«ãŒãã«æ¡åŒµã远å ã§ãããããããã㯠NVRAM ã® kext-allowed-teams ããŒã«ãä¿åããå¿
èŠããããŸãã
macOS 15 (Sequoia) 以éã® Gatekeeper ã®ç®¡ç
- é·å¹Žã® Finder Ctrl+Open / Rightâclick â Open ãã€ãã¹ã¯åé€ãããŸããããŠãŒã¶ãŒã¯æåã®ãããã¯ãã€ã¢ãã°ã®åŸãSystem Settings â Privacy & Security â Open Anyway ãããããã¯ãããã¢ããªãæç€ºçã«èš±å¯ããå¿ èŠããããŸãã
spctl --master-disable/--global-disableã¯ãã¯ãåãä»ããããŸãããspctlã¯è©äŸ¡ãšã©ãã«ç®¡çã«é¢ããŠå®è³ªçã«èªã¿åãå°çšãšãªããããªã·ãŒã®åŒ·å¶ã¯ UI ãŸã㯠MDM ãéããŠæ§æãããŸãã
macOS 15 Sequoia 以éããšã³ããŠãŒã¶ãŒã¯ spctl ãã Gatekeeper ããªã·ãŒãåãæ¿ããããšãã§ããªããªããŸããã管ç㯠System Settings ã§è¡ãããcom.apple.systempolicy.control ãã€ããŒããå«ã MDM æ§æãããã¡ã€ã«ãå±éããŠè¡ããŸããApp Store ãš identified developers ãèš±å¯ããïŒãã ã âAnywhereâ ã¯èš±å¯ããªãïŒããã®ãããã¡ã€ã«ã®äŸã¹ããããïŒ
App Store ãš identified developers ãèš±å¯ãã MDM ãããã¡ã€ã«
```xmléé¢ãã¡ã€ã«
ã¢ããªããã¡ã€ã«ãããŠã³ããŒããããšãwebãã©ãŠã¶ãã¡ãŒã«ã¯ã©ã€ã¢ã³ããªã©ã®ç¹å®ã® macOS ã¢ããªã±ãŒã·ã§ã³ã¯ãããŠã³ããŒãããããã¡ã€ã«ã«äžè¬ã«ãéé¢ãã©ã°ããšããŠç¥ãããæ¡åŒµãã¡ã€ã«å±æ§ãä»å ããŸãããã®å±æ§ã¯ããã¡ã€ã«ãä¿¡é Œã§ããªããœãŒã¹ïŒã€ã³ã¿ãŒãããïŒããæ¥ãããšã瀺ãã»ãã¥ãªãã£å¯Ÿçã§ãããæœåšçãªãªã¹ã¯ãå«ãã§ããå¯èœæ§ããããŸãããã ãããã¹ãŠã®ã¢ããªããã®å±æ§ãä»äžããããã§ã¯ãªããäŸãã°äžè¬ç㪠BitTorrent ã¯ã©ã€ã¢ã³ããœããã¯éåžžãã®åŠçããã€ãã¹ããŸãã
éé¢ãã©ã°ã®ååšã¯ããŠãŒã¶ãŒããã¡ã€ã«ãå®è¡ããããšããéã« macOS ã® Gatekeeper ã»ãã¥ãªãã£æ©èœã«éç¥ããŸãã
ããéé¢ãã©ã°ãååšããªãå ŽåïŒããã€ãã® BitTorrent ã¯ã©ã€ã¢ã³ãã§ããŠã³ããŒãããããã¡ã€ã«ã®ããã«ïŒãGatekeeper ã®ãã§ãã¯ãè¡ãããªãå ŽåããããŸãããããã£ãŠãå®å šæ§ã®äœãããŸãã¯äžæãªãœãŒã¹ããããŠã³ããŒããããã¡ã€ã«ãéãéã«ã¯æ³šæãå¿ èŠã§ãã
[!NOTE] > ã³ãŒã眲åã®æå¹æ§ã確èªããããšã¯ãã³ãŒããšãã®ãã³ãã«ããããªãœãŒã¹å šäœã®æå·åŠçããã·ã¥ãçæãããªã©ã®ãªãœãŒã¹éçŽåã®åŠçã§ããããã«ãèšŒææžã®æå¹æ§ã確èªããã«ã¯ãçºè¡åŸã«åãæ¶ãããŠããªããã確ãããããã« Apple ã®ãµãŒããŒãžã®ãªã³ã©ã€ã³ãã§ãã¯ãå¿ èŠã§ãããããã®çç±ãããå®å šãªã³ãŒã眲åããã³å ¬èšŒã®ãã§ãã¯ãã¢ããªèµ·åæã«æ¯åå®è¡ããã®ã¯çŸå®çã§ã¯ãããŸããã
ãããã£ãŠããããã®ãã§ãã¯ã¯éé¢å±æ§ãä»äžãããã¢ããªãå®è¡ããå Žåã«ã®ã¿è¡ãããŸãã
Warning
ãã®å±æ§ã¯ãã¡ã€ã«ãäœæ/ããŠã³ããŒãããã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠèšå®ãããå¿ èŠããããŸãã
ãã ãããµã³ãããã¯ã¹åãããã¢ããªãäœæãããã¡ã€ã«ã«ã¯åžžã«ãã®å±æ§ãèšå®ãããŸãããµã³ãããã¯ã¹åãããŠããªãã¢ããªã¯èªåã§èšå®ããããšãã§ãããŸã㯠Info.plist ã® LSFileQuarantineEnabled ããŒãæå®ãããšãã·ã¹ãã ãäœæããããã¡ã€ã«ã«
com.apple.quarantineæ¡åŒµå±æ§ãèšå®ããŸãã
ããã«ãqtn_proc_apply_to_self ãåŒã³åºãããã»ã¹ã«ãã£ãŠäœæããããã¹ãŠã®ãã¡ã€ã«ã¯éé¢ãããŸãããããã¯ãAPI qtn_file_apply_to_path ãæå®ãããã¡ã€ã«ãã¹ã«éé¢å±æ§ã远å ããŸãã
æ¬¡ã®æ¹æ³ã§ïŒroot æš©éãå¿ èŠïŒãã®ã¹ããŒã¿ã¹ã確èªããæå¹/ç¡å¹ãåãæ¿ããããšãã§ããŸã:
spctl --status
assessments enabled
spctl --enable
spctl --disable
#You can also allow nee identifies to execute code using the binary "spctl"
次ã®ã³ãã³ãã§ãã¡ã€ã«ã« quarantine æ¡åŒµå±æ§ããããã©ãã ã確èªã§ããŸã:
xattr file.png
com.apple.macl
com.apple.quarantine
extended attributes ã® value ã確èªããã©ã®ã¢ããªã quarantine attr ãæžã蟌ãã ããæ¬¡ã®ã³ãã³ãã§èª¿ã¹ã:
xattr -l portada.png
com.apple.macl:
00000000 03 00 53 DA 55 1B AE 4C 4E 88 9D CA B7 5C 50 F3 |..S.U..LN.....P.|
00000010 16 94 03 00 27 63 64 97 98 FB 4F 02 84 F3 D0 DB |....'cd...O.....|
00000020 89 53 C3 FC 03 00 27 63 64 97 98 FB 4F 02 84 F3 |.S....'cd...O...|
00000030 D0 DB 89 53 C3 FC 00 00 00 00 00 00 00 00 00 00 |...S............|
00000040 00 00 00 00 00 00 00 00 |........|
00000048
com.apple.quarantine: 00C1;607842eb;Brave;F643CD5F-6071-46AB-83AB-390BA944DEC5
# 00c1 -- It has been allowed to eexcute this file (QTN_FLAG_USER_APPROVED = 0x0040)
# 607842eb -- Timestamp
# Brave -- App
# F643CD5F-6071-46AB-83AB-390BA944DEC5 -- UID assigned to the file downloaded
å®éãããã»ã¹ã¯äœæãããã¡ã€ã«ã« quarantine ãã©ã°ãèšå®ã§ããŸãïŒäœæãããã¡ã€ã«ã« USER_APPROVED ãã©ã°ãé©çšããããšããŸããããé©çšãããŸããã§ããïŒ:
ãœãŒã¹ã³ãŒã: quarantine ãã©ã°ã®é©çš
```c #includeenum qtn_flags { QTN_FLAG_DOWNLOAD = 0x0001, QTN_FLAG_SANDBOX = 0x0002, QTN_FLAG_HARD = 0x0004, QTN_FLAG_USER_APPROVED = 0x0040, };
#define qtn_proc_alloc _qtn_proc_alloc #define qtn_proc_apply_to_self _qtn_proc_apply_to_self #define qtn_proc_free _qtn_proc_free #define qtn_proc_init _qtn_proc_init #define qtn_proc_init_with_self _qtn_proc_init_with_self #define qtn_proc_set_flags _qtn_proc_set_flags #define qtn_file_alloc _qtn_file_alloc #define qtn_file_init_with_path _qtn_file_init_with_path #define qtn_file_free _qtn_file_free #define qtn_file_apply_to_path _qtn_file_apply_to_path #define qtn_file_set_flags _qtn_file_set_flags #define qtn_file_get_flags _qtn_file_get_flags #define qtn_proc_set_identifier _qtn_proc_set_identifier
typedef struct _qtn_proc *qtn_proc_t; typedef struct _qtn_file *qtn_file_t;
int qtn_proc_apply_to_self(qtn_proc_t); void qtn_proc_init(qtn_proc_t); int qtn_proc_init_with_self(qtn_proc_t); int qtn_proc_set_flags(qtn_proc_t, uint32_t flags); qtn_proc_t qtn_proc_alloc(); void qtn_proc_free(qtn_proc_t); qtn_file_t qtn_file_alloc(void); void qtn_file_free(qtn_file_t qf); int qtn_file_set_flags(qtn_file_t qf, uint32_t flags); uint32_t qtn_file_get_flags(qtn_file_t qf); int qtn_file_apply_to_path(qtn_file_t qf, const char *path); int qtn_file_init_with_path(qtn_file_t qf, const char path); int qtn_proc_set_identifier(qtn_proc_t qp, const char bundleid);
int main() {
qtn_proc_t qp = qtn_proc_alloc(); qtn_proc_set_identifier(qp, âxyz.hacktricks.qaâ); qtn_proc_set_flags(qp, QTN_FLAG_DOWNLOAD | QTN_FLAG_USER_APPROVED); qtn_proc_apply_to_self(qp); qtn_proc_free(qp);
FILE *fp; fp = fopen(âthisisquarantined.txtâ, âw+â); fprintf(fp, âHello Quarantine\nâ); fclose(fp);
return 0;
}
</details>
ãããŠãã®å±æ§ã**åé€**ããŠãã ãã:
```bash
xattr -d com.apple.quarantine portada.png
#You can also remove this attribute from every file with
find . -iname '*' -print0 | xargs -0 xattr -d com.apple.quarantine
ãããŠã次ã®ã³ãã³ãã§éé¢ããããã¡ã€ã«ããã¹ãŠèŠã€ããŸã:
find / -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.quarantine"
Quarantine information is also stored in a central database managed by LaunchServices in ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 which allows the GUI to obtain data about the file origins. Moreover this can be overwritten by applications which might be interested in hiding its origins. Moreover, this can be done from LaunchServices APIS.
libquarantine.dylib
ãã®ã©ã€ãã©ãªã¯ãæ¡åŒµå±æ§ãã£ãŒã«ããæäœããããã®ããã€ãã®é¢æ°ããšã¯ã¹ããŒãããŠããŸãã
qtn_file_* APIs ã¯ãã¡ã€ã«ã®æ€ç«ããªã·ãŒãæ±ããqtn_proc_* APIs ã¯ããã»ã¹ïŒãã®ããã»ã¹ãäœæãããã¡ã€ã«ïŒã«é©çšãããŸãããšã¯ã¹ããŒããããŠããªã __qtn_syscall_quarantine* 颿°çŸ€ã¯ããªã·ãŒãé©çšãããã®ã§ãæåã®åŒæ°ã« âQuarantineâ ãæå®ã㊠mac_syscall ãåŒã³åºããQuarantine.kext ã«ãªã¯ãšã¹ããéããŸãã
Quarantine.kext
ãã®ã«ãŒãã«æ¡åŒµã¯ ã·ã¹ãã äžã®ã«ãŒãã«ãã£ãã·ã¥ãä»ããŠã®ã¿å©çšå¯èœ ã§ãããhttps://developer.apple.com/ ãã Kernel Debug Kit ãããŠã³ããŒãããã°ãã·ã³ãã«åãããããŒãžã§ã³ã®æ¡åŒµãå«ãŸããŠããŸãã
ãã® Kext 㯠MACF ãä»ããŠããã€ãã®åŒã³åºããããã¯ãããã¡ã€ã«ã®ã©ã€ããµã€ã¯ã«ã€ãã³ãïŒäœæããªãŒãã³ããªããŒã ãããŒããªã³ã¯åâŠïŒããã¹ãŠææããŸããsetxattr ã«ãã com.apple.quarantine æ¡åŒµå±æ§ã®èšå®ãé²ãããšããããŸãã
It also uses a couple of MIBs:
security.mac.qtn.sandbox_enforce: Sandbox ãšé£æºããŠæ€ç«ã匷å¶ããsecurity.mac.qtn.user_approved_exec: æ€ç«ãããããã»ã¹ã¯æ¿èªããããã¡ã€ã«ã®ã¿å®è¡ã§ãã
Provenance xattr (Ventura and later)
macOS 13 Ventura ã§ã¯ãæ€ç«ãããã¢ããªãåããŠå®è¡ãèš±å¯ããããšãã«èšå®ãããå¥ã® provenance ã¡ã«ããºã ãå°å ¥ãããŸããã2ã€ã®ã¢ãŒãã£ãã¡ã¯ããäœæãããŸãïŒ
- The
com.apple.provenancexattr on the.appbundle directory (fixed-size binary value containing a primary key and flags). - A row in the
provenance_trackingtable inside the ExecPolicy database at/var/db/SystemPolicyConfiguration/ExecPolicy/storing the appâs cdhash and metadata.
Practical usage:
# Inspect provenance xattr (if present)
xattr -p com.apple.provenance /Applications/Some.app | hexdump -C
# Observe Gatekeeper/provenance events in real time
log stream --style syslog --predicate 'process == "syspolicyd"'
# Retrieve historical Gatekeeper decisions for a specific bundle
log show --last 2d --style syslog --predicate 'process == "syspolicyd" && eventMessage CONTAINS[cd] "GK scan"'
XProtect
XProtectã¯macOSã«çµã¿èŸŒãŸããanti-malwareæ©èœã§ããXProtectã¯ãã¢ããªã±ãŒã·ã§ã³ãæåã«èµ·åããããšãã倿Žããããšãã«ãæ¢ç¥ã®ãã«ãŠã§ã¢ãå±éºãªãã¡ã€ã«ã¿ã€ãã®ããŒã¿ããŒã¹ãšç §åããŸããSafariãMailããŸã㯠Messages ã®ãããªç¹å®ã®ã¢ããªãéããŠãã¡ã€ã«ãããŠã³ããŒããããšãXProtectã¯ãã®ãã¡ã€ã«ãèªåçã«ã¹ãã£ã³ããŸããããŒã¿ããŒã¹ã®æ¢ç¥ã®ãã«ãŠã§ã¢ãšäžèŽããå ŽåãXProtectã¯ãã¡ã€ã«ã®å®è¡ã鲿¢ããè åšãéç¥ããŸãã
XProtectã®ããŒã¿ããŒã¹ã¯ãAppleã«ãã£ãŠæ°ãããã«ãŠã§ã¢å®çŸ©ã§å®æçã«æŽæ°ããããããã®æŽæ°ã¯Macã«èªåçã«ããŠã³ããŒãããã³ã€ã³ã¹ããŒã«ãããŸããããã«ãããXProtectã¯åžžã«ææ°ã®æ¢ç¥ã®è åšã«å¯Ÿå¿ã§ããŸãã
ãã ããXProtectã¯ãã«æ©èœã®antivirusãœãªã¥ãŒã·ã§ã³ã§ã¯ãªãç¹ã«æ³šæããŠãã ãããæ¢ç¥ã®è åšã®ç¹å®ã®ãªã¹ãã®ã¿ããã§ãã¯ããã»ãšãã©ã®antivirusãœãããŠã§ã¢ã®ãããªon-access scanningã¯å®è¡ããŸããã
ææ°ã®XProtectã¢ããããŒãã«é¢ããæ å ±ã¯ã次ã®ã³ãã³ããå®è¡ããŠååŸã§ããŸã:
system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistConfigData" | tail -n 5
XProtectã¯SIPã§ä¿è·ãããå Žæã/Library/Apple/System/Library/CoreServices/XProtect.bundle ã«ããããã³ãã«å ã«ã¯XProtectã䜿çšããæ å ±ãå«ãŸããŠããŸã:
XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist: ãããã®cdhashãæã€ã³ãŒããã¬ã¬ã·ãŒãšã³ã¿ã€ãã«ã¡ã³ãã䜿çšããããšãèš±å¯ããŸããXProtect.bundle/Contents/Resources/XProtect.meta.plist: BundleIDãTeamIDã§ããŒããçŠæ¢ãããŠãããã©ã°ã€ã³ãæ¡åŒµæ©èœã®äžèЧããŸãã¯æå°ããŒãžã§ã³ã瀺ããŸããXProtect.bundle/Contents/Resources/XProtect.yara: ãã«ãŠã§ã¢æ€åºçšã®Yaraã«ãŒã«ãXProtect.bundle/Contents/Resources/gk.db: ãããã¯ãããã¢ããªã±ãŒã·ã§ã³ã®ããã·ã¥ãšTeamIDãæ ŒçŽããSQLite3ããŒã¿ããŒã¹ã
/Library/Apple/System/Library/CoreServices/XProtect.app ã«é¢é£ããå¥ã®AppãååšããŸãããããã¯Gatekeeperã®ããã»ã¹ã«ã¯é¢äžããŠããŸããã
XProtect Remediator: çŸä»£ã®macOSã§ã¯ãAppleã¯launchdçµç±ã§å®æçã«å®è¡ããããªã³ããã³ãã¹ãã£ãïŒXProtect RemediatorïŒãæäŸããŠããããã«ãŠã§ã¢ãã¡ããªã®æ€åºãšä¿®åŸ©ãè¡ããŸãããããã®ã¹ãã£ã³ã¯ãŠããã¡ã€ããã°ã§ç¢ºèªã§ããŸã:
log show --last 2h --predicate 'subsystem == "com.apple.XProtectFramework" || category CONTAINS "XProtect"' --style syslog
Gatekeeperã§ã¯ãªã
Caution
Gatekeeperãã¢ããªãå®è¡ãããã³ã«æ¯åå®è¡ãããããã§ã¯ãªãããšã«æ³šæããŠãã ãããå®è¡æžã¿ãã€Gatekeeperã§æ€èšŒæžã¿ã®ã¢ããªãå®è¡ããå ŽåãAppleMobileFileIntegrityïŒAMFIïŒã¯å®è¡å¯èœã³ãŒãã®çœ²åã®ã¿ãæ€èšŒããŸãã
ãã®ããã以åã¯ã¢ããªãGatekeeperã§ãã£ãã·ã¥ããããã«äžåºŠå®è¡ãããã®åŸã¢ããªã®å®è¡ãã¡ã€ã«ã§ãªããã¡ã€ã«ïŒElectronã®asarãNIBãã¡ã€ã«ãªã©ïŒã倿Žããä»ã«ä¿è·ããªããã°ãã¢ããªã¯æªæãã远å ãå«ãã ç¶æ ã§å®è¡ãããŠããŸãå¯èœæ§ããããŸããã
ãããçŸåšã¯ãmacOSãã¢ããªã±ãŒã·ã§ã³ãã³ãã«å ã®ãã¡ã€ã«ã®å€æŽã鲿¢ãããããããã¯äžå¯èœã§ãããããã£ãŠãDirty NIB æ»æã詊ã¿ãŠããGatekeeperã§ãã£ãã·ã¥ããããã«äžåºŠã¢ããªãå®è¡ããåŸã¯ãã³ãã«ã倿Žã§ããªãããããã¯ãæªçšã§ããŸãããäŸãã°exploitã§ç€ºãããŠããããã«Contentsãã£ã¬ã¯ããªã®ååãNotConã«å€æŽããã¢ããªã®ã¡ã€ã³ãã€ããªãGatekeeperã§ãã£ãã·ã¥ããããã«å®è¡ãããšããšã©ãŒãçºçããŠå®è¡ãããªããªããŸãã
Gatekeeperã®ãã€ãã¹
Gatekeeperããã€ãã¹ããïŒGatekeeperãèš±å¯ããªãã¯ãã®ãã®ããŠãŒã¶ã«ããŠã³ããŒãããå®è¡ãããïŒæ¹æ³ã¯ãmacOSã®è匱æ§ãšèŠãªãããŸããéå»ã«Gatekeeperããã€ãã¹ããææ³ã«å²ãåœãŠãããCVEã®äŸã¯æ¬¡ã®ãšããã§ã:
CVE-2021-1810
Archive Utilityã䜿çšããŠè§£åããå Žåããã¹ã886æåãè¶ ãããã¡ã€ã«ã«å¯ŸããŠã¯com.apple.quarantineæ¡åŒµå±æ§ãä»äžãããªãããšã芳枬ãããŸããããã®ç¶æ³ã«ããããããã®ãã¡ã€ã«ãæå³ããGatekeeperã®ã»ãã¥ãªãã£ãã§ãã¯ãåé¿ããŠããŸãå¯èœæ§ããããŸããã
詳现ã¯original reportãåç §ããŠãã ããã
CVE-2021-30990
Automatorã§äœæãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãå®è¡ã«å¿
èŠãªæ
å ±ãå®è¡ãã¡ã€ã«ã§ã¯ãªã application.app/Contents/document.wflow ã®äžã«ãããå®è¡ãã¡ã€ã«èªäœã¯Automator Application StubãšåŒã°ããæ±çšã®Automatorãã€ããªã§ãã
ãããã£ãŠãapplication.app/Contents/MacOS/Automator\ Application\ Stub ãã·ã¹ãã å
ã®å¥ã®Automator Application Stubãžã®ã·ã³ããªãã¯ãªã³ã¯ã«åããïŒpoint with a symbolic linkïŒããšãã§ããã°ãdocument.wflow ã®äžèº«ïŒããªãã®ã¹ã¯ãªããïŒãGatekeeperãããªã¬ãŒããã«å®è¡ã§ããŸããããã¯å®éã®å®è¡ãã¡ã€ã«ãquarantineã®xattrãæã£ãŠããªãããã§ãã
äŸ: æåŸ
ãããå Žæã¯ /System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub ã§ãã
詳现ã¯original reportãåç §ããŠãã ããã
CVE-2022-22616
ãã®ãã€ãã¹ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã application.app ã§ã¯ãªã application.app/Contents ããå§çž®ãå§ããããã«zipãã¡ã€ã«ãäœæãããŸããããã®ãããquarantine屿§ã¯ application.app/Contents å
ã®ãã¹ãŠã®ãã¡ã€ã«ã«ã¯é©çšãããŸããããGatekeeperããã§ãã¯ããŠãã application.app ã«ã¯é©çšãããŸããã§ãããçµæãšããŠãapplication.app ãããªã¬ãŒããããšãã«quarantine屿§ãä»ããŠããªããããGatekeeperããã€ãã¹ãããŠããŸããŸããã
zip -r test.app/Contents test.zip
詳现ã¯original reportã確èªããŠãã ããã
CVE-2022-32910
æ§æèŠçŽ ã¯ç°ãªã£ãŠããŠãããã®è匱æ§ã®æªç𿹿³ã¯åã®ãã®ãšéåžžã«äŒŒãŠããŸãã
ãã®ã±ãŒã¹ã§ã¯ãapplication.app/Contents ãã Apple Archive ãçæãããããapplication.app 㯠quarantine attr ãåãåããŸããïŒArchive Utility ã«ãã£ãŠè§£åããããšãïŒã
aa archive -d test.app/Contents -o test.app.aar
詳现ã«ã€ããŠã¯ãoriginal report ãã確èªãã ããã
CVE-2022-42821
ACL writeextattr ã¯ããã¡ã€ã«ã«å±æ§ãæžã蟌ãããšã誰ã«ãèš±å¯ããªãããã«ããããã«äœ¿çšã§ããŸã:
touch /tmp/no-attr
chmod +a "everyone deny writeextattr" /tmp/no-attr
xattr -w attrname vale /tmp/no-attr
xattr: [Errno 13] Permission denied: '/tmp/no-attr'
ããã«ãAppleDouble file format 㯠ACEs ãå«ããã¡ã€ã«ãã³ããŒããŸãã
In the source code itâs possible to see that the ACL text representation stored inside the xattr called com.apple.acl.text is going to be set as ACL in the decompressed file. So, if you compressed an application into a zip file with AppleDouble file format with an ACL that prevents other xattrs to be written to it⊠the quarantine xattr wasnât set into de application:
chmod +a "everyone deny write,writeattr,writeextattr" /tmp/test
ditto -c -k test test.zip
python3 -m http.server
# Download the zip from the browser and decompress it, the file should be without a quarantine xattr
詳现ã«ã€ããŠã¯original reportã確èªããŠãã ããã
ãªãããã㯠AppleArchives ã䜿çšããŠãæªçšå¯èœã§ã:
mkdir app
touch app/test
chmod +a "everyone deny write,writeattr,writeextattr" app/test
aa archive -d app -o test.aar
CVE-2023-27943
macOS ã®å éšçãªåé¡ã«ãããããŠã³ããŒããããã¡ã€ã«ã«å¯Ÿã㊠Google Chrome wasnât setting the quarantine attribute ããšã倿ããŸããã
CVE-2023-27951
AppleDouble ãã¡ã€ã«åœ¢åŒã¯ããã¡ã€ã«ã®å±æ§ã ._ ã§å§ãŸãå¥ãã¡ã€ã«ã«ä¿åããŸããããã«ããããã¡ã€ã«å±æ§ã across macOS machines ã«ã³ããŒããã®ã«åœ¹ç«ã¡ãŸããããããAppleDouble ãã¡ã€ã«ãå±éããåŸã._ ã§å§ãŸããã¡ã€ã«ã« wasnât given the quarantine attribute ããšã確èªãããŸããã
mkdir test
echo a > test/a
echo b > test/b
echo ._a > test/._a
aa archive -d test/ -o test.aar
# If you downloaded the resulting test.aar and decompress it, the file test/._a won't have a quarantitne attribute
quarantine屿§ãèšå®ãããªããã¡ã€ã«ãäœæã§ããã°ãGatekeeperããã€ãã¹ããããšãå¯èœã ã£ãã ããªãã¯ã¯ãAppleDoubleåœåèŠåïŒ._ã§å§ããïŒã䜿ã£ãŠDMG file applicationãäœæããquarantine屿§ã®ãªããã®é ããã¡ã€ã«ã«å¯ŸããŠå¯èŠã®ãã¡ã€ã«ãsym linkãšããŠäœæããããšã ã£ãã
ãã®dmg fileãå®è¡ããããšãquarantine屿§ããªãããGatekeeperããã€ãã¹ããã
# Create an app bundle with the backdoor an call it app.app
echo "[+] creating disk image with app"
hdiutil create -srcfolder app.app app.dmg
echo "[+] creating directory and files"
mkdir
mkdir -p s/app
cp app.dmg s/app/._app.dmg
ln -s ._app.dmg s/app/app.dmg
echo "[+] compressing files"
aa archive -d s/ -o app.aar
[CVE-2023-41067]
macOS Sonoma 14.0ã§ä¿®æ£ãããGatekeeperã®ãã€ãã¹ã«ããã现工ãããã¢ããªãããã³ãããªãã§å®è¡ãããå¯èœæ§ããããŸããããããé©çšåŸã«è©³çްãå ¬éãããä¿®æ£åã«å®éã«æªçšãããŠããŸãããSonoma 14.0以éãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ããã
[CVE-2024-27853]
macOS 14.4ïŒ2024幎3æãªãªãŒã¹ïŒã§ã®ãæªæããZIPãlibarchiveãåŠçããããšã«èµ·å ããGatekeeperã®ãã€ãã¹ã«ãããã¢ããªãè©äŸ¡ãåé¿ã§ããŸãããAppleããã®åé¡ã«å¯ŸåŠãã14.4以éã«ã¢ããããŒãããŠãã ããã
CVE-2024-44128
ããŠã³ããŒããããã¢ããªã«åã蟌ãŸããAutomator Quick Action workflowããã¯ãŒã¯ãããŒãããŒã¿ãšããŠæ±ãããAutomatorãã«ããŒã«ãã£ãŠéåžžã®notarizationããã³ããçµè·¯ã®å€ã§å®è¡ããããããGatekeeperã®è©äŸ¡ãªãã«ããªã¬ãŒãããå¯èœæ§ããããŸãããã·ã§ã«ã¹ã¯ãªãããå®è¡ããQuick Actionããã³ãã«ãã现工ããã.appïŒäŸ: Contents/PlugIns/*.workflow/Contents/document.wflowå
ïŒãèµ·åæã«å³åº§ã«å®è¡ãããå¯èœæ§ããããŸãããAppleã¯è¿œå ã®åæãã€ã¢ãã°ãå°å
¥ããVentura 13.7ãSonoma 14.7ãSequoia 15ã§è©äŸ¡çµè·¯ãä¿®æ£ããŸããã
Thirdâparty unarchivers misâpropagating quarantine (2023â2024)
人æ°ã®è§£åããŒã«ïŒäŸ: The UnarchiverïŒã«ãããè€æ°ã®è匱æ§ã«ãããã¢ãŒã«ã€ãããæœåºããããã¡ã€ã«ã«com.apple.quarantine xattrãä»äžããããGatekeeperã®ãã€ãã¹ã«ã€ãªããå¯èœæ§ããããŸããããã¹ãããéã¯åžžã«macOSã®Archive UtilityãŸãã¯ä¿®æ£æžã¿ã®ããŒã«ã䜿çšããæœåºåŸã«xattrãæ€èšŒããŠãã ããã
uchg (ãã® talk ãã)
- ã¢ããªãå«ããã£ã¬ã¯ããªãäœæããã
- ã¢ããªã« uchg ã远å ããã
- ã¢ããªã tar.gz ãã¡ã€ã«ã«å§çž®ããã
- tar.gz ãã¡ã€ã«ã被害è ã«éãã
- 被害è ã tar.gz ãéãã¢ããªãå®è¡ããã
- Gatekeeper ã¯ã¢ããªããã§ãã¯ããªãã
Prevent Quarantine xattr
â.appâ ãã³ãã«ã« quarantine xattr ã远å ãããŠããªãå Žåãå®è¡æã« Gatekeeper ã¯ããªã¬ãŒãããŸããã
References
- Apple Platform Security: macOS Sonoma 14.4 ã®ã»ãã¥ãªãã£ã«é¢ããæ å ±ïŒCVE-2024-27853ãå«ãïŒ â https://support.apple.com/en-us/HT214084
- Eclectic Light: macOSãçŸåšã¢ããªã®ç±æ¥ã远跡ããæ¹æ³ â https://eclecticlight.co/2023/05/10/how-macos-now-tracks-the-provenance-of-apps/
- Apple: macOS Sonoma 14.7 / Ventura 13.7 ã®ã»ãã¥ãªãã£ã«é¢ããæ å ±ïŒCVE-2024-44128ïŒ â https://support.apple.com/en-us/121234
- MacRumors: macOS 15 Sequoia 㯠Controlâclick ã® âOpenâ Gatekeeper ãã€ãã¹ãåé€ â https://www.macrumors.com/2024/06/11/macos-sequoia-removes-open-anyway/
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ãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã


