DOI QR코드

DOI QR Code

Research on User Behavior-Based Artifact Analysis of Android Session Messenger from a Digital Forensic Viewpoint

디지털 포렌식 관점에서의 안드로이드 Session 메신저에 대한 사용자 행위 기반 아티팩트 분석 연구

  • Received : 2025.08.12
  • Accepted : 2025.09.12
  • Published : 2025.10.31

Abstract

Cybercrime has been increasing over the last 10 years, and since Telegram's cooperation in 2024, the number of criminals using Session Messenger has also risen. Investigations face restrictions due to E2EE and anonymous accounts, and prior studies analyzing Session Messenger artifacts remain insufficient. This study analyzed databases, log files, and temporary Android-based files for Session Messenger, identified major artifacts, and proposed a database decryption methodology applicable to real devices through dynamic key extraction using the Frida tool. Precision was increased through log file decryption and event analysis, and possibility of use in investigations is suggested through behavior-based experiments.

최근 10년간 사이버범죄가 급증하고 있으며, 2024년 Telegram의 수사 협조 이후 Session 메신저를 악용하는 범죄자들이 늘어나고 있다. 종단간 암호화, 완전 익명 계정 등으로 수사에는 상당한 제약이 따르나, Session 메신저의 아티팩트를 분석한 선행 연구는 미비하다. 본 연구는 안드로이드 기반 Session 메신저를 대상으로 데이터베이스, 로그 파일, 임시파일을 분석하고 사용자 행위에 따른 주요 아티팩트를 식별하였다. 특히, Frida 도구를 활용한 동적 키 추출을 통해 실제 디바이스에서도 적용 가능한 데이터베이스 복호화 방법론을 제안한다. 로그 파일 복호화 및 이벤트 분석을 통해 정밀도를 높였으며, 행위 기반 실험으로 수사 현장에서의 활용 가능성을 제시한다.

Keywords

I. 서론

최근 인공지능, 클라우드, 모바일 등 첨단 기술의 발전으로 디지털 전환이 가속화됨에 따라 사이버범죄가 치안 문제의 핵심으로 부상하고 있다. 경찰대학 치안 정책연구소의 ‘치안 전망 2025’에 따르면, 사이버범죄의 발생은 2014년 기준으로 약 11만 건이며, 집계된 이후 지속적으로 증가하는 추세를 보인다. 지난 10년간 2배 이상 늘어나 2023년에는 약 24만 건으로 확인된다[1]. 이러한 사이버범죄의 중심에 놓여있는 것이 바로 익명성을 가진 보안 메신저이다.

보안 메신저 중 가장 많은 사용자층을 보유한 Telegram은 ‘N번방’, ‘딥페이크 성범죄’ 등 각종 사이버범죄에 악용되어 논란이 되고 있다. 그러나 2024년 8월 Telegram 대표 파벨 두로프가 마약 및 성 착취물 유포 방조 혐의로 체포됨에 따라, 범죄자들이 더 강력한 프라이버시 보호 기능을 제공하는 메신저로 이동하는 현상이 나타나고 있다[2]. 2024년 다크웹 내에서 Session 메신저의 고유 통신 링크 및 ID 게시 건수 통계를 보면, 사용량이 증가하는 추세인 것을 확인할 수 있다[3]. 2024년 1월에는 1,133회, 5월에는 최고치인 3,921회를 기록하였으며, 12월에는 2,810회 게시되었다.

Session 메신저는 구글 플레이 스토어 기준 100만 회 이상의 다운로드 수를 기록하고 있다. 주요 보안 메신저들이 갖는 특징인, 종단간 암호화1)(end-to-end encryption) 기술로 메시지가 송수신되는 전 과정에서 외부의 접근을 차단한다. 데이터베이스와 로그 파일, 임시파일까지 암호화하여 저장하기 때문에, 기존의 단순 파일 추출 방식만으로는 아티팩트 확보가 어렵다. 특히 Session 메신저는 기존 보안 메신저보다 더 강력한 보안을 제공한다. 첫 번째로, 계정 생성 시 전화번호 등 개인 식별 정보를 요구하지 않는다. 완전한 익명성을 제공하여 수사에 큰 제약이 존재한다. 두 번째로, 암호화된 메시지를 Oxen 블록체인 기반의 분산 네트워크를 통해 전달한다. 이는 어니언 라우팅 기법2)을 활용한 기술로 사용자 정보를 추적하는 것을 어렵게 만든다.

이러한 수사의 어려움에도 불구하고, 현재까지 진행된 Session 메신저에 대한 디지털 포렌식 연구는 매우 제한적이다. 일부 연구[4][5]에서 데이터베이스 및 임시파일을 복호화하는 방안이 제시된 바 있으나, Android Keystore의 TEE3)(Trusted Execution Environment)로 인해 이를 실제 디바이스에 적용하기는 어렵다. 또한 Telegram이나 WhatsApp등 다른 메신저에 대해 수행된 연구들처럼 아티팩트를 사용자 행위와 연계하여 분석한 사례는 없다. 특히 실제 사용자 행위로부터 도출할 수 있는 포렌식 아티팩트를 식별하려는 실험적 접근은 전무한 실정이다.

본 연구는 안드로이드 기반의 Session 메신저를 대상으로 데이터베이스와 로그 파일, 임시파일을 유기적으로 분석하여, 사용자 행위에 따른 아티팩트를 식별하는 것을 목적으로 한다. 이를 통해 Session 메신저 분석 시 유의미한 기초 자료를 제공한다. 또한 본 연구에서는 기존에 시도되지 않았던 로그 파일의 복호화와 실제 디바이스 환경에서 Frida 도구를 활용한 동적 복호화를 수행함으로써 암호화된 데이터에 대한 통합적인 분석 가능성을 제시한다. 제안한 분석 기법을 수사 현장에서의 활용 가능성을 검토하기 위해 실제 발생할 수 있는 범죄 행위들에 적용하였다. 이를 통해 익명 메신저임에도 불구하고 특정 상황에서 사용자를 식별하고 범죄 정황을 확인할 수 있음을 보여주었다.

