'NCS보안3기/디지털 포렌식'에 해당되는 글 16건

  1. 2017.04.26 [Forensics] 파티션 복구 실습 III
  2. 2017.04.26 [Forensics] 파티션 복구 실습 II
  3. 2017.04.25 [Forensics] 파티션 복구 실습 I
  4. 2017.04.24 [Forensics] MBR 구조
  5. 2017.04.24 [Forensics] MBR
  6. 2017.04.24 [Forensics] FORENSIC

앞선 포스팅에서는 MBR, VBR을 분석하는 정도로 실습을 했다. 하지만 이번 포스팅에서는 MBR이 날아간 경우와 VBR이 날아간 경우 그리고 MBR와 VBR이 함께 날아간 경우에 대해 분석하고 복구하는 실습을 한다.


실습에 앞서 먼저 파일시스템의 BR에 대해 간단하게 설명하고자 한다.


- FAT32 구조


Boot Sector

(VBR) 

Reserved 

FAT 

FAT

Mirror 

Root

Directory 

Data

Area 


FAT32는 위와 같은 구조를 갖는다. FAT32의 BR은 Boot Sector에 존재한다.


- FAT32의 BR



FAT32의 BR은 위와 같은 구조를 갖으며, 각 영역의 의미는 다음 표와 같다.


의미 

내용 

Jump Boot Code

 Boot Strap Code로 점프하기 위한 부분

OEM Name

 OEM 회사를 나타내는 문자열로써, FAT32는 MSDOS 5.X로 표시 

Byte Per Sector 

 한 섹터가 몇 byte로 구성되어 있는지를 나타내며 기본 512 byte 

SP 

 클러스터를 구성하는 섹터의 수이다. 기본적으로 8개의 섹터를 사용

RS( Reserved Sector ) 

 예약된 섹터의 개수

FAT 개수 

 FAT의 개수를 나타낸다. 기본적으로 FAT32는 2개를 사용 

Media Type

 볼륨이 어떤 미디어 매체를 이용하는지를 나타낸다. 고정식 디스크는  

 0xF8이 쓰인다.

Total Sector 32

 파티션상의 총 섹터의 개수를 나타낸다. 

FAT Size 32

 FAT 영역의 섹터 수를 나타낸다. 단, FAT 1개에 대한 크기이다. 

File System Version 

 FAT32의 버전 정보를 나타낸다. 

Root Directory Cluster 

 루트 디렉터리의 시작 위치를 나타낸다. 

File System Information 

 FSInfo 구조체에 대한 정보가 어디에 저장되어 있는지를 나타낸다.

 BR 기준 보통 1번 섹터에 저장된다. 

Boot Record Backup Sector 

 BR이 백업된 섹터 번호를 나타낸다. 기본 값으로 6을 사용한다. 

Volume ID 

 볼륨 시리얼 번호를 나타낸다. 

Volume Label( 1, 2 )

 볼륨의 이름을 기록 

File System Type 

 해당 파일시스템의 타입을 나타낸다. FAT32의 값을 저장한다. 



- NTFS 구조


Boot Sector

(VBR) 

Master File 

Table 

Data Area 


NTFS는 위와 같은 구조를 갖는다.


- NTFS의 BR



NTFS의 BR 구조는 위와 같으며 각 영역의 의미는 다음 표와 같다.


의미 

내용 

Jump Boot Code

 Boot Strap Code로 점프하기 위한 부분

OEM Name

 OEM 회사를 나타내는 문자열

Byte Per Sector

 한 섹터가 몇 byte로 구성되어 있는지를 나타낸다. 기본 512 byte

SP

 클러스터를 구성하는 섹터의 수이다. 기본적으로 8개의 섹터를 사용

RS( Reversed Sector )

 예약된 섹터의 개수

Media Type

 볼륨이 어떤 미디어 매체를 이용하는지를 나타낸다. 고정식 디스크는 

 0xF8이다



FAT32와 NTFS의 구조 중 BR에 대한 부분만을 살펴봤다. 이를 참고하여 다음 예제를 실습해보자.



- MBR Test #3



예제 파일을 HxD 에디터로 열어보면 위와 같다. Partition Table이 위치한 446 ~ 509 바이트를 보면 00으로 비어있는 것을 알 수 있다. 즉 MBR이 손상된 경우이다. 


예제 파일을 FTK 프로그램으로 실행시켜보면 다음과 같다.



Evidence Tree에 보면 파티션이 나눠지지 않는 것을 확인할 수 있으며 해당 디스크가 손상되어 있음을 확인할 수 있다.


이를 복구하기 위해선 다음과 같은 절차를 거친다.


1. VBR의 위치를 찾는다.

2. 해당 파티션의 총 크기를 구한다.

3. MBR의 Partition Table에 구한 값을 수정한다.

4. 제대로 복구가 됐는지 확인하기 위해 FTK 프로그램으로 해당 디스크 구조를 열어 확인한다.


그럼 이제 실습파일을 이용해 분석을 해보도록 하자. 우선 실습파일을 HxD 에디터를 이용해 로드한다. 


