[Digital Forensic] 하드디스크와 데이터 수집

 

하드디스크와 데이터 수집


(1) 하드 디스크 구조

 

비휘발성의 보조 기억 장치라고 설명할 수 있는 하드 디스크의 일반적 구조는 다음과 같다.

 

1-1. Platter (플래터)

  • 위 그림에 원판으로 된 부분이며, 데이터가 기록되는 부분

  • 금속 재질로, 데이터를 기록하기 위해 산화철 등의 자성체로 양면 코딩

  • 하드 디스크에는 한 개 또는 그 이상의 플래터들이 부착 가능

  • 많이 부착되면 될수록 용량은 커지지만 안정성에 대한 문제 증가

 

1-2. Spindle (스핀들)

  • 플래터의 회전을 담당하는 부분

  • 초기에는 볼 베어링이 사용되었지만, 최근에는 동압 유체 베어링이 많이 사용

  • 동압 유체 베어링은 완전한 원형 회전을 하게 하여 트랙 밀도를 높임

 

1-3. Actuator (액추에이터)

  • Actuator Head가 데이터를 읽을 수 있도록 Actuator Arm을 움직이도록 하는 부분

  • 구동을 위해 네오디뮴 자석을 사용하고, 누설 자속을 줄이기 위해 스테핑 모터를 사용 > 데이터 손실로 인해 헤드 파킹이 필요

  • 요즘은 음성 코일 방식을 사용 > 전원이 차단되어도 스핀들 모터의 관성에 의해 헤드가 제자리로 돌아가 헤드파킹이 필요 없어짐

 

1-4. Head (헤드)

  • 데이터를 읽고 쓰는 부분으로 플래터와의 간격이 마이크로미터 단위로 떨어져 데이터를 읽고 씀

  • 만약 플래터와 맞부딪힌 상태에서 스핀들 모터가 구동되어 헤드가 플래터에 닿는 경우 데이터 손상

  • 헤더 기록 방식에는 수직 기록 방식과 수평 기록 방식이 있음

 

수직 기록 방식 : 데이터를 수직으로 기록하여 수평 기록 방식에 비해 플래터 당 기록 밀도를 훨씬 높일 수 있고, 자성의 손실이 거의 없어 데이터 수명 또한 긺

 

수평 기록 방식 : 데이터를 수평으로 기록하여 자기장을 입히는 기록 도체를 수평으로 눕혀놓고 그 기록 도체에 자기장을 입혀 데이터를 기록하는 방식


(2) 하드 디스크 저장 방식

 

[그림 1] 플래터 구조

 

2-1. CHS 방식

  • 실린더(Cylinder), 헤드(Head), 섹터(Sector) 세 가지 요소를 이용한 방식

  • 물리적 주소 할당 방식

  • 실린더, 헤드, 섹터에 번호를 할당해 그 주소를 이용해 데이터를 찾아 읽고 쓰는 방식

  • 과거에 사용되었으며 용량이 커지는 현대 하드 디스크에 맞지 않는 한계를 보임

  • 요즘에는 쓰이지 않으며, CHS가 지원하는 용량의 임베디드(embeded) 하드 디스크들은 아직 이 방식 사용

 

2-2. LBA 방식

  • CHS 한계로 인해 고안된 방식

  • 모든 섹터에 논리적 고유 번호를 할당하는 방식

 

2-3. ZBR (Zone Bit Recording)

  • 요즘 사용하는 방식으로, 외부 트랙 길이가 내부 트랙 길이보다 길다는 점에서 착안하여 길이가 긴 트랙일수록 섹터를 많이 할당하도록 만드는 방식

  • CHS와 LBA 경우에는 트랙의 섹터 수가 모두 동일

  • ZBR은 트랙 길이마다 섹터 수가 다르기 때문에 데이터를 읽고 쓸 때 트랙에 섹터 수를 정확히 알고 있어야 함


