macOS Launch/Environment Constraints & Trust Cache

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 μ§€μ›ν•˜κΈ°

Basic Information

macOS의 런치 μ œμ•½ 쑰건은 ν”„λ‘œμ„ΈμŠ€κ°€ μ–΄λ–»κ²Œ, λˆ„κ΅¬μ— μ˜ν•΄, μ–΄λ””μ„œ μ‹œμž‘λ  수 μžˆλŠ”μ§€λ₯Ό κ·œμ œν•˜μ—¬ λ³΄μ•ˆμ„ κ°•ν™”ν•˜κΈ° μœ„ν•΄ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€. macOS Venturaμ—μ„œ μ‹œμž‘λœ 이듀은 각 μ‹œμŠ€ν…œ λ°”μ΄λ„ˆλ¦¬λ₯Ό λ³„κ°œμ˜ μ œμ•½ λ²”μ£Όλ‘œ λΆ„λ₯˜ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 이 λ²”μ£ΌλŠ” μ‹ λ’° μΊμ‹œ 내에 μ •μ˜λ˜μ–΄ 있으며, μ‹œμŠ€ν…œ λ°”μ΄λ„ˆλ¦¬μ™€ ν•΄λ‹Ή ν•΄μ‹œ λͺ©λ‘μ„ ν¬ν•¨ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ œμ•½μ€ μ‹œμŠ€ν…œ λ‚΄μ˜ λͺ¨λ“  μ‹€ν–‰ κ°€λŠ₯ν•œ λ°”μ΄λ„ˆλ¦¬μ— 적용되며, νŠΉμ • λ°”μ΄λ„ˆλ¦¬λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ μš”κ΅¬ 사항을 μ„€λͺ…ν•˜λŠ” κ·œμΉ™ μ„ΈνŠΈλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. κ·œμΉ™μ€ λ°”μ΄λ„ˆλ¦¬κ°€ μΆ©μ‘±ν•΄μ•Ό ν•˜λŠ” 자기 μ œμ•½, λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ μΆ©μ‘±ν•΄μ•Ό ν•˜λŠ” λΆ€λͺ¨ μ œμ•½, 그리고 λ‹€λ₯Έ κ΄€λ ¨ μ—”ν‹°ν‹°κ°€ μ€€μˆ˜ν•΄μ•Ό ν•˜λŠ” μ±…μž„ μ œμ•½μ„ ν¬ν•¨ν•©λ‹ˆλ‹€.

이 λ©”μ»€λ‹ˆμ¦˜μ€ macOS SonomaλΆ€ν„° ν™˜κ²½ μ œμ•½μ„ 톡해 μ„œλ“œνŒŒν‹° μ•±μœΌλ‘œ ν™•μž₯λ˜μ–΄, κ°œλ°œμžκ°€ ν™˜κ²½ μ œμ•½μ„ μœ„ν•œ 킀와 κ°’μ˜ μ„ΈνŠΈλ₯Ό μ§€μ •ν•˜μ—¬ 앱을 λ³΄ν˜Έν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

런치 ν™˜κ²½ 및 라이브러리 μ œμ•½μ€ launchd 속성 λͺ©λ‘ νŒŒμΌμ— μ €μž₯ν•˜κ±°λ‚˜ μ½”λ“œ μ„œλͺ…에 μ‚¬μš©ν•˜λŠ” λ³„λ„μ˜ 속성 λͺ©λ‘ νŒŒμΌμ— μ •μ˜ν•©λ‹ˆλ‹€.

