Digital Forensics/아티팩트 분석

[디지털포렌식 워크숍] Wire 메신저 실습 - 첨부 파일

by 승빈이 2023. 8. 1.

이번엔 디지털포렌식 워크숍에서 보안 메신저 서비스 파트에 해당하는 부분에서 실습했던 내용에 대해서 적어보도록 하겠습니다.

 

해당 파트의 경우 손지훈 연구원님께서 발표해주셨습니다.

 

먼저 Wire 메신저에서 대해서 간단하게 알아보겠습니다.

 

https://www.boannews.com/media/view.asp?idx=87562

 

조주빈 n번방 사건 등 범죄에 활용된 암호화 메신저 4종

텔레그램 N번방 사건으로 전국이 들썩이는 가운데, ‘박사’ 조주빈을 비롯해 다른 공범들이 또 다른 암호화 메신저에도 N번방을 만들어 사용했다는 조사결과가 나오면서 이들이 사용한 것으로

www.boannews.com

해당 링크에 들어가서 보면 알겠지만 n번방 사건에서도 해당 글에서 다룰 예정인 Wire이라는 메신저가 사용되었다고 합니다. Wire의 경우는 모든 대화 내용 및 첨부 파일이 암호화되어 전송이 된다고 합니다.

 

이번 워크숍에서 발표해주신 내용은 첨부파일을 전송할 시 해당 파일이 암호화가 되어서 저장이 되는데 이를 직접 복호화해보는 실습을 진행하였습니다.

 

먼저 실습 전 필요한 파일들에 대해서 소개해드리도록 하겠습니다.

 

Wire - Desktop : https://wire.com/en/download/

Level DB tool : https://github.com/cclgroupltd/ccl_chrome_indexeddb

HxD : https://mh-nexus.de/en/hxd/

 

HxD - Freeware Hex Editor and Disk Editor | mh-nexus

HxD - Freeware Hex Editor and Disk Editor HxD is a carefully designed and fast hex editor which, additionally to raw disk editing and modifying of main memory (RAM), handles files of any size. The easy to use interface offers features such as searching and

mh-nexus.de

간단하게 이 정도만 설치하시면 됩니다.

 

저는 YSB의 계정으로 SecuDF라는 테스트 계정에 메시지를 보내는 상황을 토대로 어떤 기록들을 확인할 수 있는지를 알아보도록 하겠습니다.

 

흔적은 다음과 같이 남겼습니다.

 

해당 워크숍에서는 win10으로 진행을 하였지만 제꺼 PC는 win11이며 버전의 차이도 경로차이이기 때문에 win10기준 해당 파일이 남는 경로만 소개드리고 win11 기준으로 진행하겠습니다.

 

win10의 경우는 %UserProfile%\AppData\Roaming\Wire\Cache\의 경로이며 win11의 경우는 %UserProfile%\AppData\Roaming\Wire\Service Worker\CacheStorage\[숫자]\[숫자] 경로에 있습니다.

해당 [숫자]에 해당하는 부분은 자세히 분석해보지 않았지만 이런 경우는 해당 유저의 cache값 일 것으로 예상됩니다.

win10으로 실습을 해보니 win11과 똑같이 나와서 Wire의 버전마다 저장되는 위치가 달라지는 것 같습니다.

 

위에 해당하는 경로로 들어가보면 아래 사진과 같이 여러 파일들이 존재합니다.

해당 파일들이 저희가 Wire상에서 보낸 암호화된 파일들입니다.

이제 해당 파일들을 복호화 해보도록 하겠습니다. 

 

일단 해당 암호화 방식의 경우 AES 알고리즘으로 암호화되어 있으며 CBC 모드 방식입니다.
해당 암호화된 파일을 복호화하기 위해서는 IV(Initial Vector)값과 key 값이 요구가 됩니다.

 

먼저 key값을 찾아보도록 하겠습니다.

Wire 메신저의 경우는 otr_key라는 값이 생성이 됩니다. 해당 key 값은 각각의 첨부파일마다 달라지게 되니 여러 첨부파일을 통하여 실습을 하실때는 이 점 유의해서 실습 진행하시면 될거 같습니다.

추가적으로 다른 기기에서 보냈어도 같은 파일이면 otr_key는 똑같다고 합니다.

 

이제 해당 otr_key를 찾는 방법에 대해서 알아보도록 하겠습니다.

먼저 아래에 해당하는 경로를 통해서 알 수 있습니다.

%UserProfile%\AppData\Roaming\Wire\IndexedDB\https_app.wire.com_0.indexeddb.leveldb

 

해당 경로에 들어가게 되면 ldb 파일이 존재하게 됩니다. 

ldb파일에 대해 간단하게 설명해보자면 구글에서 개발한 Key-Value 데이터베이스 시스템이라고 생각하시면 될 것 같습니다. 이제 해당 ldb파일을 통해 분석을 진행하여 채팅 기록 및 사용된 기기의 정보등을 알 수 있다고 합니다.