첫번째 VBR은 윈도우 XP의 경우 VBR의 위치는 63섹터, Vista 이상의 버전에서는 2048 섹터에 위치한다. 이를 이용해 해당 섹터에 이동해보면 VBR이 존재하지 않는 것을 볼 수 있다. 이는 vhd를 분석할 때 종종 나타나며 보통 128 섹터에 첫번째 VBR이 위치한다.



FAT32 BR 구조를 참고하여 위 VBR을 분석해보면 Hidden Sector는 '80 00 00 00'으로 128, 즉 0번 섹터부터 127 섹터까지를 의미한다. 그리고 Total Sector는 '00 98 07 00'으로 497,664이다. 두번째 VBR의 위치는 497,664 + 128인 497,792 섹터로 이동해 보면 다음과 같다.




NTFS BR 구조를 참고하여 위 VBR을 분석해보면 Hidden Sector는 '80 98 07 00'으로 497,792, 즉 0번 섹터부터 497,791 섹터까지를 의미한다. 그리고 Total Sector는 'FF 9F 05 00'으로 368,639이다. 세번째 VBR의 위치는 497,792 + 368,639 + 1인 866,432 섹터로 이동해 보면 다음과 같다.

* 여기서 1을 더한 이유는 NTFS의 Backup VBR의 위치는 해당 파티션 끝에 위치하여 Backup VBR 바로 이전의 섹터까지만 Total Sector에 포함되기 때문에 더해준다.




위와 마찬가지로 NTFS 파일시스템임을 알 수 있다. VBR을 분석해보면 Hidden Sector는 '80 38 0D 00'으로 866,432, 즉 0번 섹터부터 866,431 섹터까지를 의미한다. 그리고 Total Sector는 'FF DF 06 00'으로 450,559이다. 네번째 VBR의 위치는 866,432 + 450,559 + 1인 1,316,992 섹터로 이동해보면 다음과 같다.



Partition Table의 정보를 보면 Partition Type이 '0B'로 FAT32임을 알 수 있고 시작 위치가 '80 00 00 00'으로 128이다. MBR의 특성상 4번째 파티션부터는 Extended Boot Record( EBR )로 상대적인 위치를 나타낸다. 따라서 해당 파티션의 실제 위치는 1,316,992 + 128인 1,317,120 섹터이다. EBR의 특성에 따라 파티션 테이블은 최대 2개가 존재한다. 2번째 테이블을 분석해보면 Partition Type은 '05'로 Ext이고 해당 파티션의 시작 위치는 '80 40 06 00'으로 409,728이다. 이 파티션 역시 실제 위치는 1,316,992 + 409,728인 1,726,720 섹터로 이동해보면 각각 다음과 같다.

* EBR은 MBR과 비슷한 구조를 갖지만 MBR과 달리 파티션 테이블을 제외한 곳은 모두 0으로 채워져 있다.


EBR 부분을 이전에 만든 python 코드로 돌려보면 위와 같이 분석이 되는 것을 알 수 있다.



FAT32 파일시스템임을 알 수 있다. 해당 파티션의 총 크기는 '00 40 06 00'으로 409,600 * 512 / 1024 / 1024 = 200MB 임을 계산할 수 있다.



Partition Table 정보를 보면 하나의 정보만 존재하는 것을 확인할 수 있다. 이는 더 이상의 파티션이 존재하지 않음을 의미한다. Partition Type이 '0B'로 FAT32임을 알 수 있고 시작 위치가 '80 00 00 00'으로 128이다. 이 파티션 또한 실제 위치는 1,726,720 + 128인 1,726,848 섹터로 이동해보면 다음과 같다.



앞서 분석한 내용을 정리하면 다음과 같다.

> 첫번째 파티션

① 시작 섹터 : 128

② 파티션 타입 : FAT32

③ 파티션 총 섹터 수 : 497,664

> 두번째 파티션

① 시작 섹터 : 497,792

② 파티션 타입 : NTFS

③ 파티션 총 섹터 수 : 368,639

> 세번째 파티션

① 시작 섹터 : 866,432

② 파티션 타입 : NTFS

③ 파티션 총 섹터 수 : 450,559

> 네번째 파티션( EBR )

① 시작 섹터 : 1,316,992

② Current 파티션 타입 : FAT32

③ 시작 섹터 : 1,316,992 + 128 = 1,317,120

④ 파티션 총 섹터 수 : 409,600

⑤ Next 파티션 타입 : Extended

⑥ 시작 섹터 : 1,726,720

⑦ 파티션 총 섹터 수 : 362,624

> 다섯번째 파티션( EBR )

① 시작 섹터 : 1,726,720

② Current 파티션 타입 : FAT32

③ 시작 섹터 : 1,726,720 + 128 = 1,726,848

④ 파티션 총 섹터 수 : 362,496



앞서 분석한 것을 바탕으로 본격적으로 Partition table이 손상된 MBR을 수정한다.



위와 같이 수정한 후 FTK Imager 프로그램으로 실습 파일을 로드하면 다음과 같이 복구가 된 것을 확인할 수 있다.





