iOS Extracting Entitlements From Compiled Application

Support HackTricks

페이지 요약 https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary

Extracting Entitlements and Mobile Provision Files

앱의 IPA 또는 탈옥된 장치에 설치된 앱을 다룰 때, .entitlements 파일이나 embedded.mobileprovision 파일을 직접 찾는 것은 불가능할 수 있습니다. 그러나, 앱 바이너리에서 권한 속성 목록을 추출할 수 있으며, 이는 "iOS Basic Security Testing" 장의 절차를 따릅니다. 특히 "Acquiring the App Binary" 섹션을 참조하십시오.

암호화된 바이너리에서도 이러한 파일을 추출하기 위해 특정 단계를 사용할 수 있습니다. 이러한 단계가 실패할 경우, Clutch(호환되는 iOS 버전일 경우), frida-ios-dump 또는 유사한 유틸리티를 사용하여 앱을 복호화하고 추출해야 할 수 있습니다.

Extracting the Entitlements Plist from the App Binary

앱 바이너리에 접근할 수 있는 컴퓨터에서 binwalk를 사용하여 모든 XML 파일을 추출할 수 있습니다. 아래 명령어는 이를 수행하는 방법을 보여줍니다:

$ binwalk -e -y=xml ./Telegram\ X

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1430180       0x15D2A4        XML document, version: "1.0"
1458814       0x16427E        XML document, version: "1.0"

대안으로, radare2를 사용하여 조용히 명령을 실행하고 종료할 수 있으며, "PropertyList"를 포함하는 앱 바이너리의 모든 문자열을 검색할 수 있습니다:

$ r2 -qc 'izz~PropertyList' ./Telegram\ X

0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...

두 방법인 binwalk와 radare2는 plist 파일의 추출을 가능하게 하며, 첫 번째 방법(0x0015d2a4)의 검토를 통해 텔레그램의 원본 권한 파일의 성공적인 복구가 드러났습니다.

탈옥된 장치에서 접근한 앱 바이너리에 대해서는 grep 명령어와 -a, --text 플래그를 사용하여 모든 파일을 ASCII 텍스트로 처리할 수 있습니다:

$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...

-A num, --after-context=num 플래그를 조정하면 더 많은 또는 더 적은 줄을 표시할 수 있습니다. 이 방법은 암호화된 앱 바이너리에도 유효하며 여러 App Store 앱에 대해 검증되었습니다. 앞서 언급한 도구는 유사한 목적을 위해 탈옥된 iOS 장치에서도 사용할 수 있습니다.

참고: 이 작업에 대해 strings 명령어를 직접 사용하는 것은 관련 정보를 찾는 데 한계가 있기 때문에 권장되지 않습니다. 대신, 바이너리에 대해 -a 플래그와 함께 grep을 사용하거나 radare2(izz)/rabin2(-zz)를 활용하는 것이 더 효과적인 결과를 얻는 데 바람직합니다.

Last updated