μ œμ•½μ˜ μ’…λ₯˜λŠ” 4κ°€μ§€μž…λ‹ˆλ‹€:

  • 자기 μ œμ•½: μ‹€ν–‰ 쀑인 λ°”μ΄λ„ˆλ¦¬μ— μ μš©λ˜λŠ” μ œμ•½.
  • λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€: ν”„λ‘œμ„ΈμŠ€μ˜ λΆ€λͺ¨μ— μ μš©λ˜λŠ” μ œμ•½ (예: **launchd**κ°€ XP μ„œλΉ„μŠ€λ₯Ό μ‹€ν–‰ν•˜λŠ” 경우)
  • μ±…μž„ μ œμ•½: XPC ν†΅μ‹ μ—μ„œ μ„œλΉ„μŠ€λ₯Ό ν˜ΈμΆœν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ— μ μš©λ˜λŠ” μ œμ•½
  • 라이브러리 λ‘œλ“œ μ œμ•½: λ‘œλ“œν•  수 μžˆλŠ” μ½”λ“œλ₯Ό μ„ νƒμ μœΌλ‘œ μ„€λͺ…ν•˜κΈ° μœ„ν•΄ 라이브러리 λ‘œλ“œ μ œμ•½μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹œμž‘ν•˜λ €κ³  ν•  λ•Œ β€” execve(_:_:_:) λ˜λŠ” posix_spawn(_:_:_:_:_:_:)λ₯Ό ν˜ΈμΆœν•˜μ—¬ β€” 운영 μ²΄μ œλŠ” μ‹€ν–‰ 파일이 자기 μ œμ•½μ„ μΆ©μ‘±ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. λ˜ν•œ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ 파일이 μ‹€ν–‰ 파일의 λΆ€λͺ¨ μ œμ•½μ„ μΆ©μ‘±ν•˜λŠ”μ§€ ν™•μΈν•˜κ³ , μ±…μž„ ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ 파일이 μ‹€ν–‰ 파일의 μ±…μž„ ν”„λ‘œμ„ΈμŠ€ μ œμ•½μ„ μΆ©μ‘±ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 런치 μ œμ•½ 쀑 ν•˜λ‚˜λΌλ„ μΆ©μ‘±λ˜μ§€ μ•ŠμœΌλ©΄ 운영 μ²΄μ œλŠ” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

라이브러리λ₯Ό λ‘œλ“œν•  λ•Œ 라이브러리 μ œμ•½μ˜ 일뢀가 참이 아닐 경우, ν”„λ‘œμ„ΈμŠ€λŠ” 라이브러리λ₯Ό λ‘œλ“œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

LC Categories

LCλŠ” 사싀과 논리 μ—°μ‚°(and, or..)으둜 κ΅¬μ„±λ˜μ–΄ 사싀을 κ²°ν•©ν•©λ‹ˆλ‹€.

LCκ°€ μ‚¬μš©ν•  수 μžˆλŠ” 사싀은 λ¬Έμ„œν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

  • is-init-proc: μ‹€ν–‰ 파일이 운영 체제의 μ΄ˆκΈ°ν™” ν”„λ‘œμ„ΈμŠ€(launchd)μ—¬μ•Ό ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λΆ€μšΈ κ°’.
  • is-sip-protected: μ‹€ν–‰ 파일이 μ‹œμŠ€ν…œ 무결성 보호(SIP)둜 보호된 νŒŒμΌμ΄μ–΄μ•Ό ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λΆ€μšΈ κ°’.
  • on-authorized-authapfs-volume: 운영 μ²΄μ œκ°€ 인증된 APFS λ³Όλ₯¨μ—μ„œ μ‹€ν–‰ νŒŒμΌμ„ λ‘œλ“œν–ˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λΆ€μšΈ κ°’.
  • on-authorized-authapfs-volume: 운영 μ²΄μ œκ°€ 인증된 APFS λ³Όλ₯¨μ—μ„œ μ‹€ν–‰ νŒŒμΌμ„ λ‘œλ“œν–ˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λΆ€μšΈ κ°’.
  • Cryptexes λ³Όλ₯¨
  • on-system-volume: 운영 μ²΄μ œκ°€ ν˜„μž¬ λΆ€νŒ…λœ μ‹œμŠ€ν…œ λ³Όλ₯¨μ—μ„œ μ‹€ν–‰ νŒŒμΌμ„ λ‘œλ“œν–ˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λΆ€μšΈ κ°’.
  • /System 내뢀…
  • …

Apple λ°”μ΄λ„ˆλ¦¬κ°€ μ„œλͺ…λ˜λ©΄ μ‹ λ’° μΊμ‹œ λ‚΄μ˜ LC 범주에 ν• λ‹Ήλ©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ λ²”μ£Ό 1은:

Category 1:
Self Constraint: (on-authorized-authapfs-volume || on-system-volume) && launch-type == 1 && validation-category == 1
Parent Constraint: is-init-proc
  • (on-authorized-authapfs-volume || on-system-volume): μ‹œμŠ€ν…œ λ˜λŠ” Cryptexes λ³Όλ₯¨μ— μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • launch-type == 1: μ‹œμŠ€ν…œ μ„œλΉ„μŠ€μ—¬μ•Ό ν•©λ‹ˆλ‹€ (LaunchDaemons의 plist).
  • validation-category == 1: 운영 체제 μ‹€ν–‰ νŒŒμΌμž…λ‹ˆλ‹€.
  • is-init-proc: Launchd

