sqlite 3

[Digital Forensic] SQLite Journal & WAL Structure Analysis

SQLite JournalingJournaling: SQLite의 트랜잭션이 발생하면 SQLite의 일관성을 보장하기 위해 백업하는 기법을 의미한다. 트랜잭션 과정에서 예상치 못한 문제로 인해 트랜잭션이 비정상적으로 종료되면, 백업해 둔 임시 파일을 이용해 SQLite를 트랜잭션 이전으로 복원한다. 디지털 포렌식의 관점에서 journal 파일 분석은 SQLite의 특정 이벤트 이전의 Page를 확보할 수 있어 중요하다.SQLite의 journal 모드는 Rollback Journal 모드와 WAL 모드 두 가지가 있으며, 아래는 각 모드의 상세 설명이다. Rollback JournalRollback Journal 모드는 기본적으로 트랜잭션이 발생하면 journal 파일을 생성한다. 이후에 SQLite의 ..

[Digital Forensic] SQLite Recovery Analysis (Non-Secure Delete)

Event Analysis먼저 SQLite의 Record 생성, 삭제, 복구 이벤트 분석에 사용할 SQLite를 생성하였다. 아래는 SQLite 내부 테이블의 모습으로, 테이블은 하나만 존재한다.   SQLite의 Record 이벤트 분석 과정은 다음과 같다. Record의 생성, 삭제, 복구 이벤트 발생 이전의 SQLite 파일을 저장하고, 추가로 이벤트 발생 이후의 파일을 추가 저장하여 두 파일을 비교분석하였다.1. Record 생성기존의 1, 2, 3번 3개의 Record에 추가적으로 Record('Choi', '2023004', 'Software')를 생성하였다. 아래는 각각 Record 생성 전, 후의 Header Page 모습이다. 변화한 데이터는 색으로 표시하였다. 주요 확인 가능 정보Fil..

[Digital Forensic] SQLite Structure Analysis

SQLiteSQLite: 서버 없이도 동작하는 로컬 데이터베이스 관리 시스템으로, 오프라인 상황에서 저장되는 데부분의 데이터는 SQLite에 저장된다. 본 글은 SQLite의 구조를 디지털 포렌식의 관점(삭제, 복구, 복구 가능 여부)에서 바이너리 단위로 분석한 글이다.   SQLite StructureSQLite는 페이지의 집합으로, 페이지는 SQLite가 데이터를 저장하는 물리적인 단위이다. SQLite에서 Page는 크게 Header Page와 일반 Page로 나뉜다. Header Page는 1번 페이지로 SQLite DataBase 정보와 Schema Table 정보를 포함하고, 일반 Page는 1번 Page를 제외한 모든 페이지(Page 2 ~ N)로 Table Cell 정보를 포함한다.   P..