0Pricing
Cyber Security Academy · 강의

Android 데이터 획득 및 분석

Android 데이터를 추출하고 분석합니다.

Android 데이터 획득 및 분석은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

안드로이드 저장소 구조

안드로이드 데이터를 효과적으로 추출하려면 데이터가 어디에 저장되는지 알아야 합니다.

  • /data/data/<package>/ — 각 앱의 샌드박스: 데이터베이스, shared_prefs, 파일, 캐시.
  • /data/media/0/ — 사용자 저장 공간(사진, 다운로드).
  • /data/system/ — 계정, 잠금 설정, 사용 통계.

대부분의 앱 증거는 앱별 샌드박스 안의 SQLite 데이터베이스와 XML 환경설정 파일에 있으며, 루트 권한이나 백업 방식 없이는 읽을 수 없습니다.

ADB 및 디버깅 사전 요구 사항

Android Debug Bridge (ADB)는 논리적 획득을 위한 주요 채널입니다. USB 디버깅이 활성화되어 있고 호스트 키가 승인되어 있어야 합니다.

  • 디버깅이 활성화되지 않았거나 화면이 잠금 해제되지 않은 경우 ADB 접근이 차단됩니다.
  • 승인 요청 자체가 기기 상태를 변경하므로 이를 기록하십시오.

먼저 연결을 확인하고 기기 속성을 확보하십시오:

adb devices -l
adb shell getprop ro.build.version.release   # Android version
adb shell getprop ro.product.model           # Device model
adb shell getprop ro.crypto.state            # encrypted / unencrypted

ADB 백업을 통한 논리적 획득

adb backup은 백업 가능한 앱 데이터의 .ab 아카이브를 생성합니다. 루트 권한이 필요 없고 널리 사용할 수 있지만, 많은 앱에서 allowBackup=false로 설정합니다.

  • 앱 데이터, 앱 패키지(-apk 사용 시) 및 공유 저장 공간을 확보합니다.
  • 백업을 거부한 앱과 삭제된 레코드는 놓칩니다.

분석을 위해 백업을 생성하고 변환하십시오:

# Create a full backup (user must confirm on device)
adb backup -apk -shared -all -f android_backup.ab

# Convert the .ab to a readable tar (android-backup-extractor)
java -jar abe.jar unpack android_backup.ab android_backup.tar
tar -xvf android_backup.tar

파일 시스템 추출

파일 시스템 추출은 앱 샌드박스와 동기화되지 않은 레코드를 보관하는 SQLite WAL/SHM 저널 파일을 포함하여 디렉터리 트리를 복사합니다.

  • 루트 권한, 포렌식 에이전트 또는 익스플로잇/부트로더 방식이 필요합니다.
  • -wal 및 -shm 파일을 보존합니다. 최근 행이 해당 파일에만 존재할 수 있으므로 매우 중요합니다.

SQLite 데이터베이스를 가져올 때는 저널 동반 파일도 항상 함께 확보하십시오:

adb pull /data/data/com.whatsapp/databases/msgstore.db ./out/
adb pull /data/data/com.whatsapp/databases/msgstore.db-wal ./out/
adb pull /data/data/com.whatsapp/databases/msgstore.db-shm ./out/

물리적 획득의 현실

물리적 이미지는 삭제된 데이터가 남아 있을 수 있는 할당되지 않은 공간을 포함한 NAND의 비트 단위 복사본입니다. 최신 안드로이드에서는 이를 확보하기가 가장 어렵습니다.

  • FBE 암호화로 인해 사용자의 키가 없으면 원시 NAND 덤프는 암호문이 됩니다.
  • 방식으로는 제조업체 익스플로잇, EDL/부트로더 모드 또는 칩 오프(최후의 수단이며 파괴적임)가 있습니다.
  • 실제로는 AFU 상태에서의 파일 시스템 추출이 암호화된 물리적 덤프보다 더 많은 사용 가능한 데이터를 제공하는 경우가 많습니다.

정당한 이유가 있고 복호화가 가능할 때만 물리적 획득을 선택하십시오.

SQLite: 안드로이드 증거의 핵심

대부분의 안드로이드 아티팩트는 SQLite 데이터베이스입니다. 분석가는 데이터베이스를 직접 조회하여 메시지, 통화 기록 및 시간 기록을 복구합니다.

  • 증거 파일이 수정되지 않도록 읽기 전용으로 여십시오.
  • 시간 기록은 흔히 유닉스 에포크 밀리초로 저장됩니다.

추출 결과에서 연락처 데이터베이스를 검사하십시오:

sqlite3 -readonly contacts2.db
sqlite> .tables
sqlite> SELECT display_name, data1
   ...> FROM view_v_contacts LIMIT 20;

삭제된 SQLite 레코드 복구

SQLite에서 행을 삭제해도 페이지 공간이 비어 있는 것으로 표시될 뿐인 경우가 많습니다. 복구 가능한 잔여 데이터는 다음 위치에 남습니다.

  • 프리리스트 페이지와 .db 파일의 할당되지 않은 영역.
  • 체크포인트 이전 버전의 행을 보존하는 -wal 선행 기록 로그.

