Post

Android Application Research Series 3

디바이스 어딘가에 저장되는 데이터에 대한 DB 파일 암호화 따라가기

Android Application Research Series 3

데이터 암호화 및 복호화 로직 따라가기

지난번에는 사진과 영상에 대한 데이터를 확인하여 알림을 읽지 않고도 알림을 받을 시 생성되는 데이터 구조 안을 살퍄보았다.

이때 url 을 통해 상대가 어떤 내용의 컨텐츠를 보냈는지 확인하는 내용을 다뤘다. 이번에는 해당 데이터가 디바이스 어디에 보존되면서 어떤 경우에 어떠한 방식으로 로드되는지 따라가보려고 한다.

암호화부분

아래는 그룹화된 알림을 받았을 때 데이터를 암호화하는 부분이다.

1
123243 ms  DataBaseResourceCrypto$b.b("{\"kl\":[\"redacted/redacted/redacted/redacted.jpg\",\"redacted/redacted/redacted/redacted.jpg\"],\"mtl\":[\"image/jpg\",\"image/jpg\"],\"csl\":[\"redacted\",\"redacted\"],\"wl\":[1080,1080],\"hl\":[553,2340],\"cmtl\":[\"\",\"\"],\"sl\":[85047,149222],\"imageUrls\":[\"https://talk.kakaocdn.net/redacted\",\"https://talk.kakaocdn.net/redacted\"],\"thumbnailUrls\":[\"https://talk.kakaocdn.net/redacted\",\"https://talk.kakaocdn.net/redacted\"],\"thumbnailWidths\":[120,56],\"thumbnailHeights\":[62,120]}")

위는 받은 데이터를 암호화하는 작업이다.

아래는 받은 데이터를 암호화하여 반환하는 부분이다.

1
123243 ms  <= "ljsUhFCNTSP7v...XWcQkilvfTBe"

그룹화된 컨텐츠가 올 때 위의 메소드가 호출되는데 평문 데이터를 암호화하는 시점이다.

복호화부분

아래는 파일에 적재되어있는 암호화 데이터를 로드하는 부분다.

1
432240 ms  DataBaseResourceCrypto$b.a("ljsUhFCNTSP...vxB9XWcQkilvfTBe")

해당 메소드를 통해 데이터가 복호화되는 걸 확인할 수 있다. 실제로는 데이터 길이가 훨씬 길게 나오지만 여기서는 일부만 편집해서 사용한다.

1
432240 ms  <= "{\"kl\":[\"redacted/redacted/redacted/redacted.jpg\",\"redacted/redacted/redacted/redacted.jpg\"],\"mtl\":[\"image/jpg\",\"image/jpg\"],\"csl\":[\"redacted\",\"redacted\"],\"wl\":[1080,1080],\"hl\":[553,2340],\"cmtl\":[\"\",\"\"],\"sl\":[85047,149222],\"imageUrls\":[\"https://talk.kakaocdn.net/redacted\",\"https://talk.kakaocdn.net/redacted\"],\"thumbnailUrls\":[\"https://talk.kakaocdn.net/redacted\",\"https://talk.kakaocdn.net/redacted\"],\"thumbnailWidths\":[120,56],\"thumbnailHeights\":[62,120]}"

데이터를 복호화하면 위와 같이 나온다.

Conclusion

Binary file 에서 확인할 수 있는 데이터

해당 파일을 탐색한 결과 일렬의 데이터가 오차도 없이 기록되어 있는 걸 발견할 수 있다.

실제로 앱 내부 디레턱리에서 해당 데이터가 존재하여 파일로부터 데이터를 로드하는 걸 볼 수 있다.

1
2
3
4
/data/user/0/com.kakao.talk # ./search.sh
Binary file databases/KakaoTalk.db-wal matches
Binary file databases/KakaoTalk.db-wal matches
/data/user/0/com.kakao.talk #

해당 데이터가 접근하는 곳은 Application 내부라 일반 디바이스에서는 접근 문제가 발생한다. 이를 실제 확인하기 위해서는 커스텀 OS 나 특별한 환경의 디바이스에서 해당 작업을 진행하여야 한다. 다음에는 해당 로직을 좀 더 자세하게 관찰하며 로직화해보고자 한다.

This post is licensed under CC BY 4.0 by the author.
If you find any errors, please let me know by comment or email. Thank you.

© Ruffalo. Some rights reserved.

I'm

Using the Chirpy theme for Jekyll.