디지털 증거: 조사 대상이 되는 전자기기에 저장 또는 수신되거나 기기에 의해 전송되는 정보와 데이터
'타당한' 포렌식 조사
증거가 조작되어서는 안 됨
그러나, 모바일 장치에서는 타당성 원칙 지켜지기 어려움 → 적절한 방법론과 가이드라인 따라야 함
모바일 포렌식 과정
압수
수집
조사/분석
모바일 포렌식의 어려움
가장 큰 어려움은 데이터가 복수의 장치에서 접근, 저장, 동기화 가능하다는 것
데이터는 휘발성이고 빠른 변형/원격 삭제 가능
모바일 포렌식이 어려운 이유
하드웨어의 차이
여러 제조사에서 출시한 다양한 모델의 모바일 기기들. 크기, 하드웨어, 기능, 운영체제가 다른 여러 종류의 모바일 기기의 특성에 맞게 새로운 모바일 장치 포렌식 기법에 능숙해져야 한다.
모바일 운영체제
PC와는 달리 모바일 장치는 애플의 iOS, 구글의 안드로이드, RIM의 블랙베리 OS, 마이크로소프트의 윈도우 모바일 등 다양한 OS를 사용함
모바일 플랫폼 보안 기능
모바일 플랫폼은 내장 보안 기능을 포함해 사용자의 데이터와 프라이버시를 보호. 포렌식 과정에서는 걸림돌이 됨.
부족한 자원
여러 종류의 모바일 폰에 대한 케이블, 배터리 등 포렌식 액세서리가 부족.
장치의 일반적인 상태
장치가 대기 상태에 있는 것 같아도 백그라운드 프로세스는 여전히 동작중일 수 있음. 한 상태 → 다른 상태로의 갑작스러운 전이는 데이터 유실/변이 야기할 수 있음.
안티 포렌식 기법
데이터 숨김, 데이터 난독화, 데이터 위조, 안전한 삭제 등 안티 포렌식 기법은 디지털 매체에 대한 조사를 더욱 어렵게 함.
증거의 동적인 속성
디지털 증거는 의도적/비의도적으로 쉽게 변경될 수 있음.
예기치 않은 초기화
모바일 폰은 모든 것을 초기화할 수 있는 기능을 제공.
장치 변경
애플리케이션 데이터 이동, 파일 이름 변경, 제조사의 운영체제 수정 등으로 장치 변경이 일어날 수 있음.
비밀번호 복구
장치가 비밀번호로 보호되고 있을 경우 장치의 자료를 손상시키지 않고 장치에 접근해야 함.
통신 차폐
장치 간의 통신은 장치의 데이터를 변경시킬 수 있어 장치 압수 이후에 가능한 통신의 가능성을 제거해야 함.
사용 가능한 도구의 부족
하나의 도구가 모든 모바일 장치를 지원하지 않거나 필요한 모든 기능을 제공하지 않을 수 있어서 도구의 적절한 조합이 필요.
악성 프로그램
장치 내에 바이러스, 트로이젠 등 악성 소프트웨어가 존재할 수 있음.
법적 문제
모바일 장치가 지리적 경계를 넘는 범죄에 사용되었을 수 있음.
모바일 폰 증거 추출 과정
모바일 장치로부터 자료를 추출할 때 고려할 과정의 개요
증거 수집
소유권 정보와 모바일 장치가 어떤 사고에 관련되어 있는지, 요청자가 찾고자 하는 자료나 정보 종류의 개요 설명
식별
법적 권한
조사를 위한 법적 권한과 매체에 존재하는 제한사항 확인하고 문서화
조사의 목표
요청된 자료를 바탕으로 얼마나 자세한 조사가 필요한지 확인 → 도구와 기법 선택에 도움, 조사 과정 효율성 증가
장치의 제조사, 모델, 식별 정보
폰의 제조사와 모델 식별 → 어떤 도구가 동작할지 결정에 도움
이동식 외부 데이터 저장소
폰에서 트랜스 마이크로SD 메모리 확장 카드와 같은 이동식 저장소를 발견할 시 카드를 제거해 추가적인 디지털 포렌식 기법을 사용해 처리
쉬운 분석을 위해 모바일 장치에 있는 카드를 빼내고 장치의 메모리와 카드에 저장된 데이터를 연결시키는 게 좋음
잠재적 증거의 기타 근원
조사 이전에 지문과 기타 생물학적 증거를 수집
준비
조사 대상이 되는 특정 폰과 자료 수집 및 조사에서 사용될 적절한 방법과 도구들이 연구됨
격리
폰이 네트워크에 연결되면 전화, 메시지, 애플리케이션 데이터의 수진 통해 새로운 데이터가 폰에 추가되며 폰 내부의 증거가 변화될 수 있고 원격 접속/원격 삭제 명령을 통해 데이터의 완전한 삭제도 가능
수집과 조사 단계 이전에 장치를 통신 매체로부터 격리
패러데이 백 → 폰으로 송수신되는 무선 신호를 차단. 그러나 통신 완벽 차단은 불가
네트워크 격리 → 폰을 비행기 모드로 설정하고 무선 주파수 차폐 주머니에 보관
처리
반복할 수 있고 포렌식적으로 타당한, 검증된 방법으로 수집되어야 함
물리적 수집
보통 장치 전원이 꺼진 상태에서 미가공 메모리 데이터를 추출하기 때문에 선호되는 방법
물리적 수집 과정에서는 대부분 최소한의 변화만 발생
논리적 수집
분석된 데이터 얻거나 미가공 메모리 이미지를 조사하기 위한 힌트 얻을 수 있음
검증
추출한 데이터를 장치 내 데이터와 비교
장치에서 추출한 데이터가 장치가 표시하는 데이터와 일치하는지 확인
※ 주의. 원본 장치를 다루는 것이 증거(장비 자체)에 변화를 줄 수 있음
여러 도구의 사용과 결과 비교
정확성 보장을 위해 여러 도구를 사용해 데이터 추출하고 그 결과를 비교
해시 값 사용
모든 이미지 파일 수집 이후에는 해시 값을 계산해 데이터 변경되지 않도록 해야 함
파일 시스템 추출 가능하다면 → 추출한 파일 시스템에 대한 해시값을 계산하고 원본 값과 비교
문서화와 보고
수집과 조사 과정에서 어떤 일 했는지에 대해 동시 기록 형식으로 조사 과정 전체를 문서화
조사관의 노트와 문서에 포함될 수 있는 것들
조사 시작과 완료 시간
폰의 물리적 조건
폰과 개별 구성요소의 사진
폰을 받았을 때의 상태 - 전원 켜짐 여부
폰 제조사와 모델
수집에 사용된 도구
조사에 사용된 도구
조사 과정에서 발견된 데이터
상호 평가 노트
제시
모바일 장치에서 추출되고 문서화된 정보를 다른 조사관/법정에 명확하게 보일 수 있게 해야 함
조사 결과는 명확하고 간결하며 반복 가능해야 하고, 반드시 문서화되어야 함
기록 보관
추출한 데이터를 사용 가능한 형태로 유지
실제적인 모바일 포렌식 접근법
모바일 장치에서 데이터 추출하는 일반적인 방법
모바일 운영체제 개요
안드로이드
리눅스 기반
오픈소스와 무료 형태로 개발되어 하드웨어 제조사와 이동통신사들에게 제공
세계에서 가장 많이 사용되고 있는 스마트폰 운영체제
iOS
애플에 의해서만 개발되고 배포됨
Darwin에 기반한 OS X로부터 유래되었기 때문에 유닉스와 비슷함
장치 하드웨어를 관리하고 네이티브 애플리케이션을 구현하기 위해 필요한 기술을 제공
윈도우 폰
마이크로소프트사에 의해 개발된 운영체제
스마트폰과 포켓 PC에서 사용
윈도우 데스크탑 OS와 비슷하지만 작은 용량의 저장소를 갖춘 장치에 최적화
블랙베리 OS
블랙베리 라인에 속하는 스마트폰과 모바일 장치에서만 사용
법인 회사에 널리 사용되며 블랙베리 엔터프라이즈 서버를 사용
높은 보안성
모바일 포렌식 도구 레벨링 시스템
모바일 폰의 포렌식 수집과 분석과정에서 적절한 도구를 찾을 때 샘 브라더즈의 모바일 장치 포렌식 도구 분류 시스템 사용하면 편리
각 모바일 포렌식 도구 시스템은 다섯 개 레벨 중 하나 이상의 레벨에 분류될 수 있음
수동 추출
▶ 장치의 키패드나 터치 스크린을 사용해 장치에 있는 데이터를 단순히 스크롤하거나 데이터 보는 것을 포함 ▶ 추출 과정 빠르고 편리, 거의 모든 폰에서 사용 가능 ▶ 인터페이스에 익숙치 않아 특정 데이터 빠트리는 등의 실수 발생 가능성 ▶ 삭제된 데이터 복구하는 일/모든 데이터 수집하는 일 불가능
논리적 추출
▶ 모바일 장치를 포렌식 하드웨어나 포렌식 워크스테이션에 케이블, 적외선 또는 블루투스로 연결하는 것을 포함 ▶ 연결 시 컴퓨터가 장치로 명령 보내고, 장치의 프로세서가 해석 ▶ 사용 가능한 대부분의 포렌식 장치는 대부분 이 레벨에서 동작 ▶ 추출 과정 빠름, 사용 편리 ▶ 장치에 데이터 쓰여질 수 있어서 증거의 무결성에 영향 줄 수 있음 ▶ 삭제된 데이터 접근 거의 불가능
헥스 덤프
▶ 물리적 추출이라고도 일컬음 ▶ 장치를 포렌식 워크스테이션에 연결해 서명되지 않은 코드, 부트로더를 폰에 넣어 폰의 메모리 덤프를 컴퓨터에 전송하는 과정 ▶ 결과로 추출되는 미가공 이미지는 바이너리 형태라 분석 위해선 전문성 필요 ▶ 값싸고 더 많은 데이터 제공, 삭제된 파일 복구 가능
칩 오프
▶ 장치의 메모리 칩에서 직접 데이터를 수집하는 것 ▶ 장치에서 물리적으로 칩 제거하여 그 안에 저장된 데이터 추출 위해 칩 리더 또는 다른 폰 사용 ▶ 모바일 폰에서 사용되는 칩의 종류 다양해 기술적인 어려움 ▶ 비쌈, 땝납 제거와 메모리 칩에 가열 등 하드웨어 수준의 지식 요구 ▶ 본질적으로 장치에 손상 줄 수 있기 때문에 이를 수행하기 전 다른 레벨의 추출 시도 추천 ▶ 추출 정보가 미가공 형태라서 파싱, 디코딩해 해석되어야 함 ▶ 칩이 장치에 장착되어 있을 때 등의 메모리 상태를 보존하는 것이 중요할 때, 장치 손상됐으나 메모리 칩은 영향 받지 않은 상황에 선호되는 방법
마이크로 칩 읽기
▶ 메모리 칩 상의 데이터를 수동으로 보고 해석하는 과정 포함 ▶ 전자 현미경 사용해 칩의 물리 게이터 분석하고 게이트 상태를 0/1로 해석해 ASCII 문자 결정 ▶ 시간, 비용 많이 들고 플래시 메모리와 파일 시스템에 대한 광범위한 지식과 연습 필요 ▶ 거의 수행되지 않으며 문서화 잘 안 돼있음, 상용 도구 없음
데이터 수집 방법
이미징을 포함한 디지털 장치와 주변 장치, 매체로부터 정보 추출하는 과정
물리적 수집
▶ 모바일 포렌식 도구와 방법을 사용해 수행됨 ▶ 플래시 메모리에 직접 접근하여 장치로부터 정보를 획득 ▶ 전체 파일 시스템의 비트 단위 사본을 생성 ▶ 삭제된 데이터 포함해 장치에 존재하는 모든 데이터 획득 가능, 대부분 장치의 할당 안 된 공간 접근 가능
논리적 수집
▶ 폰 내부 자료를 컴퓨터와 동기화하기 위해 장치 제조사의 애플리케이션 프로그래밍 인터페이스 사용해 수집됨 ▶ 포렌식 도구에 따라 모든 데이터를 얻을 수도, 일부의 데이터만 얻을 수도 있음 ▶ 폰에 존재하는 파일만 복구하며 할당되지 않은 공간에 존재하는 데이터 복구하지 않음
수동 수집
▶ 포렌식 수집 과정 중 가장 마지막에 선택됨 ▶ 키패드나 터치 스크린과 메뉴 탐색을 통해 장치 사용하며 조사관은 각 화면의 내용을 사진으로 기록 ▶ 사람의 실수 발생 가능성 높음, 증거 삭제될 가능성 있음 ▶ 폰에 나타나는 데이터만 수집 가능
모바일 폰에 저장된 잠재적 증거
모바일 폰 내부의 데이터는 SIM 카드, 외장 저장소 카드, 폰의 메모리에서 찾을 수 있음
'폰 메모리'에서 얻을 수 있는 데이터에 초점.
▼ 일반적으로 모든 모델에서 접근 가능하며 유용한 증거들 ▼
주소록
통화 기록
SMS
MMS
E-mail
웹 브라우저 방문 기록
사진
비디오
음악
문서
캘린더
네트워크 통신
지도
소셜 네트워킹 데이터
삭제된 데이터
증거 법칙
디지털 포렌식에 적용되고 증거가 유용해지기 위해 따라야 할 다섯 가지 일반적인 규칙
해당 규칙 무시할 시 증거 받아들여지지 않을 수 있음
증거의 인정 여부
법정이나 다른 곳에서 사용될 수 있는 방법으로 증거를 수집, 보존해야 함
불법적 경로로 수집된 증거 등은 증거로서 인정받을 수 없음
증거의 진위 여부
반드시 사건과 연관되어 어떤 것을 증명 가능해야 함
증거의 완전성
증거가 명확하고 완전한 상태여야 하며 사건의 전체 내용 반영해야 함
증거의 신뢰성
사용된 도구와 방법에 따라 신뢰할 수 있는 증거여야 함
믿을 만한 증거
사용한 과정과 증거의 무결성 보존하기 위한 방법을 명확하고 간결하게 설명 가능해야 함
조사관이 제시한 증거를 배심원이 명확히 이해할 수 있고 믿을 수 있어야 함
올바른 포렌식 관례
증거가 법정에서 진본이고 명확함을 인정받을 수 있도록 하는 모범 관례
증거 보호
올바른 기구와 기법을 사용해 모든 네트워크로부터 폰을 격리
자료 삭제를 야기할 수 있는 데이터 수신 방지
증거 보존
수집된 증거는 법정에서 인정될 수 있는 상태로 보존되어야 함
증거의 원본에 작업한다면 증거에 변화를 줄 수 있으므로 미가공 디스크 이미지나 파일 복구하는 즉시 읽기 전용 마스터 사본 생성해 복제해야 함
이미지 해시 값 생성하는 벙법 통해 제출한 증거와 수집한 원본과 동일한 것임을 입증
증거의 문서화
증거를 수집하고 추출하는 데 사용된 모든 방법과 도구에 대해 문서화하여 다른 조사관이 다시 수행할 수 있게 해야 함
반복될 수 없는 작업에 대한 결과물은 증거로 채택되지 않을 수 있음
모든 변경사항에 대한 문서화
수집과 조사 과정에서 일어난 모든 변경사항을 포함한 전체 복구 과정을 문서화하는 것이 중요
$row=@mysqli_fetch_array(mysqli_query($conn, "select * from admin_password where password='".md5($ps,true)."'"));
if(isset($row[0])){
echo "hello admin!"."<br />";
echo "FLAG : ".$FLAG;
여기인 듯.
실제 입력하는 패스워드 값 즉 변수인 $ps는 mysql_real_escape_string()으로 SQL 인젝션 방지.
구글링의 도움을 많이 받았는데...
SQL 인젝션 방지를 위해서 특수문자 앞에 escape(\ 백슬래시)를 붙여주는 기능이 있는 거라고 함.
key 값 출력 위해서는 DB 테이블 안에 있는 password의 md5 해시 값을 맞춰야 함.
include("./lib.php"); # include for $FLAG, $DB_username, $DB_password.
$conn = mysqli_connect("localhost", $DB_username, $DB_password, "md5_password");
/*
create table admin_password(
password char(64) unique
);
*/
$ps = mysqli_real_escape_string($conn, $_POST['ps']);
$row=@mysqli_fetch_array(mysqli_query($conn, "select * from admin_password where password='".md5($ps,true)."'"));
이 부분을 보면 md5($ps, true) 사용 중.
md5 함수란 인자로 들어온 문자열을 md5 해시화 하여 32byte의 길이로 반환해 주는 함수 md5() 함수는 두 번째 인자값을 선택적으로 줄 수 있음, 이는 raw_output에 해당하는 옵션임
raw_output에 의해 취약점이 발생함.
이 옵션의 기본값은 False이고 이 값을 true로 주게 되면 32byte 길이의 헥스값을 16byte의 바이너리 값으로 변환해준다.
헥스값은 raw_output 옵션의 false를 말하며
binary 값으로 출력된 코드는 raw_output 옵션이 True인 경우를 말한다.
아... 너무 어렵다
여러 풀이 방법을 찾아 보니 '='을 이용해 취약점을 발생시킬 수 있다.
false injection이라는 걸 이용해 '어떤문자열' = '어떤문자열' 형태로, 1=1과 동일한 결과값을 출력해낼 수 있다고 한다.
false injection에 대해서는 추후에 더 공부해 보기로 하고.
파이썬을 통해 '=' 값이 들어가도록 코드를 짜 본다.
import hashlib
for password in range (1, 111112211):
md5_hash = hashlib.md5(str(password).encode()).hexdigest()
if '273d27' in md5_hash:
print(password)
이런 코드를 짬
1~111112210까지의 숫자를 md5로 해시화시킨 후 문자열취급하여 인코딩한 값을 16진수로 바꾼 것.
SQLite란? - 행과 열로 구성된 테이블로 데이터를 관리하는 관계형 데이터베이스(RDBMS) - 다른 데이터 베이스와 비교해 가볍고 속도가 빨라 모바일 환경에서 가장 많이 사용되는 데이터베이스 - 표준 SQL 쿼리 사용 ※ SQLite Export 프로그램 사용하면 데이터 베이스 파일을 분석 가능
멀티미디어 형태
사진, 동영상
안드로이드 데이터 분석
안드로이드 기기 정보/시스템 로그 데이터 경로
전원, 네트워크, 앱 정보에 해당하는 경로 ↓
전원 재시작 로그(power_off_reset_reason.txt)
재시작 및 종료 시간 확인 가능
전원 배터리 부족 종료 → reason : no power
설치된 애플리케이션 정보(packages.xml)
패키지명, 애플리케이션 경로, 버전,권한 정보
연결한 Wi-Fi 정보(WifiConfigStore.xml)
Wi-Fi를 연결한 기록으로, 연결된 Wi-Fi 이름과 마지막으로 연결된 시각
ConfigKey: 연결된 Wi-Fi 이름 + Wi-Fi 암호화 방식
SSID: 연결된 Wi-Fi 이름
경로: /data/misc/wifi/WifiConfigStore.xml
애플리케이션 데이터
애플리케이션마다 디렉토리 구조와 데이터 저장 방식 다름 (*.db, *.xml 등)
문자 메시지, 연락처, 통화 내역, 웹 브라우저 기록 등의 애플리케이션 사용자 데이터 확인 가능
안드로이드 백업 데이터
Smart Switch로 획득한 안드로이드 이미지 분석
연락처(Smart Switch를 이용하여 CSV로 변환 가능) 획득 가능
멀티미디어 파일(사진, 동영상, 문서 등) 획득 가능
설치된 애플리케이션 목록 및 정보 획득 가능
iOS 데이터 분석
여러가지 형태로 시스템 설정 정보, 애플리케이션 정보 등을 저장
Plist(Property List)
애플 기반의 시스템(OS X, iOS 등) 에서 객체 직렬화 위해 사용하는 파일
저장 형태는 텍스트 or 바이너리
iOS 백업 데이터 분석
아이튠즈에서 지원하는 백업 기능으로 수집한 데이터 분석
백업 파일의 위치(Windows 7 이상): %UserProfile%\Apple\MobileSync\Backup\{UDID}
UDID(Unique Device Identifier): 기기 식별을 위해 사용하는 문자열 (SHA-1 해시값)
최신 안드로이드 기기에는 Full disk encryption이나 File based encryption 적용되어 있기 떄문에 physical dump 방식으로는 암호화된 데이터가 획득되어 분석할 수 없음. → Physical dump는 데이터가 암호화 저장되지 않는 버전의 안드로이드 기기에서 사용하는 방식.
종류
Chip-off
Debug port
UART
JTAG
AP protocol
Rooting
Logical dump
파일시스템을 해석하여 파티션 내부의 파일 및 폴더를 획득하는 방법
복호화된 데이터 획득할 수 있는 가능성이 존재 → 최신 기기의 경우 Logical dump를 통해 데이터를 수집
종류
Backup
Content provider
Physical dump
◆ Chip-off
스마트폰(또는 임베디드 기기) 메인보드에서 플래시 메모리 칩을 물리적으로 분리해 데이터를 수집하는 방법
방법
스마트폰을 분해한 뒤 메인보드를 분리
메인보드에서 플래시 메모리 위치 파악하고 플래시 메모리 칩 분리
분리된 플래시 메모리를 리더기에 연결해 데이터 추출
리볼링(Rebolling)
플래시 메모리에 손상된 핀이 있다면 이를 복원하는 작업(플래시 메모리를 메인보드에서 분리하는 과정에서 핀 손상 가능성이 존재)
추출한 플래시 메모리에서 온전한 데이터 추출을 위함
칩 리더기를 이용하여 플래시 메모리 칩의 내부 데이터 덤프
장점
미할당 영역에 저장된 데이터를 수집 가능 (파일 수정 내역이나 삭제한 파일에 대한 데이터가 미할당 영역에 남아있을 수 있음)
모든 임베디드 기기(플래시 메모리 칩이 장착된)에 적용 가능한 방법
단점
Chip-off 이후 기기 사용이 어려움 (메인보드에서 분리한 플래시 메모리의 재결합 어렵기 때문)
데이터가 암호화되어 저장될 경우 수집한 데이터를 분석할 수 없음
◆ Debug Port
Serial 통신이나 하드웨어 디버깅을 위한 포트를 통해 플래시 메모리 데이터 접근
방법
스마트폰의 메인보드에서 장착된 디버깅 포트 찾아서 디버깅 장비 연결
전력을 공급하여 부팅 과정에서 정상 부팅 모드 X, 디버깅 모드로 진입
플래시 메모리 칩 내부에 저장된 데이터를 물리적으로 수집
UART
디버깅 포트의 종류
총 4개의 핀을 가짐.
TX: 데이터 송신핀
RX: 데이터 수신 핀
GND: 그라운드
VCG: 전압
JTAG
디버깅 포트의 종류
JTAG 연결 시 하드웨어 디버깅 가능하기 때문에 물리적 데이터 수집뿐만 아니라 원하는 모든 작업 수행 가능
총 5가지 핀을 가짐
TDI: Test Data In
TDO: Test Data Out
TMS: Test Mode Select
TCK: Test Clock
TRST: Test Reset(Optional)
Ex) Trace32
디버그 포트와 연결하기 위한 장치
임베디드 시스템 개발 시에도 디버깅 목적으로 많이 활용
JTAG 포트에 trace32 연결하면 전용 프로그램 동작시켜 플래시 메모리에 저장된 데이터 수집 가능
장점
온전하게 시스템 부팅하는 게 아니라 디버그 모드로 부팅하기 때문에 시스템 부팅되기 전(부팅 커널 로딩 전)의 데이터를 수집 → 원본에 대한 무결성 유지
단점
최근 JTAG 포트를 제거하여 출시하는 스마트폰 등장 (실제로 삼성 갤럭시 S3 이후부터는 JTAG 포트 제거된 채 출시) → 최신 스마트폰은 디버깅 포트 활용한 데이터 수집 불가
데이터 수집에 많은 시간 소요
◆ AP Protocol
AP(Application Processor) 제조사에서 제공하는 프로토콜을 활용한 방법
AP란? - 스마트폰 내 모든 명령을 처리하는 핵심 부품. 중앙처리장치(CPU)에 해당
각 AP 제조사 별로 펌웨어(Firmware) 관리를 위한 비공개 프로토콜 존재
해당 프로토콜 사용하면 플래시 메모리에 존재하는 데이터 물리적 수집 가능
부트 로더 로딩 과정에서 플래시 메모리 영역에 대한 Read/Write 명령어 전송
제조사 별 특정 모드에서만 프로토콜을 이용한 통신 가능
장점
정상적 부팅이 아니라 부트 로더 로딩 단계에서 제조사가 만들어둔 별도 프로토콜 사용해 메모리 데이터 수집함. → 플래시 메모리에 저장된 원본 데이터에 대한 무결성 유지 가능
USB 통한 시리얼 통신이기 때문에 Debug Port보다 빠른 전송 속도
단점
AP 프로토콜이 공개되어 있지 않으면 사용 불가
AP 프로토콜 공개되어 있어도 인증 위한 별도의 절차 존재할 수 있음
데이터 암호화되어 저장할 경우 수집한 데이터 분석할 수 없음
◆ Rooting
안드로이드 OS의 관리자(root) 권한을 획득하는 행위
Android 권한 체계
리눅스(Linux)와 동일한 권한 체계 사용
그러나 보안상의 이유로 관리자 권한 획득을 위한 'SU' 바이너리가 존재하지 않음
권한 획득 방법
관리자 권한 획득을 위해 'SU' 바이너리 삽입하는 방법
관리자 권한을 갖는 커널 이미지를 생성하거나 수집하여 스마트폰에 삽입 후 부팅
효과
사용자 관점: 블랙 마켓 앱 사용, 폰트/테마 변경
디니털 포렌식 관점: 플래시 메모리 데이터 수집
앱 설치를 이용한 루팅
루팅 기능을 가진 앱을 설치하여 루트 권한을 획득하는 방법
대부분 취약점을 이용하여 루트 권한을 획득
앱을 설치하므로 사용적 영역(/userdata 영역)의 무결성 훼손
장점
ADB 프로토콜 사용하여 데이터 전송 속도 빠름
플래시 메모리 전체 또는 사용자 데이터 파티션 등을 선택적 수집 가능 → 추후 시간 단축
단점
루팅 앱에서 지원하는 기기만 루팅 가능
데이터 수집 이후 별도의 언루팅(Unrooting) 작업 필요
플래싱
기존 펌웨어를 다른 펌웨어(루팅되어 있는 커스텀 펌웨어)로 덮어씌우는 방법
주로 리커버리 영역에 수정된 펌웨어를 덮어씀
루트 권한을 가진 커널 이미지(Rooted Kernel Image) 제작
원본 펌웨어에서 리커버리 커널 이미지 추출
리커버리 커널에서 관리자 권한 획득 설정 적용
데이터 수집 작업 위한 도구를 포함
제작된 커널 이미지를 리커버리 파티션에 플래싱
스마트폰을 다운로드 모드로 진입시키고 Odin과 같은 플래싱 전용 도구를 이용해 플래싱 수행 후 리커버리 모드로 부팅
파티션 이미징, 파일 복사, 물리 메모리 획득 등이 가능해짐
장점
플래시 메모리 전체 또는 사용자 데이터 파티션 등을 선택적으로 수집 가능
사용자 데이터 파티션 무결성 유지
단점
플래싱 대상 파티션의 무결성 훼손
데이터 수집 이후 별도의 언루팅(Unrooting) 작업 필요, 원본 펌웨어 없는 경우 원상 복구 불가