X-ways Forensics 구매 및 과정

1.구매 계기 및 사전 조사

군 입대전에 군 월급을 저축해서 전역 후에 집에 디지털 포렌식 연구소를 직접 만들어보자는 목표가 있었다.

전역이 서너달 남았을때 부터 집에서 사용할 여러 상용 포렌식 소프트웨어와 하드웨어 장비들을 알아보았고, 하드웨어 장비가 가격이 수천~억 단위의 금액이였기에 통합 디지털 포렌식 소프트웨어를 구매하기로 마음을 먹었다.

통합 디지털 포렌식 소프트웨어를 구매하기 위해 유명한 기업들을 상품(FTK, Encase, AXIOM,X-Ways 등등)에 대해 조사를 진행해보았지만 , 상용 포렌식 소프트웨어의 대부분이 가격이 공개 되어있지 않거나 개인에게는 판매를 하지 않았다.

2025년 05월 기준 국립수사기관이나 포렌식 회사가 아닌 일반 개인이 가격(견적)을 확인 할 수 있는 제품은 FTK, X-Ways Forensics 2개 였다.

FTK의 경우는 영구라이센스가 없었으며 1년 사용계약에 한화 625만원 이였다.
X-Ways Forensics의 경우는 $ 3870(약 530만원)에 영구사용 라이센스를 판매하고 있었다.

포렌식 소프트웨어를 1년 사용하는데 625만원을 태울 엄두는 안나서 필자는 두고두고 쓸수 있는X-Ways Forensics를 구매하기로 결정하였다.

2.구매 과정