세부적인 내용은 제가 마지막에 논문 링크를 남겨드릴테니 해당 논문을 한번 확인해보시면 될 것 같습니다.

 

다시 실습으로 돌아가서 ldb파일에 otr_key가 존재하고 해당 ldb 파일에 기록되기 전에 log파일에도 기록을 한다고 합니다. 저는 ldb 파일 분석이 잘 되지 않아서 log 파일에서 otr_key를 찾았습니다. 

 

먼저, log파일을 HxD를 통해 열어서 Ctrl + F 기능을 이용해서 otr_key를 검색해줍니다.

다음과 같은 구조로 구성되어 있습니다. 해당 hex값에서 필요한건 key data에 해당하는 부분입니다.

 

이제 AES 알고리즘에서 key값은 구했고 다음으로 IV값을 구해보도록 하겠습니다.

IV값의 경우는 암호화된 파일은 처음 16byte입니다.

해당 부분이 key 입니다.

이제 복호화만 하면 되지만 해당 파일 자체가 첨부파일은 아닙니다. 이제 첨부파일에 해당하는 부분을 찾는 방법을 알아보겠습니다. 위에 있는 사진을 보시면 초록색 부분을 확인할 수 있습니다. 해당 부분이 첨부파일의 데이터가 시작하는 부분을 의미합니다.

 

이제 해당 부분과 헤더의 길이를 더하게 되면 첨부파일이 암호화된 부분의 시작점을 찾을 수 있습니다.

해당 부분은 리틀엔디언 형식이기에 0x154 + 0x18 = 0x16C 입니다.

해당 부분으로 이동을 하면 숫자가 연속되어 있는 부분이 있다가 문자로 바뀌게 되는 부분입니다.

초록색이 첨부파일에 해당하는 부분입니다.

하다가 계산이 좀 이상하다고 생각하시면 대충 URL의 끝부분이면서 16C, 16E 쪽에 해당하는 부분부터 데이터를 파싱하면 될거 같습니다.  

 

파싱은 이제 hex값으로 'D8 41 0D 97' 까지 파싱을 하면 됩니다. 

해당 해시값의 경우는 첨부파일의 마지막 부분에 해당하는 부분으로 여러 첨부파일이 있을 경우 저 부분으로 구분을 지으면 됩니다. 그리고 복호화를 할 때는 해당 hex값은 뺴고 복호화 해야 합니다.

 

마지막으로 정리하고 복호화를 진행하도록 하겠습니다.

%UserProfile%\AppData\Roaming\Wire\IndexedDB\https_app.wire.com_0.indexeddb.leveldb

=> 해당 경로에서 log파일에서 otr_key를 찾았습니다.

ldb 파일의 경우 채팅 기록 및 여러 정보들을 찾을 수 있지만 제꺼는 분석이 잘 안 되더라구요..

https://github.com/cclgroupltd/ccl_chrome_indexeddb <= 해당 툴을 이용하시면 됩니다.

 

다음으로는 %UserProfile%\AppData\Roaming\Wire\Service Worker\CacheStorage\[숫자]\[숫자] 경로로 들어가서 숫자_0으로 되어있는 파일에서 hex값을 분석하여 첨부파일에 해당하는 부분을 찾았습니다.

또한, 해당 파일의 처음 16byte는 IV값이라는 것을 알 수 있었습니다.

 

https://gchq.github.io/CyberChef/ <= 복호화 사이트

 

이제 해당 사이트를 들어가서 AES를 검색하여 선택해주고 저희가 방금까지 구한 값들을 전부 입력해줍니다.

이제 다음과 같이 복호화를 직접 하시면 Output에 있는 부분을 보시면 복호화가 된 것을 확인할 수 있습니다.

Output에 있는 부분을 hex로 바꾼 후 복사를 진행해 준 다음 HxD를 통해서 마무리 하도록 하겠습니다.

 

고려대에서 실습을 진행할 떄는 잘 되었는데 지금 보니 16byte 쓰레기 값이 생성이 되어 있어서 해당 부분을 삭제를 하고 난 뒤 파일을 .png 확장자로 저장을 해주면 됩니다.

 

다음과 같이 복구가 된 것을 확인할 수 있습니다.

 

제가 이번에 실습한 것은 첨부파일 복호화이고 처음에 알려준 ccl_chrome_indexeddb 툴을 이용해서 ldb 파일들을 분석하면 채팅 기록 및 추가적인 데이터들도 확인할 수 있으니 아래에 링크해드린 논문을 직접 보시고 실습하면 좋을 것 같습니다. 

 

https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART002859560

 

PC 환경에서 보안 메신저 Wire 앱의 사용자 데이터 캐싱 메커니즘 연구

오늘날 텔레그램(Telegram), 와이어(Wire), 디스코드(Discord), 위커(Wickr) 등 보안 메신저가 많은 범죄 사건에서 범죄의 수단으로 악용되고 있다. 사용자들은 개인정보보호의 이슈로 인해 조금이라도

www.kci.go.kr

 

 

반응형

댓글