old

Slack 영역

nopdata 2016. 7. 22. 14:06

# Slack


● 슬랙(Slack)이란?

Slack의 사전적 의미는 느슨한, 부진한 등의 이미이다. 이번에 알아볼 슬랙이란것은 파일저장시, 또는 파티션 설정상에서 생기는 디스크의 빈 공간을 의미한다.

< Slack? >

보통 신경을 쓰지 않지만, 이 슬랙영역에 악성코드를 숨기거나, 주요 데이터를 숨길 수 있다.

파일시스템에서 생기는 슬랙은 여러가지가 있다.



1. Disk Driver로 인한 Slack

이는 일반 사용자가 다루기 어려운 내용으로 알고 있다. USB나 외장하드디스크를 PC에 연결시키면 자동으로 디스크 드라이버가 설치되는 것을 볼 수 있을 것이다.


< 디스크 드라이버 >

SanDisk USB의 드라이버 파일을 보면 disk.sys, partmgr.sys가 존재한다. 이 드라이버들이 디스크의 사용 가능한 최대 크기를 결정한다. 고로, 이 드라이버를 조작한다면 사용 가능한 영역을 줄여 빈 공간이 생길 수 있다.

실제로 64GB짜리 SanDisk USB의 사용 가능한 디스크의 최대 크기를 보면 다음과 같다.


< SanDisk USB Hex >

HxD의 '기타설정 - 디스크 열기' 기능을 이용하여 디스크를 열면 위처럼 마지막 오프셋이 E79FFFFFF인 것을 확인할 수 있다.

0xE79FFFFFF는 62176362495이며 GB로 바꾸면 다음과 같다.


< Byte 변환 >

64GB가 안되는 57.9GB이다.이는 업체가 64GB라고 속인것이 아니라, USB보호 기능, 또는 벤더정보등이 들어가는 드라이버 파일이 탑재되어 있기 때문에 64GB에서 공간을 차지하여, 사용자에게는 그 공간을 제외한 나머지를 사용하도록 드라이버가 설정을 해 놓은 것이다. USB에 탑재되어있는 드라이버 자동설치들을 제거하면 64GB를 온전히 사용할 수 있을 것이다(아마도?)


2. 파일시스템으로 인한 Slack

동일한 디스크라도 그 디스크에서 사용되는 파일시스템이 다르면 사용할 수 있는 공간이 다르게 나타날 수 있다.

< 동일한 SanDisk USB >

둘 다 64GB짜리 USB이다. HEX의 최대값을보면 동일하지만 NTFS와 exFAT의 볼륨상 사용가능한 크기는 1MB정도 차이를 가진다. 파일시스템이 사용하는 클러스터 크기에 따라 일부 저장공간을 사용하지 못할 수 있는 것이다.


< Forensic-proof - FileSystem Slack >

클러스터를 더 작게하면 작게 할 수록 슬랙공간은 줄어들 수 있지만, 데이터 I/O의 성능은 더 떨어진다.

사실 이 부분은 포맷하는 과정에서 생기는 문제일 수 있다.


3. 파티션 할당에서 생기는 Slack

이 부분부터는 일반 사용자도 쉽게 변경이 가능하다. 크기가 큰 디스크의 경우 사용자가 편하게 사용하기 위해 파티션을 나누어 사용하는데 여기서 할당이 되지 않는 빈 공간이 생길 수 있다. 이 영역은 생각보다 크게 만들 수 있어서 대용량의 데이터를 숨기기도 용이하다.

< 디스크 전체사용과 미사용 >

윈도우 파티션 기능을 이용하여 동일한 디스크의 파티션 크기를 조정한 그림이다. 보면 할당되지 않음으로 10GB가 되어있다.

이 부분에 숨기고자 하는 데이터를 숨겨놓는다면, 특정한 프로그램이나 파티션을 다시 할당하지 않는 이상 해당 데이터를 찾기는 쉽지 않을 것이다.


3 파일 저장에서 생기는 Slack

이 부분은 운영체제의 내부, 외부단편화를 알고 있다면 이해가 쉬울 것이다.

위에서 말했듯이 파일시스템을 결정하고 포맷을 하면 해당 디스크에서 데이터를 저장하는 최소 단위인 클러스터가 결정된다.

보통 윈도우 설치에 사용되는 NTFS의 클러스터 크기는 4096Bytes이다. 따라서 1Byte 데이터를 저장하던지, 4000Bytes 데이터를 저장하던 4096Bytes 만큼 디스크 용량을 사용하게 된다. 4096Bytes중 실제 데이터가 저장되고 남는 공간이 빈 공간, Slack이 되는 것이다.

< 디스크 할당량 차이 >

메모장에 1을 각각 1개, 4096개, 4097개를 넣어놓고 디스크 할당 크기를 확인해 보았다.

1개를 넣은 메모장과 4096을 넣은 메모장의 디스크할당량은 4096Bytes. 즉, 1개의 클러스터가 사용된 것이다.

하지만 클러스터의 크기인 4096보다 1이 큰 4097은 두 개의 클러스터를 사용하여 8192Bytes를 할당받은 것이다.


이제 남는 공간을 알았으니 FileSlak이 어떻게 저장되는지 직접 볼 차례이다.

< FTK - FileSlacks >

FTK로 열어보면 FileSlack을 볼 수 있다. 두 번째 값은 Size인데 섹터의 개수를 의미하는 것이다.

4096은 512x4이므로 4개의 섹터, 4097은 512x5이므로 5개의 섹터를 사용한다는 의미이다.

fileslack은 2개 이상의 클러스터를 사용하였을 경우에만 발생하는 것으로 확인하였다.

이와 같이 생기는 fileslack영역을 적절히 이용하면 간단한 메시지부터 큰 데이터를 숨길 수 있고 악성코드를 숨겨 실행시키는 것도 가능하다.





ref

http://forensic-proof.com/archives/363