Google Drive for Windows client artifacts analysis - 1

해당 글은 이종찬 연구원이 작성한 글입니다.

# 클라우드 스토리지 서비스와 자료 공유

회사에서 분석 업무를 진행하다 보면 여러 케이스가 있지만 상대적으로 정보 유출이 까다로운 듯하다. 침해사고의 경우는 보통 사고를 인지하고 분석을 진행하기 때문에 악성코드나 공격자가 남긴 흔적을 통해 최초 유입 시점을 역으로 추적할 수 있지만, 정보 유출의 경우는 자료가 빠져나갈 구멍은 많이 있으나 그 모든 구멍을 확인 할 방법이 마땅치 않다. 이와 더불어 이해 관계가 포함되어 있는 데이터가 업무 이외의 목적으로 반출되었는지를 확인해야 하기에 어려움이 더욱 크게 느껴진다.

자료 공유의 수단으로 사용하는 방법 중에 클라우드 스토리지가 있다. 이중 구글 드라이브의 경우 개인적으로도 많이 쓰고 있는데, 파일 공유를 간편하게 할 수 있으며, 다른 사용자와 함께 문서 공유 및 편집을 동시에 할 수 있는 장점이 있기 때문이다. 이러한 장점 때문인지 실제 케이스에서도 구글 드라이브를 이용한 자료 공유 흔적을 쉽게 볼 수 있다. 본 글 시리즈에서는 구글 드라이브 사용시 남는 데이터 중 정보 유출 분석 관점에서 유용하게 확인 할 수 있는 흔적들을 정리하였다. 이 문서를 통해 추후 케이스 분석시, 구글 드라이브를 통한 자료 공유 흔적 분석에 도움이 되길 바란다.

※ 본 포스팅은 구글 드라이브 PC 클라이언트(Windows)를 기준으로 작성되었다. 타 버전은 다소 차이가 있을 수 있다.

# 구글 드라이브 설치 아티팩트

구글 드라이브 클라이언트를 설치 할 경우 레지스트리에 그 흔적을 남긴다. 많은 흔적은 아니지만, 버전 정보와 설치 경로 등을 포함하고 있다.

○ 클라이언트 버전 및 설정 파일 위치 관련 정보
- NTUSER.DAT/Software/Google/Drive

○ 클라이언트 실행 파일 위치 관련 정보
- SOFTWARE/Google/Drive

# 구글 드라이브 계정 아티팩트

구글 드라이브의 클라이언트를 설치하면 가장 먼저 계정에 로그인 하게 된다. 2차 로그인을 설정해 두었다면, 다른 설치형 클라이언트 혹은 웹 페이지처럼 2차 로그인의 방식을 선택하고 추가 인증 진행 후 로그인이 완료된다. 이후 서비스를 사용하며 추가적인 인증 과정이 일반적으로는 다시 발생하지 않기 때문에 계정 정보와 인증키 등을 로컬 시스템에 저장하는 것을 알수 있다. 이에 대한 정보는 다음 두 파일에 각각 SQLite DB와 CA 인증서 형태로 저장된다.

계정 정보
- %UserProfile%\AppData\Local\Google\Drive\global.db

계정 인증 정보
- %UserProfile%\AppData\Local\Google/Drive/user_default/cacerts

# 구글 드라이브 동기화 아티팩트

동기화 폴더 설정 : 로컬 폴더 → 구글 드라이브 서버

동기화 할 로컬 드라이브 폴더 선택 메뉴

로그인 이후 동기화 폴더를 설정하는 데 총 두가지 형태가 존재한다. 이 중 먼저 설정하는 것은 현재 시스템에서 구글 드라이브 서버와 동기화 할 폴더 선택하는 것이다. 이를 통해 현재 시스템의 동기화 폴더가 가지고 있는 파일과 폴더 목록을 저장한다. 이는 동기화 폴더에 파일 혹은 폴더의 생성, 삭제, 수정이 되는 경우를 모니터링 하여 동기화 대상을 선정하기 위한 데이터로 사용된다. 구글 드라이브 클라이언트는 이를 바탕으로 동기화를 지속적으로 수행한다. 이때 현재 시스템의 파일이 구글 드라이브 서버의 파일과 다름을 비교하기 위한 검증값 등이 사용된다. 이 목록과 검증값 등은 다음 경로에 SQLite 형태로 저장된다.
- %UserProfile%\AppData\Local\Google\Drive\user_default\sync_config.db

