포렌식에 대해서 여러가지 포스팅을 하고 있습니다만 

 

여러가지 기타 다른 정보들도 열람하시려면 아래 노션 참고해주시면 될거 같습니다

 

그렇다고 노션에만 작성을 하는것은 아니구요 

 

블로그 포스팅은 계속 하겠습니다

 

https://www.notion.so/Digital-Forensic-11cc85273c5f450ba4aed1d8cb77cb2b

확장 파티션 - Extended Partition 

원래 하나의 MBR은 64byte라서 구조상 4개의 파티션을 사용할 수 밖에 없는데 

그 한계를 극복하기 위해서 나온 개념입니다. 

 

마지막 4번째 파치션 테이블이 가리키는 위치가 또 다른 MBR영역을 가리켜 추가로 4개의 

파티션을 담을 수 있도록 하는 구조라는 것이죠

 

 

파티션을 사용하는 이유는 

시스템 파티션과 구분하여서 데이터 저장이나 백업용으로 사용을 많이 합니디.

하나의 시스템에 다양한 운영체제를 설치(멀티 부팅)를 할 수 있다는 장점도 존재하며,

파일 탐색 시에 헤드 움직임 감소로 탐색시간이 줄어드는 장점도 존재하기 때문에 

이러한 장점들로 인하여 확장 파티션을 현재까지도 쓰고 있습니다. 

 

이상 확장파티션에 대해서 한번 알아보았습니다.

이번에는 저번 외전편에 이어서 조금더 자세하게 알아보도록 하겠습니다. 

파티션 

저장메체의 저장공간을 논리적으로 분할한것으로 

시스템은 부팅과정에서 파티션의 크기, 위치, 설치된 운영체제등을 파악하여 그에 맞게

구동을 해야 하는데, 그러한 정보를 담고 있는 부분이 Boot Record(BR) 영역이라고 합니다. 

우리가 자주 사용하는 Windows는 파티션의 첫번째 섹터에 위치를 하고 있습니디.

 

 

여러개의 파티션을 나누어서 포멧을 하면 다중 파티션을 만들수도 있고 

파티션을 하나만 사용을해서 단일 파티션을 만들 수도 있습니다. 

 

하지만 대부분 파티션 별로 주로 포멧도 하고 하는경우가 많아서 

파티션에 따라서 파티션을 관리하는 MBR 영역이 있습니다. 

 

Master Boot Record

분할된 파티션에서의 각 BR을 관리하는 영역으로 

MBR은 저장메체의 첫번째 섹터 (LBA 0)에 위치하는 512byte 크기의 영역 입니다.

정리를 하자면 파티션에 관한 정보를 담고있는 BR영역을 총괄하는 영역이 MBR영역 입니다.

 

예를 들어 아래의 다중 파티션 같은경우 파티션의 총 갯수에 대한 정보는 MBR이 가지고

각 파티션마다 C:\ / D:\ 에 대한 정보들은 각각의 BR영역이 가지게 됩니다. 

 

 

Boot code 

컴퓨터가 부팅이 될때 수행되는 코드로 파티션 테이블에서 부팅 가능한 파티션을 찾아서 

해당 파티션의 부트 섹터를 호출하는 역할을 수행합니다.

아래의 그림을 보면 현재 MBR은 4개의 파티션 영역을 관리할 수 있다는 이야기가 됩니다.

 

Partition Table Area - 파티션 테이블 영역 

16byte씩 총4개의 파티션 정보가 저장 됩니다. 

첫번째 값인 부트 플래그(Boot Flag)는 해당 파타션이 부팅가능한 파티션인지를 나타내면서

부팅가능한 파티션일 경우 해당 부트 플래그의 값은 0x80 입니다.

 

MBR의 부트코드는 파티션 테이블을 검색하여 부트 플래그 값이 0x80의 값을 가지고 있는 

파티션의 부트섹터 위치로 점프하는 역할을 수행하게 됩니다. 

그래야 부팅이 되겠죠??

 

그래서 포렌식 수사 시, 파티션 영역 및 디스크의 전 영역을 조사하거나 