카빙 도구는 이러한 레코드를 재구성합니다. 데이터베이스에서 복구 작업을 실행하십시오:

# Carve deleted rows from freelist + WAL
python3 sqlite_carver.py --db msgstore.db --wal msgstore.db-wal \
  --out recovered_messages.csv

# Cross-check live vs recovered counts in your notes

타임라인 및 시간 기록 해석

타임라인을 구축하면 여러 앱의 활동을 서로 연계할 수 있습니다. 과제는 안드로이드가 사용하는 다양한 시간 기록 형식입니다.

  • 유닉스 에포크(ms) — 대부분의 메시지 데이터베이스.
  • 유닉스 에포크(s) — 많은 시스템 기록.
  • WebKit/Chrome 시간 — 1601년부터의 마이크로초(브라우저 방문 기록).

항상 UTC로 정규화하고 기기의 시간대를 기록하십시오. SQLite에서의 변환 예시:

-- Convert epoch milliseconds to readable UTC
SELECT datetime(timestamp/1000, 'unixepoch') AS sent_utc,
       key_remote_jid, data
FROM messages
ORDER BY timestamp DESC LIMIT 25;

핵심 시스템 아티팩트

앱 데이터 외에도 Android 시스템 아티팩트는 사용자 행동과 기기 사용 방식을 보여 줍니다.

  • usagestats — 어떤 앱이 언제 실행되었는지 보여 줍니다.
  • accounts.db / accounts_ce.db — 연결된 Google 계정과 앱 계정입니다.
  • net stats / netpolicy — 앱별 데이터 사용량입니다.
  • Wi-Fi 구성 (WifiConfigStore.xml) — 알려진 네트워크로, 위치 추정 맥락을 파악하는 데 유용합니다.

이러한 자료는 누가 언제 기기를 사용했는지에 관한 주장을 뒷받침하거나 반박합니다.

ALEAPP를 사용한 자동 파싱

수동 파싱은 규모가 커지면 효율적으로 수행하기 어렵습니다. ALEAPP(Android 로그 이벤트 및 Protobuf 파서)는 파일 시스템 추출본을 입력으로 받아 구조화된 HTML/CSV 보고서를 출력합니다.

  • usagestats, 최근 활동, 알림, 앱 권한 등을 파싱합니다.
  • 먼저 선별 분석에 사용한 다음, 원시 DB와 대조하여 핵심 발견 사항을 직접 검증하십시오.

추출 디렉터리에 대해 ALEAPP를 실행하십시오:

python3 aleapp.py -t fs -i ./android_filesystem/ -o ./aleapp_report/
# Open ./aleapp_report/index.html to review parsed artifacts

검증 및 변조 방지

하나의 도구만 믿어서는 안 됩니다. 자동화된 출력을 원본 데이터 및 여러 도구의 결과와 대조하여 검증하십시오.

  • sqlite3에서 핵심 쿼리를 수동으로 다시 실행하여 파서 결과를 확인하십시오.
  • 안티 포렌식 징후인 로그 삭제, 수정된 타임스탬프, 보안 삭제 앱 또는 사라지는 메시지 설정이 적용된 채팅 앱이 있는지 살펴보십시오.
  • 분석 전후에 이미지 해시가 여전히 일치하는지 확인하십시오.

재현성과 교차 검증이 있어야 발견 사항을 근거에 기반해 제시할 수 있습니다.

빠른 확인

채팅 앱의 SQLite 데이터베이스를 가져오고 있습니다. 최근에 전송된 메시지를 누락하지 않으려면 어떤 동반 파일도 함께 수집해야 합니까?

요약: Android 확보 및 분석

이제 Android 증거를 처음부터 끝까지 확보하고 분석할 수 있습니다.

  • 앱 데이터는 앱별 샌드박스에 SQLite DB와 XML 환경설정으로 저장됩니다.
  • ADB 백업은 간편한 논리적 추출이고, 파일 시스템 추출(root)은 WAL을 보존하며, 물리적 추출은 FBE 환경에서 가장 어렵습니다.
  • 프리리스트 페이지와 WAL에서 삭제된 레코드를 복구하십시오.
  • 타임스탬프를 UTC로 정규화하고 epoch 및 WebKit 형식을 디코드하십시오.
  • ALEAPP로 선별 분석한 다음, sqlite3로 수동 검증하십시오.
  • 안티 포렌식 변조를 살펴보고 이미지 해시를 다시 확인하십시오.

다음: iOS 환경을 살펴봅니다.

자주 묻는 질문

“Android 데이터 획득 및 분석” 강의는 무료인가요?

네 — “Android 데이터 획득 및 분석” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Android 데이터 획득 및 분석”에서 뭘 배우나요?

Android 데이터를 추출하고 분석합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“Android 데이터 획득 및 분석” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 모바일 포렌식 기초
  2. Android 데이터 획득 및 분석
  3. iOS 데이터 획득 및 분석
  4. 앱, 아티팩트 및 보고
← Cyber Security Academy(으)로 돌아가기