LC μΉ΄ν…Œκ³ λ¦¬ 리버싱

여기에 λŒ€ν•œ 더 λ§Žμ€ μ •λ³΄λŠ” μ—¬κΈ°μ—μ„œ 확인할 수 μžˆμ§€λ§Œ, 기본적으둜 **AMFI (AppleMobileFileIntegrity)**μ—μ„œ μ •μ˜λ©λ‹ˆλ‹€. λ”°λΌμ„œ KEXTλ₯Ό μ–»κΈ° μœ„ν•΄ Kernel Development Kit을 λ‹€μš΄λ‘œλ“œν•΄μ•Ό ν•©λ‹ˆλ‹€. **kConstraintCategory**둜 μ‹œμž‘ν•˜λŠ” κΈ°ν˜Έκ°€ ν₯미둜운 κΈ°ν˜Έμž…λ‹ˆλ‹€. 이듀을 μΆ”μΆœν•˜λ©΄ DER (ASN.1) 인코딩 μŠ€νŠΈλ¦Όμ„ 얻을 수 있으며, 이λ₯Ό ASN.1 Decoder λ˜λŠ” python-asn1 λΌμ΄λΈŒλŸ¬λ¦¬μ™€ κ·Έ dump.py 슀크립트λ₯Ό μ‚¬μš©ν•˜μ—¬ λ””μ½”λ“œν•΄μ•Ό ν•©λ‹ˆλ‹€. andrivet/python-asn1둜 더 μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ λ¬Έμžμ—΄μ„ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™˜κ²½ μ œμ•½

이듀은 μ„œλ“œνŒŒν‹° μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ„€μ •λœ Launch Constraintsμž…λ‹ˆλ‹€. κ°œλ°œμžλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 접근을 μ œν•œν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  사싀과 논리 μ—°μ‚°μžλ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν™˜κ²½ μ œμ•½μ„ λ‚˜μ—΄ν•˜λŠ” 것은 κ°€λŠ₯ν•©λ‹ˆλ‹€:

codesign -d -vvvv app.app

μ‹ λ’° μΊμ‹œ

macOSμ—λŠ” λͺ‡ κ°€μ§€ μ‹ λ’° μΊμ‹œκ°€ μžˆμŠ΅λ‹ˆλ‹€:

  • /System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4
  • /System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4
  • /System/Library/Security/OSLaunchPolicyData

iOSμ—μ„œλŠ” **/usr/standalone/firmware/FUD/StaticTrustCache.img4**에 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

Warning

Apple Silicon μž₯μΉ˜μ—μ„œ μ‹€ν–‰λ˜λŠ” macOSμ—μ„œ Apple μ„œλͺ… 이진 파일이 μ‹ λ’° μΊμ‹œμ— μ—†μœΌλ©΄ AMFIκ°€ 이λ₯Ό λ‘œλ“œν•˜λŠ” 것을 κ±°λΆ€ν•©λ‹ˆλ‹€.

μ‹ λ’° μΊμ‹œ μ—΄κ±°

이전 μ‹ λ’° μΊμ‹œ νŒŒμΌμ€ IMG4 및 IM4P ν˜•μ‹μ΄λ©°, IM4PλŠ” IMG4 ν˜•μ‹μ˜ νŽ˜μ΄λ‘œλ“œ μ„Ήμ…˜μž…λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŽ˜μ΄λ‘œλ“œλ₯Ό μΆ”μΆœν•˜λ €λ©΄ pyimg4λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

# Installation
python3 -m pip install pyimg4

# Extract payloads data
cp /System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4 /tmp
pyimg4 img4 extract -i /tmp/BaseSystemTrustCache.img4 -p /tmp/BaseSystemTrustCache.im4p
pyimg4 im4p extract -i /tmp/BaseSystemTrustCache.im4p -o /tmp/BaseSystemTrustCache.data

