하드디스크에는 숨김 영역이 존재한다. 사용자의 임의적 설정을 통해 숨김 영역을 설정할 수 있고 하드디스크를 제조할 때부터 숨김영역이 설정 된 상태로 판매하여 사용자가 사용할 수 있다.


이러한 숨김영역은 일반 사용자가 잘 사용 하지 않지만, 공격자들은 숨김영역에 악성코드나 악의적 데이터를 숨길 수 있다. 따라서 분석할 때 고려해야 하는 영역중 하나이다. 하드디스크 덤프를 할때에도 숨김영역까지 덤프를 지원하는지 알아보고 덤프 툴을 사용해야 된다. 숨김영역의 종류로는 HPA와 DCO가 있다.


1. HPA(Host Protected Area)

HPA는 데이터를 저장할 수 있는 영역이지만 일반 사용자가 볼 수 없는 숨겨진 영역이다. 이 영역의 설정은 ATA 명령으로 가능하다.(기본값 = 0) HPA는 ATA-4에서 추가되었으며, 사용자가 하드디스크를 포맷하거나 삭제했을때도 데이터를 보존할 수 있는 영역이다.


 ATA : Advanced Technology Atatchment의 약자로 저장 장치와의 통신을 위하여, 주요 HDD 제조 업체 및 표준제정 집단에서 만들어진 일종의 protocol


HPA는 하드디스크 끝에 위치해 있으며 하드디스크 재설정에 의해서만 접근이 가능하다. HPA는 아래의 두 명령어의 결과값 차이를 보고 존재 유무를 파악할 수 있다.

    • READ_NATIVE_MAX_ADDRESS : 물리적 주소의 최대값을 반환하여 주는 명령어.(HPA의 끝)
    • IDENTIFY_DEVICE : 사용자 영역(HPA 영역의 앞 부분 까지) 끝을 반환하여 주는 명령어.

READ_NATIVE_MAX_ADDRESS - IDENTIFY_DEVICE > 0 이면 HPA가 존재한다고 볼 수있다.

HPA 영역 설정은 SET_MAX_ADDRESS 명령어를 이용한다. 이 명령은 사용자가 접근할 수 있는 최대 주소를 설정한다. HPA 영역 제거는 READ_NATIVE_MAX_ADDRESS의 값을 SET_MAX_ADDRESS의 입력 값으로 넣으면 된다.



그림1. HPA 생성, 삭제


2. DCO(Device Configuration Overlay)

ATA-6 에서 추가된 기능으로 HPA와 동일한 기능을 하는 영역이다. HPA에서 IDENTIFY_DEVICE명령으로 사용자 영역의 끝을 알아볼 수 있었다. 그리고 READ_NATIVE_MAX_ADDRESS 명령으로 물리적 주소의 최대값을 알아내어 HPA의 존재를 알아낼 수 있었다. 하지만 DCO영역은 알아낼 수 없다. 



그림2. DCO 영역 추가된 상태


그림2를 보며 설명하면 명령어들의 내용은 다음과 같다.

    • DEVICE_CONFIGURATION_IDENTIFY : 하드디스크의 전체 크기를 불러오는 명령어 (HPA, DCO 포함)

    • READ_NATIVE_MAX_ADDRESS : HPA가 있는 상태면 HPA 영역의 크기를 불러오는 명령(DCO 제외)

    • IDENTIFY_DEVICE : 하드디스크의 크기를 불러오는 명령(HPA, DCO 제외)

DEVICE_CONFIGURATION_IDENTIFY 명령과 NATIVE_MAX_ADDRESS 명령을 이용하여 DCO영역을 찾을 수 있다. 만약 

DEVICE_CONFIGURATION_IDENTIFY = READ_NATIVE_MAX_ADDRESS = IDENTIFY_DEVICE 이면 숨김영역이 하나도 없다는 것이다.



'Forensic' 카테고리의 다른 글

볼륨과 파티션-도스파티션  (0) 2015.01.13
하드디스크 데이터 수집  (0) 2015.01.12
가상 메모리 구조  (0) 2015.01.05
PE(Portable Executable)구조 분석-1  (0) 2014.12.25
슬랙공간이란?  (0) 2014.11.26

+ Recent posts