I. 서론
1.1 배경
스마트폰이 대중화되며 사람들은 스마트폰의 메신저 애플리케이션을 통해 서로 대화를 주고받거나 미디어를 공유하며 소통한다. 이와 동시에 사생활 보호 및 정보보호를 중요시하는 메신저 사용자를 중심으로 보안 기능이 강화된 메신저 애플리케이션에 대한 선호도가 증가하고 있다. 하지만 일부 악성 이용자들은 메신저 애플리케이션의 강력한 보안성을 악용하여 이를 각종 범죄 행위를 수행하기 위한 범죄 도구로 활용하고 있다. 대표적인 보안 메신저 활용 범죄인 N번방 사건[1]을 포함하여 마약 유통 범죄[2], 딥페이크 성범죄[3]와 같은 범죄들이 계속해서 발생하고 있다. 추가로 범죄 수사에 비협조적이었던 보안 메신저 텔레그램의 창업자가 체포된 이후 범죄 수사에 협조하는 방향으로 돌아선 이후 더욱 강력한 보안 기능을 제공하는 애플리케이션을 찾는 사람들이 늘고 있다[4]. 보안 메신저는 메시지를 전송할 때 암호화를 수행하여 오직 상대방만 평문을 확인할 수 있도록 메시지를 보호하는 종단간 암호화를 사용하거나 메시지 삭제, 메시지 수정과 같이 앱에서 정보보호 기능을 제공하거나, 사용자의 정보를 받지 않아 완전히 익명으로 사용할 수 있는 등 앱 사용자의 정보를 강력하게 보호한다. 이는 포렌식 분석 상황에서 사용자의 원본 메시지를 확인하는 데 방해요인으로 작용하는 만큼 보안 메신저 앱의 데이터를 복호화하고 원본 메시지를 획득 및 복원하는 연구가 필요하다. 또한, 새로운 앱들이 생겨나거나, 앱 업데이트로 인해 알고리즘이 변경되어, 선행 연구 결과를 적용할 수 없는 문제가 발생할 수 있으므로, 지속적인 보안 메신저 앱에 대한 분석이 이루어져야 한다.
본 연구는 국내 보안 메신저인 BlockChat 앱과 국외 보안 메신저인 Threema 앱을 대상으로 분석을 수행하였다. BlockChat 앱은 사용자의 기기에서 생성되는 블록체인 ID를 이용하여 별도 회원가입이 필요 없고, 사용에 있어 사용자의 개인정보가 전혀 필요가 없으며, 블록체인 기반으로 작동하는 만큼 별도 서버에 사용자가 주고받은 메시지를 저장하지 않는다는 특징이 있어 보안성이 높다. 추가로 자신 또는 상대방이 전송한 메시지 삭제, 수정과 같은 안티 포렌식 기능도 탑재되어 있어, 악성 이용자들이 앞선 기능을 활용하여 수사에 혼란을 줄 수 있다. 앞선 앱의 특성상 범죄 수사에 있어 사용자의 로컬 데이터가 매우 중요하기 때문에, BlockChat 앱의 로컬 아티팩트 분석 및 안티 포렌식 대응 방법을 확인하는 연구는 필수적이다.
Threema 앱은 스위스 기업에서 개발한 유료 보안 메신저이다. 별도 개인정보 없이 앱을 사용할 수있고, 메시지는 종단간 암호화를 통해 보호된다는 특징이 있어 보안성이 높다. 해당 앱은 선행 연구를 통해 분석된 바 있지만, 2025년 10월 18일에 배포된 6.2.0 업데이트 적용 버전 기준 데이터 복호화에 필요한 마스터키를 저장하는 파일의 구조와 마스터키를 보호하는 알고리즘이 변경되어 선행 연구의 분석 방법을 활용할 수 없다는 문제가 존재한다.
1.2 선행 연구
안드로이드 환경에서 보안 메신저를 대상으로 분석을 수행한 선행 연구는 여럿 존재한다. 권재민 외 2인은 안드로이드 버전 5.1.1 환경에서 보안 메신저 Signal, Telegram 앱을 대상으로 포렌식 분석을 수행하였다[5]. 해당 연구에서는 Signal 앱의 암호화된 데이터베이스를 복호화하였고, Signal 앱과 Telegram 앱의 사용자 정보가 저장된 데이터베이스의 구조를 제시하였다. Jihun Son 외 3인은 안드로이드 환경에서 보안 메신저 Signal, Wickr, Threema 앱을 대상으로 역공학 분석을 수행하였다[6]. 해당 연구에서는 Signal, Wickr, Threema 앱의 암호화 된 데이터베이스와 앱에서 전송된 암호화된 멀티미디어를 복호화하는 방법을 제시하였다. 김혜지 외 9인은 안드로이드 환경에서 보안 메신저 Session 앱을 대상으로 아티팩트 분석을 수행하였다[7]. 해당 연구에서는 Session 앱의 암호화된 데이터베이스와 암호화된 로그를 복호화하고, 주요 아티팩트를 정리하였다. Ehigiator 외 3인은 안드로이드 환경에서 보안 메신저 WhatsApp 앱을 대상으로 포렌식 분석을 수행하였다[8]. 해당 연구에서는 WhatsApp 앱의 암호화된 사용자 데이터베이스를 공개된 복호화 도구를 통해 복호화하고 데이터베이스 내부 구조를 분석하였다. Prabowo 외 2인은 보안 메신저 WhatsApp 앱의 암호화된 백업 파일을 대상으로 분석을 수행하였다[9]. 해당 연구에서는 앞선 선행 연구 [8]과 달리 암호화된 백업 파일을 중점으로 연구를 수행하였으며, 루팅 및 비루팅 환경에서 획득한 백업 파일을 비교 분석하고, 포렌식 도구를 통해 키를 획득하여 백업 파일을 복호화하여 내부 구조를 분석하였다. Howard 외 2인은 보안메신저 WhatsApp, Telegram 앱과 인스턴트 메신저 Snapchat 앱의 사라지는 메시지 기능을 대상으로 안드로이드 및 iOS 환경에서 분석을 수행하였다[10]. 해당 연구에서는 전송 후 일정 시간 후 채팅이 사라지는 기능을 대상으로 총 7가지의 테스트 환경을 구성하여 OS 환경 및 애플리케이션 간 차이를 비교 분석하였고, 상용 포렌식 도구를 이용하여 사라지는 메시지의 복원 가능성을 확인하였다.
선행 연구에서 분석된 안드로이드 환경의 보안 메신저들은 공통적으로 종단간 암호화를 지원하여 송·수신자 외에는 메시지의 평문을 확인할 수 없으며, 사용자의 채팅 정보가 저장된 데이터베이스를 암호화하여 관리하고, 전송한 메시지를 삭제하는 기능을 제공하는 특징을 갖는다. 본 연구에서 분석한 애플리케이션들 역시 이러한 보안 메신저의 일반적인 특성을 유지하고 있으며, 추가적으로 이미 전송된 채팅 내용을 사용자가 임의로 수정할 수 있는 기능을 제공한다는 점에서 기존 연구 대상과 차별성을 보인다. 특히, 본 연구의 주요 분석 대상인 BlockChat 애플리케이션은 현재까지 분석 연구 결과가 존재하지 않으며, 업데이트된 Threema 애플리케이션의 마스터 키 구조 및 데이터베이스 복호화 알고리즘을 분석한 연구 또한 존재하지 않는다. 또한, 선행 연구 [5], [6], [7], [9]에서는 분석 대상 앱의 암호화된 데이터를 복원하는 연구는 수행되었지만, 채팅 데이터가 수정 또는 삭제된 이후 해당 행위 이전의 원본 데이터를 획득하는 방안이 제시되지 않았다. 또한, 선행 연구[8]에서는 RAM 덤프를 이용한 원본 채팅 데이터 획득 방법을 제안하였고, 선행 연구 [10]에서는 사라지는 메시지의 원본 데이터를 상용 도구를 사용하여 복원하였다. 이에 반해, 본 연구에서는 데이터베이스 내부 정보 및 데이터베이스의 변경 이력이 기록되는 WAL(Write-Ahead Logging) 파일을 활용하여 데이터베이스의 수정 사항이 순서대로 기록된 스냅샷 파일들을 생성하여 비교함으로써 채팅 메시지의 수정 또는 삭제 이전 원본 데이터를 획득할 수 있는 새로운 방안을 제시한다.
1.3 분석 환경 및 애플리케이션 특징
본 논문에서는 BlockChat 앱과 Threema 앱의 주요 로컬 아티팩트를 분석하고, 앱에서 사용할 수 있는 안티 포렌식 행위를 설명하고, 어떻게 탐색할 수 있는지 그 방법을 제시한다. 수행에 사용된 환경 및 도구는 Table 1.과 같다. 데이터 영역에 존재하는 아티팩트를 분석하기 위해 루팅된 기기를 사용하여 연구를 수행하였고, BlockChat 앱의 키스토어 마스터키를 획득하기 위해 가상 환경을 추가로 사용하였다. 분석 도구의 경우 정적 분석을 위해 jadx를, 동적 분석을 위해 Frida를, 데이터베이스 분석을 위해 DB Browser for SQLite를 사용하였다. 마지막으로 복호화 및 검증을 위해 Python을 사용하여 스크립트를 제작하였다. 애플리케이션의 경우 Threema 앱의 마스터키 저장 파일 구조를 비교하기 위해 업데이트 전/후로 파일을 추출하였다.
Table 1. Devices, tools, and software versions used in this study