Posted by Imp3rio

파티션 복구 실습을 하기 전에 계산 방법에 대해 알아보자.

우선, 샘플 예제를 HxD 에디터로 열어보면 다음과 같다.



파티션과 관련된 파티션 테이블 부분은 446byte부터 509byte까지 총 64byte이며, 16바이트씩 총 4개의 파티션 정보가 담긴다. 

Boot flag( 1 byte ), Starting CHS( 3 byte ), Partition type( 1 byte ), Ending CHS( 3byte ), Starting LBA( 4 byte ),  Total Sector(4byte)로 구성된다.


•Boot flag: 부팅 가능여부를 나타내며, 0x00은 부팅 불가능, 0x80은 부팅 가능

•Starting CHS: CHS 주소지정방식의 시작 위치이며 더이상 사용하지 않는다.

•Partition type: 해당 파티션의 파일시스템 타입을 알 수 있다.

•Ending CHS: CHS 주소지정방식의 끝나는 위치 정보이며 더이상 사용하지 않는다.

•Starting LBA: LBA 주소지정방식에 의한 파티션 시작주소이다.

•Total Sector: 해당 파티션의 총 섹터 개수에 대한 정보를 담고 있다.


* 파티션 타입에 대한 정보는 아래 링크에서 확인할 수 있다.

https://en.wikipedia.org/wiki/Partition_type


* 데이터는 리틀 엔디언 방식으로 저장되어 있다.


위 샘플예제를 엑셀로 열면 다음과 같다.



우선 446 번째 바이트를 보면 0x00으로 부팅가능한 파티션이 아님을 알 수 있다. 그리고 CHS 방식은 더이상 사용하지 않기 때문에 447 ~ 449 바이트와 451 ~ 453 바이트는 보지 않아도 된다. 

450 번째 바이트를 보면 0B로 파티션 타입이 FAT32임을 알 수 있다. 

454 ~ 457 바이트를 보면 80 00 00 00 이지만 리틀 엔디안 방식으로 저장되어 있기 때문에 실제로는 00 00 00 80으로 LBA 시작 위치는 128 섹터임을 알 수 있다. 

458 ~ 461 바이트를 보면 00 08 03 00 이지만 이 또한 리틀 엔디안 방식으로 저장되어 있기 때문에 00 03 08 00 으로 총 섹터의 개수는 198,656개 임을 알 수 있다.

그리고 파티션의 총 용량은 총 섹터의 개수 x 512( 섹터 크기 )를 곱한 값으로 101,711,872 바이트 임을 알 수 있고 이를 MB 단위로 표시하기 위해서는 1024로 두번 나누어 주면( 2^20 ) 되며 그 값은 97 MB임을 알 수 있다.


분석 및 계산 방법은 위와 같이 하지만 일일이 계산하는 것이 불편하고 시간이 오래 걸리기 때문에 python을 이용하여 프로그램을 하나 만들었다. 


simple_MBR.py


* 위 파일은 python 2.7 버전으로 작성되어 있으며 windows 용으로 만들었다. 이를 실행하기 위해서는 python 2.7 버전이 설치되어 있어야 한다.

* 간단한 프로그램으로 파티션 타입을 확인할 수 있는 것이 제한적이다. FAT32, NTFS, Ext만 확인할 수 있다.


MBR.py


* 위 파일은 simple_MBR.py 프로그램의 MAC용이다. 저자가 맥북을 사용하기 때문에 따로 만들었다. 거창하지만 실제로는 파일을 찾는 경로에 차이가 있을 뿐이다.


* simple_MBR.py 사용법

1. HxD 에디터로 데이터를 연다.

2. 데이터를 전체 선택 후 복사한다.

3. 메모장을 열어 데이터를 붙여넣고 저장한다.



4. simple_MBR.py 프로그램을 실행시켜 저장한 txt 파일을 불러온다.



5. 결과를 확인한다.


위에서 살펴본 샘플 예제를 분석한 것과 결과가 같은 것을 확인할 수 있다.



앞서 살펴본 샘플 예제는 파티션이 1개인 경우를 살펴보았다. 이제 확장 파티션이 있는 샘플 파일을 분석해 보자.



위 파일을 분석하기 위해 simple_MBR 프로그램을 사용하면 다음과 같다.



파티션 1은 FAT32 방식이고 시작 섹터가 128 섹터, 총 섹터는 512,000, 총용량은 250MB

파티션 2는 FAT32 방식이고 시작 섹터가 512,128 섹터, 총 섹터는 512,000, 총용량은 250MB

파티션 3은 FAT32 방식이고 시작 섹터가 1,024,128 섹터, 총 섹터는 512,000, 총용량은 250MB

파티션 4는 Ext 방식이고 시작 섹터가 1,536,128 섹터, 총 섹터는 557,056, 총용량은 272MB


위와 같이 확인할 수 있다.


다양한 예제를 분석해보자.


- MBR test #1



위 파일을 simple_MBR 프로그램으로 돌려보자.



