KakaoTalk Decrypt 우리가 복호화 해야 되는 파일은 users > {userDir} > chat_data 안에 있는 edb 파일이다이 데이터베이스에서 카카오톡 메시지를 확인할 수 있다 Fig. 1.과 같이 대화 기록 데이터베이스를 복호화하기 위해서는 key, iv 쌍을 생성해야 한다. pragma와 userId를 512바이트가 될 때까지 반복하여 연접한 후 MD5 해싱을 수행하면 key가 된다. key에 대해 Base64 인코딩 수행 후 MD5 해싱을 수행하면 iv가 된다. 구체적인 알고리즘은 Fig. 2와 같다. 카카오톡 메시지를 복호화 하기 위해 제시한 알고리즘의 key와 id 값을 먼저 생성해야 한다앞서 pragma는 문제에서 주어졌고 userId 값을 찾아내야 한다 userId는 u..
KakaoTalk Decrypt 이번에 멀웨어 분석 프로젝트 도중 카카오톡 복호화 기능을 알게 되었는데 이 내용을 바탕으로 포렌식 문제도 만들어봤다 "우리 서버에 저장된 중요한 고객 데이터가 손상된 상황입니다 이를 해결하기 위해 회사 서버에 접근해야 하는데, 지난주에 개발팀이 카카오톡으로 서버 접속키를 보내준 기억이 납니다 그러나 현재 휴대폰이 고장 나서 PC 카카오톡에서 대화 내용을 확인하려고 했으나, 실수로 대화방을 나가버렸습니다 어쩔 수 없이 PC에 카카오톡 대화 내용이 있는 데이터를 확인하는데 맙소사..데이터가 암호화가 되어있다.. 이후에 카카오톡 복호화 방법을 찾다가 어떤 한 논문을 알게 되었습니다제가 첨부한 파일은 %LocalAppData%\Kakao\KakaoTalk\users 폴더 입니다..
Hex Encrypt Data 코드에서 나와있듯이 _encryption 함수는 실제 encryption 암호화하는 함수를 호출하기 위해 입력 데이터를 각각 2byte씩 처리하여 암호화하는 형식이다사진에서 코드를 실행할 때 암호화할 인자를 같이 넘겨주면 a는 3102 b는 31e4로 암호화되어 출력되는 걸 알 수 있다 즉 원본 문자와 암호화된 결과를 각각 딕셔너리로 저장한 다음 암호화된 문자열을 찾을 때 딕셔너리에 같이 저장된 원본 데이터를 이용해서 원래 문자열로 되돌릴 수 있다 import subprocessimport stringfrom concurrent.futures import ProcessPoolExecutor, as_completeddef run_external_program(pair): ..
Hex Encrypt Data 이번 CTF 대회에 출제된 문제를 바탕으로 암호화 부분을 변형하여 만들어봤다#include #include #include // 암호화 함수: 주어진 데이터 배열을 암호화하여 반환unsigned long* encryption(unsigned long data[], unsigned long size){ unsigned int temp1; unsigned int temp2; unsigned int temp3; unsigned int index; // 데이터 배열의 각 요소에 대해 암호화 수행 for (index = 0; index > 16; temp1 = temp3 ^ temp2; ..
도구 설치 문제를 풀기 앞서 문제를 풀기 위한 도구는 해당 사이트에서 다운받도록 합시다 1. x64dbg 설치 x64dbg - Browse /snapshots at SourceForge.netPulseway’s comprehensive remote monitoring and management (RMM) software provides a complete view across your network. View operational data for workstations, servers, VMs, network devices and more, while resolving issues straight from the same interfacesourceforge.net x64dbg는 64비트 플랫폼에서 실..
1. 파일 시그니처 확인 f" data-og-host="sh1r0hacker.tistory.com" data-og-source-url="https://sh1r0hacker.tistory.com/90" data-og-url="https://sh1r0hacker.tistory.com/90" data-og-image="https://scrap.kakaocdn.net/dn/cIos84/hyVZjvjLDW/QrkkmUkUYK5LWVE7OKVVu1/img.png?width=683&height=290&face=0_0_683_290,https://scrap.kakaocdn.net/dn/zpyvg/hyVZtSbFqd/vb9mdfZ3DHvjiQ2tzjnRik/img.png?width=683&height=290&face=..
서버 생성 / 문제 파일 다운 페이지를 살펴보면 404Error, robots.txt 항목은 "Page Not Found"와 각 항목의 이름을 반환하는 걸 알 수 있습니다 #!/usr/bin/python3 from flask import Flask, request, render_template, render_template_string, make_response, redirect, url_for import socket app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' app.secret_key = FLAG @app.route('/') def index(): return render_tem..
서버 생성 / 문자 파일 다운 페이지를 살펴보면 지난 시간에 푼 command-injection-1 문제와 유사합니다 혹시 몰라 os 명령어를 같이 전송하니 필터링 과정 없이 정상적으로 ls 명령어가 작동되어 flag 위치를 찾아냈습니다.. (지난 시간에 푼 문제가 왜 새싹인지 의문이 드네요) 너무 허무하게 flag 값을 찾아냈습니다 [ 선수 학습 내용 ] 더보기 OS Injection이란? OS Injection OS Command Injection 또는 Shell Injection은 웹 응용 프로그램이 구동 중인 웹 서버 운영체제에서 명령을 실행하는 취약점입니다 이때 웹 응용 프로그램은 HTTP 폼, HTTP 헤더, 쿠키와 GET 파라미터 mu-sa.tistory.com 'Kali Linux/Linu..
Web Template Engine 웹 템플릿 엔진은 동적인 웹 페이지를 생성하기 위해 사용되는 도구나 프레임워크입니다 보통 HTML, CSS, JavaScript 등 프론트엔드와 백엔드 코드 데이터를 결합하여 사용자에게 동적인 웹 페이지를 제공합니다 이 웹 템플릿 엔진은 서버 사이드 템플릿 엔진과 클라이언트 사이드 템플릿 엔진으로 나눠집니다 프레임워크 : 소프트웨어 개발을 위해 사용되는 구조화된 환경 또는 플랫폼을 뜻함 서버 사이드 템플릿 엔진 (Server Side Template Engine) 클라이언트가 데이터를 전달하면 웹 서버는 DB 또는 API에서 데이터를 미리 정의된 템플릿에 넣어 html을 구성합니다 그리고 구성된 html을 다시 클라이언트 쪽으로 전달해 줍니다 즉 HTML 코드에서 고정..