본 논문에서 분석한 두 애플리케이션은 1장 2절에서 언급한 보안 메신저의 특징인 종단간 암호화, 데이터베이스 암호화, 메시지 삭제 기능을 제공하며, 채팅 데이터가 저장된 파일이 일반적으로는 접근할 수 없는 데이터 영역에 존재한다는 공통점이 있다. 다만 두 애플리케이션 사이에도 Table 2.와 같이 차이점이 있다. 첫 번째로, 데이터베이스 복호화 패스프레이즈를 앱에서 별도로 생성한 파일에 평문으로 저장하거나 앱 내 설정을 통해 암호화하여 저장하는 Threema 앱과 달리 BlockChat 앱은 복호화 패스프레이즈를 EncryptedSharedPreferences 파일에 암호화하여 저장한다는 차이점이 있다. 두 번째로, 암호화된 데이터베이스 복호화 패스프레이즈를 복호화하는 과정에서 사용자가 직접 지정한 암호를 활용하는 Threema 앱과는 달리, BlockChat 앱은 사용자가 지정한 암호를 사용하지 않는다는 차이점이 있다.
Table 2. Differences of BlockChat and Threema apps

II. 주요 아티팩트 식별 및 분석
2.1 BlockChat 아티팩트 분석
BlockChat 앱은 블록체인을 기반으로 하는 메신저 앱으로, 대화 내용을 비롯한 사용자 정보가 사용자의 기기에만 저장되는 특징이 존재한다. 따라서 BlockChat 앱을 대상으로 수사를 진행할 경우, 사용자 기기 내 로컬 아티팩트 분석이 필수적이다. 안드로이드 환경에서 BlockChat 앱의 주요 아티팩트는 Table 3.과 같다. 앱의 사용자 데이터베이스는 SQL Cipher로 암호화되며, 이를 복호화하기 위해 패스프레이즈 값이 필요하다. 암호화된 멀티미디어 파일은 사용자 영역에 저장되며, 복호화를 위해서는 데이터베이스를 먼저 복호화해야 한다. 본 연구에서는 안드로이드 키스토어에 존재하는 마스터키와 데이터 영역에 존재하는 데이터베이스를 획득하기 위해 가상 환경을 사용하였다.
Table 3. Key artifacts in the BlockChat app