위와 같이 분석이 되었다. 분석이 제대로 되었는지 확인하는 방법은 HxD 에디터로 파티션의 시작 섹터 부분으로 이동했을 때 VBR이 나타나는지 보면 된다. 이는 다음과 같다.



에디터 상단에 '섹터' 부분에 128을 입력하고 엔터를 치면 다음과 같이 섹터 128로 이동하게 되며 VBR이 나타남을 볼 수 있다. 이와 같이 409,728 섹터와 716,928 섹터로 이동해보면 다음과 같다.





- MBR test #2



이를 simple_MBR 파일로 열면 다음과 같다.



4번째 파티션을 보면 Ext방식이고 시작 주소가 1,316,992 임을 알 수 있다.

이 주소로 가면 다음과 같다.


boot code 부분이 비어있는 것을 확인 할 수 있으며 이는 Extended Boot Record( EBR )의 특성이다. 이를 다시 simple_MBR 파일로 돌려보자.



파티션 정보가 2개만 있는 것을 확인할 수 있다. 이 또한 EBR의 특성이며 파티션 1은 현재 파티션의 정보를 나타내며 파티션 2는 다음 파티션의 위치를 나타낸다. EBR의 경우 상대적 위치를 나타내기 때문에 앞서 봤던 Ext의 시작 주소를 각 파티션의 시작 주소에 더해주어야 실제 파티션의 시작 주소를 알 수 있다.


위와 같은 방식으로 분석을 하면 된다.


다음 포스팅은 실제 파티션을 복구하는 방법에 대해서 알아보자.

Posted by Imp3rio

파티션 복구 실습을 위해 자주 사용하는 도구에 대한 사용법을 간단히 살펴보자.


1. HxD 에디터


일반 텍스트 타입의 파일은 텍스트 편집기를 이용해서 쉽게 확인할 수 있지만, 대부분 파일 내부에는 텍스트가 아닌 데이터로 존재한다.

HxD는 이진 파일을 읽을 수 있는 무료 에디터 프로그램으로 사용법이 쉽고 간단하여 널리 사용되고 있다. 주로 사용되는 기능으로는 파일이나 이미지의 특정 섹터를 확인하거나 수정할 때 사용된다.


* HxD 에디터 다운로드

https://mh-nexus.de/en/downloads.php?product=HxD


- HxD 인터페이스


•파일: 파일의 열기, 저장, 인쇄가 가능한 메뉴이다.

•편집: 파일의 복사, 붙여넣기, 등이 있는 메뉴이다.

•찾기: 찾기, 찾아 바꾸기, 특정 오프셋으로 이동 등 설정이 가능하다.

•보기: 화면에 표시되는 데이터 표현( 아스키, 16진수 등 ) 설정이 가능하다.

•분석: 파일의 해시값 분석 및 두 개의 파일을 비교할 수 있다.

•기타설정: 물리적인 장치와 이미지 분석할 때 사용되는 메뉴이다.


1) 분석 대상 열기


HxD 에디터는 파일, 물리 디스크, 이미징된 파일을 읽을 수 있다. 먼저, 파일을 분석하려면 '파일 > 열기' 메뉴로 열 수 있지만, 포렌식 분석을 위해서는 '기타설정' 메뉴를 사용한다.


•램: 기타설정 > RAM 열기

•물리디스크: 기타설정 > 디스크 열기

•디스크 이미지: 기타설정 > 디스크 이미지 열기



처음 파일을 열면 1섹터 당 몇 byte인지 묻는데 보통 512byte이기 때문에 512를 선택하고 '수락'을 선택하면 섹터 단위로 이동하기 편리하다. size는 원하는 byte 단위로 바꿔도 된다.



2) Sector 이동과 수정


Sector 이동은 Sector 입력 폼에서 이동하고 싶은 Sector의 숫자를 직접 입력하여 이동할 수 있고, 원하는 위치의 Hex 값으로 수정할 수 있다.


또한, 원하는 섹터를 블록 지정하여 복사한 뒤 '붙여넣기 쓰기'를 통해 덮어쓰기도 가능하고 '붙여넣기 삽입'으로 삽입도 가능하다.



3) 특정 영역 일괄 블록지정


일괄 블록지정은 '편집 > 블록선택'에서 '오프셋 시작'과 '오프셋 종료'로 지정한다. 이 기능은 파일이나 디스크 복구 등 많은 섹터 영역을 지정해야 할 때 유용하게 사용된다.



4) 특정 영역 일괄 바꾸기


일괄 바꾸기는 바꾸고자 하는 영역을 드래그한 후 '편집 > 선택 채우기' 로 지정된 블록 영역을 원하는 값으로 모두 바꿀 수 있다.




2. FTK Imager


포렌식의 가장 기본이 되는 FTK Imager는 디스크 이미징 작업에 많이 쓰인다. 이 밖에도 이미징 작업에 많이 쓰이는 소프트웨어로는 EnCase와 dd라는 도구가 있으며, 물리적인 하드디스크 이미징 전용 장비로는 Road Master, Rapid Image 등이 있다.

