DFIR

    카카오톡 복호화 (KakaoTalk.db decrypt)

    1. 카카오톡 복호화 이번 2021 KDFS DFC 문제에 카카오톡 대화내역을 분석해야 할 일이 있어서 찾은 카카오톡 데이터 복호화 방법과 관련해서 포스팅 해보겠습니다. 카카오톡의 대화내역 암호화 방법은 카카오톡 어플을 디컴파일해서 소스코드를 보면 알 수 있다고 합니다. 이에 대해서는 이미 많은 분들이 분석을 진행하셨더라구요. 분석을 하셨던 분들이 내린 결론은 카카오톡의 정수 형태 사용자 ID 값을 암호화 키 값으로 사용한다는 것입니다. 그래서 카카오톡 ID 값을 복호화 키로 사용하고 복호화 소스코드를 작성해서 복호화를 하면 대화내역 원문을 얻어낼 수가 있다는 것입니다. 그런데 분석 방법을 포스팅하신 분들이 복호화 코드는 또 공유를 안하셔서 이리저리 찾다가 깃허브에서 카카오톡 복호화 코드를 찾을 수 있었..

    ADS(Alternate Data Stream)와 디지털 포렌식

    안녕하세요. 저번 달 DFC(2021)에 ADS를 분석하는 문제가 출제되었더라구요, 덕분에 ADS에 대해서 공부를 해보게 되었습니다. 그래서 이번 포스팅에서는 악성 페이로드를 숨기는 데 자주 사용되는 기술인 ADS에 대해서 알아보겠습니다. 1. ADS(Alternate Data Stream) 개념 ADS는 macOS HFS 파일시스템과의 호환성을 목적으로 처음 생기게 되었으며, 파일에 사용되는 기본 스트림 외에 다른 데이터 스트림을 추가로 저장할 수 있는 NTFS 파일 시스템에서 제공하는 기능입니다. NTFS 파일시스템에서는 파일이 $DATA 속성을 하나 이상 가질 수 있습니다. 하나의 파일에 $DATA 속성이 여러 개 올 수 있다는 의미인데 추가적으로 존재하는 $DATA 속성을 ADS라고 합니다. 위 ..

    dwarf to json (dwarf2json)

    Dwarf to Json을 사용하는 이유 메모리 포렌식을 하려면 volatility를 써야합니다. 파이썬2가 개발이 중단되고 볼라틸리티도 파이썬2를 사용하는 구버전에서 파이썬3을 사용하는 볼라틸리티3으로 개발이 진행되고 있습니다. 볼라틸리티3과 2의 큰 차이점 중 하나는 윈도우즈 덤프 파일을 분석할 때 프로필을 지정해주지 않아도 된다는 점입니다. 하지만 리눅스나 맥의 경우 여전히 프로필을 생성하고 경로에 집어넣어줘야 합니다. 이 프로필 파일의 방식 또한 볼라틸리티3 버전에서 달라진 점이 있는데 다음과 같습니다. 기존에는 위와 같이 boot 폴더와 module.dwarf 파일이 존재하며 boot 폴더에는 System.map 파일이 있는 형태입니다. 볼라틸리티3 버전에서는 프로필 파일을 json 형태로 변환..

    디지털 포렌식 맛보기#2

    빅 엔디안과 리틀 엔디안(Big endian & Little endian) 데이터는 저장 장치에 저장이 될 때 "빅 엔디안"과 "리틀 엔디안" 두 가지 방법을 사용하게 됩니다. 빅 엔디안 방식은 그림 1과 같이 데이터를 읽을 때 평소 우리가 읽는 방식대로 왼쪽에서 오른쪽으로 읽는 방식입니다. 리틀 엔디안 방식은 그림 2와 같이 우리가 읽는 반대 방향인 오른쪽에서 왼쪽으로 읽는 방식입니다. 리틀 엔디안은 컴퓨터 연산이 단순해지고 빨라진다는 장점이 있습니다. 모든 x86_64 프로세서(Intel/AMD)는 리틀 엔디안을 사용하는 반면 IP/TCP는 빅 엔디안을 사용합니다. 분석하는 데이터가 어떤 엔디안 방식을 사용하는지 파악하는 것이 중요합니다. 시간 정보 디지털 포렌식의 관점에서 시간 정보는 사건이 발생한..

    디지털 포렌식 맛보기#1

    뉴스에서 디지털 포렌식이라는 용어를 한 번 쯤은 접해보신 적이 있으실 겁니다. 박원순 전 시장 휴대폰 포렌식, 의대생 한강 사건 휴대폰 포렌식, 연예인 정준영 황금폰 포렌식, 최순실 태블릿 pc 포렌식 등 굵직한 사건들마다 이 디지털 포렌식이라는 것이 따라오는 사례가 많이 있습니다. 이번 포스팅에서는 디지털 포렌식이 어떤 것인지 간략하게 살펴보도록 하겠습니다. 어느날 아침 주택가 인근 좁은 도로에서 살해된 여성의 시체가 발견되었습니다. 유력한 용의자를 잡았지만 CCTV 기록도, 목격자도 없어 범행시간 파악조차 어려운 상황입니다. 이 사건에서 범인을 검거할 수 있었던 결정적인 단서는 여성이 소지하고 있던 이것 입니다. 이것은 무엇일까요? 다음 포스팅에 다시 살펴보겠습니다. 디지털 포렌식 용어의 유래 먼저 ..

    클러스터(Cluster)

    클러스터 하드디스크의 읽기, 쓰기 작업은 섹터 단위로 이루어집니다. 하지만 섹터 단위로 입출력을 처리할 경우 용량이 큰 파일에 대하여 많은 시간이 요구됩니다. 보통 1섹터의 크기가 512 byte이므로 5,000 byte 크기의 데이터를 읽으려면 총 10번의 입출력(512 * 100 >= 5000)을 수행해야 하는 것입니다. 때문에 디스크의 입출력 처리 속도 효율을 향상시키기 위해 여러 개의 섹터를 묶어서 한 번에 처리하게 되고 이것을 클러스터 개념입니다. 예를 들어 10,000 byte 크기의 데이터를 읽을 때, 섹터 단위로 읽게 되면 20번(512 * 20 > 10,000) 읽어야 하지만, 클러스터 단위로 읽게 되면 3번(4,096 * 3 > 10,000)만 읽으면 되는 것입니다. 요약하자면 디스크의..

    디지털 포렌식과 해시(Hash)

    디지털 포렌식에서 매우 중요한 역할을 하고 있는 해시(Hash)는 무엇인지, 디지털 포렌식에서의 역할은 무엇인지 알아보겠습니다. 해시 함수 해시 함수에 데이터를 넣었을 때 나오는 결과 값을 해시 값, 해시, 해시 코드 등으로 부릅니다. 그렇다면 해시 함수는 무엇일까요? 해시 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. 쉽게 말해서 어떤 데이터를 넣어도 해시 함수의 종류에 따라 정해진 길이의 결과 값으로 반환하는 함수입니다. 해시 함수의 종류에는 MD5, SHA1, SHA256, SHA512 등 많은 종류가 있습니다. MD5 해시 함수는 항상 128bit 의 결과 값을 반환합니다. 하지만 위 사진을 보면 32char 인 것을 알 수 있습니다. 128bit = 16byte 인데..