(3) 하드 디스크 숨김 영역

  • 사용자 임의적 설정을 통해 숨김 영역을 설정할 수 있고 하드 디스크 제조 공정에서 숨김 영역이 생성 되어 설정 된 상태로 판매 되어 일반 사용자가 사용할 수도 있음

  • 악성코드나 하드 디스크에 대한 지식이 있는 사용자는 숨김 영역에 중요 데이터를 숨길 수 있음

  • 분석 대상 시스템에서 조사관이 흔적을 찾을 때 분석 영역 중 고려해야 하는 영역 중 하나

  • 하드 디스크 덤프 파일을 획득할 시에 하드 디스크 덤프 도구가 숨김 영역까지 덤프하는지 알아보고 사용해야 함

  • 숨김 영역을 덤프하지 못한다면 중요 데이터를 놓칠 수 있기 때문

 

3-1. HPA (Host Protected Area)

  • 데이터를 저장할 수 있는 영역이지만, 일반 사용자가 볼 수 없는 영역

  • 숨겨진 영역이며, 설정은 ATA 명령으로 가능

  • ATA-4에서 추가되었으며, 사용자가 하드 디스크를 포맷하거나 삭제했을 때도 데이터를 보존할 수 있는 영역

  • 하드 디스크 끝에 위치하며, 하드 디스크 재설정에 의해서만 접근 가능

 

HPA는 다음과 같은 두 명령어 결과값 차이를 보고 존재 유무 파악이 가능하다.

 

1) READ_NATIVE_MAX_ADDRESS

  • 물리적 주소 최대값을 반환하여 주는 명령어 (항상 이런 결과는 아님)

 

2) IDENTIFY_DEVICE

  • 사용자 영역(HPA 영역 앞 부분) 끝을 반환하여 주는 명령어

 

[그림 2] HPA 생성, 삭제 도식화

 

HPA 영역 설정은 SET_MAX_ADDRESS 명령어를 통해 이루어지며, 이 명령어 기능은 사용자가 접근할 수 있는 최대 주소를 설정한다.

 

HPA 영역 제거는 READ_NATIVE_MAC_ADDRESS 결과를 SET_MAC_ADDRESS 입력 값으로 이용하면 된다.

 

HPA 제거할 때에는 완전 제거와 임시 제거가 있으며, 완전 제거는 말 그대로 완전 제거되는 것이고, 임시 제거는 SET_MAC_ADDRESS 명령어 설정을 휘발성 비트 설정으로 하여 하드 디스크가 재설정되거나 전원이 재공급된 이후에 HPA 영역이 다시 복구되게끔 한다.

 

 

3-2. DCO (Device Configuration Overlay)

  • ATA-6에서 추가된 기능이며 HPA와 동일한 기능을 하는 영역

  • 컴퓨터에서 어떠한 기능을 제공하는지 IDENTIFY_DEVICE 명령어를 통해 확인하는데 DCO 기능은 자신의 기능을 IDENTIFY_DEVICE 명령어 결과값에 추가하지 않아 기능이 존재하지 않는 것처럼 보임

  • 지원 기능 목록 말고도 디스크 크기도 보여주는데 여기서 DCO 영역이 제외된 크기가 보여짐

  • HPA 영역도 있을 시에 HPA 영역도 제외

 

명령어 중에 DEVICE_CONFIGURATION_IDENTIFY 명령어의 기능은 디스크 크기와 실제 명령어 목록을 반환하여 준다. 

 

위 명령어와 IDENTIFY_DEVICE 명령어를 비교하여 DCO 탐지가 가능하다.

 

또 READ_NATIVE_MAX_ADDRESS 결과와 DEVICE_CONFIGURATION_IDENTIFY 결과를 비교하여 DCO 영역을 찾아 낼 수 있다.

 

DCO 영역 생성은 DEVICE_CONFIGURATION_SET 명령어로 하며, 삭제는 DEVICE_CONFIGURATION_RESET 명령어로 할 수 있다.

 

만약 HPA 영역까지 존재한다면 디스크 논리적 구조와 각 명령어들이 출력하는 결과물들이 있는 곳은 다음과 같다.

 

[그림 3] DCO 설정 도식화

 

포렌식 관점에서 보았을 때 이런 영역들은 상당히 성가시다.

 

혹여 유효 데이터가 해당 영역에 위치하고 있는데 해당 영역까지 디스크를 복사하지 않거나 분석하지 않으면 그 유효한 데이터를 얻지 못할 수도 있기 때문이다.

 