논리적인 이미징 방식은 다른 하드디스크에 이미지 파일( .011, .dd 등 )로 저장이 되며, 실제 하드디스크와 같은 용량을 차지한다. 물리적인 이미징 방식은 하드디스크를 다른 하드디스크에 그대로 복제하는 것을 말하며, 복사될 하드디스크는 원본 디스크보다 용량이 같거나 커야 한다. 또한, 소프트웨어 방식과 물리적 방식 모두 복사될 하드디스크는 충분한 와이핑 후 복사를 해야 무결성을 지킬 수 있다.

FTK Imager는 제작사 다운로드 페이지에서 이름과 이메일 주소를 등록하면 다운로드 링크를 등록한 이메일로 보내준다.


* FTK Imager 다운로드

http://accessdata.com/product-download/digital-forensics/ftk-imager-version-3.4.3


- FTK Imager 인터페이스


FTK Imager의 인터페이스는 Evidence Tree, File List, Property, Hex Value Interpreter, Custom Content Sources으로 나뉘어있다.


•Evidence Tree: 계층적 트리구조로 추가한 증거 항목을 보여준다.

•File List: Evidence Tree에서 선택된 항목에 있는 파일과 폴더를 보여준다.

•Viewer: Preview Mode 옵션인 Natural, Text, Hex 선택에 따라 선택된 파일의 내용을 보여준다.

•Custom Content Sources: 이미지에 포함된 내용을 보여준다.

•Properties/Hex Value interpreter: Evidence Tree이나 File List에서 선택된 객체의 다양한 정보를 보여주고, 뷰어에 선택된 16진수 값을 10진수와 가능한 날짜, 시간 값으로 변환한다.


1) 이미징 생성


상단의 'File > Add Evidence Item' 메뉴를 클릭하거나 화면에 보이는 File 메뉴바로 아래에 있는 플러스가 하나인 아이콘을 클릭하면 다음과 같은 화면을 보게 된다.



•Physical Drive: 실제 물리적으로 연결된 하드 드라이브의 목록을 보여준다.

•Logical Drive: 논리 드라이브를 볼 수 있다.

•Image File: 이미징이 된 파일들을 불러올 수 있는 메뉴이다.

•Contents of a Folder: 폴더를 선택할 때 사용된다.


여기에서는 Physical Drive를 눌러 원하는 물리적인 하드 드라이브를 FTK Imager에 마운팅 시켜보면 다음과 같은 화면이 나타난다.




Evidence Tree에 원하는 파티션 또는 물리적인 드라이브를 선택하고 우클릭을 하면 5가지의 메뉴가 나타난다.


•Remove Evidence Item: 추가한 아이템을 제거한다.

•Verify Drive/Image: 검증을 위한 작업이 실행되고 Export

•Disk Image: 이미징 작업을 위한 메뉴이다.

•Image Mounting: 실제 마운팅을 실행시켜주는 작업메뉴이다.

•Export Directory Listing: 해당 드라이브의 모든 파일과 폴더 구조를 추출해주는 메뉴이다.




Export Disk Image 메뉴를 선택하면 다음과 같은 화면이 나타난다.



'Add' 메뉴를 누르기 전 Add 아래에 있는 'Verify images after they are created' 메뉴를 선택하여 이미지 검증을 진행하는 것이 좋다. 디지털 포렌식에서 무결성은 매우 중요하기 때문이다.

Add 메뉴를 누르게 되면 저장할 이미지 타입과 간단한 분석관 이름, 사건번호를 적는 화면이 나타나게 된다. 이후 저장할 이미지 이름과 크기를 입력하는 창이 뜨게 된다. 이때 주의할 점은 크기에 따라 파일이 나뉘게 된다는 것이다.

'NCS보안3기 > 디지털 포렌식' 카테고리의 다른 글

[Forensics] 파티션 복구 실습 III  (0) 2017.04.26
[Forensics] 파티션 복구 실습 II  (0) 2017.04.26
[Forensics] MBR 구조  (0) 2017.04.24
[Forensics] MBR  (0) 2017.04.24
[Forensics] FORENSIC  (0) 2017.04.24
Posted by Imp3rio

* MBR 구조1

- MBR은 크게 3개 부분으로 나뉘어 진다.

- 부트 코드 부분: offset 0 - 445

- 파티션 테이블 부분: offset 446 - 509

- 시그니처 부분: offset 510 - 511



* MBR 구조2 - 디스크 시그니처

- 부트코드에는 디스크 시그니처 값이 포함된다.

- 디스크 시그니처: offset 440 - 443


- 디스크 시그니처는 운영체제가 설치된 디스크를 확인하는 값으로 MBR에 포함되어 있다.

- 디스크 시그니처는 레지스트르에도 그 값을 저장하고 있다.




* MBR 구조3 - 파티션 테이블

- 파티션테이블은 64바이트 크기로 총 4개의 파티션 정보를 가지고 있다.

- 파티션테이블은 총 4개의 엔트리로 구성되며

- 하나의 엔트리는 16바이트 크기로 하나의 파티션 정보를 가지고 있다.