필요에 따라서 MBR의 영역을 직접해석하는 경우도 있습니다. 

(그러니까 나쁜짓 하면 안되요)

 

 

여기까지 MBR 영역을 한번 알아보았는데요

원래는 MBR영역에서 파티션 정보를 표현하는 공간은 총 64byte로 총 4개까지만 

파티션을 분할 할 수 있지만 실제로 해보면 더 많은 공간의 파티션을 분할 할 수 있습니다.

바로 확장 파티션이라는 개념이 등장한 것인데요,

 

다음 포스팅에서는 이것을 한번 알아보도록 하겠습니다.

이번에는 파티션과 볼륨을 한번 간단하게 알아보도록 하겠습니다. 

우선 파티션이 뭘까요?

 

Partition

말 그대로 분리를 하는것 입니다. 

물리적으로 연속된 섹터들의 집합을 의미하고

디스크의 공간을 논리적인 별도의 데이터 영역으로 분할한 공간을 의미합니다.

 

Volume 

논리적으로 연속된 섹터들의 집합입니다.

파일시스템으로 포멧된 디스크 상의 저장 영역, 볼륨에는 드라이브 문자가 할당 됩니다.

(C드라이브 , D드라이브 등등 많이 보있을 겁니다.)

 

단일 하드 디스크에 여러개의 볼륨이 존재 할 수 있으며 -> (C드라이브 , D드라이브 등등)

여러개의 하드디스크가 하나의 볼륨이 될수도 있습니다 -> (대표적으로 RAID가 있겠네요)

 

파티션과 약간 다르죠?

파티션은 그냥 하나의 공간일 뿐입니다.

포멧을 시키면 그 곳에 파일시스템이 만들어지면서 완성되면 볼륨이 생성됩니다.

 

즉, 하드디스크를 파티션으로 공간을 나누어서 포멧을 하면 여러개의 볼륨이 생기게 되는데

여러개의 하드디스크를 하나로 묶어서 포멧을 한다면 여러개의 하드디스크를 사용을 할 지라도 

하나의 볼륨으로 생성이 됩니다. 

 

파티션과는 다른 개념입니다. 

 

이번에는 Slack에 대해서 알아보도록 하겠습니다. 

Slack Space 

물리적인 구조와 논리적인 구조의 차이로 발생하는 낭비공간 입니다. 

쉽게 말해서 파일에 할당된 공간이지만 사용되자 않는 낭비 공간 입니다.

 

 

 

RAM Slack (Sector Slack)

저장되어있는 데이터가 디스크에 저장될 때 512byte씩 기록되는 특성 때문에 발

생하는 공간입니다. 그래서 다른 말로 섹터 슬랙이라고도 합니다. 

지정되는 파일의 크기가 항상 512byte의 배수가 아니기 때문에 이럴 경우 발생하게 됩니다. 

여분의 바이트 값으로 0x00으로 기록이되고 램 슬랙을 이용하면 파일의 끝 부분을 알 수 있기 때문에 

삭제된 파일의 복구시에 유용하게 사용되기도 합니다. 

 

실제로 파일 카빙에 활용을 많이 합니다. 

메타 데이터 보다는 파일 자체의 바이너리 데이터 (내용이나 시그니처, 헤더)등을 이용해서 

메타 데이터 영역이 아닌 할당되지 않은 비 할당 영역에서 파일을 복구하는 형식을 의미합니다.

 

File Slack(Drive Slack)

클러스터에서는 사용하고 있으나 사용되지않은 불필요한 공간 입니다. 

그래서 램슬랙은 섹터 내부였다면 파일 슬랙은 클러스터 내부에서 발생하는 낭비 공간입니다.

 

파일 슬랙을 이용하면 특정 파일이 해당 저장 매체에 존재하였는지 규명이 가능합니다,

존재 여부를 알아야 할 파일들을 클러스터 단위로 나눈 후  각 클러스터의 마지막 부분과 파일 슬랙 중 

일치하는 부분이 있는지 확인을 합니다. 

 

최하단의 디스크 입출력은 섹터 단위로 진행이 되기 때문에 0x00으로 기록되는 램슬랙과는 다르게 이전의 