그래서 대부분 디스크 복제 도구나 장비들은 해당 영역이 있는지 파악한 후에 영역이 존재하면 해당 영역까지 복제를 시도한다.


(4) 데이터 수집

  • 하드 디스크에서 데이터를 분석하기 위한 단계 중 이 데이터 수집 단계가 필수적

 

4-1. 컨트롤러의 직접 접근

  • 하드 디스크 컨트롤러는 하드 디스크와 연결되어 있고 리본 케이블로 하드 디스크에 명령을 내림

  • 소프트웨어는 하드 디스크 컨트롤러를 통해 디스크 데이터에 접근할 수 있으며, 이때 소프트웨어는 하드 디스크 컨트롤러의 주소 지정, 데이터를 읽고 쓰기 위한 명령어 등 세부적 사항을 모두 알고 있어야 함

  • 속도면에서는 좋지만 소프트웨어 개발 시 부담이 많이 가는 접근법

 

4-2. 컨트롤러의 BIOS 접근

  • BIOS를 통해 디스크 데이터에 접근하게 되면 컨트롤러 직접 접근법에서 알아야 했던 하드 디스크의 모든 세부 사항을 소프트웨어가 인식하고 있지 않아도 됨

  • 소프트웨어는 BIOS 하드 디스크 서비스들을 사용하기 위해 섹터 주소와 섹터 크기 같은 데이터를 CPU 레지스터 내부로 적재하고, 소프트웨어 인터럽트 명령어 0x13(INT13h)을 실행하면 됨

INT13h : 데이터를 읽고 쓰고 하기 위한 질의들을 포함하는 명령어

 

 

원래 INT13h의 경우 CHS 방식에서 사용하던 명령어여서 8.1GB까지만 읽고 쓸 수 있어 LBA 방식에는 맞지 않아 '확장 INT13h'라는 것이 새로 추가되었다.

 

지금까지의 설명을 보면 소프트웨어 입장에서 BIOS를 통한 접근법이 좋아 보이지만, 조사관 입장에서는 시스템과 도구에 따라 다르게 보일 수 있다. 

 

이유는 다음과 같다.

 

접근법의 차이

  • 결론부터 말하면 BIOS 접근법은 시스템과 도구에 따라 정확한 결과를 얻지 못할 수 있다.

 

BIOS에서 확장 INT13h를 사용하지 않고 기존 CHS 방식 INT13h를 사용한다면 위와 같은 현상이 발생한다.

 

소프트웨어가 BIOS를 통해 디스크 크기가 몇이냐고 명령을 내렸다면 대상은 10GB 디스크일 때 INT13h를 사용하는 BIOS일 경우 8.1GB로 인식하기 때문에 결과값을 8.1GB로 돌려줄 것이다.

 

만약 이 명령이 모든 디스크 데이터를 복사하라는 명령이었다면 10GB에서 8.1GB 크기 데이터만 복사해 올 것이다.

 

이렇게 되면 2GB 데이터를 수집하지 못하는 것이다.

 

직접 접근법의 경우 BIOS 상관 없이 LBA 형식 확장 INT13h를 사용해 디스크 크기를 정확하게 알아낼 수 있다.

 

[그림 4] BIOS 접근법과 직접 접근법

 

위 그림과 같은 문제로 자신이 사용하는 도구가 어떤 접근법을 가지고 데이터를 수집하는지 파악해 놓고 있어야 하며, 만약 BIOS를 사용한다면 어떤 INT13h 명령어를 사용하는지 알아야 한다.

 

 

4-3. 동적 수집

  • 분석 대상 시스템 운영체제가 동작한는 상태에서 데이터를 수집하는 것

  • 이 방법은 매우 신뢰성이 떨어짐

  • 악의적인 공격자나 루트킷 등에 의해 운영체제가 변조되었을 가능성이 있기 때문에 변조된 운영체제를 통해 수집된 데이터 또한 엉뚱한 데이터나 증거가 남아 있지 않을 수도 있기 때문 

 

4-4. 정적 수집

  • 이동 장치로 부팅하여 분석 대상 시스템의 데이터를 수집하는 것을 말함

  • 즉, 분석 대상 시스템 운영체제 도움 없이 시스템 데이터를 수집하는 것

  • 신뢰성이 높은 이동 저장장치를 이용하여 부팅한 후 대상 시스템에서 데이터를 수집함

  • 악의적인 공격자나 루트킷 등이 하드웨어를 변조했을 가능성도 있지만 운영체제 변조 가능성보다는 낮음

 