X-Ways Forensics는 공식 홈페이지(https://www.x-ways.net/order.html)에서 구매가 가능하다.

구매 전 반드시 페이지 하단에 있는 prices in EUR 이나 prices in USD를 선택하고 구매를 해야한다. 만약 선택을 하지 않고 구매를 하면 1달러에 1500원 정도의 높은 환율이 적용된 비싼 원화로 결제를 하게 된다.

필자의 경우는 군입대 중 1달러씩 차곡차곡 모아둔 외화 통장이 있어 prices in USD를 선택하였다.

구매 페이지에서 구매 수량을 입력 후 하단 continue 버튼을 누르면 배달 옵션에 관한 설명이 나온다.

일반 우편으로 동글을 배송 받을지 아니면 80달러를 더 납부하고 Fedex로 배달 받을지 선택을 할 수 있다. 일반 우편의 경우 배송 추적이 되지 않고, 배송 기간이 6주 내외로 오래 걸리고, 배송 도중 분실 가능성이 있어 필자는 80달러를 더 납부하고 Fedex로 배달 받기를 선택하였다. 그리고 배송 오는동안 동글없이 임시 인증서 파일로 X-Ways를 미리 사용해볼 수 있는 옵션도 있다. Fedex로 배달받으면 1주일 안으로는 동글을 수령할 수 있으니 구매를 추천하지 않는다. (하지만 필자는 호기심을 참지 못하고 임시인증서를 샀다)

배송 옵션을 선택하고 배송 받을 주소와 카드 번호를 입력하면 구매 완료된다.
가끔 바로 완료 되지는 않고 틈새영업을 하는 경우가 있다. X-Ways imager 같은 다른 프로그램을 같이 구매하면 배송비를 아낄수 있다며 영업을 한다.

X-Ways Forensics를 구매하면 X-Ways Forensics 소프트웨어 안에서 X-Ways imager, Winhex 프로그램의 모든 기능을 사용 할 수 있으니 굳이 구매를 하지 않아도 된다.

하지만 필자는 밖에서 포렌식 할일이 있으면 X-ways imager로 이미징 하고 집에서만 X-Ways Forensics을 사용할 용도로 X-Ways imager를 $ 215(약 30만원)에 추가 구매하였다.

(따라서 구매할 사람들을 위한 주의사항! : X-Ways imager는 FTK imager와 달리 디스크 브라우저나 열람 기능도 없다! 진짜 딱 이미지 파일 생성기능만 있으니 구매 전 두번 세번 고민 해볼 것! 가격 대비 만족도가 떨어지는 제품이다! 참고링크 :https://yui.koreahacker.co.kr/infosec/digital-forensics/279/ )

사진 1 : 영수증

X-Ways Forensics, X-ways Imager , Fedex 배송, 임시인증서까지 총 $4261.4(구매 당시 5,940,391원)으로 구매하였다.

3.동글 수령

2025년 05월 21일 결제하고 2025년 05월 26일에 수령하였다. 독일에서 대한민국 울산까지 5일만 배송이 되었다. 주말이 없었으면 더 빨리 수령가능 할 것으로 보인다.

사진 2 : 동글

imager와 Forensics 동글이 똑같이 생겨 구별이 어려우므로 열쇠고리로 표시를 해두는 것을 권장한다.

필자는 클로버만 있는 동글은 imager, 위치추적기와 캐릭터(우마무스메,하루 우라라)가 달린 동글은 Forensics로 구별 했다.

4. 동글 활성화 및 실행

동글을 수령했다고 바로 프로그램을 쓸 수 있는 것은 아니다.
imager, Forensics 둘 다 최초 실행하면 동글 고유번호 팝업이 뜨며 동글을 등록하라고 뜬다.
팝업에 적혀있는 이메일로 동글 고유번호를 전송하면 활성화 코드를 받을 수 있다. (답장 오는데 오래 걸리니 안온다고 걱정하지 말자, 활성화 코드 받는데 이틀정도 걸렸다)

활성화 코드를 입력하면 정상적으로 X-Ways를 이용할 수 있다!
앞으로 X-Ways 와 관련된 글을 자주 투고할 예정이다

사진 3 : 내가 누구? X-Ways Forensics 오우너!

PNG 파일 구조 정리

PNG(Portable Network Graphics)란?

비손실 그래픽 파일 포맷, GIF 파일에서 사용되는 L2W 데이터 압축 알고리즘이 특허가 걸려 자유롭게 사용이 불가능해지자 유니시스(미국IT기업)가 자유롭게 쓸 수 있는 PNG 포맷을 개발하였다.

파일 헤더(시그니처)

89 50 4E 47 0D 0A 1A 0A

통신 등 8비트 데이터를 지원하지 않는 시스템을 찾거나, 텍스트 파일과 구별하기 위해 사용

ASCII 코드로 “PNG”, 16진수 편집기에서 구별하기 위해 사용

DOS에서 TYPE 명령을 사용하였을때 출력을 멈추기 위해 사용 (EOF문자)

Unix-style 줄바꿈으로. UniX-DOS 변환에서 줄바꿈시에 사용

PNG 파일 청크

헤더 뒤에는 이미지 내용을 담고 있는 청크가 온다. 청크는 아래와 같이 길이, 청크타입(이름),청크데이터,CRC 4가지로 구성된다.

사진 1 : PNG 파일 청크 구조

청크타입(이름)이 대문자로 시작하면 중요 청크, 소문자로 시작하면 보조청크다.

중요 청크 : IHDR, IDAT, PLET, IEND

보조 청크 : tRNS, CHRM, gAMA, iCCP, sBIt, sRGB,iEXT ··· 등 수십개

IHDR

PNG파일 가장 앞에 오는 청크, PNG파일의 기본 정보를 저장한다.

사진 2: IHDR 구조

IHDR 청크 데이터 내용

IHDR 청크 데이터는 항상 13바이트이며 아래와 같은 내용을 가지고 있다.

width(가로, 4byte), height(세로, 4byte), Bit depth(한 픽셀이 차지하는 비트 양, 1byte),
Color Type(색의 유형, 1byte)*, Compression method(압축방법, 1byte),
Filter method(필터링 방식,1byte), interlace method(인터레이스 이용유무,1byte)**

*

사진 3: 색의 유형

** 인터레이스 메소드란 웹페이지 등 이미지를 표시할 때 이미지 로딩이 완료되기전 해상도가 낮은 이미지를 보여주기 위해 사용됨, (0 인터레이스 미사용, 1 Adam7 인터레이스 사용)

IDAT

실제 이미지 데이터가 들어가는 부분, 여러개의 IDAT가 존재할 수도 있으며 IDAT가 여러개인 경우 모든 IDAT가 다 있어야 정상 출력이 가능하다

사진 4 : IDAT 구조

IDAT 청크 데이터 내용

IDAT 이미지 데이터 블럭 , 마지막 블럭 유무 (1byte) , Little-endian 블럭 크기 (2byte),
PNG 이미지데이터(크기 가변), 필터 (1byte), IDAT 이미지 데이터 블럭

PLET

IHDR에서 color type이 indexed color일 경우 필요한 청크, 팔레트 범위를 지정해주는 청크다.

사진 5 : PLET 구조

PLET 청크 데이터 내용

0번 팔레트 RGB 값 {Red(1byte),Green(1byte),Blue(1byte)}
1번 팔레트 RGB 값 {Red(1byte),Green(1byte),Blue(1byte)}
2번 팔레트 RGB 값 {Red(1byte),Green(1byte),Blue(1byte)}
··· 반복

+ {}안에 들어가는 값 (0=Black, 255=Red), (0=Black, 255=Green), (0=Black, 255=Blue)

0이면 검정 255에 가까울수록 각 원래의 색(R,G,B)가 나온다

IEND

이미지 파일의 끝을 표시하는 청크

사진 6 : IEND 구조

단순히 파일의 끝을 알리는 청크이기 때문에 청크데이터가 없으며, 항상 0바이트이다.


보조 청크 한줄 설명(자세한 설명을 보고 싶으면 www.w3.org/TR/png 으로…)

tRNS : IHDR에서 색의 유형이 indextype 일 경우 사용되는 청크, 투명색을 지정한다

cHRM : 빨간색의 CIE 1931 x,y 색도 공간을 지정하는데 사용 (CIE 1931 위키백과 링크)

gAMA : 감마 값을 지정

iCCP : 해당 청크가 있을경우 ICC/ISO_150761-1에서 정의한 ICC 색범위를 사용

sbit : 원래의 유효 비트 수를 정의한다

sRGB : 해당 청크가 있을 경우 SRGB 색범위를 사용

cICP : 사진 디코더가 이미지를 랜더링 할때 필요한 함수를 저장하는 청크

mDCV : 사진을 랜더링(출력)할때 디스플레이에서 필요한 메타데이터를 저장

cLLi : 특정 디스플레이에서 톤 매핑을 위해 사용하는 청크

tEXt: 텍스트 데이터를 저장하는 청크

zTXT : tEXt 청크와 기능은 동일하나 텍스트를 압축할때 사용하는 청크

iTxt : 국제 텍스트 데이터 (UTF-8)을 사용하는 텍스트를 저장할때 사용

bKGD : 이미지를 표시 할 때 기본 배경색을 지정하는 청크

hIST : 팔레트에 있는 각 색상의 대략적인 사용빈도를 알려주는 청크

pHYs : 이미지 표시를 위해 의도적으로 지정한 픽셀 크기 또는 비율을 저장하는 청크

sPLT : 사진 출력을 위해 디코더에게 팔레트 관련으로 제한하는 청크 (제한이라 무시될 수도 있음)

eXIF : 카메라가 촬영하는 시간, 위치 등 메타데이터를 저장하는 청크

tIME : 이미지 최종 수정 시간을 기록하는 청크

애니메이션(움직이는) PNG 관련 청크

acTL : 해당 이미지가 애니메이션(움직이는) 사진임을 선언하는 청크

fcTL : 프레임에 관한 메타데이터 청크

fdat : 각 프레임의 실제 데이터가 들어가 있는 청크


참고 문서

https://mineeeee.tistory.com/m/entry/PNG-파일구조
https://yooniia.tistory.com/m/48
https://bgm2020.tistory.com/5
https://ko.m.wikipedia.org/wiki/PNG
https://m.blog.naver.com/PostView.naver?blogId=gnsehfvlr&logNo=220733132744&proxyReferer=&noTrackingCode=true
https://www.w3.org/TR/PNG-Chunks.html

윈도우 계열 OS에서 디스크 쓰기 방지 설정(레지스트리)

디지털 포렌식 5대 원칙 중 하나인 무결성을 유지하면서 디지털 포렌식을 진행하려면 디스크 쓰기 방지 조치를 해야한다.

이번 글에서는 레지스트리를 편집하여 논리적으로 디스크 쓰기 방지 설정하는 방법을 작성하였다.

레지스트리 편집

Win + r -> regedit 입력 후 엔터

아래 레지스트리 주소로 들어간다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies

만약 해당 경로가 존재 하지 않을 경우 Control에서 우클릭 -> 새로만들기 -> 키 -> StorageDevicePolicies 입력을 하여 경로를 만들어 준다.

해당 주소에 들어온 후 우클릭 -> 새로만들기 -> DWORD(32비트) 값 -> WriteProtect 생성

단위는 16진수로 설정 , 값 데이터가 0일 경우 쓰기 가능, 1일 경우 쓰기 불가

위 설정을 1로 변경하고 평범한 방식으로 증거 매체를 수정 하려면 쓰기 금지가 되어 무결성 확보 할 수 있다.

다만, winhex 등 16진수 편집기를 이용하여 수정을 시도 할 경우는 수정이 가능하기에 논리적인 쓰기 방지 기능은 증거 매체 이미징용 으로만 사용할 것을 권장한다.

만약 불가피하게 원본으로 작업을 해야하는 상황에서는 쓰기 방지 장치 하드웨어를 사용하여야 무결성을 보장 할 수 있다.

MP4 파일 구조 정리 (1)

MP4(MPEG-4 part 14)

비디오 및 오디오 스트림을 저장하는 동영상 포맷이며, ISOBMFF(ISO Base Media File Format)으로 정의된다.

ISOBMFF

  • ISO가 개발
  • 포맷 종류 : Media Container
  • QuickTime(.Mov)로 부터 확장
  • ISOBMFF의 대표적인 확장 포맷 (mp4, 3gp, 3g2, mj2, dub, dcf …..)

MP4 파일은 3가지의 구조적인 특징을 가진다.

logical structure (논리적 구조) : 시간과 관련된 병렬적인 트랙(audio, video)로 구성됨

time structure (시간적 구조): 각 track은 시간에 따른 sample sequence로 이루어짐

physical structure (물리적 구조) : 모든 데이터는 box라 불리는 형태로 저장됨


MP4 파일 아키텍쳐 구조

사진 1 : 대략적인 mp4 파일 구조

file

  • moive 트랙에 시간 데이터를 저장
  • time과 관련 없는 데이터를 저장
  • 간혹 위 두 가지 모두를 저장 할 때도 있다
  • 동기와를 위한 common timeline을 정의

Track

  • 특정 미디어 유형(코덱)에 해당
  • 단일 디코더에 연결되어 있음 (확장 가능 한 코덱 제외)
  • 다른 트랙에 연결 하거나 그룹화 또는 다른 트랙으로 대체 가능
  • item에 있는 untimed data와 관련이 있을 수 있음
  • 암호화 될 수 있음
  • sample로 분해됨

Sample

  • 지정된 시간 (DTS, CTS)에 디코더가 사용하는 연속데이터를 나타냄
  • 속성(크기,위치,랜덤 엑세스, 디코더 configuration)가 저장되어 있다.
  • Sub-Sample의 관점에서 표현 될 수도 있다.
  • Sample Group 내의 다른 비슷한 Sample과 연관이 있을 수도 있다.
  • 샘플별 보조 정보가 존재 할 수도 있다.

Item

  • Movie 전체에 대해 사용되는 Data를 나타냄
  • Type, Position, size 등과 같은 속성을 가짐
  • 암호화 되어있거나, 압축화 되어있어서 확인이 어려울 수 있음

physical structure (물리적 구조)

MP4 파일에서 모든 데이터는 Box(박스)라고 불리는 구조로 저장되어 있다. 각 박스는 length, type(4바이트), Version, flag, data를 저장한다.

사진 2. 박스 구조도

Extensible format(확장 형식)

  • 잘 알려지지 않은 Box는 생략 할 수 있다.
  • Header 정보는 Box의 계층 구조이다.
  • Media data는 Header와 동일한 파일 Box(주로 ‘mdat’ 또는 ‘idat’)에 구조화되지 않고 저장되거나 별도의 파일에 저장 될 수 있다.

MP4 파일의 일반적인 구조

위에서 소개한 여러 Box들이 모여 MP4 파일은 계층적 구조를 가진다.

사진 3. mp4 Box tree

FTYP

  • filetype의 약자로, i per file, File type, File version, 다른 ISO file 과의 호환성을 알려주는 박스

Moov(moive)

  • Presentaion(표현)과 관련된 MetaDate를 위한 Unique Container (고유 컨테이너)

mvhd(moive Hedear) : movie에 대한 일반적인 정보를 가진 박스

trak(track) : 하나의 steam과 연관된 metadata container

tkhd(track header) : track에 대한 전반적인 정보를 가지고 있는 박스

mdia(media information) : track안의 media imformation에 대한 container

mdhd(media header) : media에 대한 전반적인 정보를 가지고 있음

minf(media information container) : 미디어 정보 컨테이너

vmhd(video media header) : 비디오 미디어 헤더 박스

dinf/dref(Data information/Data Reference) : data의 위치를 나타내는 박스

stbl(Sample Table) : Sample과 관련된 Meta 데이터를 가짐

stsd(sample Description) : Sample Decoder configuration 정보

stts(time to sample) : 샘플의 시간 정보

ctts(composition time to sample) : 샘플링 시간

stsc(sample to chkunk) : partial data-offset information (파티션 데이터 오프셋 정보)

hdlr(Handler) : stream의 타입을 의미

tref(track reference container) : 추적 참조 컨테이너

mdat(media Data) : media data를 가지는 박스


아래에 첨부된 온라인 mp4 parser 도구를 이용하면 위에서 설명한 것과 유사한 파일 구조를 볼 수 있다.

사진4. 분석 사진

다음 2편에서는 각 박스들의 16진수 값들에 대해 작성해보기로 마음 먹으며 글을 마친다.

참고문헌 :

MPEG-4 파일의 구조 개괄 :: 개똥이야기 (tistory.com)

[MP4] 분석 하기 | MPEG-4 파트 14 | MP4Box 설치 (tistory.com)

MP4 파일 구조 – Studying Programming (revol300.github.io)

mp4파일 시스템 구조, mp4파일 구조 : 네이버 블로그 (naver.com)

mp4파일 시스템 구조, mp4파일 구조 : 네이버 블로그 (naver.com)

비디오 – Digital Forensic Wikipedia (korea.ac.kr)

MP4 file format – Wikipedia

사용된 도구

Online Mp4 Parser

첨부파일

X-ways imager 구매 후기

X-ways imager는 독일의 X-ways 사에서 만든 디스크 이미징 디지털 포렌식 도구 이다.

이름답게 이미징과 관련된 기능 말고는 아무런 기능이 없고 매우 가볍게 설계된 도구이다

사진 1. 실행 화면

구매 가격은 이런저런 수수료와 세금을 포함하여 122,100원 구매를 하게 되었다. 조금 저렴하게 사는 팁을 주자면 X-Ways 계열 프로그램을은 정품인증용 동글 usb가 필수 인데, 자신이 가지고 있는 USB를 동글로 변환하면 동글 값을 빼고 조금 저렴하게 구매 할 수 있다.

사진 2. 결제 영수증

개인적인 평가를 하자면 같은 회사에서 나온 WinHex와는 달리 X-Ways Imager는 별로 였다.

무료 도구인 FTK imager에도 있는 이미지 파일 내 파일 리스트 출력이나, 삭제된 파일 확인,디스크 이미지 마운트 등등 유용한 기능들이 X-Ways imager는 1년에 12만원 정도의 돈을 받으면서 이러한 기능이 존재 하지 않았고, 오로지 디스크를 이미징 하는 기능과 이미징을 위한 RAID 복구 기능, 총 2가지가 X-Ways imager 의 모든 기능이였다.

그나마 장점을 뽑으라 한다면 FTK imager(130MB) 이미징 툴은 몇 백메가의 용량을 자랑하는 방면, X-Ways imager는 47MB의 가벼운 용량을 가졌고, 램과 cpu도 다른 툴에 비해 적게 먹었다.

또한 플라시보 효과인지는 모르겠지만, 다른 이미징 툴에 비하여 이미징 속도가 조금 빨랐고 느껴졌다.

총 정리하자면 X-Ways imager는 이미징 말고는 아무런 기능이 없으므로 디지털 포렌식을 공부하려는 학생분들에게는 구매하는 것을 비추천한다.

괜한 모험심이 들어서 필자처럼 돈 낭비 하지 말고 차라리 FTK imager를 이용하는 편이 경제적이나, 포렌식을 공부하는데나 도움이 될 것 같다는 생각을 적으며 글을 마친다.

WinHex personal 구매 방법 & 후기

디지털 포렌식을 공부 할 때 파일을 Hex로 보기 위해 무료 도구인 HxD를 주로 사용하였다.

HxD로도 만족하였으나, 편리한 기능이 적어서 CTF 등 시간이 제한된 특수한 상황에서 여러가지 삽질들을(스테가노그래피, 파일시스템 복구 등등) 100% 수동으로 해야 해서 시간을 많이 잡아먹는 단점이 있었다.

이러한 단점을 해소하고자 큰 마음을 먹고 WinHex를 구매하게 되었다.

구매하는 방법은 (https://www.x-ways.net/order.html)에 방문해서 해외직구로 쇼핑 하듯 자신이 원하는 라이센스를 고르고 주소와 카드번호를 넣고 결제하면 된다.

필자는 personal license, perpetual 53,000원 라이센스를 구매하였다(카드 수수료 등이 포함되어 실구매가는 6만원이였다.)

그럼 약 5분 뒤 6줄로 되어있는 라이센스 키가 메일로 온다.

winhex를 다운 받은 뒤 Help -> register -> 6줄 라이센스 키 입력-> OK 순서대로하면 정품 인증이 완료된다.

winhex는 프로그램에 제 이름과 집주소도 적어주는게 마음에 들었다.

당분간 여러 기능들을 이리저리 써보면서 CTF에서 어떻게 활용할지 연구해봐야겠다