Chapter 2의 소 주제로는 비트와 바이트 및 수 체계, 파일 확장자와 시그니처, 저장장치와 메모리, 컴퓨터 환경 차이, 데이터의 종류, 컴퓨터 파일 시스템에 대해 다루고 있다.
Chapter 1에 비해 다소 많은 내용이 들어가 있다. 간단히 요약하자면, 2장에서는 컴퓨터가 어떻게 디지털 정보를 생성하는지에 대해 설명하고 있다. 이 장에서는 "흔적이 어떻게 생성되었는지" 그리고 "컴퓨터가 이런 데이터를 자체적으로 생성했는지 혹은 사용자가 작업하면서 생성했는지"에 대해 알 수 있다. 또한, 바이너리, 데이터, 저장 방법, 저장매체 등에 대해서 살펴볼 예정이다.
- 컴퓨터는 바이너리라고 불리는 2진수 언어를 사용한다. 각 1, 0은 비트로 불린다.
- 바이트: 비트가 여러 개 모인 것. 1바이트는 8비트로 이루어져 있다. 컴퓨터는 비트 여러 개를 모은 바이트 단위로 작업을 해 더 신속하게 계산할 수 있다.
각 문자, 숫자, 스페이스, 특수문자는 하나의 바이트로 표시된다.
메모장에 "Marshall University Digital Forensics"라고 입력한 파일이 위와 같이 있다.
이 파일의 크기는 메모장에 입력한 글자 수와 스페이스 숫자와 같고, 37바이트임을 확인할 수 있다.
이번엔 이 파일에 입력된 "Marshall University Digital Forensics" 문자열을 바이너리로 바꿔 봤다.
: 헥스라고도 하며, 16진수로 바이너리를 좀 더 편하게 표시할 수 있는 방법이다.
- 0부터 9까지, 문자 A부터 F까지 사용해서 나타낸다. 16진수임을 나타내기 위해 숫자 앞에 0x 또는 숫자 뒤에 "h"가 붙게 된다. Ex) "M" : 0x4D, "a" : 61h
- 위는 아까 계속 예시를 들었던, "Marshall University Digital Forensics" 문자열을 헥스로 표시한 것이다. "20"이라는 숫자가 여러 차례 반복되는 것을 볼 수 있는데, 0x20은 스페이스를 의미한다.
- 컴퓨터는 인코딩(encoding)을 통해 바이너리를 사람이 읽을 수 있는 문자로 변환한다.
두 가지의 인코딩 방법이 존재하는데, 이것이 ASCII와 유니코드이다.
- ASCII(the American Standard Code for Information Interchange)
: 영어를 표시하기 위해 사용하는 인코딩 방법이다. 128개의 문자를 정의하고, 스페이스와 프로세스를 위해 사용되는 문자를 제외하고 94개의 문자만이 실제로 출력될 수 있다.
- 유니코드(Unicode): 전 세계의 모든 언어를 표시하기 위해 사용되고, 수천 개의 문자로 이루어져 있다.
- 디지털 포렌식 조사관은 "비트"와 "바이트" 수준에서 데이터를 살펴보고 증거를 검색, 축출 및 해석해야 하는 경우가 많다. 파일 카빙(file carving)은 특정한 형태가 없는 데이터를 바탕으로 파일의 위치를 확인하고 복원하기 위해 사용된다. 잠재적 파일부터 식별하고, 헤더(header)가 있다면 헤더로 파일을 식별한다. 푸터(footer)를 찾았고, 파일이 연속적이면 단순 복사 붙여 넣기로 파일을 축출할 수 있다. 조각난 파일은 복원하기 훨씬 어렵다.
- 바이너리와 헥스를 이해하는 능력이 파일 카빙을 가능하게 한다.
: 연속적인 비트와 바이트로 이루어진 파일을 식별하는 방법에는 두 가지가 있다.
1) 파일 확장자를 활용한다. 파일 확장자는 컴퓨터 파일 이름 맨 뒤에 붙는 것으로 파일의 형식을 표시한다.
Ex) .docx(마이크로소프트의 최신 워드 파일), .pptx(마이크로소프트의 최신 파워포인트 확장자)
파일 확장자는 파일의 종류를 안정적으로 식별할 수 있는 방법은 아니다. 단 한 번의 마우스 클릭과 타이핑 몇 회로 금방 파일 확장자를 바꿀 수 있기 때문이다. 확장자가 바뀐 파일을 열려고 하면, 파일이 열리지 않는다. 원상태로 파일을 열면 다시 잘 열린다.
파일의 확장자를 바꿨더니, 아이콘도 같이 바뀌었다.
test.png 파일을 HxD를 통해 살펴보면, word 문서라는 것을 확인할 수 있다.
어떤 사람들은 이런 방법으로 데이터를 숨기는 데 사용하기도 하지만, 포렌식에서는 효과적인 방법이 아니다.
2) 시그니처 분석: 포렌식 툴은 파일의 헤더로 파일을 식별한다. 이를 통해 헤더와 확장자가 일치하지 않는 파일도 찾아서 쉽게 분석할 수 있다.
: 데이터가 어디에 어떻게 저장되어 있고 쓰이는지는 가장 중요한 개념 중 하나이다.
오늘날의 데이터는 크게 전자기(electromagnetism), 극미한 전자 트랜지스터(플래시), 빛의 반사(CD, DVD 등) 세 가지 방법으로 생성된다. 컴퓨터 내부의 저장장치는 서로 다른 목적으로 사용된다.
: 오늘날의 대부분 드라이브는 데이터를 자기로 읽고 쓴다. 이러한 드라이브는 각 입자를 자기화하거나 자기화하지 않는다. 입자가 자기화되면 그 입자는 1을 나타내고, 그렇지 않으면 0을 나타낸다.
드라이브 자체도 보통 자기 물질로 코팅되어 있는 알루미늄 플래터(platter)를 사용한다. 위의 사진에 보이는 동그란 부분이 플래터이다. 플래터는 데이터가 수집되는 부분이다. 플래터는 매우 빠른 속도로 회전한다. 고성능 드라이브의 회전 속도는 이보다 더 빠를 수 있고, 이러한 드라이브는 서버나 전문가용 컴퓨터에서 사용된다. 포렌식 관점에서는 하드 드라이브의 속도가 빠를수록 데이터 수집 속도를 빨리할 수 있다.
플래터는 스핀들(spindle)이라 불리는 조그마한 침을 중심으로 회전한다.
데이터는 엑추에이터 암(acutuator arm)에 부착되어 있는 읽기/쓰기 헤드를 사용해 플래터에 물리적으로 쓰인다. 엑추에이터 암은 엑추에이터(actuator) 자체에 전원을 공급하고, 데이터 위를 이동하면서 데이터를 읽고 쓴다.
: 예시로 USB 드라이브나 메모리카드 등이 있다. 다른 종류의 메모리와 다르게 전기가 차단되어도 데이터가 지워지지 않는 비휘발성 컴퓨터 기억 장치이다. 플래시는 트랜지스터로 구성되어 있다, 각 트랜지스터가 전하를 가질 경우에는 "1"이 되고, 그렇지 않으면 "0"이 된다.
- 플래시 기반 하드 드라이브: 주변에서 점점 더 많이 볼 수 있게 되었다. 자기 드라이브와는 다르게 플래시 드라이브는 움직이는 부분이 없다.
- 솔리드 스테이트 드라이브(Solid State Drive): 플래시 메모리가 종종 SSD라고도 불린다. SSD는 향상된 속도, 충격에 대한 내구성 그리고 저전력 사용 등을 포함해 여러 가지 이점이 있다. SSD의 향상된 성능이 디지털 포렌식에 커다란 도전을 제시하며 중요한 역할을 하고 있다.
: 광 디스크에 있는 반사 물질과 레이저를 사용해 데이터를 쓰고 읽는다. Ex) CD, DVD, Blu-ray 디스크 등
광 디스크는 알루미늄으로 덮여 있는 폴리카보네이트 물질로 만들어져 있다. 그리고 디스크를 보호하기 위해 투명한 아크릴 물질로 코팅을 한다. 빛은 울퉁불퉁한 부분과 그 사이의 "lands"라 불리는 공간에 따라 다른 형태로 반사되고, 반사된 빛의 변화를 컴퓨터는 데이터로 변환한다.
메모리는 단기간 데이터를 저장하는 곳에 사용되고, 저장장치는 좀 더 영구적인 데이터를 저장하는 데 사용된다.
포렌식 관점에서는 메모리와 저장장치에는 상당한 차이점이 존재한다.
RAM은 현재 CPU에서 작업 중인 모든 데이터를 저장한다. 데이터는 RAM에서 CPU로 전송되어 실행된다. 또한, RAM에 있는 데이터는 전력이 공급되는 동안만 존재한다. 따라서 RAM의 데이터는 휘발성 메모리의 속성을 가진다.
하드 드라이브에 저장된 파일은 컴퓨터가 종료되어도 그대로 유지되므로 비휘발성이다. 기존의 포렌식 분석은 대부분의 증거가 있는 하드 드라이브에 초점이 맞춰졌다. 하지만 오늘날에는 반드시 그렇지만은 않다. 일부 메신저 프로그램에 로그 기능이 설정되어 있지 않는 한 대화 내용을 하드 드라이브에 저장하지 않는다. 따라서 이 경우에는 유일한 증거가 컴퓨터가 실행 중일 때 RAM에서만 저장되어 있다.
: 컴퓨터의 다양한 환경은 데이터의 검색, 툴의 사용, 복잡도의 수준 등과 같이 수집 과정에 커다란 영향을 준다. 컴퓨터 환경은 독립형, 네트워크, 메인프레임, 클라우드 등의 4가지로 분류할 수 있다. 이러한 컴퓨터 환경을 정확하게 분류하면 사건 현장에 가기 이전에 조사에 정확하게 착수할 수 있다.
: 다른 컴퓨터에 연결되어 있지 않은 컴퓨터다. 증거가 있을 많나 장소가 한정되어 있어 다루기 가장 쉽고 조사하기도 가장 용이하다. 아파트나 일반 주택 같은 가정집에서 흔히 볼 수 있다.
: 적어도 하나 그리고 잠재적으로 많은 다른 컴퓨터에 연결되어 있다. 이러한 컴퓨터는 복잡도를 증가시키고, 증거를 찾을 수 있는 위치 또한 증가시킨다. 요즘은 하나의 컴퓨터에서 찾을 수 있던 파일이나 흔적이 여러 서버나 다른 컴퓨터에 분산되어 있는 것을 볼 수 있다. 이는 포렌식 공식에 다양한 변수를 만든다. 네트워크 컴퓨터의 경우 비즈니스 환경에서 흔히 볼 수 있고, 최근에는 가정에서도 더 많이 볼 수 있다.
: 모든 컴퓨터 능력을 한 위치에 집중시킨다. 프로세서, 저장장치, 프로그램 모두 한 위치에서 집중되어 통제된다.
: IT 뿐만 아니라 비즈니스 커뮤니티에서도 많은 관심을 받고 있다. 예전의 메인프레임 시스템과 유사점이 매우 많다. 클라우드 컴퓨터 자원은 로컬 컴퓨터에서 다른 중앙화된 위치로 이동한다.
클라우드는 컴퓨터 인프라, 플랫폼, 그리고 소프트웨어를 제공하며 사용한 만큼 비용을 지불하는 모델이다. 클라우드 서비스는 인프라 서비스(Infrastructure as a Service, IaaS), 플랫폼 서비스(Platform as a Service, PaaS), 소프트웨어 서비스(Software as a Service, SaaS) 등을 포함하고, 이러한 서비스는 인터넷을 통해 제공된다. 클라우드에서 고객들은 실제로 사용하는 자원에 대해서만 비용을 지불한다.
기술적으로 클라우드는 매우 복잡한 가상 환경을 제공해 많은 일상적인 포렌식 절차를 복잡하게 만들거나 아예 쓸모없게 만든다. 클라우드 데이터는 국경이 없어 증거가 다른 도시나 지구 반대편의 다른 국가에 있을 수도 있다.
- 인프라 서비스(IaaS, Infrastructure as a Service)
: 서버나 저장장치 등을 필요에 따라 이용할 수 있도록 서비스를 제공한다. 기업은 서비스 제공자로부터 하드웨어를 대여받는다. 하드웨어를 실행하고 유지하는 비용은 제공자가 지불하게 된다.
- 플랫폼 서비스(PaaS, Platform as a Service)
: 개발자가 필요에 따라 하드웨어, 운영체제, 저장장치, 서버 등을 빌릴 수 있도록 해준다. PaaS는 개발자가 필요에 따라 운영체제를 자주 수정하거나 업그레이드할 수 있다는 면에서 유연하다고 할 수 있다.
- 소프트웨어 서비스(SaaS, Software as a Service)
: 인터넷을 통해 고객이 필요한 소프트웨어를 제공한다. 이러한 소프트웨어는 서비스 제공자가 관리하고 유지한다.
: 데이터는 크게 활성, 숨은 그리고 아카이브 데이터 3가지로 분류할 수 있다. 이 방식으로 데이터를 보면 데이터의 위치, 파일 시스템에서 어떻게 데이터를 처리하고 있는지 그리고 사용자가 어떻게 데이터에 접근하는지에 대해 이해하기 쉽다. 또한, 원하는 데이터를 복원할 때 필요한 비용과 노력을 감소시키는 데 도움이 된다.
: 매일 컴퓨터에서 사용하는 데이터이다. 운영체제는 이러한 파일을 보고 추적한다. 윈도우 탐색기를 이용해 이러한 파일의 위치를 알아낼 수 있고, 이러한 파일은 드라이브에 할당된 공간에 있다. 이 데이터는 표준 포렌식 클로닝 기술로 확보할 수 있다.
활성 데이터는 원본 데이터가 존재하지 않아 증거력이 떨어지지만 압수한 디지털 저장 매체를 분석하는데 결정적인 도움을 제공할 수 있다. 하지만 활성 데이터 수집 활동은 디지털 저장 매체 안의 데이터를 소량 변경시키기도 해서 활성 데이터가 필요 없는 경우에는 수집을 피하는 것이 좋다.
: 이미 삭제되었거나 부분적으로 덮어써진 데이터이다. 운영체제에서 더 이상 관리하지 않고, 일반 사용자에게는 보이지 않는다. 이러한 데이터를 수집하기 위해서는 비트 스트림(bit stream)이나 포렌식 이미지가 필요하다.
: 아카이브 데이터, 백업 데이터는 여러 가지 형태로 존재할 수 있다. Ex) 외장 하드, DVD, 백업 테이프 등
백업 매체의 종류와 연대에 따라 아카이브 데이터의 확보의 복잡도가 결정된다.
- 백업 테이프가 더 이상 생산되지 않는 소프트웨어나 하드웨어로 만들어졌을 경우
: 테이프는 특정 하드웨어와 소프트웨어를 사용해 생산된다. 데이터 복원을 위해서는 테이프 생산 시 사용했던 것과 동일한 툴이 필요하다. 따라서 이 경우 더욱 처리하기 어려울 수 있다. 더 이상 생산되지 않는 오래된 버전의 소프트웨어로 만들어졌거나 소프트웨어 회사 자체가 사라진 데이터를 레거시 데이터(legacy data)라고 부른다.
: 드라이브의 사용 가능한 공간을 관리할 뿐만 아니라 각 파일의 위치 또한 관리한다. 파일 시스템의 종류는 매우 다양하며 포렌식을 할 때 가장 많이 볼 수 있는 파일 시스템으로는 FAT, NTFS, HFS+가 있다.
- FAT(File Allocation Table): 가장 오래된 파일 시스템이다. FAT12, FAT16, FAT32, FATX의 4가지 유형이 있다. 최신 운영체제에서는 거의 사용되고 있지 않지만 플래시 메모리 같은 매체에서 자주 사용된다.
- NTFS(the New Technology File System): 윈도우 7, 비스타, XP 그리고 서버 제품군에서 사용되고 있다. FAT에 비해 훨씬 강력하고 다양한 기능을 가지고 있다. 예로 자동으로 디스크 관련 오류를 복구할 수 있고, 대용량 하드 드라이브를 지원하며 권한과 암호화로 향상된 보안을 제공한다.
- HFS+(Hierarchical File System): HFS+, HFS, HFSX는 애플 제품에서 사용된다. HFS+는 HFS의 향상된 버전으로 개선된 디스크 공간, 플랫폼 간의 호환성, 다국적 파일 이름 등 다양하고 향상된 기능을 제공한다.
: 파일 시스템은 하드 드라이브에 있는 공간을 할당된 공간과 할당되지 않은 공간 두 가지로 분류한다. 윈도우는 할당되지 않은 공간에 있는 데이터를 볼 수 없다. 대신, "사용되고 있지 않은"이라는 표현이 "빈 공간"이라는 것을 의미하지는 않는다. 아래 내용은 호스트 보호 영역에 대한 내용이다. (보충되는 내용)
호스트 보호 영역(HPA, Host Protected Areas)과
디바이스 설정 오버레이(DCO, Device Configuration Overlays)
: 하드 드라이브의 숨겨진 영역을 일컬으며 보통 탐지하기 어렵다. 이러한 영역은 제조사가 생성하고, "최종 사용자가 특정 오픈소스나 무료 툴을 사용해 접근, 수정 및 쓰기를 할 수 있고, 이러한 영역에 데이터가 저장 및 숨겨질 수 있도록 해 준다.(Gupta, Hoeschele, & Rogers, 2006)" 운영체제 복구 목적으로 진단 툴이 있을 수도 있다.
: 데이터는 하드 드라이브에 남아 있는다. 삭제된 파일이더라도 다른 데이터로 덮어써지기 전까지는 오랜 기간 동안 하드 드라이브에 그대로 남아 있다.
파일은 반드시 한 곳에만 저장되지 않는다. 스프레드시트로 저장된 파일은 하드 드라이브 플래터에 여기저기 분산되어 저장된다. 파일 시스템의 역할은 모든 파일과 저장공간을 관리하는 것에 있다. 즉, 파일 시스템은 분리된 클러스터를 관리해 다음에 파일을 열 때 다시 재구성한다. "디스크 조각 모음"을 사용하면 여기저기 널려 있는 파일 조각들을 서로 가장 가까운 위치에 옮길 수 있다. 조각들이 서로 가깝게 있으면 컴퓨터의 속도가 향상된다. 범죄자들은 이러한 조각 모음으로 데이터를 파괴하려고도 한다.
특정 공간을 할당받은 파일이 그 공간을 모두 사용하지 않을 수 있다. 이 경우 원본 파일의 일부만 덮어써지고, 남은 부분은 복원이 가능하다. 이러한 공간을 슬랙 공간(slack space)라고 한다,
: 컴퓨터는 정보를 저장할 때 사용할 수 있는 최소 단위인 섹터(sector) 공간에 데이터를 저장한다. 보통 최대 512 바이트의 데이터를 저장할 수 있고, 초과해서 저장할 수는 없다.
섹터가 최소한의 저장 단위지만 컴퓨터 운영체제는 데이터를 클러스터(cluster)로만 저장한다.
범인이 범행 계획을 컴퓨터 하드에 저장한다고 해 보자. 파일 이름은 "evidence.doc"이고, 파일의 크기는 1024 바이트이다. 한 섹터 당 512 바이트의 공간이 있어 컴퓨터는 두 개의 서로 다른 섹터에 파일을 저장한다.
범인은 범행 계획을 들키지 않기 위해 휴지통을 비우면서 "evidence.doc"의 모든 정보가 삭제된 줄 안다. 그 이후 새로운 파일인 "new.doc"을 저장한다. 이 파일의 크기는 780 바이트이므로 두 개의 섹터를 완전히 다 쓰는 것은 아니지만 두 개의 섹터를 나눠서 사용한다. 그런데 "evidence.doc"가 저장되었던 자리에 저장이 되면서, "evidence.doc"의 첫 780 바이트 부분이 "new.doc"에 의해 덮여 써진다. 이 경우 남은 244 바이트가 슬랙 공간이 된다.
슬랙 공간에서 기존의 파일 조각을 복구할 수 있고, 용의자에 대한 정보가 있을 수 있다. 슬랙 공간은 사용자나 운영체제가 접근할 수 없어 이 증거는 용의자는 알 수 없다.
추가로 하드 드라이브의 작동 원리에 대해 알고 싶다면
http://myharddrivedied.com/presentations-resources 를 참고하도록 하자.
컴퓨터 프로그램을 많이 실행시키면 컴퓨터가 갑자기 느려지거나 하드 드라이브가 움직이는 소리를 들을 수 있다. 이 시점에서부터 컴퓨터는 가상 메모리를 사용한다. 이러한 가상 메모리를 페이지 파일(page file) 또는 스웝 공간(swap space)라고 부른다.
페이지 파일은 컴퓨터의 메인 메모리를 완전히 다 사용했을 때에만 사용하게 된다. 메인 메모리는 RAM(Random Access Memory)이라고 불린다. RAM은 현재 컴퓨터에서 작업 중인 모든 것을 저장한다. 모든 데이터와 프로그램은 반드시 RAM에서 CPU로 전달되어야 한다. RAM이 모두 소모되면 컴퓨터는 RAM에 있는 데이터를 페이지 파일로 옮겨 RAM의 공간을 확보한다. 드라이브 어디에도 없는 파일이나 파일 조각이 페이지 파일에 저장되어 있을 수도 있는 것이다. 파일을 성공적으로 삭제하고 덮어쓰는 용의자도 페이지 파일을 알지 못해 증거 데이터가 복원되어 덜미를 잡힐 수 있다.
페이지 파일 사용의 다양한 방면
1. 덮어써지기 전까지 데이터는 하드에 남아 있다.
2. 페이지 파일은 지속적으로 사용되는 것이 아니므로 일부 데이터는 오랫동안 저장되어 있을 수 있다.
3. 페이지 파일에는 특정 시점에 RAM에 저장되어 있던 데이터가 저장된다. 즉 그 어떤 데이터도 저장될 수 있다는 의미다. 암호화되지 않은 비밀번호가 페이지 파일에 남아있을 수도 있다.
: 컴퓨터에 저장되는 파일은 특정 구조나 형식을 가지고 있다. 파일의 시작 부분을 "헤더(header)", 파일의 끝 부분을 "푸터(footer)"라고 부른다. 그 사이의 바이트들은 파일의 나머지 부분들이다.
파일의 헤더는 메타데이터("데이터에 대한 데이터")의 형태로 되어 있다. 헤더는 파일 확장자와 마찬가지로 파일의 종류를 식별하는 데 사용된다. 하지만 확장자와는 다르게 헤더를 수정하는 방법은 훨씬 더 어렵고 대부분의 사용자는 헤더에 접근할 수 없다.
[ Chapter 8 ] 인터넷과 이메일 (0) | 2021.01.24 |
---|---|
[ Chapter 5 ] 윈도우 시스템에서의 증거 수집 (0) | 2021.01.22 |
[ Chapter 4 ] 증거 수집 (0) | 2021.01.18 |
[ Chapter 3 ] 랩과 툴 (0) | 2021.01.15 |
[ Chapter 1 ] 소개 (1) | 2021.01.04 |
댓글 영역