2.1.1 BlockChat 앱 SharedPreferences 복호화
데이터베이스 복호화에 필요한 패스프레이즈 값은 app_preferences.xml에 저장된다. 해당 파일은 Fig. 1.과 같이 EncryptedSharedPreferences 형식으로 구성되며, 파일 내 데이터는 암호화되어 확인할 수 없다. 본 연구에서는 해당 preferences 파일 내 데이터를 직접 복호화하는 방법에 대해 분석하였다.

Fig. 1. Examples of app_preferences.xml file in the BlockChat app
해당 데이터의 직접적인 복호화를 위해서는 우선 안드로이드 키스토어에 저장된BlockChat의 32바이트 마스터키를 획득해야 한다. 마스터키를 확보한 이후에는 preferences에 저장된 Keyset에서 Protobuf 역직렬화를 통해 AES 키를 획득해야 한다. Protobuf를 사용하기 위해 “pipinstall protobuf” 명령어로 모듈을 설치하고, Protobuf 컴파일러[11]와 Google Tink의 keyset.proto파일[12]을 다운로드하고, 컴파일러 파일과 proto 파일을 동일 폴더에 위치시킨 뒤, 다음과 같은 명령어를 명령 프롬프트에서 실행하면 Keyset에서 키 값을 파싱할 수 있는 모듈이 생성된다.
“protoc —proto_path=./proto \
--python_out=. \ ./proto/keyset.proto”
이후 생성된 모듈을 통해 Fig. 2.의 예시와 같이 Keyset 복호화 및 파싱을 수행하여 AES 키를 획득한다.

Fig. 2. Example of keyset decryption and AES key parsing in the BlockChat app
2.1.2 BlockChat 앱 사용자 데이터베이스 복호화
앞선 항에서 설명된 방법을 통해 획득한 AES 키를 이용하여 preferences의 key, value 값을 복호화하면 패스프레이즈 값을 얻을 수 있다. 여기서 key는 preferences의 데이터 이름을, value는 데이터의 값을 의미하며 모두 Base64로 인코딩되어 있다. 디코딩된 key 값은 AES-256-SIV 알고리즘을 사용하며, AAD 값을 파일의 이름, 즉 “app_preferences”로 설정하여 복호화하고, 디코딩된 value 값은 AES-256-GCM 알고리즘으로 AAD 값을 preferences에 저장된 암호화 및 인코딩된 key의 값으로 설정하여 복호화한다. 데이터베이스 패스프레이즈 값은 Fig. 3.의 예시와 같이 획득할 수 있고, 획득한 데이터를[8 : -1] 슬라이싱한 뒤 Base64 디코딩하여 출력된 바이트 값을 그대로 SQLCipher 복호화 키로 사용한다. 또한, 복호화에 사용되는 SQLCipher 파라미터는SQLCipher 4 기본 파라미터인 KDF/HMAC 알고리즘 = SHA512, 반복 횟수=256000회, 페이지 크기 = 4096 이다.