데이터가 그래도 남아있습니다.(I/O는 섹터 단위로 진행)

이전에 사용한 데이터가 존재 할 경우, 흔적 조사에 활용을 할 수 있을 것입니다.

 

 

 

File System Slack 

파일시스템 할당 크기와 볼륨크기간의 차이로 인해서 발생디는 공간을 의미합니다.

1,026KB 볼륨에 4KB 클러스터 사용하는 파일시스템을 구성하게 된다면

마지막 2KB는 파일 시스템 슬랙이 됩니다. 

 

 

Volume Slack 

전체 볼륨 크기와 할당된 파티션 크기의 차이로 인해서 발생되는 공간 입니다. 

하나의 볼륨에 파티션이 있는데 파티션이 안나누어져 있는 공간을 의미합니다. 

파티션의 공간과 볼륨의 남은 공간이 딱 맞지 않은 경우에 볼륨슬랙이 생기게 됩니다.

 

이번에는 슬랙영역에 대해서 알아보았는데 다음 포스팅에서는 파티션과 MBR 에 대해서 

알아보도록 하겠습니다.

이전에 우리가 클러스터에 대해서 알아보았는데요, 

조금더 깊게 들어가 보도록 하겠습니다. 

 

Cluster 

여러개의 섹터(하드디스크이 물리적 최소 단위)를 묶은 단위 입니다.

섹터 단위로 입출력을 처리하면 시간이 오래걸리기 때문에 여러개의 섹터를 한번에 묶어서 처리 합니다. 

여기서 주의 할 점은 섹터는 물리적인 최소 단위를 의미하고 클러스터는 논리적인 최소 단위를 의미합니다.

 

그럼 클러스터 안에 여러개의 클러스터가 있을텐데 그럼 클러스터 보다 데이터의 양이 작으니끼 

슬랙들이 생기게 되는데 램슬랙과 파일 슬랙이 있습니다. 

 

램슬랙은 쉽게 말해서 하나의 섹터 안에서 (512byte) 모든 파일이 딱 맞게 떨어지지는 않을 것입니다.

물론 클러스터 단위로도 맞게 떨어지지는 않을 것 입니다. 

하지만 실제로 사용되는 섹터 입니다.(일부분이 사용되기 때문)

 

섹터 내부에서 사용되지 않은 영역은 램슬랙 

클러스터 내부에서 사용되지 않은 부분을 파일슬랙이라고 합니다. 

 

 

 

만약에 클러스터 크기를 4096byte를 지정했을때, 100byte의 데이터를 저장하는 경우, 

클러스터의 크기만큼 할당이 됩니다. 그러면 낭비가 아니야??

 

맞습니다.

 

3996byte가 낭비되지만 그럼에도 불구하고 디스크 입출력 횟수를 줄이기 위해서 클러스터 단위를 사용합니다.

4MB(4096KB)를 저장할 때 4KB크기의 클러스터를 사용하게 되면 1024번 입출력을 수행하게 되지만 

4MB(4096KB)를 저장할 때 512Byte 크기의 클러스터를 사용하게 되면 8192번 수행하게 됩니다. 

섹터 단위로 처리하면 이렇게 시간이 오래걸린다는 단점이 있습니다.

 

낭비되는 부분이 있지만 입출력의 속도가 더 중요하다고 판단을 하기 때문입니다.

그래서 여러개의 섹터를 묶어서 클러스터 단위로 관리를 하게 됩니다.

구분 장점  단점
클러스터 크기가 작음 낭비되는 영역이 적다(Slack) 파일 정보 관리 영역이 커진다
클러스터 크기가 큼  클러스터 처리 부담이 적다 낭비되는 영역이 많다(Slack)

 

이번에는 파일시스템 클러스터를 조금 더 심화적으로 알아보았는데 

다음 포스팅에서는 슬랙 영역을 보도록 하겠습니다.

지난 포스팅에선 하드디스크의 구조와 CHS 방식을 알아보았습니다

하지만 CHS 방식은 용량제약이 발생하게 됩니다. 

 

 

