https://youtu.be/J_jc7ncB3RQ?si=eGF2zwa5adrJ1UUh


안드로이드 데이터 수집Ⅰ

안드로이드 운영체제를 사용하는 스마트폰에서 데이터 수집하는 방법에 대하여. 

  • 모바일 데이터 수집 방법
    1. Physical dump
      • 스마트폰에 장착된 플래시 메모리의 전체 데이터를 복제하는 방법
      • 저장장치 내 미할당 영역도 수집할 수 있어서 삭제된 데이터 복구 가능성 존재
      • 최신 안드로이드 기기에는 Full disk encryption이나 File based encryption 적용되어 있기 떄문에 physical dump 방식으로는 암호화된 데이터가 획득되어 분석할 수 없음. → Physical dump는 데이터가 암호화 저장되지 않는 버전의 안드로이드 기기에서 사용하는 방식.
      • 종류
        • Chip-off
        • Debug port
          • UART
          • JTAG
        • AP protocol
        • Rooting
    2. Logical dump
      • 파일시스템을 해석하여 파티션 내부의 파일 및 폴더를 획득하는 방법
      • 복호화된 데이터 획득할 수 있는 가능성이 존재 → 최신 기기의 경우 Logical dump를 통해 데이터를 수집
      • 종류
        • Backup
        • Content provider

 

Physical dump

◆ Chip-off

  • 스마트폰(또는 임베디드 기기) 메인보드에서 플래시 메모리 칩을 물리적으로 분리해 데이터를 수집하는 방법
  • 방법
    1. 스마트폰을 분해한 뒤 메인보드를 분리
    2. 메인보드에서 플래시 메모리 위치 파악하고 플래시 메모리 칩 분리
    3. 분리된 플래시 메모리를 리더기에 연결해 데이터 추출
    4. 리볼링(Rebolling)
      • 플래시 메모리에 손상된 핀이 있다면 이를 복원하는 작업(플래시 메모리를 메인보드에서 분리하는 과정에서 핀 손상 가능성이 존재)
      • 추출한 플래시 메모리에서 온전한 데이터 추출을 위함
    5. 칩 리더기를 이용하여 플래시 메모리 칩의 내부 데이터 덤프
  • 장점
    • 미할당 영역에 저장된 데이터를 수집 가능 (파일 수정 내역이나 삭제한 파일에 대한 데이터가 미할당 영역에 남아있을 수 있음)
    • 모든 임베디드 기기(플래시 메모리 칩이 장착된)에 적용 가능한 방법
  • 단점
    • Chip-off 이후 기기 사용이 어려움 (메인보드에서 분리한 플래시 메모리의 재결합 어렵기 때문)
    • 데이터가 암호화되어 저장될 경우 수집한 데이터를 분석할 수 없음

Debug Port

  • Serial 통신이나 하드웨어 디버깅을 위한 포트를 통해 플래시 메모리 데이터 접근
  • 방법
    1. 스마트폰의 메인보드에서 장착된 디버깅 포트 찾아서 디버깅 장비 연결
    2. 전력을 공급하여 부팅 과정에서 정상 부팅 모드 X, 디버깅 모드로 진입
    3. 플래시 메모리 칩 내부에 저장된 데이터를 물리적으로 수집
  • 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' 바이너리가 존재하지 않음
    • 권한 획득 방법
      1. 관리자 권한 획득을 위해 'SU' 바이너리 삽입하는 방법
      2. 관리자 권한을 갖는 커널 이미지를 생성하거나 수집하여 스마트폰에 삽입 후 부팅
  • 효과
    • 사용자 관점: 블랙 마켓 앱 사용, 폰트/테마 변경
    • 디니털 포렌식 관점: 플래시 메모리 데이터 수집
  • 앱 설치를 이용한 루팅
    • 루팅 기능을 가진 앱을 설치하여 루트 권한을 획득하는 방법
    • 대부분 취약점을 이용하여 루트 권한을 획득
    • 앱을 설치하므로 사용적 영역(/userdata 영역)의 무결성 훼손
    • 장점
      • ADB 프로토콜 사용하여 데이터 전송 속도 빠름
      • 플래시 메모리 전체 또는 사용자 데이터 파티션 등을 선택적 수집 가능 → 추후 시간 단축
    • 단점
      • 루팅 앱에서 지원하는 기기만 루팅 가능
      • 데이터 수집 이후 별도의 언루팅(Unrooting) 작업 필요
  • 플래싱
    • 기존 펌웨어를 다른 펌웨어(루팅되어 있는 커스텀 펌웨어)로 덮어씌우는 방법
    • 주로 리커버리 영역에 수정된 펌웨어를 덮어씀
    • 루트 권한을 가진 커널 이미지(Rooted Kernel Image) 제작
      1. 원본 펌웨어에서 리커버리 커널 이미지 추출
      2. 리커버리 커널에서 관리자 권한 획득 설정 적용
      3. 데이터 수집 작업 위한 도구를 포함
    • 제작된 커널 이미지를 리커버리 파티션에 플래싱
      • 스마트폰을 다운로드 모드로 진입시키고 Odin과 같은 플래싱 전용 도구를 이용해 플래싱 수행 후 리커버리 모드로 부팅
      • 파티션 이미징, 파일 복사, 물리 메모리 획득 등이 가능해짐
    • 장점
      • 플래시 메모리 전체 또는 사용자 데이터 파티션 등을 선택적으로 수집 가능
      • 사용자 데이터 파티션 무결성 유지
    • 단점
      • 플래싱 대상 파티션의 무결성 훼손
      • 데이터 수집 이후 별도의 언루팅(Unrooting) 작업 필요, 원본 펌웨어 없는 경우 원상 복구 불가

안드로이드 암호화(참고)

  • 안드로이드 암호화 적용되어 있다면 physical dump로 데이터 수집해도 의미가 없음
  • 기본적으로 안드로이드 운영체제는 기기의 모든 사용자 데이터를 암호화하길 권장
  • 전체 디스크 암호화(Full Disk Encryption, FDE)
    • 사용자가 생성한 모든 데이터를 암호화하여 저장 매체에 기록
    • 잠금 시 디스크 암호화, 잠금 해제 시 디스크 암호화 해제
      • 잠금 시 긴급통화만 가능
    • 안드로이드 운영체제 Kitkat(Ver 4.4) 도입 / 안드로이드 운영체제 Mashmallow(Ver 6.0) 필수
  • 파일 기반 암호화(File Base Encryption, FBE)
    • 파일마다 고유한 키를 통해 독립적으로 암호화하여 저장 매체에 기록
    • 잠금 시, 잠금 해제 시 사용할 수 있는 어플리케이션을 따로 관리
    • 안드로이드 운영체제 Nougat(Ver 7.0) 도입 / 안드로이드 운영체제 Queen Cake(Ver 10.0) 필수
  • 안드로이드 운영체제 암호화로 인해 물리적으로 수집한 데이터 분석에 한계 존재
    • 데이터 암호화 해제된 상태에서 데이터 수집해야 함 → Logical dump 필요

+ Recent posts