Fig. 3. Example of decrypting a database passphrase in the BlockChat app
복호화된 block-chat-database 데이터베이스에서 사용자가 송수신한 채팅 관련 정보를 확인할 수 있다. 유의미한 데이터는 세 가지로 구분된다. 첫째는 채팅 기록, 둘째는 채팅방 정보, 셋째는 초대 정보이다. 이 중 채팅 기록은 Message 테이블에 저장되며, 해당 테이블을 통해 메시지 송/수신자의 DID (Decentralized IDentifier)를 확인할 수 있다. 또한, 송/수신한 채팅 기록, 채팅 삭제 여부, 전송한 파일의 이름, 크기, 타입, 저장경로의 정보도 함께 확인할 수 있다. 사용자 채팅방 정보는 Topic 테이블에서 확인 가능하며, 해당 테이블을 통해 채팅방의 DID, 연결 상태, 타이틀 명, 마지막 방문 시간을 확인할 수 있다. 또한, 채팅방 초대 관련 정보는 Invitation 테이블에 저장되며, 해당 테이블에서는 초대 코드, 초대 DID, 초대 코드 만료 시간, 초대 이름, 초대 코드 소유 여부, 초대 삭제 여부, 초대 코드의 채팅방 DID와 같은 세부 항목을 확인할 수 있다.
2.1.3 BlockChat 앱 채팅으로 전송한 파일 복호화
사용자가 채팅으로 전송한 멀티미디어 파일은 AES-256-GCM 알고리즘으로 암호화되어 저장된다. 복호화에 필요한 IV는 Fig. 4.와 같이 사용자 데이터베이스의 Message 테이블, file_encryption_iv 열에 저장되어 있고, GCM 태그는 암호화 파일의 마지막 16바이트에 저장된다. 또한, AES 키는 2.1.1에서 설명한 설정 파일 복호화 방법을 통해 복호화된 shared-preferences-block-chat.xml에서 획득할 수 있다. 구체적으로 복호화된 설정 파일에서 사용자 데이터베이스의 Cek 테이블의 cek_id 값을 확인하고, 이와 동일한 값의 SharedPreferences key 값을 찾아, 그 key의 32바이트 길이의 value 값이 AES 키로 사용된다. 데이터베이스에서 획득한 IV와 파일에서 획득한 GCM 태그, 설정 파일에서 획득한 AES 키를 사용하여 복호화를 수행하면 Fig. 5.의 예시와 같이 원본 데이터를 획득할 수 있다.

Fig. 4. Example of file encryption IV stored in BlockChat user database

Fig. 5. Example of multimedia file decryption in the BlockChat app
2.2 Threema 아티팩트 분석
Threema 앱은 종단간 암호화를 사용하는 채팅 앱으로 사용자가 전송한 메시지와 멀티미디어는 암호화되어 저장된다. 또한, Threema 앱은 이름, 전화번호와 같이 사용자를 유추할 수 있는 정보를 등록하지 않아도 사용할 수 있으므로 Threema 앱을 대상으로 수사를 진행할 경우, 사용자 기기 내 로컬 아티팩트 분석이 필수적이다. 안드로이드 환경에서Threema 앱의 주요 아티팩트는 Table 4.와 같다. 사용자 데이터베이스는 암호화되어 데이터영역에 저장되며, 사용자가 전송한 파일은 암호화되어 사용자 영역에 저장된다.
Table 4. Key artifacts in the Threema app

2.2.1 Threema 앱 마스터키 획득
Threema 앱은 마스터키를 별도 파일에 저장하여 관리한다. 6.2.0 버전 이전에는 data/data/ch.threema.app/files 경로의 “key.dat” 파일에 마스터키를 저장하였지만, 6.2.0 버전부터 동일 경로의 “master_key.dat” 파일에 마스터키를 저장한다. 앞서 언급한 바와 같이 6.2.0 버전 전/후로 마스터키 저장 파일 구조가 변경되었으며, 사용자가 설정한 패스프레이즈를 활용한 마스터키 보호 알고리즘 또한 완전히 변경되었다. 변경 전에 해당하는 6.1.5 버전의 마스터키 파일 구조는 Fig. 6., 변경 후에 해당하는 6.2.0 버전의 마스터키 파일 구조는 Fig. 7., 각 마스터키 파일의 보호 알고리즘은 Table 5.와 같다.

Fig. 6. Example of a “key.dat” structure, in the version of Threeema 6.1.5

Fig. 7. Example of a “master_key.dat” structure in the version of Threeema 6.2.0
Table 5. Master key protection algorithm in the Threema app

