[논문 리뷰] Couchbase에 대한 디지털 포렌식 조사 기법 연구

2024. 2. 6. 15:52논문 리뷰/보안-디지털포렌식

*본 글의 모든 내용, 그림, 표 출처는 논문 원문에 있습니다. 

https://www-dbpia-co-kr.libproxy.dankook.ac.kr/pdf/pdfView.do?nodeId=NODE11343537

 

https://www-dbpia-co-kr.libproxy.dankook.ac.kr/pdf/pdfView.do?nodeId=NODE11343537

 

www-dbpia-co-kr.libproxy.dankook.ac.kr

[출처] 추승용, 김준호, 이상진. (2023). Couchbase에 대한 디지털 포렌식 조사 기법 연구. 디지털포렌식연구, 17(1), 52-64.


 본 논문은 비관계형 데이터베이스 중 Document store 유형인 Couchbase의 저장 구조와 데이터 선별 수집 방법을 설명하고 이를 바탕으로 Couchbase의 디지털 포렌식 조사 방안을 제시함. 또한 본 논문에서 제시한 데지털 포렌식 조사 방안은 안티-포렌식 행위에 대한 식별과 대응 방안을 포함하여 삭제된 데이터 복구에도 활용할 수 있음.

연구 대상 : CentOS 8에서 Couchbase Server Community 6.6.0 버전과 Couchbase Server Enterprise 6.6.0 버전을 대상으로 분석 진행

Couchbase 디지털 포렌식 조사 기법

couchbase의 디지털 포렌식 조사 시 데이터 및 로그에 대한 수집과 분석 방법을 설명하고, 이를 활용하여 안티-포렌식 행위 탐지 및 원본 데이터의 흔적을 찾는 과정을 설명

1) 데이터를 수집하기 전에 Couchbase의 운영 환경을 파악하여 수집 대상이 되는 서버와 데이터 저장 위치, 로그의 저장 위치를 식별

2) document의 key를 확인하고 그에 따른 적절한 쿼리를 작성하여 그 결과를 웹 콘솔의 Export 기능이나 Couchbase Server CLI 명령어를 통해 수집

3) 데이터 조회, 데이터 수정/삭제 등 사용자 행위 식별을 위해 로그를 수집하고, 삭제된 원본 데이터의 흔적을 찾기 위해서는 데이터가 저장된 노드의 vBucket 파일도 함께 수정

환경 설정 확인

Couchbase의 클러스터는 여러 노드로 구성되어 있고, 하나의 버킷에 해당하는 데이터가 분산되어 저장되어 있으므로 데이터 수집 전에 운영 환경 확인이 필요

주요 환경 설정 파일에 대한 설명

운영 환경 파악

Couchbase를 설치하면 별도의 추가 설치 없이 웹 브라우저에서 아래와 같이 Couchbase의 IP 또는 호스트네임(hostname)과 기본 포트 번호인 8091을 입력하여 접속할 수 있음

Servers 항목)

클러스터에 구성된 노드 확인 가능

->아래에서는 test 클러스터가 "192.168.187.144"와 "192.168.187.146" 2개의 노드로 구성된 것을 보여줌

Buckets 항목)

아래와 같이 버킷의 목록을 조회할 수 있음

버킷 : document에 저장된 데이터를 논리적으로 구분한 것으로, 관계형 데이터베이스의 테이블

->여기서는 Couchbase에서 샘플(sample)로 제공되는 beer-sample과 travel-sample 버킷을 사용하여 연구 진행

데이터 수집 및 분석

Query

-Documents 항목을 눌러 조회를 원하는 버킷을 선택하면 document의 key와 value를 확인 가능

*웹 콘솔에서 조회할 수 있는 document의 개수는 최대 200개이기 때문에 저장된 데이터의 모든 key를 알기는 어려움

beer-sample 버킷의 document를 조회한 결과

-Couchbase에서 쿼리는 SQL과 유사한 구성임(SELECT, FROM, WHERE로 구성)

원하는 조건의 쿼리를 실행하여 결과를 본 것
웹 콘솔의 Export 기능
작성한 쿼리를 포함한 결과

Couchbase는 개별적인 쿼리 및 쿼리 서비스에 대해 다양한 모니터링 정보를 제공함

system:complete_requests는 최근 완료된 쿼리 요청 목록을 가지고 있으며 요청 id, 작성한 쿼리, 요청 시간과 사용자 정보와 같은 정보 포함

-system:complete_requests는 웹 콘솔의 Query 항목에서 "SELECT * FROM system:completed_requests;" 쿼리를 작성하여 조회 가능

-기본 설정으로 쿼리 실행 시간이 1,000ms보다 오래 걸리는 경우 기록됨

