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

κΆŒν•œ 뢄리 및 μƒŒλ“œλ°•μŠ€

iOSμ—μ„œλŠ” μ‚¬μš©μž μ ‘κ·Ό κ°€λŠ₯ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μ‹œμŠ€ν…œμ˜ 핡심 ν”„λ‘œμ„ΈμŠ€ 간에 κΆŒν•œμ˜ ꡬ뢄이 μ‘΄μž¬ν•©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ mobile μ‚¬μš©μž 신원 μ•„λž˜μ—μ„œ μ‹€ν–‰λ˜λ©°, μ€‘μš”ν•œ μ‹œμŠ€ν…œ ν”„λ‘œμ„ΈμŠ€λŠ” **root**둜 μž‘λ™ν•©λ‹ˆλ‹€. 이 λΆ„λ¦¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μˆ˜ν–‰ν•  수 μžˆλŠ” μž‘μ—…μ— μ—„κ²©ν•œ μ œν•œμ„ λΆ€κ³Όν•˜λŠ” μƒŒλ“œλ°•μŠ€ λ©”μ»€λ‹ˆμ¦˜μ— μ˜ν•΄ κ°•ν™”λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ™μΌν•œ μ‚¬μš©μž 신원을 κ³΅μœ ν•˜λ”λΌλ„ μ„œλ‘œμ˜ 데이터에 μ ‘κ·Όν•˜κ±°λ‚˜ μˆ˜μ •ν•˜λŠ” 것은 κΈˆμ§€λ©λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ νŠΉμ • 디렉토리(private/var/mobile/Applications/{random ID})에 μ„€μΉ˜λ˜λ©°, SMS 및 μ „ν™” 톡화와 같은 νŠΉμ • μ‹œμŠ€ν…œ μ˜μ—­ 및 κΈ°λŠ₯에 λŒ€ν•œ μ œν•œλœ 읽기 μ ‘κ·Ό κΆŒν•œμ„ κ°€μ§‘λ‹ˆλ‹€. 보호된 μ˜μ—­μ— λŒ€ν•œ 접근은 μ‚¬μš©μž κΆŒν•œ μš”μ²­ νŒμ—…μ„ νŠΈλ¦¬κ±°ν•©λ‹ˆλ‹€.

데이터 보호

iOSλŠ” κ°œλ°œμžμ—κ²Œ 데이터 보호 APIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŠ” μ•”ν˜Έν™” μž‘μ—… 및 ν‚€ 관리λ₯Ό μœ„ν•œ μ „μš© μ½”ν”„λ‘œμ„Έμ„œμΈ Secure Enclave Processor (SEP) μœ„μ— κ΅¬μΆ•λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. SEPλŠ” μž₯치 UIDλΌλŠ” κ³ μœ ν•œ μž₯치 μ „μš© ν‚€λ₯Ό λ‚΄μž₯ν•˜μ—¬ 데이터 보호 무결성을 보μž₯ν•©λ‹ˆλ‹€.

파일 생성 μ‹œ, κ³ μœ ν•œ 256λΉ„νŠΈ AES μ•”ν˜Έν™” ν‚€κ°€ μƒμ„±λ˜μ–΄ 파일의 λ‚΄μš©μ„ μ•”ν˜Έν™”ν•©λ‹ˆλ‹€. 이 μ•”ν˜Έν™” ν‚€λŠ” 클래슀 ID와 ν•¨κ»˜ 클래슀 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ•”ν˜Έν™”λ˜κ³  파일의 메타데이터에 μ €μž₯λ©λ‹ˆλ‹€. νŒŒμΌμ„ λ³΅ν˜Έν™”ν•˜λ €λ©΄ μ‹œμŠ€ν…œ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ 메타데이터에 μ ‘κ·Όν•˜κ³ , 클래슀 ID둜 클래슀 ν‚€λ₯Ό κ²€μƒ‰ν•œ λ‹€μŒ, 파일의 κ³ μœ ν•œ μ•”ν˜Έν™” ν‚€λ₯Ό λ³΅ν˜Έν™”ν•©λ‹ˆλ‹€.

