본문 바로가기

IOS 모의해킹

(15)
7. Runtime Manpulation(3) 1. 실습 4자리 숫자를 입력 후 Validate code 버튼을 클릭 시 입력한 숫자를 담은 에러 메시지가 출력 에러메시지 문자열 검색 분기점에서 성공했을 때 출력되는 문자열 발견 기드라에서 확인한 인증번호(8848) 입력 시 성공 확인 분기가 발생하는 주소 및 분기에 영향을 미치는 cmp 명령어 확인 레지스터 값을 확인하는 실행 코드 위의 코드를 실행시키면 x8에는 16진수 2290이 x9에는 16진수 457이라는 값이 들어가 있는 것을 확인 인증코드 1111을 입력했을 때 x9 레지스터에 1111이 16진수로 변환된 값이 저장된 것으로 보아 x9 레지스터에는 사용자 입력값이 저장되고, x8 레지스터에는 정확한 인증번호가 저장되어 있는 것을 알 수 있음 브루트포스 공격을 시도하기 위한 코드 공격코드 ..
6. Runtime Manpulation(2) 1. 실습 Login Method 2 클릭 시 계정정보가 불일치한다는 메시지 출력 로그인 시도시 나온 경고창 문자열 검색 후 해당 문자열을 참조하는 주소 확인 해당 주소로 이동 우회에 실패했을 때의 주소 우회에 성공했을 때의 주소 분기되는 주소 분기가 일어나는 주소 확인 바이너리 변조 코드 레지스터 값이 변조되었음을 확인 레지스터 값 변조 후 Login Method 2 버튼을 클릭 시 인증 우회 성공 메시지 출력 [도움 및 출처] 보안프로젝트 김태영 팀장 해커를 위한 iOS 앱 모의 해킹 전문 과정
5. Runtime Manpulation(1) 1. Runtime Manpulation 개요 - 런타임 조작은 앱이 실행될 때 흐름 조작, 정보 유출 등이 가능한 취약점 - 런타임 조작을 사용해 인스턴스 변수를 수정하고, 로컬 로그인 검사를 우회하고, 무차별 강제 핀 코드를 사용 가능 2. Login Method 1 실습 아무것도 입력하지 않고 Login Method 1 을 클릭 시 Error 메시지가 출력되고, 입력한 계정이 올바르지 않으면 Oops 메시지가 출력 실행여부 확인 Login 문자열이 포함된 클래스 찾기 해당 자바스크립트 코드 실행 시 LoginValidate 클래스에서 사용중인 메소드명을 확인 가능 반환값 확인 반환값 변조 코드 작성 리턴값변조 확인 인증 우회 성공 메시지 확인 [도움 및 출처] 보안프로젝트 김태영 팀장 해커를 위한 ..
4. Excessive Perimssions 1. Excessive Permissions 개요 - 앱 권한을 잘못 사용하는 방법에 대한 취약점 - 앱이 블루투스 인터페이스, 위치 정보 또는 사용자 사진과 같은 특정 보호된 자원에 접근하기 전에 시스템에서 앱 대신 권한을 요청 - 앱에 접근 권한이 필요하단 것을 알리기 위해 UsageDescription 키를 앱의 Info.plist 파일에 저장 - 키와 관련하여 앱에 접근해야 하는 이유를 설명하는 문자열에 설정함 2. 실습 권한 승인 확인 해당 앱이 접근할 수 있는 앱을 확인 해당 앱의 info.plist 파일에서 카메라 접근 권한을 가지고 있음을 확인 3. 대응방안 - 주어진 권한이 앱에 필요한 것인지 확인이 필요 - 앱에 필요 이상의 권한이 있을 경우 권한 삭제 권고 [도움 및 출처] 보안프로젝..
3. Jailbreak Detection (2) 1. 실습 Jailbreak Test 2번 클릭시 탈옥 탐지 문자열 출력 확인 현재 연결된 기기에서 실행중인 앱의 프로세스 아이디, 앱이름, 식별자 확인 가능 탈옥을 탐지하는 클래스를 찾기 위한 코드 클래스명을 문자열로 검색(방법1) 검색된 클래스명들을 리다이렉션을 통해 txt 파일에 저장 후 메모장에서 문자열 검색(방법2) JailbreakDetection 클래스에서 사용하는 메소드를 확인하는 코드 JailbreakDetection 클래스가 사용하는 메소드는 isJailbroken 찾은 메소드 반환값 확인 코드 js코드를 실행 후 앱에서 Jailbreak Test 2 를 클릭 시 정보가 출력되며 리턴 값을 0으로 변조하면 탈옥 탐지 우회가 가능(현재 리턴 값은 1) 리턴 값 변조 코드 변조한 리턴 값 ..
2. Jailbreak Detection (1) 1. 실습 'Jailbreak Test 1' 버튼 클릭 시 'Device is Jailbroken' 메시지 출력 해당 경로에서 바이너리 파일 export 기드라를 실행 후 DVIA-v2 파일 import 파일을 import 하면 해당 프로그램을 자동으로 분석 탈옥을 탐지했다고 알리는 문자열 찾기 오른쪽에 해당 문자열을 참조하고 있는 위치 확인 가능하며 더블클릭으로 해당 위치로 이동 Window > Function Graph로 IDA Pro처럼 어셈블리를 그래프로 보여주는 기능을 이용 가능 마지막 어셈블리 명령어 실행 시 조건이 참인 경우 1001cc17 번지로 이동 Device is Not Jailbroken 문자열이 있는 이곳으로 분기되도록 해야함 조건이 거짓인 경우 탈옥이 탐지되었다는 문자열이 있는 ..
1. Local Data Storage 1. Local Data Storage 개요 - IOS 애플리케이션은 임시 데이터와 영구 데이터를 저장하기 위해 로컬 시스템과 상호작용함 - 애플리케이션이 중요한 정보를 임시/영구 형식으로 안전하지 않은 상태로 저장하면 위험이 발생함 - 내부에 저장하기 위한 다양한 형식이 존재 2. Local Data Storage의 종류 및 실습 1. Plist - Plist 파일 애플리케이션 데이터 및 설정 정보를 저장하는데 사용되는 XML 파일 저장된 정보는 암호화가 되지 않아 중요 정보를 저장하면 안됨 Info.plist에는 버전 정보, 실행가능한 바이너리 이름, 지원되는 IOS 버전 및 디바이스 모델 등의 정보가 저장(Bundle Container) 이 외에도 plist 형식을 사용해 앱에서 필요한 데이터를 내..