6.1.5 버전의 마스터키 관리 파일인 key.dat 파일은 첫 1바이트에 사용자 패스프레이즈의 파생키 생성 알고리즘을 나타내는 값이 저장되며, 그 다음 고정된 난독화 키와 XOR 연산된 32바이트 키가 저장되며, 그 다음 8바이트 KDF Salt, 마지막으로 4바이트 의 검증 데이터가 저장된다. 사용자 패스프레이즈를 사용하지 않았다면 Salt 영역이 0x00으로 채워지며, 마스터키는 고정된 난독화키와 XOR 연산되어 저장된다. 반대로 사용자 패스프레이즈를 사용하면 Salt 영역에 난수로 생성된 Salt 값이 저장되며, 마스터키는 고정된 난독화 키에 추가로 사용자 패스프레이즈 파생 키와 XOR되어 보호된다.
6.2.0 버전의 마스터키 관리 파일인 master_key 파일은 사용자 패스프레이즈를 사용하지 않았다면 평문 마스터키만 저장되며, 그외 데이터는 저장되지 않는다. 반대로 사용자 패스프레이즈를 사용하면 KDF Salt, Nonce, 암호화된 마스터키가 저장된다. 마스터키 암/복호화에 사용되는 파생키 생성 알고리즘으로 Argon2id를 사용하며, 생성된 패스프레이즈 기반 파생 키와 파일에 저장된 Nonce를 이용하여 XChaCha20-poly1305 알고리즘으로 암호화하여 마스터키를 저장한다. 분석 결과를 검증하기 위해 패스프레이즈 설정 전/후로 master_key.dat 파일을 추출하고, 복호화를 수행하여 획득한 결과와 평문 마스터키 값을 Fig. 8.과 같이 비교하였다.

Fig. 8. Example of master key decryption and verification results in the Threema app
결론적으로 업데이트 전/후 파일 구조와 보호 알고리즘을 비교하였을 때, 패스프레이즈 사용 여부에 관계 없이 파일 구조가 동일한 key.dat과 달리 master_key.dat 파일은 패스프레이즈 사용 여부에 따라 파일 구조가 달라지며, 마스터키 암호화 알고리즘 내부에 무결성 인증이 존재하는 만큼 key.dat과 달리 master_key.dat 데이터에는 검증 데이터가 저장되지 않는 차이점이 존재한다. 또한, 패스프레이즈 기반 키 파생 함수로 scrypt를 사용하는 6.1.5 버전과 달리, 6.2.0 버전에서는 scrypt 알고리즘보다 비교적 최신 알고리즘인 Argon2id을 사용한다는 변경점을 확인하였다.
2.2.2 Threema 앱 사용자 데이터베이스 복호화
획득한 마스터키는 사용자 데이터베이스 복호화에 사용된다. 사용자 데이터베이스는 SQLCipher로 암호화되며 “x“{마스터키}”“ 형식으로 문자열을 구성한 뒤, 구성한 문자열을 SQLCipher 패스워드로 사용한다. 또한 구체적으로 사용된 SQLCipher의 파라미터는 KDF/HMAC 알고리즘 = SHA512, 반복 횟수 = 1, 페이지 크기 = 4096이다. 복호화된 데이터베이스의 주요 정보는 message 테이블에 저장된 채팅 정보이며, 해당 테이블의 id 열에서 채팅 순서, body 열에서 전송한 메시지 정보, createdAtUtc 열에서 메시지를 보낸 시간, isRead 열에서 메시지 확인 여부, editedAtUtc에서 메시지를 수정한 시간, deletedAtUtc에서 메시지를 삭제한 시간과 같이 주요 채팅 정보를 확인할 수 있다.
2.2.3 Threema 앱 채팅으로 전송한 파일 복호화
획득한 마스터키는 사용자 데이터베이스 복호화뿐 아니라 사용자가 전송한 파일 복호화에 필요한 AES 키로도 활용된다. 암호화된 파일의 복호화는 AES-256-CBC-PKCS#7 알고리즘을 사용하며, IV는 암호화된 파일의 첫 16바이트 값에 해당한다. 이에 대한 예시는 Fig. 9.와 같다.

