보안 공부/모바일 보안

iOS 취약점 점검/진단 세팅 및 방법

H.J.World 2021. 10. 18. 20:36
728x90
반응형

 

개인적으로 공부하려고 올려둔 내용

이쁘게 정리가 잘안되있으니.. 참고 바랍니다.

잘정리해서 사진과 함께 곧 올려보겠습니다.

 

1. 포렌식 공격

공격 시나리오
공격자는 피해자의 단말기를 탈취 한 후 메모리와 디스크 정보를 덤프하여 개인 중요 정보들을 탈취
설명
-디바이스 물리적인 저장소의 조사
- 폰 또는 테블릿 절도는 다른 컴퓨팅 장치를 훔치는 것에 비해서 쉽고 빈번함
- PIN 보호가 없는 폰에서 매우 취약
- FBI에서의 Apple 사에 수사 협조 요청 사례
- 앱이 사용자의 중요 정보를 디바이스에서 안전하게 관리하는 것이 중요

2. 코드실행 공격
공격 시나리오
공격자가 피해자 단말기에서 실행 되는 앱의 임의 코드 실행 취약점을 이용해 피해자의 단말기에서 임의 코드를 실행하여 단말기를 장악
설명
-단말기 혹은 단말기 앱의 임의 코드 실행 취약점을 이용해 공격자가 원하는 임의 코드가 피해자의 단말기에서 실행될 수 있음



plutil

lputil -convert xml1 파일.



시디아 -> 서치 -> openssh -> 인스톨 설치 -> 네트워크에 연결(와이파이ok, wlseks pc와 같은 망) -> 휴대폰 ip 확인 후 -> 진단 PC로 접속 시도 ssh root@0.0.0.0 -> 초기 비밀번호 alpine

plist 확인 방법

ssh 접속 후 

cd /var/containers/Bundle/application/
-> 설치된 앱들에 대한 번들

ls *
내부에 앱 디렉토리가 존재해서 해당 앱에 대한 위치를 찾을 수 있음
-> aPP으로 접속
내주에 Info.plist 가 존재
cat으로 확인 시 biniry 형식으로 되있어서 확인이 어렵

ftp로 해당 infor.plist 파일을 다운로드

