본문 바로가기

SWUFORCE/Dreamhack

[드림핵 스터디] 3주차 - 디지털 데이터와 디지털 장치

디지털 데이터

* 컴퓨터에서 2 바이트 이상의 데이터 저장할 때 빅 엔디언(Big Endian) 방식과 리틀 엔디언(Little Endian) 방식 중 하나 이용

 

 

리틀 엔디언(Little Endian)

  • 작은(Smallest) 바이트부터 메모리에 저장하는 방식
  • 예를 들어 0x01234567 을 메모리에 저장한다면, 아래 사진과 같이 저장됨

 

 

 

디지털 포렌식 분야에서 리틀 엔디언 표현 방식이 중요한 이유

  • 디지털 포렌식 분야에서 주로 다루는 Windows 운영체제는 대부분 Intel 기반의 CPU 아키텍처로 구성되어 있고, Intel 등 상당 수의 CPU 아키텍처는 리틀 엔디언 방식을 따르기 때문에
  • 디지털 포렌식 분야에서는 파일 시스템이나 파일 구조를 자주 분석함 이때 리틀 엔디언 표현 방식으로 값을 읽는 경우가 많음

 

 

 

리틀 엔디언 실습

- VBR(Volume Boot Record) 값을 HxD로 조회

- 아래 정보 참고해 값 직접 해석 실습

  • 0x0B - 0x0C (2byte): Bytes per sector
  • 0x0D - 0x0D (1byte): Sectors per cluster
  • 0x1C - 0x1F (4byte): Hidden sectors
  • 0x28 - 0x2F (8byte): Total sectors

VBR 값 HxD 조회한 모습

 

 

해당 정보에 따라 리틀 엔디언으로 값을 올바르게 해석하면 다음과 같음

  • Bytes per sector = 0x200
  • Sectors per cluster = 0x8
  • Hidden sectors = 0x3A800
  • Total sectors = 0x3A1E246F

 

 

[주의점]

  • 파일 시그니처(File Signature): 파일의 형식을 구별하기 위해 파일의 앞이나 뒤에 삽입하는 고유한 값
    • 리틀 엔디언 방식 사용할 때 파일 시그니처 영역은 리틀 엔디언 적용하지 않고 보이는 그대로 읽기도 함
      → 예를 들어, 0x03 - 0x0A (8byte): OEM ID
    • 리틀 엔디언 방식으로 값 읽는다면 SFTN으로 읽어야 하지만 대부분의 경우에 NTFS라고 읽음, 이런 특징은 시그니처 영역만 예외적으로 적용된다고 생각하면 됨

 

 

 


 

 

 

인코딩

  • 데이터를 정해진 규칙에 따라 특정한 형식으로 변환하는 것
    • 인코딩과 암호화의 차이
      → 암호화는 관련 지식을 소유한 사람들을 제외하고는 누구든지 읽을 수 없도록 암호화 알고리즘을 이용해 암호화된 정보를 생성하는 과정
      → 인코딩 된 데이터는 누구나 규칙에 따라 디코딩하여 해석할 수 있지만, 암호화된 데이터는 암호화 키가 없이는 누구도 복호화할 수 없음
      → 인코딩은 데이터를 전달하는 것이 목적, 암호화는 데이터가 유출되거나 변조되지 않도록 하는 게 목적
  • 디지털 포렌식에서 자주 쓰는 인코딩 종류: ASCII 인코딩, Base64 인코딩, UTF-8 인코딩

 

 

 

ASCII 인코딩

  • ASCII 테이블에 따라 값을 문자로 변환하는 인코딩
    → ASCII 테이블: 128개의 문자와 특수문자를 0x00 ~ 0x7F(0~127)의 숫자로 매핑하는 테이블

 

  • HxD 도구에서도 아스키 인코딩에 따라 값 해석함 - 왼: 파일의 Hex 값, 오: ASCII로 해석한 문자열 표시

HxD에서 ASCII 인코딩

 

  • 데이터 분석할 때 ASCII 인코딩을 알아야 하는 이유는 커다란 바이너리 데이터 내부에서 텍스트 데이터를 찾아낼 수 있기 때문
  • ASCII 테이블 중에서도 특히 기억하고 있어야 하는 내용
분류 ASCII (Hex) 설명
줄바꿈 0xA, 0xD Windows: 0xD 0xA
Linux/MacOS: 0xA
숫자 0x30 ~ 0x39 0 ~ 9
영어 대문자 0x41 ~ 0x54 A ~ Z
영어 소문자 0x61 ~ 0x7A a ~ z (대문자와 소문자는 각각 0x20 차이)

 

 

 