iOSλŠ” 데이터 λ³΄μ•ˆμ„ μœ„ν•΄ λ„€ κ°€μ§€ 보호 클래슀λ₯Ό μ •μ˜ν•˜λ©°, μ΄λŠ” 데이터에 μ ‘κ·Όν•  수 μžˆλŠ” μ‹œκΈ°μ™€ 방법을 κ²°μ •ν•©λ‹ˆλ‹€:

  • μ™„μ „ 보호 (NSFileProtectionComplete): μ‚¬μš©μžμ˜ λΉ„λ°€λ²ˆν˜Έλ‘œ μž₯μΉ˜κ°€ 잠금 ν•΄μ œλ  λ•ŒκΉŒμ§€ 데이터에 μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€.
  • μ—΄λ € μžˆμ§€ μ•ŠλŠ” ν•œ 보호됨 (NSFileProtectionCompleteUnlessOpen): μž₯μΉ˜κ°€ 잠금 μƒνƒœμΌ λ•Œλ„ νŒŒμΌμ— μ ‘κ·Όν•  수 있으며, 단 쑰건은 μž₯μΉ˜κ°€ 잠금 ν•΄μ œλ  λ•Œ 파일이 μ—΄λ € μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • 첫 μ‚¬μš©μž μΈμ¦κΉŒμ§€ 보호됨 (NSFileProtectionCompleteUntilFirstUserAuthentication): λΆ€νŒ… ν›„ 첫 μ‚¬μš©μž 잠금 ν•΄μ œ 이후 데이터에 μ ‘κ·Όν•  수 있으며, μž₯μΉ˜κ°€ λ‹€μ‹œ 잠금 μƒνƒœκ°€ λ˜μ–΄λ„ 접근이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 보호 μ—†μŒ (NSFileProtectionNone): λ°μ΄ν„°λŠ” μž₯치 UID에 μ˜ν•΄μ„œλ§Œ 보호되며, λΉ λ₯Έ 원격 데이터 μ‚­μ œλ₯Ό μš©μ΄ν•˜κ²Œ ν•©λ‹ˆλ‹€.

NSFileProtectionNone을 μ œμ™Έν•œ λͺ¨λ“  클래슀의 μ•”ν˜Έν™”λŠ” μž₯치 UID와 μ‚¬μš©μžμ˜ λΉ„λ°€λ²ˆν˜Έμ—μ„œ νŒŒμƒλœ ν‚€λ₯Ό ν¬ν•¨ν•˜μ—¬, λ³΅ν˜Έν™”κ°€ μ˜¬λ°”λ₯Έ λΉ„λ°€λ²ˆν˜Έλ₯Ό κ°€μ§„ μž₯μΉ˜μ—μ„œλ§Œ κ°€λŠ₯ν•˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€. iOS 7 이후 κΈ°λ³Έ 보호 ν΄λž˜μŠ€λŠ” β€œμ²« μ‚¬μš©μž μΈμ¦κΉŒμ§€ λ³΄ν˜Έλ¨β€œμž…λ‹ˆλ‹€.

κ°œλ°œμžλŠ” iPhone의 파일 데이터 보호 클래슀λ₯Ό κ²€μ‚¬ν•˜κΈ° μœ„ν•œ 도ꡬ인 FileDPλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

# Example code to use FileDP for checking file protection class
# Note: Ensure your device is jailbroken and has Python installed to use FileDP.
# Installation and usage of FileDP:
git clone https://github.com/abjurato/FileDp-Source
cd FileDp-Source
python filedp.py /path/to/check

킀체인

iOSμ—μ„œ 킀체인은 λ―Όκ°ν•œ 정보λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ μ•ˆμ „ν•œ μ•”ν˜Έν™”λœ μ»¨ν…Œμ΄λ„ˆ 역할을 ν•˜λ©°, 이λ₯Ό μ €μž₯ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ λͺ…μ‹œμ μœΌλ‘œ κΆŒν•œμ„ 뢀여받은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜λ§Œ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ•”ν˜Έν™”λŠ” iOS에 μ˜ν•΄ μƒμ„±λœ κ³ μœ ν•œ λΉ„λ°€λ²ˆν˜Έλ‘œ κ°•ν™”λ˜λ©°, 이 λΉ„λ°€λ²ˆν˜ΈλŠ” AES둜 μ•”ν˜Έν™”λ©λ‹ˆλ‹€. 이 μ•”ν˜Έν™” 과정은 PBKDF2 ν•¨μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ μ‚¬μš©μžμ˜ νŒ¨μŠ€μ½”λ“œμ™€ μž₯치의 UIDμ—μ„œ νŒŒμƒλœ μ†”νŠΈλ₯Ό κ²°ν•©ν•©λ‹ˆλ‹€. 이 ꡬ성 μš”μ†ŒλŠ” 였직 λ³΄μ•ˆ μ—”ν΄λ ˆμ΄λΈŒ μΉ©μ…‹λ§Œ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ‚¬μš©μžμ˜ νŒ¨μŠ€μ½”λ“œκ°€ μ•Œλ €μ Έλ„, 킀체인 λ‚΄μš©μ€ μ›λž˜ μ•”ν˜Έν™”λœ μž₯치 μ™Έμ˜ λ‹€λ₯Έ μž₯μΉ˜μ—μ„œλŠ” μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€.