* MBR 구조4 - 파티션 테이블 세부

- 파티션테이블을 하나의 엔트리를 살펴보면

- 부트 플래그, 시작 CHS주소, 파티션 타입, 끝 CHS주소, 파티션 시작 LBA주소, 파티션 총 섹터의 정보를 가지고 있다.

- 부트 플래그: 1바이트

> 해당 파티션이 부팅 가능한지 아닌지의 여부를 알려준다.

> 0x80이면 부팅 가능

>0x00이면 부팅 불가능


- 시작CHS주소: 3바이트

> 시작 CHS주소는해당 파티션의 실린더 / 헤더 / 섹터 방식의 시작 주소를 나타낸다.

> 현재는 디스크 주소체계가 LBA방식을 사용하여 의미가 없다.

> 과거 CHS방식과 호환성을 위해 존재한다.

> 해당 값이 00으로 채워져 있어도 동작에는 관계없음


- 파티션 타입: 1바이트

> 파티션에 설치되어 있는 파일시스템의 종류를 알려준다.

> FAT32, NTFS 등 파일시스템이 어떤 것이 사용되었는지 확인 가능하다.

> FAT32: 0x0B( 0x0C ) / NTFS : 0x07로 사용


- 끝 CHS 주소: 3바이트

> 시작 CHS주소와 같이 현재는 사용되지 않음


- 파티션 시작 위치: 4바이트

> 해당 파티션이 시작하는 처음 LBA주소를 나타내는 것으로

> 해당 위치로 이동하면 BR지점으로 이동 가능


- 파티션 총 섹터: 4바이트

> 해당 파티션이 가지고 있는 총 섹터 수를 나타낸다.

> 파티션의 총 섹터 수를 구하면 파티션에서 사용하고 있는 전체 용량을 계산 가능하다.



'NCS보안3기 > 디지털 포렌식' 카테고리의 다른 글

[Forensics] 파티션 복구 실습 III  (0) 2017.04.26
[Forensics] 파티션 복구 실습 II  (0) 2017.04.26
[Forensics] 파티션 복구 실습 I  (0) 2017.04.25
[Forensics] MBR  (0) 2017.04.24
[Forensics] FORENSIC  (0) 2017.04.24
Posted by Imp3rio

1. MBR( Master Boot Record )


디스크에서 가장 중요한 데이터 구조인 MBR은 디스크가 파티션될 때 만들어진다. MBR은 작은 크기의 master boot code, disk signature, 그리고 디스크에 대한 partition table을 포함한다. 

MBR의 끝에는 signature word 또는 sector marker의 끝이라고 불리는 2바이트 구조를 갖으며, 이는 항상 0x55AA로 세팅된다. signature word는 extended boot record( EBR )과 boot sector의 끝을 표시한다.

offset값이 0x01B8인 고유번호인 Disk signature는 운영체제에 대한 디스크를 식별한다.


2. MBR의 역할


- 부팅 가능한 파티션( 활성 파티션 )을 탐색

- 부팅 가능한 파티션의 시작 섹터 탐색

- 부팅 가능한 파티션의 부트 섹터를 복사해 메모리에 로드

- 부트 섹터에서 실행코드 실행


3. Partition Table ?


- 파티션 테이블은 64바이트의 구조체로 하드디스크에서 파티션의 위치, 타입 정보를 담고 있다.

- 파티션 테이블은 총 4개의 파티션 테이블 엔트리를 가지고 있으며, 각 16바이트의 크기를 갖는다.

- 파티션 테이블 엔트리에는 다음과 같은 정보를 포함한다.

1) 부팅 가능한 파티션 정보: 0x80은 부팅 가능 / 0x00은 부팅 불가

2) 시작 CHS 주소: 지금은 사용하지 않는다.

3) 파티션 타입: 파티션의 파일시스템 종류를 나타낸다.

4) 끝 CHS 주소: 지금은 사용하지 않는다.

5) 파티션 시작 위치: 파티션의 시작 위치로 해당 파일시스템의 BR( Boot Record ) or VBR  ( Volume Boot Record )의 위치를 나타낸다.

6) 파티션의 총 섹터: 파티션에서 사용하는 전체 총 섹터를 나타낸다.


4. 파티션 개수는 몇개까지 가능한가 ?


- 파티션의 개수는 파티션 테이블 엔트리의 개수만큼 가질 수 있다.

- 기본적으로 파티션 테이블 엔트리는 4개 이므로 파티션의 개수도 4개까지 가능하다.

- 하지만 확장 파티션을 사용하면 4개 이상의 파티션을 사용 가능하다.


5. 확장 파티션( 논리 드라이브 )이란 ?


- 확장 파티션은 4개 이상의 파티션을 사용하려고 할 때 생성되는 파티션이다.

- 3개의 파티션까지는 주 파티션으로 생성되지만, 4개 이상의 파티션을 생성하려고 하면 확장 파티션으로 생성된다.


- 녹색으로 테두리가 되어 있는 부분이 확장 파티션 부분이다.