-최근 완료된 요청 목록 4,000개까지 확인 가능

-설정은 웹 콘솔의 Settings 항목에서 변경 가능

Couchbase 명령어

cbbackup :

실행 중인 전체 클러스터, 버킷 또는 단일 노드를 백업하며 원본 데이터의 복사본을 지정된 백업 디렉터리에 생성

전체 클러스터를 백업하는 것

버킷을 지정하여 백업 가능

cbbackup 사용법
cbbackup을 통해 데이터 백업이 완료되어 "data-0000.cbb" 파일 생성
SQLite 데이터베이스 파일로 다음과 같이 vbucket_id, key, cas와 document를 포함한 백업 데이터가 저장됨

-compact는 불필요한 데이터가 디스크 공간을 차지하지 않도록 제거하는 것

->이 작업 수행시 디스크에 남아있던 데이터가 사라지게 됨

=>삭제된 원본 데이터의 흔적을 찾기 위해서는 서버에 존재하는 vBucket 파일을 수집할 필요가 있음

"data-0000.cbb" 파일에서 삭제된 데이터는 위와 같이 val 칼럼이 비어있고 dtype 칼럼의 값이 0으로 표현
compact 실행 전이면 삭제된 데이터의 vbucket_id를 참고하여 해당 vBucket 파일에서 삭제된 데이터의 key를 검색하면 데이터의 흔적을 찾을 수 있음

-cas(compare and swap)은 document의 일관성을 유지하기 위한 값

-document가 수정될 때마다 cas 값이 변경되므로 이것을 통해 데이터가 변경된 시점을 확인하는 것이 가능

cas값을 변환한 결과, 데이터를 삭제한 시간과 일치하는 것을 확인

cbexport : 

버킷 단위로 수집 가능

JSON 데이터로 추출

cbexport 사용법

포맷 형태에 따라 list는 결과가 리스트 형태([, ])로 저장되며, lines는 단순 개행으로 결과가 저장

list 포맷으로 cbexport 명령어를 수행한 결과

로그 수집 및 분석

Couchbase는 주요 이벤트 정보를 기록하여 다양한 로그 파일에 저장

디지털 포렌식 관점에서 사용자 행위 식별에 도움을 줄 수 있는 두 가지 로그 파일

-Couchbase Server는 관리를 위한 웹 콘솔 지원

-http_access.log는 웹 콘솔에 대한 서버 요청 기록(<Figure 17> 참고)

웹 로그와 유사한 로그 형식으로 http_access.log 기록됨
원격 클라이언트 IP, 접속 계정, 타임스탬프, GET/POST 요청 및 요청된 리소스, HTTP 상태 코드 등을 포함

-http_access.log를 통해서 웹 콘솔을 통해 접근한 기록을 확인 가능, 로그인 성공/실패, 로그아웃, Document 조회/수정/삭제, 쿼리 실행 여부 등을 알 수 있음

웹 콘솔에 접속하여 로그인 페이지가 로드되고 Administrator 계정으로 로그인에 성공했을 때 나타나는 로그
Document 삭제 시 "DELETE"와 함께 해당 버킷 이름이 나타나는 것을 볼 수 있다.

Couchbase Server는 Auditing을 통해 누가 어떤 작업을, 언제 수행했는지 기록 가능

-audit.log는 JSON으로 저장되며 로그인을 비롯하여 설정에 따라 document 수정/식제 행위를 기록 가능

행위자를 식별할 수 있는 계정과 원격 클라이언트 IP, 계정에 대한 권한, 행위 시간 등이 포함되어 있어 상세한 분석 가능
Document를 수정 또는 삭제하면 다음과 같이 버킷 이름과 key를 통해 어떤 document인지 파악 가능, description과 name에 "document modify", "document delete"로 표시되어 정확한 행위 구별가능

-웹 콘솔의 Logs 항목에서 서비스의 시작, 노드의 상태 등 전반적인 Couchbase Server의 주요 이벤트를 확인 가능하나, document 수정과 삭제에 관련한 이벤트는 나타나지 않음

Logs 항목에서 확인할 수 있는 이벤트 예시

결론

Couchbase 디지털 포렌식 조사 기법을 제안함

Couchbase의 관리요 웹 콘솔을 활용하여 데이터베이스 구조 파악과 데이터 조회 방법을 살펴보고 쿼리를 이용하여 데이터를 수집하는 방법을 파악

로그 수집 및 분석을 통해 로그인을 비롯한 데이터 조회와 수정, 삭제 행위를 식별하였으며 Couchbase Server의 CLI 명령어인 cbbackup을 활용하여 삭제된 데이터를 찾고 원본 데이터의 흔적 확인

Couchbase 시스템을 압수수색 시 사용될 수 있는 연구로 보여짐