킀체인 λ°μ΄ν„°μ˜ 관리 및 접근은 Keychain-access-groups 및 application-identifier와 같은 νŠΉμ • μ•± κΆŒν•œμ— 따라 securityd 데λͺ¬μ— μ˜ν•΄ μ²˜λ¦¬λ©λ‹ˆλ‹€.

킀체인 API μž‘μ—…

킀체인 APIλŠ” Apple의 킀체인 μ„œλΉ„μŠ€ λ¬Έμ„œμ—μ„œ μžμ„Ένžˆ μ„€λͺ…λ˜μ–΄ 있으며, μ•ˆμ „ν•œ μ €μž₯ 관리에 ν•„μš”ν•œ ν•„μˆ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€:

  • SecItemAdd: 킀체인에 μƒˆ ν•­λͺ©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
  • SecItemUpdate: 킀체인에 μžˆλŠ” κΈ°μ‘΄ ν•­λͺ©μ„ μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.
  • SecItemCopyMatching: ν‚€μ²΄μΈμ—μ„œ ν•­λͺ©μ„ κ²€μƒ‰ν•©λ‹ˆλ‹€.
  • SecItemDelete: ν‚€μ²΄μΈμ—μ„œ ν•­λͺ©μ„ μ œκ±°ν•©λ‹ˆλ‹€.

킀체인 λΉ„λ°€λ²ˆν˜Έλ₯Ό 무차별 λŒ€μž…ν•˜λŠ” 것은 μ•”ν˜Έν™”λœ ν‚€λ₯Ό 직접 κ³΅κ²©ν•˜κ±°λ‚˜ μž₯치 μžμ²΄μ—μ„œ νŒ¨μŠ€μ½”λ“œλ₯Ό μΆ”μΈ‘ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” 것을 ν¬ν•¨ν•˜λ©°, λ³΄μ•ˆ μ—”ν΄λ ˆμ΄λΈŒκ°€ μ‹€νŒ¨ν•œ μ‹œλ„ κ°„μ˜ 지연을 κ°•μ œν•¨μœΌλ‘œμ¨ 크게 λ°©ν•΄λ°›μŠ΅λ‹ˆλ‹€.

킀체인 ν•­λͺ© 데이터 보호 ꡬ성

킀체인 ν•­λͺ©μ˜ 데이터 보호 μˆ˜μ€€μ€ ν•­λͺ© 생성 λ˜λŠ” μ—…λ°μ΄νŠΈ μ‹œ kSecAttrAccessible 속성을 μ‚¬μš©ν•˜μ—¬ μ„€μ •λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μˆ˜μ€€μ€ Appleμ—μ„œ μ§€μ •ν•œ λŒ€λ‘œ 킀체인 ν•­λͺ©μ— μ ‘κ·Όν•  수 μžˆλŠ” μ‹œκΈ°μ™€ 방법을 κ²°μ •ν•©λ‹ˆλ‹€:

  • kSecAttrAccessibleAlways: μž₯치 잠금 μƒνƒœμ™€ 관계없이 μ–Έμ œλ“ μ§€ μ ‘κ·Ό κ°€λŠ₯.
  • kSecAttrAccessibleAlwaysThisDeviceOnly: 항상 μ ‘κ·Ό κ°€λŠ₯ν•˜μ§€λ§Œ 백업에 ν¬ν•¨λ˜μ§€ μ•ŠμŒ.
  • kSecAttrAccessibleAfterFirstUnlock: μž¬μ‹œμž‘ ν›„ 첫 잠금 ν•΄μ œ ν›„ μ ‘κ·Ό κ°€λŠ₯.
  • kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly: μœ„μ™€ λ™μΌν•˜μ§€λ§Œ μƒˆλ‘œμš΄ μž₯치둜 이전할 수 μ—†μŒ.
  • kSecAttrAccessibleWhenUnlocked: μž₯μΉ˜κ°€ 잠금 ν•΄μ œλœ κ²½μš°μ—λ§Œ μ ‘κ·Ό κ°€λŠ₯.
  • kSecAttrAccessibleWhenUnlockedThisDeviceOnly: 잠금 ν•΄μ œ μ‹œ μ ‘κ·Ό κ°€λŠ₯, 백업에 ν¬ν•¨λ˜μ§€ μ•ŠμŒ.
  • kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly: μž₯치 νŒ¨μŠ€μ½”λ“œκ°€ ν•„μš”ν•˜λ©°, 백업에 ν¬ν•¨λ˜μ§€ μ•ŠμŒ.