- MBR 파티션 테이블에서는 녹색으로 되어 있는 확장 파티션을 하나의 파티션으로 구분한다.

- 따라서, 위와 같이 파티션이 있는 경우

- 4번째 파티션 테이블 엔트리에는 확장 파티션의 시작위치와 전체 크기만 존재한다.

- 4번째 파티션 테이블 엔트리의 정보만으로는 확장 파티션 내에 실제 몇 개의 파티션이 있는지 파악할 수 없다.

- 이를 확인하기 위해서는 확장 파티션의 시작 위치에 가서 추가적으로 분석이 필요하다.


6. 확장 파티션 BR( EBR )



- 확장 파티션 BR은 주 파티션이 아닌 확장 파티션( 논리 드라이브 )을 생성하면 추가되는 섹터다.

- MBR과 구조는 비슷하나 파티션 테이블과 시그니처( 0x55AA ) 정보만 가지고 있다. 부트코드는 존재하지 않는다.

- 4번째 파티션 테이블의 시작 위치를 참고해 확장 파티션으로 이동하게 되면.

- 1 ~ 3번째 파티션 테이블에서 나오는 시작 위치와 달리 MBR과 비슷한 구조를 확인 가능하다.

- MBR 파티션 테이블은 총 4개의 엔트리를 가지고 있지만, 확장 파티션 BR에서는 처음 2개의 엔트리만 사용한다.

- 3, 4번째 파티션 테이블 엔트리는 사용하지 않는다.

- 2개의 엔트리 중 첫번째 엔트리는 확장 파티션의 첫 번째 파티션 정보를 담고 있으며,

- 두번째 엔트리는 다음 파티션 정보를 바로 가리키는 것이 아니라, 다음 확장 파티션 BR 위치를 알려준다.

- 확장 파티션에는 확장 BR을 하나씩 가지고 있는 것이다.

'NCS보안3기 > 디지털 포렌식' 카테고리의 다른 글

[Forensics] 파티션 복구 실습 III  (0) 2017.04.26
[Forensics] 파티션 복구 실습 II  (0) 2017.04.26
[Forensics] 파티션 복구 실습 I  (0) 2017.04.25
[Forensics] MBR 구조  (0) 2017.04.24
[Forensics] FORENSIC  (0) 2017.04.24
Posted by Imp3rio

1. 포렌식( Forensic ) ?

     Forensic science( 법과학 )은 과학적 범죄수사 방법을 말한다.


2. Inman-Rudin Paradigm


- 사건( 범죄 )의 발생

Divisible Matter( 분열될 수 있는 물질 ) : 사건이 일어나면 물질은 분리된다.

Matter( 물질 ) / Traits( 특성 ) : 분리된 물질은 전송된다. 서로에게( 로카르 법칙 ) 전송

-> 각각의 물질은 서로 다른 특성을 가진다.

해킹사건의 경우

-> 해커에게는 피해자의 정보( 해커가 얻고자 하는 정보 )가 남게 된다.

-> 피해자에게는 시스템에 로그가 남게 된다.

USB를 통한 정보유출의 경우

-> 정보유출자는 정보를 유출한 USB에 정보가 남게 된다.

-> 피해자의 경우 정보를 유출해 간 USB의 정보가 남게 된다.


- 사건( 범죄 )이 발생한 후 인지( Recognition )

사건이 발생하더라도 그게 발생했는지 인지하는데 까지는 상당한 시간이 필요하다.

-> 해킹사건의 경우 사건이 발생하고 난 후 그 사실을 인지하는데 까지는 오랜 시간이 필요하다.

-> 수사기관에서 해킹사실에 대한 내용을 알려주거나

-> 해커가 직접 알려주거나

-> 감사에서 적발된다.


사건 인지 후에 바로 증거 수집이 필요하다.

-> 있는 그대로의 증거를 수집한다.


-  사건( 범죄 ) 증거의 분류( Classification )

-> 사건현장, 증인, 피의자( 용의자 ), 목격자 등으로 분류

-> 사건현장( Scene )

-> 피해자( Victim )

-> 용의자( Suspect )

-> 목격자( Witnesses )


- 증거에 대한 식별( Identification )

-> 종이, USB, 컴퓨터 등 일반적인 사람이 인식할 수 있는 단계

-> 이름, 주민번호, 통장번호, 카드번호가 기재된 종이 ➞ 단지 종이

-> 책상위에 놓여져 있는 USB

-> 불이 켜져 있는 컴퓨터 본체

-> 이는 USB가 어느 회사 제품이고 용량이 얼마나 되며 속도가 어떻게 되는지에 대한 식별이 아닌 단순한 USB로만 인식하는 단계


- 증거에 대한 개별화( Individualization )

-> 이름, 주민번호, 통장번호, 카드번호가 기재된 종이: 어느 은행 또는 카드사에서 나온 것인지 판단

-> 책상위에 놓여져 있는 USB: 어느 회사 제품인지 용량이 얼마나 되는지 등

-> 불이 켜져 있는 컴퓨터 본체: 윈도우 운영체제는 어떤 것을 사용하고 있는지

