디지털포렌식과 친해지기
  • 디지털포렌식전문가 2급 실기와 친해지기(실기)
    • 1. 디지털 포렌식 실기 준비하기
      • 1. BIT, BYTE, 파일 그리고 Hash
      • 2. 섹터와 사본 이미지 생성
        • 2-1. FTK Imager 활용 물리이미징(Registry 쓰기방지)
        • 2-2. EnCase 활용 물리이미징(EnCase 쓰기방지)
        • (연습용) 가상디스크 만들기
      • 3. 파티션과 파일시스템 복구
        • 3-1) 파티션과 파티션 테이블
          • 3-1.1) GPT 헤더, 파티션 Entry 복구
        • 3-2) 파일시스템과 파일시스템 복구
        • 3-3) 파일시스템 복구 실전 연습
      • 4-1. 무료도구 활용 분석연습
        • 0) 이미지 획득 및 파일시스템 복구
        • 1) 저장매체와 파일시스템 분석
        • 2) 파일과 친해지기
        • 3-1) 파일 관련 분석 1
        • 3-2) 파일 관련 분석 2
        • 4-1) 윈도우 아티팩트1
        • 4-2) 윈도우 아티팩트2
        • 5) 주요 응용 프로그램 아티팩트
          • 5-1) Sqlite 열어보기
        • 6) 키워드 검색 / Base64 Decode
        • 7) bitlocker
        • 8) 가상머신(참고)
        • 무료도구 활용 분석연습 정리
      • 4-2. EnCase 활용 분석연습
        • 0) 이미지 획득 및 파일시스템 복구
        • 1) 저장매체와 파일시스템 분석
        • 2) 파일과 친해지기
        • 3-1) 파일 관련 분석 1
        • 3-2) 파일 관련 분석 2
        • 4-1) 윈도우 아티팩트1
        • 4-2) 윈도우 아티팩트2
        • 5) 주요 응용 프로그램 아티팩트
          • 5-1) Sqlite 열어보기
        • 6) 키워드 검색 / Base64 Decode
        • 7) bitlocker
        • 8) 가상머신(참고)
        • EnCase를 활용한 분석연습 정리
      • 5. 주관식 - 기본 절차 및 증거법 관련
        • (정리 중) 디지털 증거관련 주요 판례
      • 6. 답안 제출 및 보고서 작성
      • 7. 요령 및 주의사항
    • 2. 실력 다지기
      • 1. 문제 저장매체 만들고 풀어보기
        • 기초 연습문제1-분석해보기(무료도구)
        • 기초 연습문제1-분석해보기(EnCase)
      • 2. 파일시스템 복구 연습
      • 3. NTFS 로그 분석 연습
    • 3. 실전 연습 문제
      • 2018 실전 연습 문제
        • 2018 실전 연습 - 분석해보기(무료도구)
        • 2018 실전 연습 - 분석해보기(EnCase)
      • 2019 실전 연습 문제
        • 2019 실전 연습 - 분석해보기(무료도구)
        • 2019 실전 연습 - 분석해보기(EnCase)
      • 2020 실전 연습 문제
        • 2020 실전 연습 - 분석해보기(무료도구)
        • 2020 실전 연습 - 분석해보기(EnCase)
      • 2023 실전 연습 문제(종합유형)
        • 2023 실전 연습 - 분석해보기(무료도구)
        • 2023 실전 연습 - 분석해보기(EnCase)
      • 2024 실전 연습 문제
        • 2024 실전 연습 - 분석해보기(무료도구)
        • 2024 실전 연습 - 분석해보기(EnCase)
    • 4. 기출 유형
  • 디지털포렌식과 친해지기
    • 1. BIT의 저장
      • 0) 준비사항!
        • 0-1) 주요 분석 도구 간단 소개 및 설정
        • 0-2) Python 을 이용한 개발 환경 구성
        • 0-3) Python 소스로 실행파일 만들기
      • 1) BIT, BYTES와 파일 그리고 Hash
        • 1-1) Hex Viewer 만들기
        • 1-2) BIT의 저장(참고)
      • 2) 저장매체와 섹터 그리고 물리이미징
        • 2-1) 가상 디스크 설정
        • 2-2) 물리이미징(raw) 실습
        • 2-3) 물리이미징 수집 도구 만들기(기초)
      • 3) 파티션
        • 3-1) MBR 파티션 테이블 구조
        • 3-2) GPT(GUID Partition Table) 구조
        • 3-3) 파티션 분석 도구 만들기(기초)
      • 4) 파일시스템 기초 분석
        • 4-1) 파일시스템 직접 만들어 보기
        • 4-2) FAT32 분석
          • 4-2.1) FAT32 분석(BR, Directory Entry - 데이터의 접근)
          • 4-2.2) FAT32 분석 2(FAT, LFN, 삭제)
          • 4-2.3) FAT32 분석 3 (특징과 분석 도구)
        • 4-3) NTFS 기초 분석
          • 4-3.1) NTFS 기초 분석(NTFS BR과 DATA 영역)
          • 4-3.2) $MFT와 MFT Entry
          • 4-3.3) MFT Entry의 주요 속성1($SI,$FILE,$DATA)
          • 4-3.4) MFT Entry의 주요 속성2(인덱스1, resident/Nonresident)
          • 4-3.5) MFT Entry 찾기(인덱스2, $ATTRIBUTE_LIST)
          • 4-3.6) NTFS 에서 파일의 접근 정리
          • 4-3.7) NTFS 주요 메타데이터 파일
          • MFT Entry 분석용
      • 5) 파티션과 파일시스템
      • 6) 사본 이미지 생성(논리/물리이미징)
      • 7) 파일과 친해지기