본 논문의 구성은 다음과 같다. 2장에서는 관련 연구를 소개하고, 3장에서는 분석 환경 및 복호화 방법론을 제시한다. 4장에서는사용자 행위 기반으로 분석한 아티팩트를 정리한다. 5장에서는 주요 아티팩트를 정리하고 실제 수사에서의 활용 방안을 소개하며, 마지막으로 6장에서는 결론을 제시한다.

II. 관련 연구

메신저를 대상으로 한 디지털 포렌식 연구가 활발히 이루어지고 있다. Hwang et al. (2018)은 모바일 포렌식 기법을 활용하여 국내외에서 널리 사용되는 다양한 메신저 애플리케이션의 데이터 파일 구조를 분석하고, 사용자가 메시지를 삭제했을 때 복원 가능 여부를 실험적으로 비교 분석하였다[6]. Yoonet al. (2016)은 KakaoTalk의 데이터베이스에서 채팅 메시지의 테이블 구조를 분석하고, 일반 채팅방과 비밀 채팅방으로 구분하여 아티팩트를 정리하였으며, WhatsApp의 채팅 메시지에 대한 아티팩트와 비교 분석하였다[7].

특히, 보안 메신저를 중점적으로 분석한 연구로는 Raza et al. (2022)의 연구가 있다[8]. 이들은 안드로이드 가상 환경에서 Telegram 메신저의 여러 버전에서 생성되는 디지털 아티팩트를 실험적으로 추출하고 구조적 특성을 분석하였다. 또한, Cho et al.(2022)은 종단간 암호화 기술이 적용된 메신저인 Element를 대상으로 연구를 진행하였다[9]. Element 메신저의 데이터를 Windows 환경에서 실험적으로 복원해 핵심 아티팩트를 분류하였으며, 복호화 방안을 제안하였다. Son et al. (2022)은 Signal, Wickr, Threema의 암호화 구조를 정적·동적 분석 기법으로 해독해, 데이터베이스·미디어·로그 파일의 복호화 과정을 상세히 제시함으로써 실질적 포렌식 적용 가능성을 확인하였다[10]. Kwon et al. (2023)은 Signal과 Telegram을 대상으로 디지털 포렌식 분석을 진행하였다. 해당 연구는 두 메신저의 데이터베이스 구조 및 암호화 방식을 분석하고, 데이터베이스에서 추출할 수 있는 정보를 중점으로 유의미한 아티팩트를 분류하였다[11].

사용자 행위에 따른 아티팩트 변화를 분석하는 데 중점을 둔 연구로는 Chang et al. (2018)의 연구가 있다[12]. 이들은 안드로이드 기반 LINE 메신저의 데이터 구조 및 다양한 사용자 활동에서 생성되는 데이터 유형의 특성을 파악하였다. An et al. (2024)은 디지털 포렌식 관점에서 Naver Band 사용자의 행위 데이터를 효율적으로 수집·분석하는 방법을 제안하였다[13]. Naver Band 애플리케이션 내 다양한 사용 시나리오에서 발생하는 로그, 메시지 기록 등 핵심 데이터의 구조와 저장 위치를 실험적으로 분석함으로써 국내 SNS 플랫폼의 포렌식 분석에 실질적인 기여를 하였다.

수사 활용 가능성을 평가한 연구로는 Lee et al. (2022)이 있다. 이들은 국내 중고 거래 애플리케이션들을 대상으로 로컬 데이터의 생성 및 저장 방식을 분석하였다. 사용자 정보와 채팅 내역을 비롯한 주요 아티팩트를 정리하고 가상 시나리오를 제시함으로써, 범죄 수사에서 활용할 수 있는 디지털 증거 확보 가능성을 확인하였다[14].

Session 메신저에 대한 학술 연구는 아직 초기 단계에 있다. 제6회 국민암호페스티벌에서 Session 메신저의 데이터베이스 복호화와 임시파일 복호화 방안에 대한 포스터 연구를 발표한 바 있다[4][5]. 해당 연구에서는 데이터베이스와 임시파일에 대한 암호화 구조를 분석하고, 이를 바탕으로 복호화 과정을 설명하였다. 그러나 Session 메신저의 내부 아티팩트를 정밀하게 분석한 선행 연구는 확인되지 않았다.

III. Session 분석 방법론

3.1 분석 환경

본 연구에서 사용한 장치, OS, 분석 도구 등 분석 환경은 Table 1.과 같다. 실제 디바이스 버전을 고려하여, 2025년 4월 기준 점유율 2위(16.8%)[15]인 안드로이드 13을 분석 OS로 선정하였으며, Session v1.24.1을 선택했다. Session 메신저는 실험 진행 당시 기준으로 가장 최신 버전이다.

Table 1. Analytical Environment

JBBHCB_2025_v35n5_1209_3_t0001.png 이미지

3.2 분석 대상 아티팩트 및 접근 방식

본 연구에서는 /data/data 디렉터리 접근 권한을 얻기 위해 Magisk v25.2 도구를 이용한 디바이스 루팅을 선행하였다.

Session 메신저의 주요 아티팩트는 /data/data/network.loki.messenger 디렉터리 아래에 위치한다. 디렉터리들에서 유의미한 파일을 정리하면 Fig. 1.과 같다.

JBBHCB_2025_v35n5_1209_4_f0001.png 이미지

Fig. 1. Location of major artifacts

먼저 /databases 디렉터리 내부의 session.db 파일에는 송수신한 채팅 내역과 사용자를 특정하는 세션 id가 기록된다. /cache/log 디렉터리 내부의 로그 파일에는 특정 행위에 대한 이벤트 로그들이 기록된다. /app_parts 디렉터리 내부에는 송수신한 첨부파일에 대한 임시파일이 저장된다. /shared_prefs 디렉터리 내부에는 Session 메신저의 설정 정보를 저장하는 xml 형식의 network.loki.messenger_preferences.xml 파일이 Fig. 2.와 같이 존재한다. 여기에는 아티팩트 복호화에 사용되는 data와 iv 값이 저장된다. 각각 임시파일은 pref_attachment_encrypted_secret 항목에, 로그 파일은 pref_log_encrypted_secret 항목에, 데이터베이스는 pref_database_encrypted_secret 항목에 위치한다.

JBBHCB_2025_v35n5_1209_4_f0002.png 이미지

Fig. 2. network.loki.messenger_preferences.xml file

3.3 복호화 방법론

3.3.1 데이터베이스 및 임시파일 복호화