-> 스마트폰: 어느회사 제품이고 어느 운영체제를 사용하는지


증거에 대한 연고나성( Association )

-> 증거 대상에 범죄에 대한 행위( transfer )가 일어났는지 증거를 찾는 것.

-> 모든 증거에 대해 상호 분석

-> 다양한 가능성을 염두해 두고 분석


- 증거에 대한 재구성( Reconstruction )

-> 수집된 증거에 대한 연관성 등을 분석해 사건을 다시 재구성하는 것.

-> 이를 통해 어떻게 사건이 일어났는지 추정

-> 타임라인 분석을 통해 시간대별 이벤트를 구성하여 전체적인 사건 재구성

-> 파일시스템 $MFT, $USNJurl, $Logfile, 프리패치, 링크파일, 레지스트리 하이브 등 여러 증거들을 종합해 전반적인 흐름 구성



3. 전통적인 포렌식과 디지털포렌식의 차이

- 전통적인 포렌식

How에 대한 문제는 해결해 주지만 Why에 대해서는 해결해주지 못한다.

범죄현장에서 어떻게 죽었는지, 무엇을 통해 죽임을 당했는지, 누구에 의해 죽임을 당했는지 등에 대해서는 밝혀낼 수 있다. 하지만 왜 죽임을 당했는지에 대해서는 밝혀낼 수 없다.


- 디지털 포렌식

전통적인 포렌식과 마찬가지로 어떻게 사건이 벌어졌는지에 대한 문제 해결이 가능하다. 또한 왜 이 사건이 발생했는지에 대한 문제도 해결 가능하다.


4. 전통적인 포렌식과 디지털포렌식 프로세스 비교


- 이미징: 저장매체의 모든 물리적 데이터를 파일 형태로 만드는 작업

복사 VS 복제 VS 이미징


- 네트워크 패킷 캡쳐: wireshark 등을 통해 네트워크 상에서 돌아다니는 데이터 패킷을 캡쳐한다. 이는 OSI 모델의 2계층인 Data-Link 계층에서 패킷을 캡쳐한다.


- 라이브 포렌식: 전원이 켜져 있는 기기에서 휘발성 데이터가 저장되는 RAM에 대한 증거 수집을 예로 들 수 있다.


5. 디지털 포렌식 절차

1) 조사준비

- 도구 개발 및 마련

분석 대상에 적합한 분석 SW 마련

분석 대상에 적합한 분석 SW 개발

- 교육훈련

각종 파일시스템 분석: FAT32, NTFS, ExFAT, HFS, Ext 2,3,4

네트워크 장비 특성 분석: IDS, IPS, WAF

OS 버전별 특징 분석: 윈도우 xp, vista, 7, 10, Cent OS, Ubuntu

어플리케이션 별 특징 분석: MS Office, Kakaotalk, ...

- 장비 및 도구 준비

분해 해체 공구 세트

디스크 복제/이미징 장비

쓰기방지 장치

분석용 소프트웨어

분석용 PC

다양한 규격의 케이블

증거 포장 운반세트

캠코더, 카메라


2) 증거 수집

- 증거 수집 시 고려사항

사진촬영( 무엇을 찍을 것인가? )

수집 대상 확인( 어떤 것을 수집할 것인가? )

전원이 켜진 PC에서 어떻게 증거를 수집할 것인가?

증거 데이터를 어느 범위까지 할 것인가?


- 증거 수집 시 방법

전체 디스크를 이미징

> PC에서 디스크 분리 후 현장에서 이미징

> PC에서 디스크 분리 후 압수 한 뒤 분석실에서 이미징


휘발성 정보 수집( 라이브 포렌식 )

> 메모리 전체를 이미징

> 필요한 정보 수집을 위한 스크립트 작성


디스크에서 일부 정보만 수집


3) 증거 조사/분석

- 삭제된 데이터 복구

- 해쉬 분석

- 인터넷 히스토리 분석

- 이메일 분석

- 링크파일 분석

- 프리패치 파일 분석

- 레지스트리 분석

- 이미지 파일 분석

- 휴지통 분석

- 윈도우 이벤트 로그 분석

- 컴파운드 파일 분석

- 시그니처 분석

- USB 접속기록 분석

- 타임라인 분석


4) 보고 및 증언

분석 보고서 작성: 분석자, 분석 SW, 분석 대상, 분석 내용, 분성 결과

전문가 증언: 법정에서의 전문가 증언

> 분석자로서의 자질 검증 및 의견 수렴

> 관련 학력, 관련 자격증, 관련 경력 등


'NCS보안3기 > 디지털 포렌식' 카테고리의 다른 글

[Forensics] 파티션 복구 실습 III  (0) 2017.04.26
[Forensics] 파티션 복구 실습 II  (0) 2017.04.26
[Forensics] 파티션 복구 실습 I  (0) 2017.04.25
[Forensics] MBR 구조  (0) 2017.04.24
[Forensics] MBR  (0) 2017.04.24
Posted by Imp3rio