Powered by GitBook
On this page
  • 1. BIT
  • 2. BYTES와 글자의 표현
  • 3. 파일
  • 4. HASH
  1. 디지털포렌식과 친해지기
  2. 1. BIT의 저장

1) BIT, BYTES와 파일 그리고 Hash

Previous0-3) Python 소스로 실행파일 만들기Next1-1) Hex Viewer 만들기

Last updated 17 days ago

기초중에 기초! bit와 데이터의 표현을 알아봅시다.

1. BIT

  • 0 과 1 을 표현하는 단위

  • 4비트로 표현 할 수 있는 범위(0~9,A~F) 하단의 Binary 의 경우 1자리에 0 또는 1만 표시할 수 있을 경우 4비트를 하나의 문자로 표현이 가능합니다.

  • 또한 1바이트로 표현하는 것이 16진수를 활용하여 표기에도 용이하여 활용

2. BYTES와 글자의 표현

  • 8bit = 1byte 왜 하필 8 비트인가? 0000 0000 ~ 1111 1111 ( 256 가지 표현 가능)

  • 숫자 10개(0~10), 영어 대문자 26개, 영어 소문자 26개 = 62개 글자표현을 위해선 최소 64개를 표현할 수 있는 6비트 이상이 필요

  • 그렇다면 6비트만 써도 되겠지만.. 특수기호(!, “, ‘, @, #, $) 를 포함하려면 더 필요 -> 7비트를 사용한다면 총 128개 표현 가능.

  • 그리고 오류검출용 코드를 1비트를 포함하여 총 8비트를 사용 ⇒ 아스키 코드

  • 글자의 표현 실습

    • 실습

3. 파일

  • 파일의 개념은 다양하게 해석할 수 있지만 디지털포렌식과 친해지기에서는 간단히 저장공간에 bit가 모여있는 것을 하나의 파일로 생각하고 활용하도록 하십니다.

  • 밑에서 실습해 보겠지만, 단순히 아무 것도 없이 "00" 이라는 1바이트를 저장한 것도 하나의 파일이고, 엄청난 용량의 동영상도 하나의 파일입니다.

  • 문서파일, 그림파일 등등등 다양하게 있지만, bit가 모여 있는 것을 어떻게 보여주냐에 따라서 문서파일이 될 수 있고, 그림파일이 될 수 있습니다. 이 부분은 추후에 다른 실습을 하면서 보다 이해하면서 친해져봅시다!

4. HASH

  • 입력 데이터(bit)가 어떤 값이든 간에 출력 결과는 고정된 길이의 bit를 출력하는 값 다만, 입력 데이터의 1bit 만 달라져도 출력 데이터는 완전 다른 값이 출력됩니다. (해시, 해시값, 체크썸 등등.. 으로도 불린다.)

  • 알고리즘 종류 : md5, sha, sha-256, sha-512 등등.. md5(128 bit의 출력) → 128bit → 16진수로 32자리 128 / 4 = 32자리

  • Windows Power Shell get-filehash 로 실습해보기

  1. HxD를 이용하여 파일을 생성하여 봅시다. HxD에서 파일 - 새로 만들기 또는 새로 만들기 아이콘 선택 후 "00 00" 값을 넣고 저장하여 봅시다. (파일명은 아무거나 상관없습니다.)

  2. MD5로 “00 00”의 데이터를 가진 파일을 MD5 알고리즘으로 계산하였을때 나오는 결과값을 알아봅시다. 테스트할 파일이 있는 폴더에서 shift 누른 상태에서 우클릭 - [여기에 PowerShell 창 열기] 선택합니다.

  3. 아래 명령어를 입력하여 봅시다. get-filehash “파일명” -algorithm md5 해시값이 아래와 같은 값을 확인할 수 있을 것입니다. C4103F122D27677C9DB144CAE1394A66 (128비트 = 4비트 32자리) 값을 확인할 수 있습니다.

  4. 만약 1이라도 바뀐다면 어떻게 되는지 살펴봅시다. 마지막 비트를 1로변경하여 봅시다. 00 00 (16진수 Hex) => 0000 0000 0000 0000 (bit) 00 01 (16진수 Hex) => 0000 0000 0000 0001 (bit) 이후 다시 같은 명령어를 입력하여 Hash 값을 비교하여 봅시다. > 441077CC9E57554DD476BDFB8B8B8102 (128비트 = 4비트 32자리)

  5. 다시 원래대로 수정하여 해시값을 비교하여 봅시다. > C4103F122D27677C9DB144CAE1394A66 다시 처음과 같은 값

  • 다만 해시값만 가지고는 원본이 무엇인지 정확히 알 방법이 없습니다. 이러한 특성을 이용하여 bit의 묶음(파일 등등..)이 변경되지 않았음 입증하는데 활용하고 있습니다.

여기서 의문! 해시 알고리즘은 정말 모든 데이터에 대해서 모두 다른 출력값을 가질까??
  • 그냥 단순하게 생각해보자. MD5는 128bit를 출력한다. 0000 ... 0000(0으로 된 값 128bit) 에서 1111 ... 1111 (1만으로 128bit) 를 표현할 것인데.. 그럼 2의128승으로약 340 언덱실리온 undecillion 개의 다른 값을 표현할 수 있다. 340,282,366,920,938,463,463,374,607,431,768,211,456 개를 표현할 수 있지. 그럼 용량으로 얼마나 될까?? 2의128승은 16바이트로 표현할 수 있는 범위에 해당 합니다.

  • 따라서 16바이트 초과하는 용량의 파일부터는 이론적으로 16바이트 이하의 어떤 파일과 동일한 MD5 해시값을 가질 수 있다. 하지만 실제로는 2^128이라는 숫자가 너무 거대해서 우연히 충돌을 발견하기는 거의 불가능에 가깝기는 합니다.

  • 이 이야기를 한 이유는 해시값의 한계를 잘 알고 있어야 하며, 이미 MD5 의 알고리즘을 분석하여 취약점을 발견되어 MD5는 위험하다고 합니다. 이러한 이유로 MD5보다 많은 출력 bit 값을 가지는 해시 함수도 등장하였고 이를 함께 활용하는 것을 권고 하고 있다. 실무에서도 MD5 + SHA512 등등.. 다른 해시도 함께 사용한다면 조금 더 안전하다고 생각되어 활용하는 케이스도 있는 것 이 그 이유이다.

  • 위의 값은 단순하게 생각한 것이고, 실제로 MD5 알고리즘은는 이미 많은 사람들이 분석하여 다양한 자료들이 인터넷에 많으니 관심 있으면 찾아보면 보다 상세히 알수 있다. 다만 위에 수치에서 알 수 있듯이, 단순히 우리가 일상적으로 사용하는 수준에서는 MD5도 무난하게 사용할만 수준으로 보이며, 거의 모든 포렌식 도구들이 해시값을 활용하여 표시해주기 때문에 우선은 MD5도 친하게 활용해보도록 하자.

3줄 요약

  1. 이 부분은 모든 것의 시작이다. 다만 한 두번만 실습해보면 모든게 이해가 된다.

  2. bit는 0과 1을 저장하며, 8bit를 묶어서 하나의 바이트로 한글자를 표현했었다.(영어는..) 다만 8bit로 세계의 모든 글자 표현이 한계가 있기 때문에 여러 바이트를 이용하여 글자를 표현하고 있다. (유니코드니 뭐 등등.. 종류는 많지만 개념은 동일)

  3. Hash는 bit가 1만 바뀌어도 다른 값을 갖는다.

한글의 표현 - 1bytes 만으로는 한글의 모든 글자를 표현하기 어렵기 때문에 최소 2 bytes 이상으로 만듬 2bytes = 16 bit = 2의 16승 (65,566 가지 표현 가능 0000 0000 0000 0000 ~ 1111 1111 1111 1111) CP949 한국어판 윈도우 기본 코드 페이지. - 문자집합 위키 cp949 엑셀표 - 출처()

실습도구(HxD)

인터넷에서 다운받은 MD5를 계산하는 어떠한 md5 hash를 계산하는 프로그램을 이용하여도 동일한 결과를 갖습니다. - 해시계산 프로그램 사이트 : (니르소프트는 앞으로 자주 사용할 사이트!) - 해시계산 프로그램 다운로드 :

https://charset.fandom.com/ko/wiki/CP949
https://anow.tistory.com/240
https://mh-nexus.de/downloads/HxDSetup.zip
https://www.nirsoft.net/utils/hash_my_files.html
https://www.nirsoft.net/utils/hashmyfiles.zip
3MB
cp949.xls
3bit를 이용하여 표현 할 수 있는 경우