Session 메신저는 채팅 내역, 채팅방, 계정 정보 등을 session.db 파일에 저장한다. 해당 데이터베이스는 SQLCipher4) 기반의 커스텀 설정과 32바이트의 database_key를 통해 암호화되어 있다. 설정은 구체적으로 페이지 크기 4,096바이트, KDF(Key Derivation Function) 반복 횟수1회, KDF 및 HMAC 알고리즘으로 SHA-512가 사용된다.

database_key 획득을 위해서는 Fig. 3.과 같이 Android Keystore의 SignalSecret에서유도된 KEK(Key-Encryption Key)와 pref_database_encrypted_secret 항목에서 얻은 data, iv 값을 이용해 AES-256-GCM-NoPadding 복호화를 수행한다. 이러한 계층적 암호화 구조는 기존 연구에서도 확인된 바 있다[4].

JBBHCB_2025_v35n5_1209_4_f0003.png 이미지

Fig. 3. session.db database key generation

임시파일(part~.mms)은 이미지, 음성 메시지, 파일 전송 등 미디어 데이터를 처리하고전송하기 위한 중간 저장소로 활용된다. 해당 파일은 /app_parts 디렉터리에 AES-256-CTR 방식으로 암호화되어 저장된다. Fig. 4.와 같이 복호화는 Android Keystore의 SignalSecret에서 유도된 KEK와 pref_attachment_encrypted_secret 항목에서 얻은 data, iv 값을 이용해 AES-256-GCM-NoPadding 복호화를 수행하여 modernKey를획득하는 것에서 시작한다.

JBBHCB_2025_v35n5_1209_5_f0001.png 이미지

Fig. 4. mms file modernKey generation

이어서 Fig. 5.와 같이 session.db의 part 테이블에서 추출한 data_random 값과 modernKey를 HMAC-SHA256에 입력하여 복호화용 키를 생성한다. 이를 통해 임시파일에 대한 AES-256-CTR-NoPadding 복호화를 수행할 수 있다. 이러한 계층적 암호화 구조는 기존 연구에서도 확인된 바 있다[5].

JBBHCB_2025_v35n5_1209_5_f0002.png 이미지

Fig. 5. mms file decryption process

3.3.2 실제 디바이스 데이터베이스 복호화

그러나 애뮬레이터 상에서 확인된 데이터베이스 복호화 방법론은 실제 디바이스에 적용하기 어렵다. 이는 실제 디바이스가 KeyMint HAL5) v2와 TEE로 KEK를 강력하게 보호하기 때문이다[16]. KeyMint HAL v2는 안드로이드 13 이후 도입된 차세대 키 관리 하드웨어 인터페이스이다. 애플리케이션의 키 생성 및 사용을 보안 하드웨어와 연동해 민감한 키가 외부로 유출되지 않도록 설계된 것이다. 특히, 본 연구에 사용된 갤럭시 S20+디바이스는 TEE 기반 보안 하드웨어와 연동되어 일반 사용자 영역과 완전히 분리된 환경에서 키를 보호한다. 이러한 구조로 인해 기존 애뮬레이터 환경에서 적용한 복호화 방법론은 실제 디바이스에서 적용할 수 없다.

이에 본 연구는 동적 분석 도구인 Frida를 활용하여 런타임 중 메모리에 일시적으로 존재하는 복호화키를 후킹하는 방안을 채택했다. 주요 후킹 대상은 Java의 암호화 및 복호화 관련 표준 클래스인 “javax.crypto.Cipher”이다. 이는 JCE(Java Cryptography Extension)의 핵심 구성 요소로 다양한 암호화 알고리즘을 지원한다. 특히 해당 클래스의 doFinal(byte() input) 메서드는 암호화 및 복호화 연산의 최종 결과를 반환하므로, 주요 타겟으로 활용된다.

이를 통해 Fig. 6.의 복호화 키 후킹 Frida 스크립트를 설계했다. doFinal(byte[] input) 메서드를 후킹하여, 반환값의 길이가 AES-256 키 길이인 32바이트일 경우에만 필터링하여 출력한다. 복호화 연산이 수행되는 시점에 메모리에 일시적으로 존재하는database_key의 획득이 가능하며, 해당 database_key를 활용해 SQLCipher 기반의session.db를 성공적으로 복호화할 수 있다.

JBBHCB_2025_v35n5_1209_5_f0003.png 이미지

Fig. 6. Decryption key hooking script

3.3.3 로그 파일 복호화

로그 파일은 기존 연구에서 다루어지지 않은 영역으로, 본 연구에서는 Session 메신저의 오픈소스 코드[17]를 기반으로 해당 파일의 구조와 암호화 방식을 분석하고, 복호화 과정을 구현하였다.

Session 메신저의 로그 파일은 AES-256-CBC-PKCS5Padding으로 암호화된 바이너리 파일 형태이다. Fig. 7.과 같이 복호화는 Android Keystore의 SignalSecret에서 유도된 KEK와 pref_log_encrypted_secret 항목에서 추출한 data, iv 값을 기반으로 시작한다. data는 Hex 디코딩 후, 마지막 16바이트는 복호화를 위한 GCM Tag로, 나머지 바이트는 input으로 사용한다. 이를 통해 AES-256-GCM-NoPadding 복호화로 log_key를 획득한다. 이후 log_key와 log_IV를 이용해 AES-256-CBC-PKCS5Padding 방식으로 암호화된 로그 파일을 복호화한다.

JBBHCB_2025_v35n5_1209_6_f0001.png 이미지

Fig. 7. Log file decryption process

3.4 사용자 행위 정의 및 시나리오 설계

본 연구에서는 아티팩트를 체계적으로 분석하기 위해 사용자 행위를 선정하였다. 기존 연구[8][12][13]를 참고하여 Table 2.의 Benign User Activities와 Table 3.의 Artifact-Damaging Activities로 분류해 총 9가지의 사용자 행위 시나리오를 정의했다. 행위 기준을 통한 분석으로, 사용자 행위가 아티팩트에 미치는 영향을 정밀하게 파악하고자 한다.

Table 2. Benign User Activities

JBBHCB_2025_v35n5_1209_6_t0001.png 이미지

Table 3. Artifact-Damaging Activities