동기화 폴더 설정 : 구글 드라이브 서버 → 로컬 폴더

동기화 할 클라우브 서버 폴더 선택 메뉴

두번째로 설정하는 동기화 폴더의 경우, 구글 드라이브 서버에 저장되어 있는 항목을 현재 시스템에 저장하기 위한 위치를 지정하는 것이며, 나머지 기능은 동일하다. 즉, 첫번째로 설정한 동기화 폴더는 초기에 업로드가 주로 이루어질 것이고, 두번째로 설정한 동기화 폴더는 초기에 다운로드가 주로 이루어질 것이다. 그 이외의 동작 매커니즘은 크게 다르지 않다. 이와 같은 동기화 동작 관련 데이터는 다음의 파일에 로그 형태로 기록된다.
- %UserProfile%\AppData\Local\Google\Drive\user_default\sync_log.log

# 구글 드라이브 백업 아티팩트

저장매체 백업 선택 메뉴

비교적 최근에 추가된 기능으로, 저장 매체가 PC에 연결이 되면 해당 매체 내의 파일과 폴더를 드라이브로 백업 할 것인지에 대해 묻게 된다. 이 기능에서 눈여겨 볼 점은 ‘이 기기 관련 내 선택 기억하기’ 설정 인데, 매번 연결되는 저장매체를 구분하고 이를 추후에 ‘내 선택’과 비교하기 위해서는 어떠한 방식으로든 저장매체 마다의 구분자를 저장하게 된다. 연결된 저장매체에 대한 정보는 다음의 파일에 SQLite DB 형태로 저장된다.
- %UserProfile%\AppData\Local\Google\Drive\user_default\device_db.db

# 아티팩트 연구의 실험 조건과 방법

단순히 기능 파악을 통해서도 아티팩트로서 사용 할 수 있는 항목들이 도출 되었다. 하지만 형태가 일정치 않아서 바로 분석에 활용하기는 쉽지 않다. 이를 정리하여 가설을 세우고 다양한 실험을 통해 더 많은 의미를 가진 흔적을 찾아 낼 수 있었다. 다음은 실험 환경과 실제 실험을 진행한 항목들이다.

실험 환경

  • VMWare Workstation 14
  • Windows 10
  • Backup and Sync from Google Version 3.43.2448.9071 (Windows Desktop Application)

실험 방법

  • Process Monitoring 도구 등을 통해 특정 동작 후 시스템 내의 변경 사항을 확인
  • 로그의 경우 tail 명령어(-f 옵션)를 통해 실시간으로 follow up
  • SQLite는 기능 수행 후 DB Browser for SQLite(#) 도구로 내용 확인

실험 내용

  • 동기화 폴더 내 파일 및 폴더 관련 흔적
  • 저장매체 연결 흔적
  • 파일 업로드 관련 흔적
    – 특정 파일이 생성되는 경우
    – 특정 파일 열람 후 종료하는 경우
    – 특정 파일 열람 및 수정 후 종료하는 경우
  • 파일 다운로드 관련 흔적
    – 파일을 최초로 저장하는 경우
    – 로컬에 존재하는 파일이 구글 드라이브 서버에서 수정 된 경우
  • 파일 삭제 관련 흔적
    – 구글 드라이브 서버에서 삭제된 경우
    – 로컬에서 삭제된 경우
  • 복합적인 상황 관련 흔적
    – 여러 클라이언트가 동시에 수정하는 경우
    – 특정 파일을 Google 계정에 공유하는 경우
    – 특정 파일을 공개 URL로 공유하는 경우
You've successfully subscribed to PLAINBIT
Great! Next, complete checkout to get full access to all premium content.
Error! Could not sign up. invalid link.
Welcome back! You've successfully signed in.
Error! Could not sign in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.