plutil로 변환 해줌 (plutil은 아이튠즈 설치 C->profile86 -> common files -> Apple -> apple application Support

plutil -convert xml1 "파일명"

CFBundelExecutable -> 실행 파일

CFBundleIentifier -> 어테치 할때 사용

CFBundleURLTypes -> 스키마 URL 확인

NSAppTransportSecurity -> 통신에 대한 내용 확인 // NSAllowArbirtaryLoads(HTTP통신도 한다는 소리)

==========
탈옥
Jailbreak(탈옥)
- 애플에서 승인하지 않는 앱 실행
- OS에 대한 Root 접근

-> 완전탈옥(재부팅가능), 반 탈옥(재부팅 시 다시 탈옥), 준 반 탈옥

탈옥 과정
1. 디바이스에서 앱 로드, 내장된 앱 익스플로잇, Lockdown 서비스
2. [서명되지 않은/자체 서명된] 코드 실행
3. 커널패치 -> remount /rw

iOS 12.4.2, 13버전
-> SecureROM 취약점

3uTools

Cydia, Sileo
->Repo 추가 및 Tool 설치

Usim사용 기기는 Wifi Detection을 우회 해서 진단 사용

================
진단 실습

1. Tool 설치
- Cydia 접속
- Sources 클릭
- Edit -> Add -> Repo 주소 입력

2. Frida 세팅
- pip3 install frida==12.8.14
- pip3 install frida-tools
- frida-ps -h

 -> 진단 기기에 세팅
- github에서 Frida-server 다운
- 다운 받은 바이너리 파일을 진단 기기에 넣어줌
- 실행권한을 주고->실행 (&설정 후 백그라운드 실행)

============
디버깅 세팅(DVIA-V2)
- pid 알아내고
- debugserver *:7777 --attach=00000
- lldd
- platform: remote-ios
- process connect connect://192.0.0.0:7777

==============
IPA파일 설치하기
- 진단기기에서 Cydia 접속
- Repo 추가 https://Cydia.akemi.ai/
- search "appinst" 후 install (appsync도 설치)
- ipa 파일 넣고 
- 원격접속후 appinst xxx.ipa 파일 입력 하면 설치

=============
IOS 앱분석
1. 정적 분석
 - 실행하지 않은 상태에서 분석
->iOS application 정적 분석
 - App Binary 분석
 - App Directory 탐색
-> 정적분석 목적
 - 앱의 동작 로직을 파악하기 위해
 - 동적 분석을 쉽게 하기 위해
 - 중요 정보가 단말기에 저장되어 있는지 확인하기 위해
-> App binary 추출 방법 
 - App Directory 추출
 - 메모리 덤프를 통한 바이너리 추출
-> App Store 설치 vs IPA 설치 앱
 - App store에서 설치된 앱은 실행되는 바이너리가 암호화 되어있음(iOS-encrypted)
 - IPA 파일을 설치한 경우 Binary 암호화 되어 있지 않음

-> app directory binary 추출
 - Bundle 경로에 접근해서 FTP 등의 방법으로 추출

-> 메모리 덤프를 이용한 binary 추출
 - 암호화 된 경우 복호화가 필요(메모리에는 복호화된 명령어 Set이있음)
-> 메모리덤프를 통한 바이너리 추출 자동화 -> Tool 이용
 - Clutch 사용(지금은 안됨)

-> ARM 이란?
 - Advanced RISC Machine의 약자 CPU Type

-> APP 디렉터리 탐색
 - Info.plist 파일을 분석

 - SSH를 이요한 디렉토리 탐색
 - 3utools 등 ftp 프로그램 사용


2. 동적 분석
 - 분석할 타겟을 실제로 실행 시키면서 분석

-> iOS application 동적분석
 - 원격 디버깅을 이용한 동적분석
 - 함수 후킹을 이용한 동적 분석
 - TCP, HTTP proxy를 이용한 패킷 분석
 - 코드 패치를 통한 동적 분석

-> 동적분석의 목적
 - 앱의 동작 로직을 정확하게 파악하기 위해
 - 호출되는 메서드를 추적하기 위해

->  Debuggong(디버깅)이란?
 - 프로그램의 논리적 오류를 찾아내는것
 - 실행해가면서 동작을 분석하고 문제를 해결하는것

-> 모의해킹에서 디버깅
 - 프로그램의 동작 과정을 분석하고 우류를 찾아내어 그 오류가 취약점인지 확인

-> Function Hooking
 - 소프트웨어 공학 용어로, 운영 체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말함
 - 함수가 실행 직후와 반환 직전에 임의의 코드를 삽입하여 실행시키는 것
 - 함수의 실행 흐름을 임의의 코드로 변경해주는 것

-> Frida 사용
 - Scriptable 한 DBI 프레임워크
 - C/S 구조
 - 타겟 Process에 프레임워크 agent를 인젝션하여 파이프를 만들어 놓고, 그 파이프를 통해 통신
 - Javascript를 통한 바이너리 조작
 - 멀티 플랫폼
 - Inline Hooking 수행

-> Frida 사용 방법 (Frida Script Load 방식)
 1. Spawn 방식 
  - 앱 프로세스를 메모리에 적재한 뒤 실행 전에 스크립트를 로드하고 실행시키는 방식
  - 앱 프로세스 시작에 동작하는 탈옥/루팅 탐지, 무결성 검증 우회에서 유용
 2. Attach 방식
 - 실행 된 프로세스에 스크립트를 로드하는 방식
 - 앱 프로세스에서 동적으로 로딩되는 라이브러리 함수를 후킹할 때 유용

-> TCP proxy 전략 -> Redirect, Relay
 - Burp에서 "Nop"
 - Redirect : 단말기에서 Proxy Server로 데이터를 Redirect 해야함
  -- domain name으로 접속 시 hosts 파일 변조를 통해 Redirect
  -- ip를 통해 접속 시 code patch를 통해 Redirect

-> Relay 
 - mitm_relay

-> Brida
 - Frida를 사용하는 Burp suite  플러그인
 - 기본적인 리턴값 변조를 쉽게 해주는 도구

-> code Patch
 - app 실행 Binary 파일의 코드를 직접 수정하는 것
 - IDA 등 Disassembler를 이용하여 코드 및 문자열 수정
 - HEX editor를 리용하여 코드 및 문자열 수정
 - Frida 탐지 등의 방법에 탐지되지 않음
 - 한번 코드를 패치하여 앱이 재실행되어도 변조한 로직으로 앱을 실행시킬 수 있음
 - app의 무결성이 훼손되어 무결성 검증 로직이 있다면 탐지됨
 - 다양한 데이터 변조하며 테스트를 하는 경우 시간이 오래걸림

 

728x90
반응형