JBBHCB_2025_v35n5_1209_6_t0002.png 이미지

IV. 아티팩트 분석 결과

4.1 데이터베이스 분석 결과

Session 메신저의 session.db는 메시지 내용, 송수신 파일, 그룹 정보, 컨택트 등 주요 데이터를 저장한다. 핵심 테이블을 정리하면 Table 4.와 같다. Table 5.부터 Table 11.은 핵심 테이블 중에서도 사용자 행위와 관련한 주요 아티팩트를 정리한 것이다.

Table 4. session.db’s meaningful table

JBBHCB_2025_v35n5_1209_7_t0001.png 이미지

Table 5. ‘thread’ table’s meaningful column

JBBHCB_2025_v35n5_1209_7_t0002.png 이미지

4.1.1 Conversation Metadata table

‘thread’ 테이블은 Table 5.에서 확인할 수 있듯이 마지막 메시지, 메시지 수 등 채팅방 단위의 정보를 저장한다. ‘part’ 테이블은 Table 6.에서 확인할 수 있듯이 각 첨부파일의 정보를 기록한다. 첨부파일 크기, 이름 등을 알 수 있다.

Table 6. ‘part’ table’s meaningful column

JBBHCB_2025_v35n5_1209_7_t0003.png 이미지

4.1.2 Message Records table

‘sms’ 테이블은 Table 7.에서 확인할 수 있듯이 채팅 내역을 기록한다.

Table 7. ‘sms’ table’s meaningful column

JBBHCB_2025_v35n5_1209_7_t0004.png 이미지

‘sms’ 테이블 type 필드는 보안 메시지를 의미하는 정수 10485760에서 base type으로 어떤 값이 더해지냐에 따라 다른 의미를 나타낸다. 가령, 20은 일반 수신 메시지를 의미하는 base type으로 10485780(10485760+20)은 수신 보안 메시지를, 23은 전송 완료 메시지를 의미하는 base type으로 10485783(10485760+23)은 송신 보안 메시지를 의미한다.

‘mms’ 테이블은 Table 8.에서 확인할 수 있듯이 MMS 메시지 자체의 메타 데이터와 본문 정보를 저장한다. 두 테이블을 통해 송수신한 메시지의 유형, 시간, 사용자 정보, 메시지 내용 등을 상세히 확인할 수 있다.

Table 8. ‘mms’ table’s meaningful column

JBBHCB_2025_v35n5_1209_7_t0005.png 이미지

4.1.3 Supplementary Information table

‘session_contact_database’ 테이블은 Table 9.에, ‘recipient_preferences’ 테이블은 Table 10.에 정리하였으며, 사용자를 식별하는 세션 id, 참여 그룹 정보 등을 확인할 수 있다.

Table 9. ‘session_contact_database’ table’s meaningful column

JBBHCB_2025_v35n5_1209_8_t0002.png 이미지

Table 10. ‘recipient_preferences’ table’s meaningful column

JBBHCB_2025_v35n5_1209_8_t0003.png 이미지

‘session_job_database’ 테이블은 Table 11.에서 확인할 수 있듯이 그룹 관련 작업 로그를 확인할 수 있다.

Table 11. ‘session_job_database’ table’s meaningful column

JBBHCB_2025_v35n5_1209_8_t0004.png 이미지

4.2 로그 파일 분석 결과

Session 메신저의 오픈소스 코드[17]를 기반으로 정적 분석을 수행하였다. Fig. 8.의 “Persistent Logger” 클래스를 확인한 결과, 로그 파일은 최대 307.2KB, 10000줄까지 저장되며, 총 5개의 로그 파일이 순환 저장된다. 이는 저장 기간과는 무관하게 용량을 기준으로 관리되는 구조임을 나타낸다.

JBBHCB_2025_v35n5_1209_8_f0001.png 이미지

Fig. 8. “PersistentLogger” class

로그는 Fig. 9.와 같이 일정한 형식을 따르며, 사용자 행위 및 내부 동작을 시간순으로기록한다.

JBBHCB_2025_v35n5_1209_8_f0002.png 이미지

Fig. 9. log format

Fig. 10.을 보면, 로그 파일의 이름은 ‘log-’+system.currentTimeMillis()의 타임스탬프로 결정된다.

JBBHCB_2025_v35n5_1209_9_f0001.png 이미지

Fig. 10. “PersistentLogger” class of file name

이를 실험적으로 확인하기 위해, 메시지를 자동 입력하여 로그를 빠르게 쌓고 로그 변화 감시 스크립트를 통해 Fig. 11.처럼 분석하였다. 분석 결과, 로그 파일명이 파일 생성 시점에 처음 기록되는 로그의 Unix epoch 기준 타임스탬프와 동일하며, 로그 순환 방식도 Fig. 8.과 일치함을 확인했다.

JBBHCB_2025_v35n5_1209_9_f0002.png 이미지

Fig. 11. Analysis of log file storage method

4.3 Benign User Activities 분석 결과

4.3.1 Basic App Usage

설치 후 최초 실행하면, Table 12.와 같은 메신저 환경설정 초기화, 네트워크 연결, 보안 키 생성, 데이터베이스 상태 점검 등 애플리케이션이 정상적으로 구동되기 위한 과정과 관련한 로그가 기록된다.

Table 12. Logs of Basic App Usage

JBBHCB_2025_v35n5_1209_9_t0001.png 이미지

첫 로그인 후에는 사용자 정보, 프로필 정보 처리와 관련된 로그가 기록된다. Table 12.를 통해 로그인 완료 후의 화면으로 진입했음을 알 수 있다.

4.3.2 Message exchange

메시지를 송수신하면 Fig. 12.와 같이 ‘sms’ 테이블에서 수신자의 세션 id, 송수신 시각, 메시지 평문을 확인할 수 있다. 이때 기록되는 송수신 시각을 실제 대화와 비교하면, Fig. 13.과 동일하게 타임스탬프가 일치한다.

JBBHCB_2025_v35n5_1209_9_f0003.png 이미지

Fig. 12. ‘sms’ table of message exchange

JBBHCB_2025_v35n5_1209_9_f0004.png 이미지

Fig. 13. comparison of ‘sms’ table and app timestamp