Base64 인코딩

  • 바이너리 데이터를 미리 지정된 64개의 문자를 이용해 표현하는 인코딩 방법
  • 바이너리 데이터는 0x00 부터 0xFF 까지 값을 가지는 반면, Base64 인코딩은 오직 패딩으로만 사용되는 = 문자를 제외하고 64개의 문자만 이용 Base64 적용된 데이터는 원본에 비해 길이 약간 증가
  • 독특한 형태 지니므로 데이터 형태보고 적용 여부 파악 가능 (영어 대·소문자, 숫자, 일부 특수문자 이용)
    • Dreamhack! → RHJlYW1oYWNrIQ==
    • Hunjison SHVuamlzb24=
    • Digital Forensics Basics → RGlnaXRhbCBGb3JlbnNjaXMgQmFzaWNz
  • 인코딩에 사용되는 문자열
    : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
  • Base64 인코딩 및 디코딩 쉽게 할 수 있는 웹사이트
    (인코딩, 디코딩할 크기가 너무 클 경우 Python 등 프로그래밍 언어 통해서도 할 수 있음)

 

 

UTF-8 인코딩

  • 가변길이 인코딩* 방식 중 하나, 현재 가장 많이 사용됨 (주로 유니코드에 사용)

* 가변길이 인코딩: 입력 값이 존재하는 범위에 따라 인코딩 결과를 표시하는 바이트 수가 달라지는 인코딩 방식. 이 때문에 가변길이 인코딩 방식에서는 데이터를 몇 바이트 단위로 끊어 해석해야 할지 알려주는 지시자를 인코딩 된 데이터에 포함시킴.

 

  • 유니코드는 ASCII와 달리 전 세계의 모든 문자를 다루도록 설계된 표준 문자 전산 처리 방식임
    (한글은 U+AC00 ~ D7A3로 매핑됨)
  • 유니코드 내 한글이 가지는 범위 값에 UTF-8 인코딩을 수행하면 3바이트의 크기를 가지게 됨 → 아래와 같은 모양을 가지기 때문에, 해당 패턴을 이용해 바이너리 데이터 속 한글 데이터 찾아낼 수 있음 (영어 대·소문자와 숫자는 UTF-8 인코딩과 ASCII 인코딩 결과 동일)
    • 유 → 0xEC 0x9C 0xA0 
    • 니 → 0xEB 0x8B 0x88
    • 코 → 0xEC 0xBD 0x94
    • 드 → 0xEB 0x93 0x9C

 

 

 


 

 

 

파일 시그니처(File Signature)

  • 파일의 콘텐츠를 식별하기 위해 사용되는 데이터
  • 파일 시그니처가 파일의 앞부분에 존재하면 헤더(Header) 시그니처, 뒷부분에 존재하면 푸터(Footer) 시그니처
  • PNG 파일의 헤더 시그니처: 89 50 4E 47 0D 0A 1A 0A (문자열 PNG 포함) / 푸터 시그니처: 49 45 4E 44 AE 42 60 82 (문자열 IEND 포함)

PNG 파일의 헤더 시그니처 / 푸터 시그니처

 

 

 

 

파일 시그니처의 필요

  • 해당 파일의 형식 구별 가능 - 이미지인지, 압축 파일인지, 소리 파일인지
  • 파일 이름 뒤에 붙이는 확장자(.png)는 사용자가 얼마든지 변경 가능하므로 컴퓨터는 시그니처를 이용해 파일 해석함
분류 파일 형식 헤더 시그니처 푸터 시그니처 비고
그림 PNG 89 50 4E 47 0D 0A 1A 1A
P N G
49 45 4E 44 AE 42 60 82
I E N D
 
그림 JPG(JPEG) FF D8 FF E0 XX XX 4A 46 49 46
J F I F
FF D9  
압축 ZIP 50 4B 03 04
P K
   
압축 7Z 37 7A BC AF 27 1C
7 Z
   
문서 PDF 25 50 44 46
% P D F
25 25 45 4F 46
% % E 0 F
 
문서 DOCX
XLSX
PPTX
50 4B 03 04
P K
  ZIP과 구조 동일

 

 

 

 

파일 확장자(Filename Extension)

  • 파일의 이름에서 파일의 종류와 역할을 표시
  • 사용자가 임의로 바꿀 수 있으므로 정확 X

자주 사용되는 파일 확장자들

 

 

 

 

파일 확장자 활용

  • Everything: 컴퓨터에 있는 모든 파일을 쉽게 검색할 수 있는 도구 (설치는 이미 있으므로 생략)

 

Everything 실습

  • 특정 경로 내 모든 파일 검색 - 경로의 하위 폴더까지도 모두 재귀적으로 검색됨
path:<검색경로>​

해당 경로 내 파일 검색 - path:C:\Program Files\Everthing

 

 

 

  • 조건 이용하여 검색 - 모든 조건을 다 만족하는 파일만이 목록에 나열됨
