IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

일반적으로 진단하고자 하는 앱에 대한 무결성을 검증하기 위해 IPA를 복호화하여 변조 후 3 uTools 등으로 다시 앱을 올려 실행하는 방식으로 진행됩니다.

당연히 탈옥(Jailbreak)된 단말에서 진행하기 때문에 "AppSync Unified" 트윅을 통해 설치가 실패되지 않도록 진행하지만 설치 후 실행할 때 앱이 "튕김" 현상이 발생하는 경우가 존재합니다.

이럴 때는 "ldid" 명령을 통해 진단하고자 하는 정상 앱의 바이너리 파일 내부에 존재하는 자격증명을 추출하여 변조된 앱에 다시 재 서명해주는 작업을 거치면 튕김 현상을 막을 수 있습니다.

IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

디바이스와 PC를 SSH를 통해 연결 후 "ldid" 명령을 입력해 설치가 되어 있는지 확인합니다. 

*미 설치 시 apt-get install ldid 실행

IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

번들컨테이너 경로로 들어가 앱의 바이너리 파일명을 확인하고 경로는 복사해 둡니다.

IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

ldid -e 를 통해 바이너리 내부의 자격증명을 new.xml이라는 별도의 이름을 지정해 추출해주시면 됩니다.

ldid -e binary경로 > nex.xml 
IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

자격증명을 추출해뒀으니 이제 해당 앱을 "CrackerXi" 나 "Clutch 를 사용해 대상 앱을 복호화시켜 추출하고 Hex값을 조금 수정하여 다시 재 설치해보겠습니다.

(1) 복호화된 iPA 파일(압축 형태) 추출 -> (2) 압축 해제후 바이너리 변조 -> (3) 변조된 바이너리만 (1) 번 압축파일에 덮어쓰기 -> (4) 정상 앱은 삭제하고 변조된 앱 재설치
IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

변조된 앱을 설치할 것이기 때문에 처음에 설치해둔 정상 애플리케이션은 삭제하겠습니다. 반드시 삭제하시기 전에 서명 값을 ldid로 긁어 따로 보관해두셔야 됩니다.

IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

바이너리 내부를 조금 수정후 다시 재설치 해준 상태의 내부 입니다. 앱의 UUID 값은 당연히 변경되어 있기 때문에 경로를 다시 한번 확인하고 착오가 없도록 해주세요

IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

ldid -S(대문자) 명령을 통해 변조 된 바이너리 내부에 정상 앱의 자격증명을 다시 삽입시켜 주시면 되는데 중요한 것은 -S 옵션과 추출해둔 new.xml파일을 붙여서 실행해 주셔야 됩니다.

ldid -Snew.xml <변조된 binary경로>
IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

수정된 앱이 튕기지 않고 정상적으로 실행된 것을 확인하실 수 있습니다. 만약 위의 방법대로 해도 튕김 현상이 반복된다면 아래의 방법을 다시 참고하시고 진행해 보시길 바랍니다.

1. 변조된 바이너리 파일의 권한을 확인하고 chomd +x 명령을 통해 쓰기 권한을 지정

2. 바이너리만 추출해서 진행했는데 안되었을경우 -> iPA전체를 복호화시켜서 압축해제 후 바이너리 수정한 뒤 압축파일에 덮어쓰기로 추가

3. 소스코드단에서 해시값 검증 등 무결성 검증을 확인하는지 확인 필요

기본적으로 IOS 애플리케이션에서 무결성 체크를 하는 로직이 있는지 여부를 확인하기 위한 아주 간단한 방법중 하나이다.

무결성 체크 로직이 있는 경우에는 해당 로직을 분석하여 우회하도록 변경하면 된다(탈옥탐지 우회랑 비슷한 방법으로 가능)

0) 사용되는 프로그램

  • HashCalc - 파일의 해시값을 구할 수 있는 프로그램이면 가능

  • HxD

  • iFunbox

1) iFunbox로 실행파일을 추출

2) 변조 전 실행 파일의 해시값 확인

3) HxD 로 파일 변조

3) 변조 후 실행파일의 해시값 확인

IOS 무결성 검증 방법 - iOS mugyeolseong geomjeung bangbeob

4) 변조한 파일을 저장 후, 해당 애플리케이션이 설치된 위치에 덮어쓰기

5) 앱 재실행 시 실행 가능 확인