추가로 메시지를 송신하면 Table 13.에서 확인할 수 있듯이 단계별로 로그 흐름을 파악할 수 있다. 메시지 제출 후, 데이터베이스가 업데이트되고, 전송 작업이 시작되며 최종적으로 메시지 전송이 완료된다. “Updating ID: 1 to base type” 로그를 보면, ‘sms’ 테이블의 _id 값이 1인 레코드의 type 필드가 10485783으로 변경된 사실을 확인할 수 있다. 이는 메시지 송신 동작이 데이터베이스에 반영된 시점을 나타내는 것으로 해석된다.

Table 13. Logs of Message Exchange

JBBHCB_2025_v35n5_1209_9_t0002.png 이미지

첨부파일 송수신은 Fig. 14.에서 확인할 수 있듯이 ‘mms’ 테이블에서 수신자의 세션 id, 송수신 시각 등을 관리한다. 송수신된 첨부파일에 대한 임시파일은 Fig. 15.와 같이 ‘part’ 테이블에서 관리한다. 임시파일 저장 경로와 파일 저장 이름, 파일 크기, unique_id 등이 기록된다. 이곳의 data_random 값을 이용하여 임시파일 복호화가 가능하다.

JBBHCB_2025_v35n5_1209_10_f0001.png 이미지

Fig. 14. ‘mms’ table of attachment message

JBBHCB_2025_v35n5_1209_10_f0002.png 이미지

Fig. 15. ‘part’ table of attachment message

‘mms’ 테이블에 기록되는 시각을 실제 대화와 비교하면, Fig. 16.처럼 타임스탬프가 일치한다.

JBBHCB_2025_v35n5_1209_10_f0003.png 이미지

Fig. 16. comparison of ‘mms’ table and app timestamp

Table 14.의 “AttachmentDatabase” 로그는 임시파일 생성 작업을 나타내며, 생성 시각, 생성 경로, 파일 이름을 알 수 있다. unique ID를 session.db의 ‘part’ 테이블에 기록되는 unique_id와 연계하면 관련 메타데이터를 확인할 수 있다.

Table 14. Logs of Attachment Message Exchange

JBBHCB_2025_v35n5_1209_10_t0001.png 이미지

4.3.3 Call

session.db는 통화 이벤트를 ‘sms’ 테이블에서 메시지와 함께 관리한다. Fig. 17.을 보면, body 필드가 NULL로 표기된 레코드 중 메시지 유형이 1인 메시지는 수신 통화, 2인 메시지는 발신 통화를 의미한다.

JBBHCB_2025_v35n5_1209_10_f0004.png 이미지

Fig. 17. ‘sms’ table of call

Table 15.의 “Loki-Call” 로그를 통해 통화 행위를 확인할 수 있다. 통화의 발신과 수신, 통화 수락 및 거절, 부재중, 연결 시작과 종료 등 행위의 흐름을 알 수 있다. 전체 통화 시간은 통화 연결 시작 시각과 종료 시각을 통해 유추할 수 있다.

Table 15. Logs of Call

JBBHCB_2025_v35n5_1209_10_t0002.png 이미지

4.3.4 Group Chat Entry

새로운 그룹 채팅방에 입장하면 session.db의 ‘session_contact_database’ 테이블에 Fig. 18.과 같이 그룹 id와 그룹 이름이 기록된다.

JBBHCB_2025_v35n5_1209_11_f0001.png 이미지

Fig. 18. ‘session_contact_database’ table

행위자가 그룹을 직접 생성한 경우, ‘mms’ 테이블의 body 필드에 Fig. 19.처럼 JSON 형식의 그룹 메타데이터가 생성된다. 이를 통해 생성한 그룹 이름과 그룹 구성원의 세션 id를 확인할 수 있다.

JBBHCB_2025_v35n5_1209_11_f0002.png 이미지

Fig. 19. group metadata in ‘mms’ table

또한 ‘session_job_database’ 테이블에도 Fig. 20. 과 같이 기록된다. job_type이 “InviteContactsJob”인 작업의 serialized_data 필드에 생성한 그룹의 JSON 형식의 그룹 메타데이터가 저장된다. 그룹 id와 초대된 그룹 구성원의 세션 id가 기록된다.

JBBHCB_2025_v35n5_1209_11_f0003.png 이미지

Fig. 20. ‘serialized_data’ in ‘session_job_database’ table

“InviteContactsJob” 작업은 Table 16.의 로그에서도 확인 가능하다. 행위 발생 시각이 id가 되어 타임스탬프로 표시되며, 이때의 id는 ‘session_job_database’ 테이블의 job_id 필드와 값이 일치한다.

Table 16. Logs of Group Chat Entry

JBBHCB_2025_v35n5_1209_11_t0001.png 이미지

반면 행위자가 새로운 그룹에 초대된 경우에는, ‘sms’ 테이블의 body 필드에 Fig. 21.과 같이 JSON 형식의 그룹 메타데이터가 생성된다. 이를 통해 그룹 id와 그룹 이름, 그룹 구성원의 세션 id를 파악할 수 있다. 로그에서는 Table 16.에서 확인할 수 있듯 “GroupScope” 로그 중 “Handle inviteresponse” 작업이 반복해서 나타나는 시점으로 초대 시각을 유추할 수 있다.

JBBHCB_2025_v35n5_1209_11_f0004.png 이미지

Fig. 21. group metadata in the ‘sms’ table

4.4 Artifact-Damaging Activities 분석 결과

4.4.1 Message Deletion

Session 메신저는 개별 메시지 삭제에 3가지 선택지가 존재한다.

첫 번째로, ‘Delete on this device only’를 선택한 경우, session.db의 메시지를 관리하는 ‘sms’ 테이블에서 Fig. 22.와 같이 body 필드가 “This message was deleted on this device”의 고정 텍스트로 수정된다.

JBBHCB_2025_v35n5_1209_12_f0001.png 이미지

Fig. 22. ‘sms’ table of delete message

두 번째로, ‘Delete for everyone’의 경우에는 Fig. 22.를 보면 “This message was deleted”로 수정된다. 수정된 메시지는 데이터베이스와 화면상에서 동일하게 확인된다. 특이하게도 두 경우 모두, 메시지 삭제 후 표시되는 고정 텍스트를 한 번 더 삭제할 수 있다. 이 경우는 ‘Delete on this device only’만 선택할 수 있으며, 해당 메시지의 레코드는 데이터베이스에서 완전히 사라진다.