분석 대상 시스템의 디스크 섹터 중 불량 섹터가 존재하여 도구가 불량 섹터를 읽는 도중 오류가 발생하면 데이터 수집에 차질이 생길 수 있다.

 

모든 수집 도구는 이러한 상황을 대처할 줄 알아야 하며 일반적 방법으로는 불량 섹터를 0으로 덮어 버리는 것이다.

 

이렇게 함으로써 오류 발생 요인 제거와 불량 섹터 위치를 정확하게 판별할 수 있게 된다.

 

[그림 5] 오류 처리

 

데이터 수집 시에는 유의 사항이 있으며, 바로 HPA 영역과 DCO 영역이다.

 

이 부분들을 탐지하지 못한다면 중요한 데이터를 얻지 못할 수도 있다.

 

그래서 HPA영역을 탐지하는데 도움을 주는 도구들이 존재하며, HPA 영역을 탐지할 수 있는 수집 도구는 다음과 같다.

  • BXDR

  • diskstat

  • DRIVEID

  • hpa

 

DCO 영역을 탐지하는 도구로는 Image MASSter Solo 2가 있다.

 

데이터 수집 시에 저장하는 영역은 디스크와 파일로 나뉠 수 있다.

 

하지만 디스크에 저장하는 방식에 문제점이 있어 요즘은 대부분 CD-ROM이나 이동 저장장치에 분석 대상 디스크를 파일로 저장한다.


(4) 데이터 쓰기 방지 장치

  • 무결성은 증거 투명성을 보장하는 것으로 데이터 수집 시에 중요하게 여겨야 할 부분 중 하나

  • 만약 디스크 데이터를 수집하거나 복제할 때 그 과정에서 원본 내용이 변경되면 무결성은 보장 받지 못함

  • 그렇기 때문에 디지털 데이터를 수집할 때에는 쓰기 방지 장치라는 것을 사용함

  • 디스크 데이터를 수집하거나 복제하는 데 사용하는 장비나 도구가 원본 디스크 데이터에 접근해 어떤 행위를 하던 도중 오류나 다른 원인으로 인해 원본 데이터를 손상시키는 일을 방지하기 위해 사용하는 장치

 

쓰기 방지 장치에는 하드웨어/소프트웨어 종류가 있으며, 이 두 종류 모두 원본 디스크 데이터와 디스크 데이터에 접근하는 장치 사이에 위치하여 입/출력을 제어한다.

 

하드웨어 쓰기 방지 장치의 경우는 [그림 5]에서 수집 도구와 디스크 사이에 쓰기 방지 장치가 위치한다고 생각하면 된다. (BIOS는 X)

 

하드웨어 쓰기 방지 장치는 대부분 연결 포트 인터페이스(SATA, IDE, Firewire, USB 등)를 지원하고, 장치 연결 후 동작 하기 전 먼저 숨김 영역인 HPA나 DCO를 제거하기 위해 제거에 관한 명령어들을 원본 디스크 데이터쪽으로 전송한다.

 

이러한 이유로 주로 소프트웨어 쓰기 방지 장치보다는 하드웨어 쓰기 방지 장치를 사용한다.

 

또 소프트웨어 쓰기 방지 장치는 [그림 5]에서 수집 도구와 BIOS 사이에 위치하여 BIOS 인터럽트 테이블에 INT13h 엔트리의 주소를 쓰기 방지 장치 주소로 수정해 운영체제에서 INT13h를 호출했을 때 쓰기 방지 장치가 호출되게 끔하여 작동한다.

 

대표적 쓰기 방지 장치는 다음과 같다.

 

1) 하드웨어 쓰기 방지 장치

  • ICS Drive Lock

  • Tableau Write Blockers 

  • Wiebe Tech Write Blockers

 

2) 소프트웨어 쓰기 방지 장치

  • SAFE Block XP

  • MacForensicLab Write Controller


# Reference

 

http://www.yes24.com/Product/Goods/8511539

+ Recent posts