cp /System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4 /tmp
pyimg4 img4 extract -i /tmp/StaticTrustCache.img4 -p /tmp/StaticTrustCache.im4p
pyimg4 im4p extract -i /tmp/StaticTrustCache.im4p -o /tmp/StaticTrustCache.data

pyimg4 im4p extract -i /System/Library/Security/OSLaunchPolicyData -o /tmp/OSLaunchPolicyData.data

(또 λ‹€λ₯Έ μ˜΅μ…˜μ€ 도ꡬ img4toolλ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 λ„κ΅¬λŠ” λ¦΄λ¦¬μŠ€κ°€ μ˜€λž˜λ˜μ—ˆλ”λΌλ„ M1μ—μ„œ μ‹€ν–‰λ˜λ©°, μ μ ˆν•œ μœ„μΉ˜μ— μ„€μΉ˜ν•˜λ©΄ x86_64μ—μ„œλ„ μ‹€ν–‰λ©λ‹ˆλ‹€).

이제 도ꡬ trustcacheλ₯Ό μ‚¬μš©ν•˜μ—¬ 읽기 μ‰¬μš΄ ν˜•μ‹μœΌλ‘œ 정보λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€:

# Install
wget https://github.com/CRKatri/trustcache/releases/download/v2.0/trustcache_macos_arm64
sudo mv ./trustcache_macos_arm64 /usr/local/bin/trustcache
xattr -rc /usr/local/bin/trustcache
chmod +x /usr/local/bin/trustcache

# Run
trustcache info /tmp/OSLaunchPolicyData.data | head
trustcache info /tmp/StaticTrustCache.data | head
trustcache info /tmp/BaseSystemTrustCache.data | head

version = 2
uuid = 35EB5284-FD1E-4A5A-9EFB-4F79402BA6C0
entry count = 969
0065fc3204c9f0765049b82022e4aa5b44f3a9c8 [none] [2] [1]
00aab02b28f99a5da9b267910177c09a9bf488a2 [none] [2] [1]
0186a480beeee93050c6c4699520706729b63eff [none] [2] [2]
0191be4c08426793ff3658ee59138e70441fc98a [none] [2] [3]
01b57a71112235fc6241194058cea5c2c7be3eb1 [none] [2] [2]
01e6934cb8833314ea29640c3f633d740fc187f2 [none] [2] [2]
020bf8c388deaef2740d98223f3d2238b08bab56 [none] [2] [3]

μ‹ λ’° μΊμ‹œλŠ” λ‹€μŒ ꡬ쑰λ₯Ό λ”°λ¦…λ‹ˆλ‹€. λ”°λΌμ„œ LC μΉ΄ν…Œκ³ λ¦¬λŠ” 4번째 μ—΄μž…λ‹ˆλ‹€.

struct trust_cache_entry2 {
uint8_t cdhash[CS_CDHASH_LEN];
uint8_t hash_type;
uint8_t flags;
uint8_t constraintCategory;
uint8_t reserved0;
} __attribute__((__packed__));

그런 λ‹€μŒ, 이 μŠ€ν¬λ¦½νŠΈμ™€ 같은 슀크립트λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έ λ°μ΄ν„°μ—μ„œ launch constraints 값이 0인 앱을 확인할 수 있으며, μ΄λŠ” μ œμ•½μ΄ μ—†λŠ” μ•±μž…λ‹ˆλ‹€ (μ—¬κΈ°μ—μ„œ 확인 각 값이 무엇인지).

곡격 μ™„ν™”

Launch ConstraintsλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ˜ˆμƒμΉ˜ λͺ»ν•œ μ‘°κ±΄μ—μ„œ μ‹€ν–‰λ˜μ§€ μ•Šλ„λ‘ 보μž₯ν•¨μœΌλ‘œμ¨ μ—¬λŸ¬ 였래된 곡격을 μ™„ν™”ν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€: 예λ₯Ό λ“€μ–΄ μ˜ˆμƒμΉ˜ λͺ»ν•œ μœ„μΉ˜μ—μ„œ μ‹€ν–‰λ˜κ±°λ‚˜ μ˜ˆμƒμΉ˜ λͺ»ν•œ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ— μ˜ν•΄ ν˜ΈμΆœλ˜λŠ” 경우(launchd만이 이λ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•˜λŠ” 경우).