또한 ‘sms’ 테이블의 type 필드에도 Fig. 22.와 같이 변화가 생긴다. 이 변화는 로그와 함께 해석할 수 있다. 송신 메시지를 삭제하면, Table 17.의 로그에서 “base type: 28”이 기록된다. 이는 ‘sms’ 테이블 type 필드에서 기존의 10485783(송신 보안 메시지)이 10485788(10485760+28)(송신 보안 메시지 삭제)로 업데이트됨을 의미한다. 마찬가지로 수신 메시지를 삭제하면, 로그가 “base type:19”로 기록되고, type 필드가 10485780(수신 보안 메시지)에서 10485779(수신 보안 메시지 삭제)로 변화한다.

Table 17. Logs of Message Deletion

JBBHCB_2025_v35n5_1209_12_t0001.png 이미지

세 번째로, ‘Disappearing messages’가 설정된 채팅방의 경우에는, 12시간 / 1일 / 1주 / 2주 기간으로 타이머 설정이 가능하며, 일정 시간 경과 후 메시지가 삭제된다. Fig. 23.을 보면, 타이머 설정 후엔 ‘mms’ 테이블에 그룹 설정 업데이트와 관련된 메타데이터가 JSON 형식으로 기록된다. 이 기능에 의해 삭제된 메시지는 앞선 두 가지 경우와 다르게, 해당 채팅방에서 송수신된 메시지의 레코드가 데이터베이스에서 사라진다. 삭제되기 전 ‘sms’ 테이블의 expires_in 필드에는 설정한 기간이 기록되고, expires_started 필드에는 date_sent 필드와 같은 값이 기록되며, 이는 타이머 시작 시각을 의미한다. 설정된 기간이 지나 메시지가 자동으로 삭제되면, ‘sms’ 테이블 상에서 연속성이 끊긴 _id를 통해 삭제 여부를 간접 확인할 수 있다.

JBBHCB_2025_v35n5_1209_12_f0002.png 이미지

Fig. 23. ‘mms’ & ‘sms’ table of expirationmessage

4.4.2 Chat Room Deletion

상대방과 대화를 나눈 1:1 채팅방을 삭제하는 경우, session.db의 ‘thread’ 테이블에서해당 채팅방의 정보를 담고 있는 관련 레코드가 사라진다. 그러나 삭제한 이후에도 ‘recipient_preferences’ 테이블 내의 채팅방 고유 recipient_ids는 Fig. 24.와 동일하게 그대로 남아 있어, 행위자가 채팅방에 함께 참가했었음을 증명할 수 있다.

JBBHCB_2025_v35n5_1209_12_f0003.png 이미지

Fig. 24. ‘recipient_preferences’ table of room deletion

그룹 채팅방은 그룹 관리자의 그룹 탈퇴 행위로 채팅방 삭제가 이루어진다. 이 경우, Table 18.의 “Group is destroyed: true” 로그를 통해 채팅방 삭제 여부를 확인할 수 있다.

Table 18. Logs of Chat Room Deletion

JBBHCB_2025_v35n5_1209_13_t0001.png 이미지

4.4.3 Group Chat Exit

그룹 채팅방을 탈퇴하면, session.db의 ‘session_contact_database’ 테이블에서 Fig. 25.와 같이 해당 채팅방의 thread_id 필드가 NULL 처리된다. ‘thread’ 테이블에서는 Fig. 26.과 같이 탈퇴 전에는 해당 그룹 id를 포함한 레코드가 존재하지만, 탈퇴 직후에는 해당 레코드가 완전히 삭제된다.

JBBHCB_2025_v35n5_1209_13_f0001.png 이미지

Fig. 25. ‘session_contact_database’ table of group chat exit

JBBHCB_2025_v35n5_1209_13_f0002.png 이미지

Fig. 26. ‘thread’ table of group chat exit

그룹 탈퇴 절차를 로그를 통해 확인할 수 있다. “GroupScope” 로그에서 “Leave group” 작업이 큐에 추가되고, “GroupPollerHandler”가 해당 그룹의 메시지 폴링을 중단하는 것이 기록된다. 이후 “Leave group” 작업이 Table 19.와 같이 정상적으로 완료된다.

Table 19. Logs of Group Chat Exit

JBBHCB_2025_v35n5_1209_13_t0002.png 이미지

4.4.4 Clear Data

Session 메신저의 Clear Data 기능은 Fig. 27과 같이 2가지 옵션이 존재한다. ‘Clear deviceonly’ 옵션은 해당 디바이스에서 로그아웃하는 행위이고, ‘Clear device and network’ 옵션은 해당 디바이스와 계정 데이터를 전부 초기화하는 행위이다.

JBBHCB_2025_v35n5_1209_13_f0003.png 이미지

Fig. 27. 2 options of clear data

Clear Data의 옵션에 따른 차이는 Table 20.과 같다. ‘Clear device only’ 옵션은 디바이스 내 데이터만 삭제하여, Network Data6)는 그대로이다. 복구 암호가 있으면, 재로그인 시 채팅 내역 복구가 가능하다. ‘Clear device and network’ 옵션은 디바이스와 네트워크의 모든 데이터를 삭제한다. 복구가 불가능하고, 다른 디바이스에서도 메시지가 삭제된다.

Table 20. differences between 2 options

JBBHCB_2025_v35n5_1209_13_t0003.png 이미지

행위자가 Clear Data를 선택한 경우, 옵션과 관계 없이 데이터베이스는 삭제 후 같은 위치에 재생성되며, 로그 파일은 기록이 중단된다. 또한 암호화키가 갱신된다. 다만 데이터베이스는 특정 경우에 한해 내용만 초기화되기도 한다. 시스템 로그에서 Clear Data 과정을 확인해 보면, Table 21.과 같다. 애플리케이션 프로세스 재시작, 데이터베이스 초기화, Loki 네트워크 재설정 순으로 이루어진다.

Table 21. Logs of Clear Data

JBBHCB_2025_v35n5_1209_14_t0001.png 이미지

