1. HPA(Host Protected Area)
HPA는 ATA-4 표준에서 추가된 기능이며, 해당 메모리 영역은 HDD에 의해 미리 예약된 영역으로 운영체제(OS) 및 BIOS 통한 접근이 불가능하다. 따라서 일반 사용자에 의해 변경, 수정이 되지 않는 영역이며 하드디스크의 끝에 위치해있고, 하드디스크를 논리적으로 포맷하거나 삭제하더라도 데이터가 보존되는 영역이다. 이 영역은 ATA 명령을 통해 확인 및 설정할 수 있다.
그렇다면 어떤 용도로 사용되는가?
- 별도의 매체 없이 컴퓨터 운영체제를 설치, 복구하는데 필요한 파일을 저장
- 노트북 보안 유틸리티를 저장하는 경우
- 루트킷을 통한 악의적인 용도로 사용
- 안티 포렌식 행위로써 민감한 데이터를 은닉하기 위해 사용
HPA를 만들고 지우거나 존재 유무를 확인하는 과정에서는 크게 3개의 명령이 사용된다
- SET_MAX_ADDRESS (EXT) : BIOS를 통해 접근 가능한 최대의 주소를 설정
- IDENTIFY_DEVICE : BIOS를 통해 접근 가능한 주소의 최대 값을 반환 (HPA, DCO 영역 제외)
- READ_NATIVE_MAX_ADDRESS (EXT) : 디스크의 물리적 주소의 최대 값을 반환 (DCO 영역 제외)
SET_MAX_ADDRESS 명령을 통해 HPA영역을 만들고 SET_MAX_ADDRESS 명령의 입력값을 READ_NATIVE_MAX_ADDRESS 명령의 반환 값으로 사용하게 되면 HPA영역을 정상적으로 복구할 수 있다.
HPA 영역을 탐지하기 위해서 윈도우즈 환경에서는 ATAtool, 리눅스 환경에서는 hdparm를 사용할 수 있다.
2. DCO(Device Configuration Overlay)
DCO는 HPA와 달리 ATA-6 표준에서 추가된 기능이며, HDD와 같이 저장매체를 여러 사이즈로 제조할 필요 없이 DCO를 통한 하드디스크의 용량을 제한할 수 있다. 또한 반대로 여러 사이즈로 제조된 HDD를 같은 섹터 개수를 가지는 고정된 크기의 HDD로 구성하는 것이 가능하다. 이 또한 숨겨진 영역이므로 사용목적에 따라 악의적인 용도로 사용할 수 있다.
- ATA-6 표준에서 추가
- DCO 역시 OS와 BIOS를 통해 접근 불가
- HDD 제조사에 따라 정의된 특별한 ATA 명령을 통해 접근이 가능
- 1TB, 500GB, 250GB의 HDD들을 OS, BIOS에서 100GB HDD로 인식할 수 있게 함
DCO영역을 생성할때는 DEVICE_CONFIGURATION_SET 명령을 사용하며, 반대로 삭제할때에는 DEVICE_CONFIGURATION_RESET를 사용한다.
DEVICE_CONFIGURATION_IDENTIFY 명령으로 하드디스크의 실제 크기와 전체 명령어 목록을 반환할수있으며, 이 명령과 IDENTIFY_DEVICE 명령의 반환값이 같다면 해당 하드디스크에는 HPA 영역과 DCO 영역이 존재하지 않는 것이며, 비교를 통해 숨겨진 영역을 확인할수있다.
위 명령들은 ATA 컨트롤러에 따라 달라질수있다.
이와 더불어 DCO 생성과 HPA 생성 명령을 순차적으로 하게 되면 HPA영역과 DCO영역이 하나의 하드디스크에 같이 존재할수있다.
Conclusion
포렌식 과정중 증거를 수집하는 과정에서 HDD와 같은 정보저장매체를 수집하는 경우 크게 두가지의 방법을 크게 두가지로 나눌 수 있다. 장비를 이용하여 물리적으로 HDD를 복제하는 경우, 이미징 소프트웨어를 통하여 HDD를 이미징하는경우가 있는데 비트스트림 복제방식의 경우에는 크게 문제가 없으나 OS단에서 진행되는 이미징의 경우에는 HPA, DCO 영역이 존재하는지 확인해보아야 할 것이다.
윈도우 환경에서 이미징을 진행할 경우 HPA와 DCO가 존재한다고 의심이 되거나 확인된 경우, EnCase는 HPA영역과 DCO 영역을 고려하지 않으므로 EnCase 부팅 디스크를 사용하여 증거를 수집하는것이 적절할 것이다.