path:<검색경로>		// 해당 경로 내에 있는 모든 파일 검색
*.exe			   // .exe 를 이름으로 하는 모든 파일
size:<크기조건>    // 해당 크기 조건을 만족하는 모든 파일

path:C:\Program Files\Everything *.exe size:>1000kb

 

 

* 이 외의 자세한 도구 사용 방법 - 링크

 

 

 


 

 

 

저장장치

 컴퓨터 구조와 저장장치

컴퓨터 구조 도식화

 

 

 

 

메모리(RAM)

  • 휘발성 메모리 저장, CPU에서 접근 속도가 빠르기 때문에 주기억장치라고도 부름
  • 길고 얇으면서 아래쪽에 연결 단자가 있는 형태
  • RAM 메모리는 RAM 슬롯에 장착되어 있음 but 휘발성 데이터이므로 분리할 일 거의 X
    (오히려 컴퓨터가 켜져 있는 생테에서 획득하는 것이 일반적)

 

 

 

하드디스크(HDD)

  • 일반적으로 저장장치라고 부르는 장치 - 하드디스크와 SSD: 비휘발성 데이터 저장
    (바탕화면이나 C 드라이브에 저장된 파일들이 이 장치에 저장됨)
  • 기업용 PC나 오래된 컴퓨터, 대용량 저장이 필요한 경우 많이 사용됨

하드디스크의 외부 모습 - 충격으로 인한 데이터 손상을 방지하기 위해 커버 씌워져 있음 / 내부 모습

 

  • 데이터가 기록되어 있는 동그란 플래터가 계속해서 회전하고, 바늘 모양의 헤드가 플래터로부터 데이터를 읽어오는 방식
  • 하드디스크는 크기가 큰 편이고 충격에 약하기 때문에 보통 별도의 슬롯에 보관되어 있어 찾기 쉬움

 

 

 

SSD(Solid-state drive)

  • 반도체를 사용해 데이터 저장하는 장치
  • 하드디스크에 비해 높은 속도와 안정성을 가지므로 최근에는 하드디스크를 대체해 많이 사용됨
  • 연결되는 인터페이스의 종류에 따라 모양이 달라짐

1번째 사진 - 내장형 SSD / 2, 3번째 사진 - 외장형(Portable) SSD: USB 외부 포트를 통해 연결

 

 

 

 

USB(Universal Serial Bus) 플래시 드라이브

  • USB: 컴퓨터와 다른 기기를 연결해 전원을 공급하거나 데이터를 전송하기 위해 만들어진 일종의 프로토콜
    → 이 표준 규격을 이용해 데이터를 저장하는 장치를 USB 플래시 드라이브라고 부름 (짧게 줄여서 USB or USB 메모리)
  • 디지털 포렌식 관점에서는 반드시 수집해야 할 저장장치 (휴대성이 좋아 파일 이동하거나 보관하기 위한 용도로 많이 사용하므로)

다양한 USB

 

 

 

 

SDCard

  • USB보다도 작고 가벼운 저장장치
  • 주로 디지털카메라, 내비게이션, 블랙박스 등 소형 기기에서 사용됨
  • 3가지 종류의 크기 가짐 - SD, miniSD, microSD

SDCard

 

 

저장장치의 종류 - 메모리(RAM), 하드디스크, SSD, USB 플래시 드라이브, SDCard

 

 

 


 

 

 

저장장치 인터페이스

* 인터페이스(Interface): 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면

  • 수집한 저장장치를 어떻게 연결해 데이터를 읽어올 수 있는가

 

 

 

IDE / ATA

  • IDE(Integrated Drive Electronics): 과거 하드디스크 연결을 위해 제작된 표준 인터페이스 규격
    → 이후 이름이 ATA(Advanced Technology Attachment)로 변경됨
    → ATA의 후속 규격인 SATA와 차이를 두기 위해 PATA(Parallel ATA)라고도 부름
    : IDE, ATA, PATA  모두 같은 것 지칭하는 용어

왼 - HDD에 연결할 수 있는 암 IDE 단자 (왼쪽에 IDE 커넥터, 오른쪽에 전원 연결) / 오 - IDE 커넥터, 총 40핀의 규격 가짐, 리본 케이블이라고도 부름

 

 

 

 

SATA(Serial ATA)

  • 직렬(Serial) 전송 방식 이용하면서 기존 IDE 방식에 비해 더 빠른 속도와 안정성 지원(데스크톱에서 가장 많이 이용됨)

SATA 하드디스크 연결 단자 / SATA 데이터 커넥터 / SATA 파워 커넥터

 

 

 

 