Fig. 9. Example of multimedia file decryption in the Threema app
III. 안티포렌식 행위 탐지
메신저 애플리케이션은 사용자의 정보를 보호하기 위한 기능들을 제공한다. 대표적으로 보낸 메시지를 삭제하는 기능을 통해 타인이 메신저 앱을 열었을때, 그 내용을 확인할 수 없도록 보호할 수 있고, 메시지를 수정하여 사용자가 전송한 메시지를 다른 내용으로 위장할 수 있다. 하지만 정보보호를 위한 기능이 범죄자들의 수사 방해를 위한 도구로써 활용될 수 있다. 따라서 본 연구에서는 이러한 기능 사용을 안티포렌식 행위로 규정하고, 각 애플리케이션에서 범죄자가 활용할 수 있는 안티포렌식 행위를 탐지하는 방안을 제시한다. 안티포렌식 행위로 인하여 애플리케이션 내 채팅방에서 내용을 확인할 수 없다고 가정하며 데이터베이스가 복호화된 것을 전제로 데이터베이스에 저장된 내용을 기반으로 탐지를 수행한다. 단, 안티포렌식 행위 중 채팅방에서 행위를 탐지할 수 있는 경우 채팅방에서 행위를 탐지하는 방법 또한 기술하였다.
3.1 BlockChat 안티포렌식 탐지
BlockChat 앱에서 사용할 수 있는 채팅 관련 안티포렌식 행위는 세 가지로, 첫번째는 채팅 기록 자체를 삭제하는 행위, 두 번째는 채팅의 내용을 수정하는 행위, 세 번째는 채팅의 순서를 변경하는 행위이다. 사용자는 채팅을 삭제함으로써 증거 인멸을 시도하거나 채팅의 내용을 임의로 수정하거나 순서를 변경함으로써 수사에 혼선을 줄 수 있다. 특히 앞서 언급한 세 가지 행위 모두 자신이 전송한 채팅은 물론 타인이 전송한 채팅에도 적용할 수 있으므로 주의가 필요하다.
3.1.1 BlockChat 앱에서의 채팅 삭제 탐지
사용자는 채팅을 직접 삭제하여 증거 인멸을 시도할 수 있다. BlockChat 앱의 경우 Fig. 10.과 같이 사용자가 채팅을 직접 삭제할 경우, 삭제 흔적이 채팅방에 남지 않기 때문에 채팅 데이터베이스를 중심으로 확인해야 한다. 사용자가 삭제한 채팅은 Fig. 11.의 예시와 같이 데이터베이스에 삭제되지 않고 그대로 남아있으며, 삭제된 채팅이 저장된 행의 “is_deleted_message” 열값이 1로 설정되어 사용자가 채팅을 삭제하였음을 탐지할 수 있다.

Fig. 10. Examples of app screens before and after deleting messages in the BlockChat app

Fig. 11. Example of detecting deleted message in the BlockChat user database
3.1.2 BlockChat 앱에서의 채팅 수정 탐지
사용자는 채팅의 내용을 수정하여 수사에 혼선을 줄 수 있다. 이 역시 Fig. 10.의 채팅 삭제 화면과 유사하게 수정 흔적이 채팅방에 전혀 남지 않는다. 다만 데이터베이스에 흔적이 남는 채팅 삭제와 달리 채팅 수정은 수정 전 채팅 내용이 덮어 씌워지기 때문에, 수정 전 메시지를 확인할 수 없다. 이 경우 데이터베이스의 WAL 파일을 복호화하여 확인하는 방법을 사용하여 대응할 수 있다. WAL 파일은 데이터베이스의 변경 사항이 저장되는 로그 파일로, 해당 파일을 활용하면 데이터베이스 내 값들의 변경 사항을 추적하고, 변경 전 데이터를 확인할 수 있다. WAL 파일은 32바이트 헤더와 데이터베이스 프레임으로 구성되며, 데이터베이스 프레임은 24바이트 프레임 헤더와 DB와 동일 페이지 크기의 페이지 블록이 저장된다. SQLCipher의 경우 WAL 파일 내의 페이지 블록이 암호화되어 저장되지만, 복호화 방법은 데이터베이스 파일의 페이지 복호화와 동일한 방법으로 복호화되므로 데이터베이스 복호화 키를 알고 있다면 복호화가 가능하다. WAL 파일 내의 페이지 블록을 복호화하고, 수정이 발생한 페이지 블록이 식별될 때마다 수정된 내용을 커밋하여 데이터베이스를 생성하고, 생성된 데이터베이스들을 비교하여 변경 여부를 파악함으로써 사용자가 채팅을 수정했는지 탐지할 수 있다. 이에 대한 예시는 Fig. 12.와 같다. 단 해당 방법은 WAL 파일의 페이지를 하나씩 분석해야 한다는 단점이 있다.

Fig. 12. Example of detecting message editing in the BlockChat user database using WAL decryption
3.1.3 BlockChat 안티포렌식 행위 탐지 프로세스
본 논문에서 제안하는 BlockChat 앱의 안티포렌식 행위 탐지 프로세스는 Fig. 13.과 같다. 앱의 채팅 데이터가 담긴 block-chat-database 데이터베이스를 열어 Message 테이블로 이동한다. 다음으로 is_delete_message 열 값들을 확인한다. 값이 1인 행의 채팅 메시지는 삭제된 메시지로 분류한다. 다음으로 수정된 메시지를 탐지하기 위해 WAL 파일을 이용하여 데이터베이스의 수정 내용을 확인하기 위한 스냅샷을 생성한다. 이후 스냅샷들의 데이터를 순차적으로 비교하면서 message_body 열 값, 즉 채팅 내용이 변경되었는지 확인한다. 결론적으로 해당 과정을 통해 BlockChat 앱에서 발생한 수정 및 삭제된 메시지를 탐지할 수 있다.