BIOS 보다 ATA 표준이 더 많은 수의 비트를 할당을 받습니다만 중첩되는 부분만 가능했기 때문에

CHS에 더 많은 섹터를 할당하기 위해서 BIOS 를 통해 전달되는 비트를 변환하여 지정함으로 

용량증가를 했지만 그래도 한계가 있었습니다. 

 

그래서 LBA 방식이 등장하게 되었습니다.

 

LBA - Logical Black Addressing

저장매체 용량의 증가에따라서 CHS를 대체하기 위한 방식입니다. 

물리적인구조와 상관이 없이 모든 섹터를 선형적으로 배열하여 하드디스크를 논리적인 주소로 

바꾸어서 데이터를 읽고 쓰자라는 것 입니다. 

 

그래서 논리주소와 물리주소의 맵핑은 저장 장치의 컨트롤러가 담당하여

물리적인 주소가 논리적인 주소로 맵핑이 가능해졌습니다.

이렇게 해서 총 128PB까지 저장이 가능하게 되면서,  충분히 하드디스크의 용량으로 사용이 가능해졌습니다.

 

이번에는 이렇게 하드디스크의 LBA 방식을 알아보았습니다. 

다음 포스팅에서는 파일시스템에 대해서 조금더 알아보도록 하겠습니다. 

 

 

 

 

하드디스크의 구조를 보면 이렇습니다. 

그럼 섹터는 무엇이냐?

 

플래터는 트랙으로 구성되어 있는데 섹터는 트랙이 섹터로 이루어져 있습니다.

섹터는 하드 디스크가 헤더를 통해서 읽는 논리적 기본단위 입니다. 

즉, 하드디스크에서 데이터를 논리적 단위로 처리를 한다는 이야기입니다. 

섹터가 모인것이 트랙이되고 트랙이 모이면 플래터가 됩니다.

 

섹터 

데이터 기록의 가장 기본 단위

총 571bytes에서 섹터의 위치를 구분하기 위한 고유번호 저장(59byte)

실제 데이터 저장으로 사용되는 영역은 512byte 입니다. 

 

 

CHS (Cylinder Header Sector)방식 

디스크의 물리적인 구조에 기반한 방식 입니다.

초기 ATA 표준과 BIOS의 지원 비트의 차이로 인하여 최대 504MB까지만 지정이 가능합니다.

이후에 BIOS 비트의 확장으로 8.1GB 까지 지원이 가능하게 되었지만

대용량 디스크는 지원이 불가능 합니다.

ATA-6 부터 표준에서 제외, LBA 방식이 새롭게 대두 되기 시작했습니다.

 

만약에 CHS(21,3,20) 라고 가정을 한다면 

3번째 헤드를 21번째 실린더의 20번째의 섹터로 이동한 후 정해진 크기 만큼 읽는것을 뜻합니다

이렇게 하면 특정 위치에서 데이터를 읽어올 수 있을 것입니다.

 

이번에는 하드디스크 구조를 알아보았습니다. 

다음 포스팅에서는 LBA방식을 알아보겠습니다.

이번에는 파일시스템을 알아보도록 하겠습니다. 

파일시스템이 필요한 이유

기본적으로 원하는 파일을 읽고 쓰고 하는 기본적인것들 부터 

필요한 데이터를 검색하고 저장 및 관리하는 전반적인 것들이라고 보시면 됩니다. 

만약 파일이 많이 없다면 필요없겠지만 파일들을 효과적으로 관리하기 위해서 필요하다라고 보시면 됩니다.

 

파일시스템이란?

디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식 

사용자에게 파일과 디렉터리를 계층구조로 데이터를 저장하도록 하는 메커니즘 

파일의 위치를 조직화 하고 사용자의 데이터를 구조적으로 관리가 가능합니다.

 

 

파일시스템의 종류

파일시스템은 운영체제마다 다 상이한데 

우리가 보편적으로 많이 쓰는 윈도우에서는 NTFS파일 시스템을 사용하고 있습니다. 

(윈도우 xp 이후에는 FAT -> NTFS)

 

 