PCI / PCIe

  • PCI(Peripheral Component Interconnect Bus): 컴퓨터 메인 보드에 주변 장치를 장착하기 위한 컴퓨터 버스* 의 일종이자 인터페이스, 속도가 더 빠르면서 다양한 크기를 가진 PCIe(PCI-express)도 같이 사용됨
  • PCI - 고정된 크기 / PCIe - 다양한 크기
  • PCI/PCIe 는 주로 그래픽 카드 연결하는 데에 이용되지만 SSD와 연결되는 경우도 있음 → 이 경우, SSD 자체에서 직접 연결하는 것을 지원하거나(아래 사진에서 왼쪽), M.2 단자를 이용하여 연결할 수 있도록 변환하는 어댑터(아래 사진에서 오른쪽)를 사용하는 방식이 있음

* 버스(Bus): 컴퓨터 부품을 연결해 정보를 전송할 수 있도록 하는 통신 시스템

저장장치 인터페이스 - PCI/PCIe(왼), PCle(오)

 

 

 

 

M.2

  • 데스크톱에서는 SATA 인터페이스가 가장 대중적으로 사용되었지만 크기 때문에 소형 디바이스에 적용되기에는 어려움이 있었음 → 이 때문에 단체에서 mPCle(mini PCI-express), mSATA(mini SATA) 등 발표하기도 함
  • 이러한 배경 속에서 등장한 소형 커넥터 규격, 현재 가장 많이 사용됨
  • 최근 출시되는 데스크톱이나 노트북에는 M.2 전용 슬롯이 있어, 아래 오른쪽 사진과 같이 직접 장착하는 경우 많음

Storage device interfaces - M.2 1(왼), M.2 2(오)

 

M.2 커넥터 종류(M.2는 단순 연결 단자 표준이므로, 여러 형태 존재 → 데이터 전송 방식 달라짐)

 

 

 

 

USB(Universal Serial Bus)

  • 장치와 장치를 연결하는 인터페이스의 규격이자 동시에 데이터 전송하는 프로토콜
  • 타입
    - A 타입 USB: 가장 일반적으로 사용됨 (저가형 USB, 키보드, 마우스, 무선 블루투스 등)
    - B 타입 USB: 현재 자주 사용 X, 과거 디지털카메라나 프린터·MP3 등에 이용됨
    - C 타입 USB: 빠른 속도로 최근 많이 사용됨
  • USB 2.0 버전과 3.0 버전이 주로 사용됨 → 이론적으론 서로 호환 가능하지만, 간혹 동작하지 않는 경우 있음

USB 2.0 / 3.0 (파란색 표시있는 애)

 

 

 

 


 

 

 

 

디지털 포렌식 도구

하드웨어 장비

 

1) 디스크 이미지 장비

  • 디스크 이미징이나 복제 수행
  • 수집 현장에서 하드디스크나 SSD 발견할 경우 이러한 장비들에 연결해 복제본 획득

대표적인 디지털 포렌식 장비 Logicube Falcon, 오른쪽 사진은 Falcon 내의 화면

 

 

 

 

2) 쓰기 방지 장치(Write-Blocker)

  • 하드디스크와 같은 저장 매체에 접속해 데이터를 살펴볼 때 데이터 쓰기를 방지해 불필요한 변조를 막아줌
  • 저장장치의 데이터는 단순 컴퓨터 부팅만으로 내용이 변해서 해시값이 달라지므로 증거로 사용하기 어려워지기 때문에, 쓰기 방지 장치 연결해 변조 방지

wirte blocker

 

 

 

 

3) 패러데이(Faraday)

  • 디지털 장치의 전자기파 차단하여 외부와의 통신 차단
  • 무선 통신이 주로 일어나는 스마트폰이나 임베디드 기기에서 불필요한 무선 통신으로 인해 데이터가 변조되지 않도록 해줌

Faraday

 

 

 

 


 

 

 

 

소프트웨어 도구

비휘발성 데이터 수집 및 분석 도구

 

1) FTK Imager

2) KAPE(Kroll Artifact Parser And Extractor)
: Eric Zimmerman의 도구 이용해 데이터 수집부터 분석까지 한 번에 수행할 수 있는 통합 플랫폼

KAPE

 

 

 

 

휘발성 데이터 수집 및 분석 도구

 - 시스템을 불필요하게 변형하지 않기 위해 GUI 도구보다는 CLI 기반의 도구 선호

Dumplt(왼) / Winpmem(중) / Volatility(오)

 

 

 

 


 

 

 

 

통합 포렌식 도구

  • 장점
     - 한 번에 많은 작업 수행 가능
     - 반복적인 작업들을 단순하게 처리 가능
  • 단점
     - 분석 시간 오래 걸림
     - 자동 분석만으로는 온전히 사건 해결 어려움 → 결국엔 전문가 필요
     - 유료이고 비쌈

대표적인 통합 포렌식 도구 Magnet AXIOM