**AccessControlFlags**λŠ” 생체 인증 λ˜λŠ” νŒ¨μŠ€μ½”λ“œ μ‚¬μš©μ„ ν—ˆμš©ν•˜μ—¬ μ ‘κ·Ό 방법을 λ”μš± μ„ΈλΆ„ν™”ν•©λ‹ˆλ‹€.

νƒˆμ˜₯ μž₯치 κ²½κ³ 

Warning

νƒˆμ˜₯된 μž₯μΉ˜μ—μ„œλŠ” ν‚€μ²΄μΈμ˜ λ³΄ν˜Έκ°€ μ†μƒλ˜μ–΄ μƒλ‹Ήν•œ λ³΄μ•ˆ μœ„ν—˜μ„ μ΄ˆλž˜ν•©λ‹ˆλ‹€.

킀체인 λ°μ΄ν„°μ˜ 지속성

앱이 μ‚­μ œλ  λ•Œ μ‚­μ œλ˜λŠ” μ•± νŠΉμ • 데이터와 달리, 킀체인 λ°μ΄ν„°λŠ” μž₯μΉ˜μ— μ§€μ†λ©λ‹ˆλ‹€. 이 νŠΉμ„±μœΌλ‘œ 인해 쀑고 μž₯치의 μƒˆλ‘œμš΄ μ†Œμœ μžλŠ” 앱을 μž¬μ„€μΉ˜ν•˜κΈ°λ§Œ ν•˜λ©΄ 이전 μ†Œμœ μžμ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 데이터에 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°œλ°œμžλŠ” 이 μœ„ν—˜μ„ μ™„ν™”ν•˜κΈ° μœ„ν•΄ μ•± μ„€μΉ˜ μ‹œ λ˜λŠ” λ‘œκ·Έμ•„μ›ƒ μ‹œ 킀체인 데이터λ₯Ό μ‚¬μ „μ μœΌλ‘œ μ§€μš°λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ 첫 μ•± μ‹€ν–‰ μ‹œ 킀체인 데이터λ₯Ό μ§€μš°λŠ” 방법을 λ³΄μ—¬μ£ΌλŠ” Swift μ½”λ“œ μ˜ˆμ œμž…λ‹ˆλ‹€:

let userDefaults = UserDefaults.standard

if userDefaults.bool(forKey: "hasRunBefore") == false {
// Remove Keychain items here

// Update the flag indicator
userDefaults.set(true, forKey: "hasRunBefore")
userDefaults.synchronize() // Forces the app to update UserDefaults
}

μ•± κΈ°λŠ₯

μ•± 개발 λΆ„μ•Όμ—μ„œ μƒŒλ“œλ°•μ‹±μ€ λ³΄μ•ˆμ„ κ°•ν™”ν•˜λŠ” 데 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. 이 과정은 각 앱이 κ³ μœ ν•œ ν™ˆ 디렉토리 λ‚΄μ—μ„œ μž‘λ™ν•˜λ„λ‘ 보μž₯ν•˜μ—¬ μ‹œμŠ€ν…œ νŒŒμΌμ΄λ‚˜ λ‹€λ₯Έ μ•±μ˜ 데이터에 μ ‘κ·Όν•˜λŠ” 것을 λ°©μ§€ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ œν•œ μ‚¬ν•­μ˜ μ‹œν–‰μ€ μ‹ λ’°ν•  수 μžˆλŠ” BSD (MAC) 의무 μ ‘κ·Ό μ œμ–΄ ν”„λ ˆμž„μ›Œν¬μ˜ μΌν™˜μΈ μƒŒλ“œλ°•μŠ€ 정책을 톡해 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

