카카오톡 포렌식 도구 개발 - Windows, iOS, Android, Mac 운영체제 카카오톡 디비 복호화
오랜만에 블로그에 글을 작성하는것 같네요,,
아마 전체적으로 만드는데 1년 정도 걸린것 같은데, 개발된 프로그램에 대해 살짝 소개해보려고 합니다.
먼저 목적은 아직 상용 포렌식 도구에서 안드로이드, 윈도우, 아이폰, 맥북을 통합적으로 지원하는 도구를 확인하지 못했습니다.
(혹시라도 알고 계시다면,, 댓글로 알려주세요)
그래서 통합 플랫폼 카카오톡 디비 복호화 도구를 제작해 보는건 어떨까 싶어서 한번 간단하게 제작해본 프로그램입니다.
일단 시연 영상먼저,,,
먼저 주요 기능은 다음과 같습니다.
1. 윈도우 PC에서 물리 기기 / 논리 폴더 설정 등을 통해 카카오톡 데이터 복호화
2. 안드로이드 기기 연결 및 즉시 복호화 / 또는 백업 파일로 카카오톡 데이터 복호화
3. 아아폰 기기 연결 및 즉시 복호화 / 또는 백업 파일로 카카오톡 데이터 복호화 (iTunes를 통해 전체 백업한 경우)
4. 맥 PC에서 물리 기기 / 논리 폴더 설정 등을 통해 카카오톡 데이터 복호화
조금더 쉽게 표로 설명하면 다음과 같습니다.
운영체제 | 물리 디스크 | 논리 디스크 | 라이브 포렌식 |
윈도우 (Windows) | O | O | O |
안드로이드 (Android) | 연결 후 가능 | O | 연결 후 가능 |
아이폰 (iOS) | 연결 후 가능 | O | 연결 후 가능 |
맥 (Mac) | O | O | O |
실제 제작된 도구의 실행 환경은 다음과 같습니다.

위 사진에서 확인 할 수 있듯이, Case Name, 추출한 경로를 선택 후 OS Type을 지정해줍니다.
OS Type의 경우 Android, iOS, Windows, Mac 이 가능합니다.
운영체제 선택후 카카오톡 데이터 파일을 어디서 불러올지 선택하도록 되어 있습니다.
예를 들어 Physical Disk(물리 리스크)의 경우 자동으로 현재 프로그램이 돌아가고 있는 대상 PC 또는 기기를 통해서 자동으로 탐색을 해 위에 보이는 경로와 같이 연결 되도록 되어 있습니다.
Local Disk의 경우 사용자가 직접 카카오톡 데이터 파일을 선택 할 수 있는 기능입니다.

정리를 조금 하자면, 위 그림과 같습니다. 예를 들어 사용중인 PC에서 UserID를 모른다? 그렇다면 다음과 같은 작업을 진행하도록 되어 있습니다.
Windows | 카카오톡 로그인 | 획득 방법 |
O | 메모리 덤프를 통한 UserID 획득 | |
X | Directory 기반으로 UserID 무차별 대입 |

일단 대상 디스크 또는 폴더를 선택해, 프로세싱을 돌리게 되면, User ID를 아는 경우 입력을 해야하고, 모르는 경우는 Dump 또는 무차별 대입을 통해서 UserID를 수집합니다.

라이브 환경에서의 프로그램 실행은 메모리 덤프 및 무차별 대입 알고리즘을 통해서 수십초 내로 획득이 가능하지만, 예를 들어 KakaoTalk\Users\~~~~ 폴더를 따로 선택한다면, SYS_UUID, HDD_Model, HDD_Serial 을 수동으로 입력해야합니다.
라이브 환경은 자동으로 레지스트리를 참조해서 가져오지만, 우린 이미지 파일에서 추출하는 경우도 있으니까요.
그렇다면 아이폰에서는 카카오톡을 어떻게 데이터를 뽑아올건데?

아이폰의 경우 iOS 선택 후 Physical Disk를 선택하면 USB를 통해 연결된 장치를 확인 할 수 있으며, 해당 경우는 아래 사진과 같이 잠금을 해제하라는 신호를 보내게 됩니다.

암호 입력후 기다려주면 복호화 작업 끝!
그럼 결과물은 어떻게 나오나요?

사실 복호화 작업 후, 데이터를 보여줄때 카카오톡 UI와 비슷하게 만들고 싶었지만,, 개발 능력 이슈로,, UI가 조금 더럽습니다.
복호화 된 데이터를 바탕으로 실제 데이터 채팅방 이름 및 대화 내용들을 모두 확인 할 수 있습니다.