Table 22.는 After Clear 항목에서 Clear Data 전후의 MD5, inode 값의 변화를, Clear And Login 항목에서는 Clear Data 후 재접속했을 때의 MD5, inode 값의 변화를 나타냈다. 이를 통해, MD5와 inode 값이 동시에 변하면 파일이 삭제된 후 다시 생성됨을, MD5만 변하면 내부 내용만 바뀌었음을, 변화가 없으면 파일과 내용 모두 그대로임을 파악할 수 있다.

Table 22. MD5 & inode change of clear data

JBBHCB_2025_v35n5_1209_14_t0002.png 이미지

After Clear 항목을 보면, Clear Data 이후 .db 파일은 삭제 후 다시 생성되며, .db-wal 또는 .db-shm 파일은 내부 내용이 수정된다. 로그 파일은 MD5 값은 변화하지만 inode 값이 유지된다. 이는 Clear Data 이후 복호화 키 값이 변경되어 기존 로그 파일을 새로운 키로 복호화하여 접근해야 하기 때문이다. 즉, 로그 파일의 내부 내용은 그대로 유지되고 암호화 키만 변경된 상태로 파악된다. Clear and Login 항목을 보면, 로그인 후의 .db-wal 파일, .db-shm 파일, 로그 파일은 내부 내용에 변화가 생긴다.

Clear Data 이후의 또 다른 변화로는, network.loki.messenger_preferences.xml 파일의 내용이 변경된다. 즉 암호화 키가 갱신된다. 이에 따라 행위자가 재접속하는 시점 이후에 생성된 데이터베이스 및 로그 파일은 변경된 키를 기반으로 암호화되며, 복호화시에도 해당 변경된 키가 사용된다.

상대방이 Clear Data를 선택한 경우에는, 옵션에 상관없이 행위자의 데이터베이스는그대로 유지되며 Session 메신저 로그 파일 및 시스템 로그 어디에도 상대방의 변화는 기록되지 않는다.

4.4.5 Application Uninstallation

Session 메신저를 삭제한 경우, /data/data 디렉터리 하위에 생성된 /network.loki.messenger 디렉터리가 제거되면서 연관된 모든 파일이 삭제된다.

따라서 /system, /user/0 등 디렉터리에서 키워드 검색을 실시하여 애플리케이션 설치기록의 존재 여부를 확인하였으나 발견되지 않았다. 다만 logcat -d 명령어를 통해 확보한 로그 버퍼에서 Table 23.의 “android.intent.action.PACKAGE_FULLY_REMOVED” 로그와 함께, 애플리케이션 삭제와 관련된 일련의 시스템 로그들이 확인되었다. 즉 압수 직후 해당 로그들이 확인된다면, 사용자가 애플리케이션을 직접 삭제했을 가능성을 강하게 시사하는 증거로 활용될 수 있다.

Table 23. Logs of Application Uninstallation

JBBHCB_2025_v35n5_1209_14_t0003.png 이미지

V. 수사 활용 방안

5.1 주요 아티팩트 정리

4장에서 Session 메신저에서 확인할 수 있는 사용자 행위에 따른 아티팩트 분석을 진행했다. 주요 정보로는 사용자 닉네임, 세션 id, 송수신된 텍스트 메시지 등이 포함되며, 이외에도 첨부파일 내역, 채팅방 참여 기록, 메시지의 송신 및 수신 시각, 임시 저장된 복호화 가능한 첨부파일 등이 존재한다. 이와같은 분석 결과는 Table 24.에 정리하였다. 사용자 활동 유형별로 관련 아티팩트의 확인 가능 위치를 나타내었다.

Table 24. Mapping of Session Messenger Activities to Forensic Artifact Locations

JBBHCB_2025_v35n5_1209_15_t0001.png 이미지

특히 Session 메신저가 익명성을 특징으로 함에도, 세션 id를 통한 사용자 및 채팅방 식별이 가능하다. 데이터베이스 내의 ‘sms’와 ‘mms’테이블은 송수신 메시지와 첨부파일의 상세한 내용을, ‘mms’, ‘sms’, ‘session_job_database’ 테이블은 채팅방 참여 이력 및 구성원 변경 사항을 기록한다. 또한 애플리케이션 자체 로그 파일에서는 사용자 행위를 시점 정보와 함께 기록한다. 해당 로그를 기반으로 범죄 관련 행위의 정황을 구체적으로 재구성할 수 있다.

5.2 채팅방 참여를 부인하는 경우

마약 거래 채팅방의 운영자 A를 현행범으로 체포한 상황을 예시로 들어 설명하겠다. A로부터 압수된 스마트폰을 분석한 결과, 거래 관련 채팅 내역, 송금 기록 등을 통해 A에게 공범 B, C가 존재한다는 사실을 확인했다. 이를 바탕으로, B, C를 추가 체포하였다. 하지만 두 사람 모두 이미 채팅방을 탈퇴한 상태였으며, 거래 내역을 모두 삭제한 뒤, 범죄 혐의를 전면 부인하였다.

이때 수사기관은 A 스마트폰의 session.db에 남아 있는 ‘mms’와 ‘sms’ 테이블에서 B와 C의 세션 id, 참여 시각, 메시지 송수신 이력 등 실제 참여 흔적을 확보할 수 있다. 이를 B와 C의 세션 id와 대조함으로써, 익명 메신저임에도 불구하고, 실제 채팅방 참여자들을 특정할 수 있다. 또한, B와 C 스마트폰의 로그 파일에서 “Leave group” 작업을 기록하는 “GroupScope” 로그를 발견한다면, 그룹 탈퇴 정황을 더 명확히 입증할 수 있다.

5.3 첨부파일 공유 후 디바이스에서 삭제한 경우

불법 음란물 유포 채팅방의 운영자 A를 현행범으로 체포한 상황을 예시로 들어 설명하겠다. A로부터 압수된 스마트폰을 분석하면, ‘sms’ 테이블 body 필드의 “This message was deleted on this device” 고정 텍스트를 통해 메시지를 삭제한 정황을 확인할 수 있다. 다만 디바이스 내 첨부파일 원본은 삭제되어 직접적인 증거 확보에 제약이 따를 수 있다.

이때 수사기관은 session.db의 ‘mms’ 테이블에 저장된 그룹 메타데이터를 분석하여, 채팅방 참여자 목록을 확인할 수 있다. 이를 통해 참여자 B를 특정하고, B의 스마트폰을 추가로 포렌식 분석할 수 있다.

