[논문 리뷰] 안드로이드 환경에서 Signal과 Telegram 보안 메신저 디지털 포렌식 분석 연구

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

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

https://file1-earticle-net.libproxy.dankook.ac.kr/PDF/Direct?key=k/5+avt4lSK2p/rWCff1nxqNy/ba5/fOdSY7ZSBqlPRRJN6Zry5wXV7Axdx6kY1pTvqN21aWLwDCwJb53DbK2iIR3JFbtGxem/EKyGhG6/eFjvDZfbKuWQ/tTakAPU/btk3cJyNY/0HW7dr0uue+mtOk8FiBnRLxFH5lLOtEARA/Kkbz3MpO+/adulf7cu1tLeTNBEd57kwaavNc8KrXipMDF4rrW4qq

[출처] 권재민, 박원형, 최윤성. (2023). 안드로이드 환경에서 Signal과 Telegram 보안 메신저 디지털 포렌식 분석 연구 . 융합보안논문지, 23(3), 13-20.


 대표적으로 Signal과 Telegram은 사용자들 사이에서 높은 신뢰성을 받고 있는 보안 메신저로, 암호화 기술을 바탕으로 사용자들의 개인 정보를 안전하게 보호하나, 이러한 데이터를 어떻게 분석할 수 있을지에 대해서는 아직까지 많은 연구가 필요하다. 따라서 이번 논문에서는 이러한 문제점을 해결하기 위해 Signal과 Telegram의 메시지 암호화와 안드로이드 디바이스 내 데이터베이스 구조및 암호화 방식에 대해서 깊이 있는 분석을 진행하였다.

Signal 아티팩트 분석

Signal 데이터베이스 복호화 방안

-Signal 애플리케이션은 signal.db라는 파일의 메시지, 대화방 및 연락처와 관련된 데이터를 저장하는 SQLite 데이터베이스 파일을 가짐

->이 데이터베이스는 암호화된 데이터로 복호화를 하지 않으면 접근 불가

해당 파일에는 pref_database_unencrypted_secret으로 key값 저장되어 있음

-pref_database_unencrypted_secret의 key값을 가지고 데이터베이스를 SQLCipher을 이용하여 페이지 크기를 4,096로 설정하고 HMAC 알고리즘과 KDF 알고리즘, SHA1 알고리즘을 선택하여 복호화를 진행하면 데이터베이스를 열어 진행 가능

-안드로이드 버전 7버전 이상부터는 Android Keystore를 도입하여 권한이 없으면 Key 값을 추출할 수 없도록 함 -> 권한 강화->안드로이드 버전 7버전 이상에서는 data/keystore/user_0 경로에 있는 "app-id"_USERKEY_SignalSecret 파일에 오프셋 2D에서 3C까지 값 저장해줌

-안드로이드 7버전 이상의 org.thoughtcrime.securesms_preferences.xml 파일에는 pref_database_encrypted_secret라고 data와 iv 값이 저장되어 있음

-> data를 Base 64 to Hex로 변환하여 뒤에서 32자리는 Auth Tag가 되고 나머지 값은 데이터 값이 됨

-> AES Decrypt를 진행하여 데이터 값을 넣어주고 Key 값에는 아까 저장해 준 오프셋 2D에서 3D까지 값을 넣어주고 GCM Tag에는 Auth Tag를 넣고 IV 값을 넣어서 복호화를 진행하게 되면 안드로이드 5.1.1버전의 prev_database_unencrypted_secret 값과 같은 값을 가짐

Signal의 포렌식 관점에서 유의미한 아티팩트

Signal이라는 애플리케이션을 분석하기 위해서 확인해야 하는 디렉터리 구조

-Signal의 주요 아티팩트는 data/data 디렉터리 밑에 org.thoughtcrime.securesms 폴더안에 있음

-> shared_prefs 디렉터리는 Signal의 설정 정보와 같은 앱 데이터가 저장되는 디렉터리(XML 형식으로 작성되어 있음)

-> shared_prefs 디렉터리 안에 있는 org.thoughtcrime.securesms_preferences.xml 파일은 복호화에 사용되는 secret 키가 저장되어 있음

-databases 디렉터리 안에 있는 signal.db 파일은 분석한 결과 사용자가 애플리케이션을 사용한 흔적을 확인할 수 있었고, 사용자의 전화 기록과 보낸 메시지의 내용과 보낸 시간을 확인할 수 있었음

특히 signal-key-value.db에서는 사용자의 휴대전화 번호가 남아있는 것을 확인할 수 있고 새로운 그룹방에 들어간 횟수와 사용자가 친구를 초대한 횟수도 확인 가능

Telegram 아티팩트 분석

안드로이드 핸드폰이 루팅이 되어있는 상태에서 이미징 도구인 안드로이드 디버그 브리지를 이용하여 이미징을 하였음

Telegram의 포렌식 관점에서 유의미한 아티팩트

-Telegram의 데이터베이스는 files 디렉터리에 저장되어 있으며 사용자의 연락처 목록, 음성 통화 로그 등을 SQLite 데이터베이스 형식으로 저장

-shared_prefs 디렉터리의 userconfig.xml 파일로 Telegram 계정의 세부 정보가 저장되어 있음

-data/media 디렉터리 안에는 Telegram에서 생성된 사용자의 캐시 파일과 Telegram 메신저를 통해 주고받은 파일의 사본이 저장되는 것을 확인 가능

org.telegram.messenger 폴더 밑에 shared_prefs 폴더가 있는 것을 확인 할 수 있는데 거기에는 userconfig.xml 파일이 있는 것을 확인 가능

-Signal의 userconfig.xml 파일에는 킷값이 저장되어 있는 것을 확인 할 수 있었는데 안드로이드 5.1.1버전의 Telegram 애플리케이션 구동 환경에서는 데이터베이스를 암호화하지 않아 키값이 들어가지 않은 것을 확인 가능

userconfig.xml 파일을 확인해보면 user의 값이 base64방식으로 인코딩되어 저장되어 있는 것을 확인 가능

-인코딩 된 위의 데이터 값을 base64로 디코딩하여 확인하여 보면 해당 애플리케이션을 사용하는 유저의 이름과 사용자의 기기 전화번호가 저장되어 있는 것을 확인 가능

-Signal 애플리케이션과 다르게 데이터베이스에 대한 암호화가 되어있지 않음

-테이블 안의 data 칼럼이 blob 데이터(UTF-8로 디코딩하여 확인하면 평문 데이터로 확인 가능) 형식으로 저장되어 있는 것을 확인 가능

결론

대표적인 암호화 메신저 애플리케이션인 Signal과 Telegram을 안드로이드 환경에서 분석함으로써, 주요 아티팩트를 분석하여 데이터베이스의 구조를 파악하고, 주요 아티팩트의 디렉터리를 경로별로 정리함

모바일 포렌식 분석 분야에서 유용하게 활용될 뿐만 아니라, 불법 활동을 조사하고 수사하는데 필요한 중요한 정보를 제공하는 기술적 기반 자료로 활용될 것으로 보임