Fig. 13. Database-based anti-forensic behavior detection in the BlockChat app
3.2 Threema 안티포렌식 탐지
Threema 앱에서 사용할 수 있는 안티포렌식 행위는 두 가지로 첫 번째는 채팅 기록을 삭제하는 행위, 두 번째는 채팅을 수정하는 기능이다. 사용자는 채팅을 삭제함으로써 증거 인멸을 시도하거나 채팅의 내용을 임의로 수정하여 수사에 혼선을 줄 수 있다. 이 중 채팅 내용 수정은 본인이 전송한 채팅만 수정할 수 있지만, 채팅 내용 삭제는 본인이 전송한 채팅은 물론 상대가 전송한 채팅도 삭제할 수 있는 특징이 있다.
3.2.1 Threema 앱에서의 채팅 삭제 탐지
사용자는 채팅을 직접 삭제하여 증거 인멸을 시도할 수 있다. 사용자 데이터베이스 확인 결과 전송한 채팅 메시지가 삭제되어 채팅 삭제 시간 외 정보는 데이터베이스에서 확인할 수 없다는 문제가 있다. 이 경우 BlockChat 앱의 채팅 수정 탐지에서 제안한 WAL 파일 복호화를 활용하여 Fig. 14.와 같이 삭제된 메시지를 확인할 수 있다. 해당 방법 역시 WAL 파일의 페이지를 하나씩 분석해야 하는 문제가 있다.

Fig. 14. Example of detecting message editing in the Threema app using WAL decryption
3.2.2 Threema 앱에서의 채팅 수정 탐지
사용자는 채팅의 내용을 수정하여 수사에 혼선을 줄 수 있다. 앞서 분석한 BlockChat 앱과 달리, Threema 앱에서 수정한 정보는 앱 내 채팅방에서 Fig. 15.와 같이 확인 가능하며, 사용자 데이터베이스의 contact_edit_history_entries 테이블에서 변경 전 값과 변경된 메시지의 messageUid 및 messageId 열값이 저장되며, Fig. 16.과 같이 message 테이블과 비교하여 변경 전 값을 확인할 수 있다. 해당 수정 탐지 방안은 자신이 수정한 채팅은 물론, 상대가 수정한 채팅 기록도 확인할 수 있다.

Fig. 15. Example of message editing detection in the Threema application

Fig. 16. Example of message editing detection in the Threema user database
3.2.3 Threema 안티포렌식 행위 탐지 프로세스
본 논문에서 제안하는 Threema 앱의 안티포렌식 행위 탐지 프로세스는 Fig. 17.과 같다. 앱의 채팅 데이터가 담긴 threema4.db 데이터베이스를 열어 message 테이블로 이동한다. 다음으로 body 열 값들을 확인하여 값이 존재하지 않는 행을 삭제된 메시지로 분류한다. 삭제된 메시지의 원문을 확보하기 위해 WAL 파일을 이용하여 데이터베이스의 수정 내용을 확인하기 위한 스냅샷을 생성한다. 이후 스냅샷들의 데이터를 순차적으로 비교하면서 body 열값, 즉 채팅 내용이 잔존하는지 확인하여 삭제된 메시지를 복원한다. 다음으로 수정된 메시지를 탐지하기 위해 contact_edit_history_entries 테이블로 이동한다. 해당 테이블에 존재하는 messageUid, messageId 값을 확인하고 message 테이블의 동일한 messageUid, messageId 열값을 가지는 행의 body 열값과 contact_edit_history 테이블의 body 열값을 비교하여 수정 전/후 메시지를 확인한다. 결론적으로 해당 과정을 통해 Threema 앱에서 발생한 수정 및 삭제된 메시지를 탐지할 수 있다.