=>??? 파일시스템이 왜이렇게 많냐, 하나만 쓰면 안됨???

우리가 컴퓨터를 사용할려면 운영체제가 있어야 하는데 이 운영체제에서 저장메체에서 있는 

데이터를 읽고 쓰고 관리를 하는데 운영체제에 딱 맞는 파일시스템이 있어야만

관리 및 최적화에 효율적일 것입니다.

 

파일 시스템의 구조 

파일시스템의 기본적인 동작은 운영체제가 각 파일을 사용하기 위해서 저장되어 있는 위치로 

접근하여 해당 데이터를 읽도록 해야겠죠?

또한 데이터의 위치를 파악하기 위해서

사용자가 저장한 파일의 목록을 확인할 수 있도록 해야할 것입니다. 

 

 

 

구조를 도식화 해보면 위의 그림과 비슷할 것입니다.

우리가 생성한 파일의 내용은 데이터 영역에 저장이되고 메타 영역에는 

파일관리를 위한 파일의 이름 , 위치, 크기, 시간 정보등이 기록이 됩니다. 

 

즉 , 사용자가 생성한 파일의 내용은 데이터 영역에 기록이되고 ,

메타 데이터들은 메타 영역에 저장이 됩니다. 

 

파일 시스템은 이러한 메타 정보를 유지 및 관리를 해서

파일 시스템을 효과적으로 관리를 하는 것입니다.

 

데이터 영역은 어떤 파일시스템을 사용하던지 비슷할것 입니다. 

하지만 메타 데이터들은 어떤 파일시스템이 어떻게 관리하느냐에

따라서 효율적인지 아닌지 나눌수 있습니다.

 

메타영역에서 메타데이터들을 저장하고 관리를 하면서

파일시스템이 효율적으로 동작 하도록 도와주는 역할을 하고 있습니다. 

 

물리적 측면 : 섹터의 나열 

논리적 측면 : 클러스터 , 파일 , 폴더 

 

파일시스템의 구성요소를 보시면 물리적인 측면에서 보면

섹터들의 나열이라고 볼 수 있습니다

 

하지만 논리적인 측면으로 바라보면 클러스터 ,파일, 폴더 가 있습니다. 

 

클러스터?

파일시스템에서 저장장치에 데이터를 일고 쓰는 논리적인 기본단위이면서 가장 작은 단위입니다. 

NTFS에서는 클러스터를 관리할때 기본적으로 4096byte씩 크기를 저장한다고 합니다.

 

하지만 모든 파일이 4096으로 나누어떨어지지는 않을 것 입니다. 

그러면 실제로 데이터가 저장되있는 공간이 있을것이고 비어있는 공간이 있을겁니다. 

이 빈공간을 슬랙이라고 합니다,

 

 

그러면 우리가 지금 클러스터를 알아보았는데 그러면 섹터는 무엇인가? 알아볼텐데요 

섹터를 설명하기 전에 하드 디스크를  먼저 한번 살펴보도록 합시다. 

우리가 실제로 사용할때 하드 디스크를 오픈하지는 않지만 내부는 아래와 같이 생겼습니다. 

 

 

하드디스크는 가장 널리 사용되고 있는 비 휘발성 저장장치 입니다. 

구조를 보시면 헤드가 있고 스핀들 모터를 통해서 플래터가 돌아가게 됩니다 

그리고 엑츄에이터 암을 통해서 헤드에 있는 정보들을 읽어 오는데 여기서 총 2가지의 커넥터를 

연결하게 되는데, 데이터 관련과 전원 입니다.

 

지금 현재 많이 쓰는 방식은 SATA (Setial Advanced Technology Attachment) 

방식을 많이 쓰고 있지만 예전에는 IDE(Integrated Drive Electronics) 방식도 사용을 했습니다.

 

현재 서버용으로는 SCSI(Small Computer System Interface)를 많이 사용한다고 합니다. 

SCSI 특징은 전원이 켜져있는 상태에서도 하드를 제거했다가 다시 연결할 수 있습니다. 

 

RAID는 여러개의 하드디스크를 한꺼번에 쓰기에 용이합니다 