κ°œλ°œμžλŠ” 데이터 보호 λ˜λŠ” 킀체인 κ³΅μœ μ™€ 같은 νŠΉμ • κΈ°λŠ₯ λ˜λŠ” κΆŒν•œμ„ 앱에 ꡬ성할 수 μžˆλŠ” λŠ₯λ ₯을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ κΆŒν•œμ€ 앱이 μ„€μΉ˜λœ 직후에 μ μš©λ©λ‹ˆλ‹€. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  νŠΉμ • 보호된 λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œλŠ” 앱이 첫 μ‹œλ„ μ‹œ μ‚¬μš©μžλ‘œλΆ€ν„° λͺ…μ‹œμ μΈ λ™μ˜λ₯Ό λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” λͺ©μ  λ¬Έμžμ—΄ λ˜λŠ” _μ‚¬μš© μ„€λͺ… λ¬Έμžμ—΄_을 μ‚¬μš©ν•˜μ—¬ 이루어지며, μ΄λŠ” κΆŒν•œ μš”μ²­ μ•Œλ¦Όμ—μ„œ μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œλ©λ‹ˆλ‹€.

μ†ŒμŠ€ μ½”λ“œμ— μ ‘κ·Όν•  수 μžˆλŠ” 경우, Info.plist νŒŒμΌμ— ν¬ν•¨λœ κΆŒν•œμ„ ν™•μΈν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. Xcodeμ—μ„œ ν”„λ‘œμ νŠΈ μ—΄κΈ°.
  2. Info.plist 파일 μ°Ύκ³  μ—΄κΈ°.
  3. "Privacy -"둜 μ‹œμž‘ν•˜λŠ” ν‚€λ₯Ό κ²€μƒ‰ν•˜λ©°, λͺ…확성을 μœ„ν•΄ μ›μ‹œ ν‚€/값을 λ³Ό 수 μžˆλŠ” μ˜΅μ…˜μ„ μ„ νƒν•©λ‹ˆλ‹€.

IPA νŒŒμΌμ„ λ‹€λ£° λ•ŒλŠ” λ‹€μŒ 단계λ₯Ό λ”°λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€:

  1. IPA μ••μΆ• ν•΄μ œ.
  2. Payload/<appname>.app/ λ‚΄μ—μ„œ Info.plist 파일 μ°ΎκΈ°.
  3. ν•„μš” μ‹œ νŒŒμΌμ„ XML ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ 더 μ‰½κ²Œ κ²€μ‚¬ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, Info.plist 파일의 λͺ©μ  λ¬Έμžμ—΄μ€ λ‹€μŒκ³Ό 같이 보일 수 μžˆμŠ΅λ‹ˆλ‹€:

<plist version="1.0">
<dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your location is used to provide turn-by-turn directions to your destination.</string>

Device Capabilities

μ•±μ˜ Info.plist νŒŒμΌμ€ μž₯치 κΈ°λŠ₯을 μ§€μ •ν•˜μ—¬ App Storeκ°€ μž₯치 ν˜Έν™˜μ„±μ„ μœ„ν•΄ 앱을 ν•„ν„°λ§ν•˜λŠ” 데 도움을 μ€λ‹ˆλ‹€. μ΄λŠ” UIRequiredDeviceCapabilities ν‚€ μ•„λž˜μ— μ •μ˜λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄:

<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>

이 μ˜ˆμ‹œλŠ” 앱이 armv7 λͺ…λ Ήμ–΄ μ§‘ν•©κ³Ό ν˜Έν™˜λœλ‹€λŠ” 것을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. κ°œλ°œμžλŠ” nfc와 같은 κΈ°λŠ₯을 μ§€μ •ν•˜μ—¬ 앱이 NFCλ₯Ό μ§€μ›ν•˜λŠ” μž₯μΉ˜μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κΆŒν•œ

κΆŒν•œμ€ iOS μ•± 개발의 또 λ‹€λ₯Έ μ€‘μš”ν•œ 츑면으둜, 앱이 λŸ°νƒ€μž„ 검사 μ΄μƒμ˜ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλŠ” κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” ν‚€-κ°’ 쌍으둜 μž‘μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ•±μ—μ„œ 데이터 보호λ₯Ό ν™œμ„±ν™”ν•˜λ €λ©΄ Xcode ν”„λ‘œμ νŠΈμ— νŠΉμ • κΆŒν•œμ„ μΆ”κ°€ν•΄μ•Ό ν•˜λ©°, μ΄λŠ” μ•±μ˜ κΆŒν•œ νŒŒμΌμ΄λ‚˜ IPA의 λ‚΄μž₯ λͺ¨λ°”일 ν”„λ‘œλΉ„μ „ νŒŒμΌμ— λ°˜μ˜λ©λ‹ˆλ‹€.

μ°Έκ³ λ¬Έν—Œ

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