또한 아래 버튼을 통해서 삭제된 메시지, 관리자가 가리기한 메시지 등을 모두 복호화 할 수 있습니다.
두서 없이 쓴 글이지만,, 읽어주셔서 감사합니다.
'Forensics' 카테고리의 다른 글
제 10회 디지털 범인을 찾아라 - 문제 풀이 보고서 #1 - 이미징 작업 (0) | 2025.02.03 |
---|---|
제 10회 디지털 범인을 찾아라 - 문제 풀이 보고서 #0 - 대회 소개 및 분석 환경 (0) | 2025.02.03 |
카카오톡 PC 버전 포렌식: 민사·내부 감사 맞춤 분석 서비스 의뢰 받습니다 (1) | 2024.10.24 |
[포렌식] 윈도우 카카오톡 데이터베이스 복호화 분석 및 구현 #2 (7) | 2024.03.24 |
[포렌식] 윈도우 카카오톡 데이터베이스 복호화 분석 및 구현 #1 (69) | 2024.03.23 |
댓글
이 글 공유하기
다른 글
-
제 10회 디지털 범인을 찾아라 - 문제 풀이 보고서 #1 - 이미징 작업
제 10회 디지털 범인을 찾아라 - 문제 풀이 보고서 #1 - 이미징 작업
2025.02.03본 글은 요청시 풀이 보고서가 내려갈 수 있으며,만약 저작권 등에 위반된다면, 지체없이 댓글 또는 pental@kakao.com 으로 연락주시길 바라겠습니다.해당 블로그에서는 총 6개의 분석 섹션으로 나눠 포스팅을 할 예정이다. 각각 섹션은 다음과 같다. 현재 세션은 굵은 글씨로 표시되어 있다.1. 이미징 작업2. 손상된 파티션 복구3. 파티션 목록4. 아티팩트 분석 1. 운영체제 분석 1.1. PC 정보 분석 1.2. PC 사용자 분석 1.3. 설치된 프로그램 분석 2. 웹 아티팩트 분석 2.1. Chrome 분석 2.2. Edge 분석 2.3. Firefox 분석 3. Email 분석 4. 메신저 분석 4.1. Tel… -
제 10회 디지털 범인을 찾아라 - 문제 풀이 보고서 #0 - 대회 소개 및 분석 환경
제 10회 디지털 범인을 찾아라 - 문제 풀이 보고서 #0 - 대회 소개 및 분석 환경
2025.02.03본 글은 요청시 풀이 보고서가 내려갈 수 있으며,만약 저작권 등에 위반된다면, 지체없이 댓글 또는 pental@kakao.com 으로 연락주시길 바라겠습니다.2024년 디지털 범인을 찾아라 경진대회가 열렸다.한국포렌식학회(회장 김영대)와 한국저작권보호원은 올해로 10회를 맞이하는 ‘2024 디지털 범인을 찾아라 경진대회’를 공동으로 개최한다고 밝혔다.‘디지털 범인을 찾아라 경진대회’는 디지털 포렌식 기술을 활용하여 첨단범죄 수사 역량을 강화하고, 디지털 포렌식 분야의 발전을 도모하는 것을 목적으로 한다. 이번 경진대회는 주니어 부문과 시니어 부문으로 나뉘어 진행되며, 주니어 부문은 전국 대학생 이하 학생들을 대상으로, 시니어 부문은 일반인 및 대학원생 이상 전문가를 대상으로 한다.대회 접수는 2024년 … -
카카오톡 PC 버전 포렌식: 민사·내부 감사 맞춤 분석 서비스 의뢰 받습니다
카카오톡 PC 버전 포렌식: 민사·내부 감사 맞춤 분석 서비스 의뢰 받습니다
2024.10.24안녕하세요, 디지털 포렌식 전문가 김도현입니다. 디지털 포렌식 분야에서 다년간의 경험을 쌓아온 저는 민사 사건이나 내부 감사와 같은 상황에서 신뢰할 수 있는 디지털 증거 분석을 제공합니다.디지털 시대가 발전하면서 다양한 플랫폼에서 이루어지는 소통과 활동이 중요한 증거 자료로 활용되고 있습니다. 그중에서도 특히 카카오톡은 대한민국을 비롯한 여러 국가에서 가장 인기 있는 메신저 플랫폼 중 하나로, 개인과 단체 간의 대화, 파일 전송, 사진 공유 등 다양한 디지털 정보가 담겨 있습니다. 이러한 카카오톡의 정보를 분석하는 작업을 포렌식이라고 하는데, 특히 카카오톡 PC 버전 포렌식은 법적, 수사적 목적으로 중요한 역할을 합니다.카카오톡 PC 버전 포렌식의 필요성카카오톡은 스마트폰 기반의 메신저로 잘 알려져 있지… -
[포렌식] 윈도우 카카오톡 데이터베이스 복호화 분석 및 구현 #2
[포렌식] 윈도우 카카오톡 데이터베이스 복호화 분석 및 구현 #2
2024.03.24#1 에서는 윈도우 카카오톡 데이터 베이스 복호화 분석을 진행했다. #2 에서는 자동화 하는 기능을 소개하려고 한다. 일단 Pragma를 생성하기 위해서 레지스트리에 접근해야하지 않는가? def get_pragma() : DeviceInfo_Path = "Software\Kakao\KakaoTalk\DeviceInfo" keypath = winreg.OpenKey(winreg.HKEY_CURRENT_USER, DeviceInfo_Path, 0, winreg.KEY_READ) reg_path = winreg.QueryValueEx(keypath, "Last")[0] DeviceInfo_Key_Path = DeviceInfo_Path +"\\" + reg_path keypath = winreg.OpenKey…
댓글을 사용할 수 없습니다.