단순이 합친다기 보다는 합쳐서 사용을 할때 오류가 났을때 다시 복구를 위한 장치를 한다던가

다른 기능을 추가 할 수 있습니다.

 

이렇게 이번에는 파일시스템을 간단히 알아보았습니다.

다음번엔 하드디스크의 구성요소를 알아보도록 하겠습니다. 

이번에는 포렌식의 역사에 대해서 설명해보고자 합니다

초기의 디지털 포렌식은 약 40년 정도의 역사를 가지고 있는데 ,

주로 데이터 복구에 초점이 맞춰졌습니다.  법 집행 기관의 컴퓨터 전문가에 의해

수행되는 특별한 전문 분야였고, 이 시기에는 컴퓨터가 그렇게 발전하는 시기가 아니었기 때문에

저장용량도 작고  범죄흔적이 많이 남아있었습니다. (안티 포렌식이 발전하기 전)

 

디지털 포렌식의 황금기 

컴퓨터가 용량이 크지도 않고 빠르지도 않았고 분석하기에도 많은 양은 아니었습니다

그래서 윈도우가 보급되고 윈도우만 연구하는 시기였습니다. 

상대적으로 작은 file foramt이 연구의 대상이 되었으며 용의자가 소유한 한 대의 컴퓨터를 대상으로

분석을 진행을 하였습니다. 이 후 기술적으로 발전하면서 데이터의 양과 기기도 발전을 하게 되었습니다.

 

하지만 지금 현재는. . .

 

클라우드 기술을 활용해서 증거 수집이 어려워졌고, 

분석 대상의 기기가 다양해지면서 안티 포렌식 기법도 증가하게 되면서

관련 법제도로 인하여 적용범위가 제한이 됩니다. 

이로 인하여 수사에 제한이 걸리게 되고 데이터의 양은 많아지면서 상당히 어려워졌습니다.

그만큼 연구가 필요하다는 이야기가 될수도 있을것 같습니다. 

 

디지털 포렌식 동향

안티포렌식의 등장 

완전 삭제 / 암호화 / 스테가노 그래피 등등  

일반사용자들이 이용하기 어려움 

 

디지털 포렌식 분야의 연구 증가 

대학 / 대학원 학위 과정 

로펌 /컨설팅 회사 

학회 나 DFC - 대회 

 

디지털 포렌식의 시장은 당연히 점점 증가 하고 있으며

전자기기의 종류나 양도 늘어나고 있기때문에 연 평균 10%이상 늘어나고 있다고 합니다.

(앞으로도 증가할것 같습니다.) 

가장 큰 목적은 법정에 제출하는것이지만 최근에는 국방, 의료 , 교육, 물류 등등

다양한 분야에서도 디지털 포렌식 기술이 요구되고 있습니다. 

기술 발전에 따라서 디지털 포렌식 기술은 산업 전 분야에서 지속적인 성장을 기대해 볼만 합니다.

 

특히나 개인 사이버 범죄 수사의 모바일 포렌식의 활용도가 증가하고 

스마트폰의 통화기록, 문자 메세지, 이메일 아이디 등등 수많은 개인정보가 저장이 되기 때문이죠

하지만 지속적으로 광범위하게 등장하는 모바일 기술이나 펌웨어 제조사의 각기 다른 하드웨어

및 소프트웨어가 사용이 되는데 이것을 어떻게 효율적으로 활용하는것이 현재 포렌식의 새로운 과제

라고 할 수도 있을것 같습니다. 

 

당연히 새로운 형태의 디지털 포렌식 조사 및 절차 방법이 필요합니다.

클라우드 컴퓨팅은 기존의 컴퓨팅 환경과 다른 특징들을 가지고 있습니다. 

용의자의 컴퓨터 한 대에서만 되는것이 아니기 때문입니다, 

앞으로도 빅데이터나 머신러닝 등등 여러 기술이 나올것인데 이에 대해서

새로운 대책이 필요할것입니다.

 

이번에는 전반적인 포렌식의 발전 과정과 배경에 대해서 알아보았습니다.

+ Recent posts