B의 로그 파일과 그룹 관련 JSON 형식 데이터를 확인하면, 그룹 관리자가 A인 채팅방 정보를 찾아낼 수 있다. 이때 확보한 그룹 id를 바탕으로 session.db의 ‘mms’ 테이블, ‘part’ 테이블을 연계 분석하면, 실제로 공유된 첨부파일의 임시파일 저장 경로와 파일명을 특정할 수 있다. 다음의 로그를 통해서 첨부파일 저장 경로와 타임스탬프에 대한 2차적인 검증 또한 가능하다. 이처럼 여러 참여자 디바이스의 데이터베이스와 로그를 종합적으로 활용하면, 첨부파일 삭제 등 증거 인멸 시도에도 불구하고 디지털 증거를 확보할 수 있다.

VI. 결론

프라이버시 보호에 대한 사회적 관심이 높아짐에 따라, 종단간 암호화를 적용한 보안 메신저들이 지속해서 등장하고 있다. 그러나 이러한 익명성과 강력한 암호화 기술은 사용자 정보를 보호하는 동시에, 수사기관의 디지털 증거 확보를 어렵게 만든다는 이중적 측면이 존재한다. 이에 따라 보안 메신저를 대상으로 한 모바일 포렌식 분석 연구의 필요성이 더욱 강조되고 있다.

본 논문에서는 대표적인 보안 메신저 애플리케이션인 Session 메신저를 안드로이드 환경에서 사용자 행위 9가지를 정의해 분석하였다. 행위 발생 전후의 데이터베이스, 로그 파일, 임시파일에서 생성되는 디지털 흔적을 비교함으로써 주요 아티팩트를 정리하였다. 또한, 암호화된 로그 파일을 복호화하는 방법과 실제 디바이스 환경에서 Frida 도구를 활용한 동적 키 추출 방법을 제시해 수사에 활용할 수 있는 평문 데이터를 추출하였다. 이러한 아티팩트들을 실제 발생할 수 있는 범죄 행위들에 적용함으로써 채팅방 참여자 식별이나 송수신 메시지 파악과 같은 수사적 관점에서 의미 있는 결과를 제시하였다. 본 연구에서 제시한 복호화 방법론과 사용자 행위에 따른 주요 아티팩트 등은 향후 Session 메신저 및 모바일 포렌식 분석 분야에서 유용하게 활용될 것으로 기대된다.

References

  1. Institute of Police Policy Research, "Crime and safety outlook 2025," Korean National Police University Institute of Police Policy Research, Asan, Chungcheongnam-do, pp. 112–113, 2024.
  2. "Withdrawal from Telegram... Move to deepfake crime, signal, etc. 'Balloon effect'," Dong-A Ilbo, Mar. 3, 2025, p. A10.
  3. FLARE, "The Underground's Favorite Messenger: Telegram's Reign Continues," https://flare.io/learn/resources/blog/the-undergrounds-favorite-messenger-telegrams-reign-continues/, Feb. 2025.
  4. Ji-soo Park, "A Study on the Database Decryption Method for Secure Instant Messenger Session", 6th Kookmin Cryptography Festival, Jan. 2025.
  5. Jin-cheol Park, Sae-jun Park, and Kang-han Kim, "Decryption Method for Temporary Files of the Secure Instant Messenger Session," 6th Kookmin Cryptography Festival, Jan. 2025.
  6. Tae-jin Hwang, Dong-hoWon, and Young-sook Lee, "A study on the Comparison Analysis for Messenger Evidence Using Mobile Forensics," Convergence Security Journal, 18(2), pp.25-32, June. 2018.
  7. Jong-cheol Yoon and Yong-suk Park, "Forensic Analysis of chatting messenger service in KakaoTalk and Comparison Study of KakaoTalk and Whats App Artifacts," Journal of the Korea Institute Of Information and Communication Engineering, 20(4), pp. 777-785, Apr. 2016. https://doi.org/10.6109/jkiice.2016.20.4.777
  8. A. Raza and M.B. Hassan, "Digital Forensic Analysis of Telegram Messenger App in Android Virtual Environment," Mobile and Forensics, vol. 4, no. 1, pp. 31-43, Feb. 2022. https://doi.org/10.12928/mf.v4i1.5537
  9. Jae-min Cho, Hyeon-su Byun, and Huiseo Yun, "Forensic Analysis of Element Instant Messenger Artifacts," Journal of the Korea Institute of Information Security & Cryptology, 32(6), pp. 1113–1120, Dec. 2022.
  10. Ji-hun Son, Yeong-woong Kim, and Dong-bin Oh, and Kyoung-gon Kim, "Forensic analysis of instant messengers: Decrypt Signal, Wickr, and Threema," Forensic Science International: Digital Investigation, vol. 40, pp. 301347, Jan. 2022.
  11. Jae-min Kwon, Won-hyung Park, and Youn-sung Choi, "Signal and Telegram Security Messenger Digital Forensic Analysis study in Android Environment," Journal of convergence security, 23(3), pp. 13-20, Sep. 2023. https://doi.org/10.33778/kcsa.2023.23.3.013
  12. M.S. Chang and C.Y. Chang, "Forensic Analysis of LINE Messenger on Android," Journal of Computers, vol. 29, no. 1, pp. 11-20, Feb. 2018.
  13. Won-seok An andMyung-seo Park, "A Study on the Collection and Analysis of Naver Band User Behavior from a Digital Forensics Perspective," Journal of the Korea Institute of Information Security & Cryptology, 34(6), pp. 1263–1272, Dec. 2024.
  14. Seong-hyeon Lee, Min-ho Cho, and Taeshik Son, "Collecting and analyzing artifacts in used trading applications," Journal of Digital Forensics, 16(1), pp. 37-53, Mar. 2022. https://doi.org/10.22798/KDFS.2022.16.1.37
  15. Composable Horizons LLC, "Android Distribution Chart," https://composables.com/android-distribution-chart, Apr. 2025.
  16. Android Open Source Project, "Features – Android Keystore system cryptographic features," https://source.android.com/docs/security/features/keystore?hl=ko, July. 2025.
  17. Session Technology Foundation, "session‑android: A Decentralized, Onion Routed, Private Messenger," https://github.com/session-foundation/session-android, July. 2025