Fig. 17. Database-based anti-forensic behavior detection in the Threema app
IV. 결론
사생활 보호에 민감한 스마트폰 사용자가 늘어나며 보안 메신저는 안전한 소통 수단으로 자주 활용된다. 하지만 보안 메신저의 보안성을 악용하여 메신저를 범죄에 활용하는 문제가 지속해서 발생하고 있다. 또한, 새로운 메신저 애플리케이션들이 지금도 개발되고 있고, 이미 출시된 애플리케이션들도 업데이트를 통해 사용자의 데이터를 보호하는 알고리즘이 변경되는 경우가 존재하므로 보안 메신저를 대상으로 한 분석 연구는 매우 중요하다. 본 연구는 안드로이드 환경에서 이전에 분석된 결과가 없는 보안 메신저 이 BlockChat 앱과 업데이트된 Threema 앱을 대상으로 암호화된 채팅 데이터를 복호화하고, 애플리케이션 내에서 사용 가능한 안티포렌식 행위를 탐지하고, 수정/삭제되기 전 데이터를 획득하는 프로세스를 제시하였다. 본 연구의 한계점으로는 BlockChat 앱의 경우 안드로이드 키스토어에 접근해야 한다는 한계가 존재한다 본 연구처럼 VM 환경이 아닌 실제 디바이스 환경에서 획득한 경우, 키스토어를 획득하더라도 키스토어 내 데이터가 암호화된다는 한계가 존재하며, Threema는 사용자가 설정에서 패스프레이즈를 사용하도록 설정했을 경우, 패스워드 확보가 필요하다는 한계점이 존재한다. 추가로 두 앱 모두 별도의 개인정보 없이 완전 익명으로 사용할 수 있다는 애플리케이션의 특징으로 인해, 정확히 누구와 통신했는지 판단하기 힘들다는 한계점이 존재한다. 마지막으로 본 논문에서 제시한 WAL 파일 복호화 방안은 WAL 파일이 존재하는 경우에만 활용할 수 있다는 한계가 있다. 이러한 한계점이 있지만 일부 한계점을 극복할 방안 또한 존재한다. 데이터 영역에 존재하는 데이터 획득 문제는 모바일 디지털 포렌식 전용 솔루션을 통하여 획득 가능성이 존재하며, 패스프레이즈 획득 문제는 용의자에게 협조를 구하거나, 용의자의 사전 정보를 활용하여 패스워드를 구성해 복호화를 시도하는 등 극복할 방안이 존재한다.
본 연구는 기존에 분석 연구가 진행되지 않은 애플리케이션을 대상으로 데이터 복호화 과정을 상세히 분석하고, 해당 애플리케이션에서 사용되는 암호화 구조 및 복호화 방법을 제시하였다는 점에서 의의를 가진다. 특히, 분석 과정에서 수행된 EncryptedSharedPreferences 복호화 방법은, EncryptedSharedPreferences에 암호화 관련 파라미터가 저장되는 애플리케이션을 분석하는 데 있어 참고 자료로 활용될 수 있다. 또한, 안티포렌식 탐지 기법으로 제안한 데이터베이스의 WAL 파일 기반 분석 방법은, 데이터베이스가 이후에 덮어쓰여진 경우에도 변경 이전의 데이터를 획득할 수 있다. 이는 메신저 애플리케이션에만 해당되는 것이 아닌, 데이터베이스 내 값의 변경 전/후 상태를 분석해야 하는 상황에서 활용될 수 있는 방법이라는 점에서 의의를 갖는다.
참고문헌
- Boan News, "4 types of cryptographic messengers used in crimes, including the Cho Joo-bin Nth Room incident", https://m.boannews.com/html/detail.html?idx=87562, Accessed: 2025-12-10
- Hankook Ilbo "Using Telegram, Thorough Branch Organization... Arrested a group of drug distributors who risked their lives on 'secret'", https://www.hankookilbo.com/News/Read/A2024112717050000819, Accessed: 2025-12-10
- Yonhap News, "'Deepfake Hotbed' Telegram Users Increase by 310,000 in August", https://www.yna.co.kr/view/AKR20240904150100017, Accessed: 2025-12-10 100017
- Chosun Ilbo, ""Telegram is also unstable." Both the CEO and the executive director changed it to "Signal."", https://www.chosun.com/economy/industry-company/2025/07/25/2WT6HR76IZCAJK5GOZA73ZZJKI/, Accessed: 2025-12-10
- Jae-Min Kwon, Won-Hyung Park, and Youn-sung Choi, "Signal and Telegram Security Messenger Digital Forensic Analysis study in Android Environment", Jouranl of Information and Security, vol. 23, no. 3. Korea Convergence Security Association, pp. 13-20, Sep. 2023. https://doi.org/10.33778/kcsa.2023.23.3.013
- Jihun Son, Yeong Woong Kim, DongBin Oh, Kyounggon Kim, "Forensic analysis of instant messengers: decryptsignal, wickr, and threema," ForensicScience International: Digital Investigation ,Volume 40, Mar. 2022. https://doi.org/10.1016/j.fsidi.2022.301347
- Kim, H., Park, Y., Ryu, J., Hong, J., Kim, Y., Kim, H., Park, M., Ji, C., Jung, D., & Kim, J., "Research on User Behavior-Based Artifact Analysis of Android Session Messenger from a Digital Forensic Viewpoint", Journal of the Korea Institute of Information Security & Cryptology, 35(5), 1209-1227, Oct. 2025.
- Ehigiator Iyobor Egho-Promise, Bamidele Ola, Aaron Arhin, Richard Asuming, "A FORENSIC ANALYSIS OF WHATSAPP ON ANDROID SMARTPHONE", International Research Journal of Computer Science, 7(8):209-219, Aug. 2020. https://doi.org/10.26562/irjcs.2020.v0708.001
- W. A. Prabowo, F. Mohsen and S. R. Selamat, "WhatsApp Mobile Applications in the Lens of Digital Forensics: Deciphering the Msgstore.db.crypt14 File", in Journal of Cyber Security and Mobility, vol. 14, no. 4, pp. 823-848, Jul. 2025. https://doi.org/10.13052/jcsm2245-1439.1443
- Howard Heath, Áine MacDermott, Alex Akinbi, "Forensic analysis of ephemeral messaging applications: Disappearing messages or evidential data?", Forensic Science International: Digital Investigation, Volume 46, Sep. 2023.
- Github, "Protocol Buffers - Google's data interchange format", https://github.com/protocolbuffers/protobuf/releases, Accessed: 2025-12-10
- Github, "Tink" https://github.com/tink-crypto/tink/blob/master/proto/tink.proto, Accessed: 2025-12-10