κ²Œλ‹€κ°€, Launch ConstraintsλŠ” λ‹€μš΄κ·Έλ ˆμ΄λ“œ 곡격도 μ™„ν™”ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜, 이듀은 일반적인 XPC λ‚¨μš©, Electron μ½”λ“œ μ£Όμž… λ˜λŠ” dylib μ£Όμž…μ„ 라이브러리 검증 없이 μ™„ν™”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(λ‘œλ“œν•  수 μžˆλŠ” νŒ€ IDκ°€ μ•Œλ €μ Έ μžˆμ§€ μ•ŠλŠ” ν•œ).

XPC 데λͺ¬ 보호

μ†Œλ…Έλ§ˆ λ¦΄λ¦¬μŠ€μ—μ„œ μ£Όλͺ©ν•  점은 데λͺ¬ XPC μ„œλΉ„μŠ€μ˜ μ±…μž„ κ΅¬μ„±μž…λ‹ˆλ‹€. XPC μ„œλΉ„μŠ€λŠ” μ—°κ²°λœ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ±…μž„μ§€λŠ” 것이 μ•„λ‹ˆλΌ 슀슀둜 μ±…μž„μ„ μ§‘λ‹ˆλ‹€. μ΄λŠ” ν”Όλ“œλ°± λ³΄κ³ μ„œ FB13206884에 λ¬Έμ„œν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 섀정은 XPC μ„œλΉ„μŠ€μ™€μ˜ νŠΉμ • μƒν˜Έμž‘μš©μ„ ν—ˆμš©ν•˜λ―€λ‘œ 결함이 μžˆλŠ” κ²ƒμ²˜λŸΌ 보일 수 μžˆμŠ΅λ‹ˆλ‹€:

  • XPC μ„œλΉ„μŠ€ μ‹œμž‘: λ²„κ·Έλ‘œ κ°„μ£Όλœλ‹€λ©΄, 이 섀정은 곡격자 μ½”λ“œλ‘œ XPC μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•˜λŠ” 것을 ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • ν™œμ„± μ„œλΉ„μŠ€μ— μ—°κ²°: XPC μ„œλΉ„μŠ€κ°€ 이미 μ‹€ν–‰ 쀑인 경우(μ›λž˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ˜ν•΄ ν™œμ„±ν™”λ˜μ—ˆμ„ κ°€λŠ₯성이 있음), μ—°κ²°ν•˜λŠ” 데 μž₯애물이 μ—†μŠ΅λ‹ˆλ‹€.

XPC μ„œλΉ„μŠ€μ— λŒ€ν•œ μ œμ•½μ„ κ΅¬ν˜„ν•˜λŠ” 것은 잠재적 곡격의 창을 쒁힘으둜써 μœ μ΅ν•  수 μžˆμ§€λ§Œ, μ£Όμš” 문제λ₯Ό ν•΄κ²°ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. XPC μ„œλΉ„μŠ€μ˜ λ³΄μ•ˆμ„ 보μž₯ν•˜λ €λ©΄ μ—°κ²° ν΄λΌμ΄μ–ΈνŠΈλ₯Ό 효과적으둜 κ²€μ¦ν•˜λŠ” 것이 근본적으둜 ν•„μš”ν•©λ‹ˆλ‹€. μ΄λŠ” μ„œλΉ„μŠ€μ˜ λ³΄μ•ˆμ„ κ°•ν™”ν•˜λŠ” μœ μΌν•œ λ°©λ²•μœΌλ‘œ 남아 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, μ–ΈκΈ‰λœ μ±…μž„ ꡬ성은 ν˜„μž¬ 운영 쀑이며, μ΄λŠ” μ˜λ„λœ 섀계와 μΌμΉ˜ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

Electron 보호

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ LaunchService에 μ˜ν•΄ μ—΄λ €μ•Ό ν•œλ‹€λŠ” μš”κ΅¬κ°€ μžˆλ”λΌλ„(λΆ€λͺ¨ μ œμ•½μ—μ„œ). μ΄λŠ” **open**을 μ‚¬μš©ν•˜μ—¬(env λ³€μˆ˜λ₯Ό μ„€μ •ν•  수 있음) λ˜λŠ” Launch Services APIλ₯Ό μ‚¬μš©ν•˜μ—¬(env λ³€μˆ˜λ₯Ό μ§€μ •ν•  수 있음) 달성할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³  λ¬Έν—Œ

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 μ§€μ›ν•˜κΈ°