디지털산업정보학회논문지제 11 권제 4 호 -2015 년 12 월 http://dx.doi.org/10.17662/ksdim.2015.11.4.069 디렉토리인덱스안티포렌식기법에서 Windows 파일명에사용할수없는 문자문제의해결방법 * 조규상 ** A Problem Solving Method for Non-Admittable Characters of a Windows File Name in a Directory Index Anti-Forensic Technique Cho Gyusang <Abstract> This research proposes a modified data hiding method to hide data in a slack space of an NTFS index record. The existing data hiding method is for anti-forensics, which uses traces of file names of an index entry in an index record when files are deleted in a direcotry. The proposed method in this paper modifies the existing method to make non-admittable ASCII characters for a file name applicable. By improving the existing method, problems of a file creation error due to non-admittable characters are remedied; including the non-admittable 9 characters (i. e. slash /, colon :, greater than >, less than <, question mark?, back slash \, vertical bar, semi-colon ;, esterisk * ), reserved file names(i. e. CON, PRN, AUX, NUL, COM1~COM9, LPT1~LPT9) and two non-admittable characters for an ending character of the file name(i. e. space and dot). Two results of the two message with non-admittable ASCII characters by keyboard inputs show the applicability of the proposed method. Key Words : Data Hiding, Direcotory Index, Digital Forensics, NTFS, Windows, B-tree Ⅰ. 서론 1) NTFS 는 Windows 의기본파일시스템으로사용되 고있고안정된파일시스템으로알려져있다. 디지털 포렌식의관점에서 NTFS 파일시스템은다른파일시 * 이논문은 2013 년도정부 ( 교육부 ) 의재원으로한국연구재단의지원을받아수행된기초연구사업임. (NRF-2013R1A1 A2064426) ** 동양대학교컴퓨터정보전학과교수 스템에비하여좀더복잡한구조를갖고있어서이에대한동작원리와구조등에대해서다루고있는문서에의존하여지식을얻어야한다. 이것에대한많은부분들이각종의문헌을통해잘알려져있다. 우선 Wikipedia[1] 는 NTFS 의역사와기본적인구조를충실히기술하고있다. Microsoft 의 Technet[2] 과 Carrier[3] 의저서에는상세하게 NTFS의자료구조가소개되어있다. 디지털산업정보학회논문지 69
NTFS에서디렉토리인덱스를위해서 B-tree가사용되고있다. 그러나이것에대해자세하게설명된기술문서를찾아보기힘들지만일부블로그들에서디지털포렌식을위한 B-tree 인덱스에관련된자료를찾을수있다. 그중에서 Ballenthin[4] 는디렉토리목록을파싱하고슬랙영역에기록된내용을찾을수있는파이썬프로그램 INDXParser.py 를소개하고있다. Tilbury의 SANS DFIR 블로그 [5] 에서는 FTK 툴, icat 툴, EnScript 를사용하여 NTFS 인덱스에관한정보를구할수있는사례를소개하고있다. Ballenthin 과 Hamm[6] 는 4장의내용으로구성된블로그문서에서 NTFS의인덱스의구조에대한설명과관련된도구의사용사례, B-tree 인덱스에서파일이삭제될때의동작에의해야기되는특징을설명하고있다. Huebner 등은포렌식분석을하기위한목적으로 NTFS파일시스템에서데이터를감추는방법과그방법을이용한감지와복원에대한연구를수행하였다 [7]. 이연구에서는파일시스템의데이터구조의특성을이용한여러가지방식의데이터숨김방식을소개하고있는데메타데이터파일중에서 $BadClus 를이용하는방법, $DATA 속성에숨기는방법, $Boot 파일에숨기는방법을소개하고있고, 데이터파일에서 ADS, 디렉토리의 $DATA 속성, 추가클러스터에데이터를숨기는방법, 그리고볼륨슬랙, 파일시스템슬랙, 파일슬랙등파일의특징을이용한방법등 NTFS의파일시스템의특징을이용하여데이터숨기는전반적인방법들에대해서기술하고있다. 최근저자는타임스탬프변화패턴을근거로한평가함수에의한디지털포렌식방법 [8] 에관한연구를수행하였고디렉토리에대한디지털포렌식분석방법 [9] 에서디렉토리안에서파일연산을할때디렉토리의정보변화를분석하였다. 또한연구 [10] 에서디렉토리안에서많은파일들이생성될때 NTFS의 B-tree 는어떻게인덱스엔트리가확장되고파일을삭제할 때는어떤동작특성을보이는지분석함으로써디렉토리인덱스의포렌식분석에필요한정보를얻는과정을소개하였다. 그의후속연구 [11] 에서는디렉토리의인덱스구조내에메시지를숨기기위한새로운방법을제안하였다. 이것은 B-tree 의동작특성을이용하여인덱스레코드의슬랙영역에메시지를숨기는방법이다. 이연구에서는 Windows NTFS에서디렉토리인덱스엔트리목록이삭제될때생성되는인덱스의흔적을이용하여데이터를숨기는방법에서파일명에사용할수없는제약이있는문자들에대한처리가능한개선된방법을제안한다. 이방법은기존의연구 [11] 에서키보드로입력하는 ASCII 문자중에서 9개의문자들에대해서는파일생성에러가발생하여메시지숨김처리를할수없는경우와파일명으로사용할수없는예약된문자열, 파일명끝문자로사용할수없는특별한경우의문자처리의문제점들을해결한디렉토리인덱스에데이터를숨김처리할수있는방법을제안한다. 제안된방법에대한이해를위하여이연구의 2장에서디렉토리인덱스의데이터구조를설명하고 B-tree로구현된디렉토리인덱스에대한설명을한다. 3장에서는디렉토리인덱스의인덱스레코드에남는흔적들을이용하여데이터를숨기는알고리즘을소개한다. 4장에서는파일명으로사용할수없는문자들에대한분류를하고 5장에서파일명으로사용할수없는문자들에대한처리방안을제안한다. 6장에서는제안된방식을두가지사례에적용한결과를보인다. 7장에서제안된방법의의미와새로운추후과제에대해서논의하며결론을내리기로한다. 70 제 11 권제 4 호
Ⅱ. 디렉토리인덱스구조 2.1 디렉토리인덱스를위한 NTFS 의 B- 트리 할당된인덱스레코드들이그대로유지된다. 디렉토 리의목록이 0 개가되면할당된인덱스레코드들은 모두해제된다. NTFS는디렉토리내의파일들을관리하기위하여 B-트리인덱스구조를사용하고있다. 이것은파일들을다루는데효율적이며빠른파일검색을할수있는기능을갖추고있다. 이것은트리내에서엔트리의수가많이증가하여도깊이수준 (depth level) 을증가시키는것을억제하기위해균형을유지하는균형트리 (balanced tree) 방식이다 [3]. NTFS에서루트노드역할은 $INDEX_ROOT 속성이담당하고있다. 하위노드에대한정보는외주 (Non-resident) 속성으로 $INDEX_ALLOCATION 에들어있는 Run-length 정보에의해유지된다 [3]. $INDEX_ROOT 속성의공간은크기는대략 700여바이트정도가능하다. 파일명의길이에따라다르지만 8. 3형식의파일명을가지는경우는보통 5~6개정도의디렉토리목록이기록될수있다. 디렉토리의목록이늘어나면새로운노드를외주속성으로만든다. 이때 4KB 크기의인덱스레코드 ( 즉, 인덱스노드 ) 를만들고그안에많은디렉토리목록들이저장되어있고항상자동적으로오름차순으로아스키코드순으로소팅된다. 대소문자는구분하지않는다. 파일의길이가길면 8. 3 포맷의짧은파일명과긴파일명이동시에저장된다 [3, 10, 12]. 디렉토리목록들이증가하면여러개의인덱스레코들이여러개로확장하게된다 [8]. 인덱스레코드는 4KB크기를갖는다. 디렉토리에서파일목록들이삭제되면인덱스레코드내에서리스트들이삭제된다. 이미생성된인덱스레코드들은해당인덱스레코드내에목록이들어있지않아도인덱스레코드할당영역이삭제하지않고그대로유지된다. 다만전체디렉토리에서최소한파일이 1개이상은남아있어야 Ⅲ. 디렉토리인덱스레코드의슬랙영역에메시지를숨기기위한방법 3.1 알고리즘 < 그림 1> NTFS 의 B- 트리구성예 디렉토리인덱스레코드의슬랙영역에메시지를 숨기위한방법은모두 11 단계로구성된다. 각단계 별내용은다음과같다. 이방법은참고문헌 [9] 의방 법을기초로만들어진것이다. 처음발표된알고리 즘을개선한것이다. 이논문에서제안된방법은단 계 2 와 3 에적용된다. 단계 1: 초기화및입력 - 작업디렉토리의이름을입력받는다. - 숨길메시지를입력한다. - 숨길메시지의블록크기를설정한다. - 각변수를초기화한다. 디지털산업정보학회논문지 71
단계 2: 문자블록전처리 - 입력된메시지를스캔하여파일명으로사용할수없는 9개의문자와이스케이프 (escape) 문자로사용되는 # 에대해서처리한다. 단계 3: 숨길메시지의 n 등분 - 마지막메시지처리할때위장파일이덮어쓰는부분에공백문자나의미없는문자를채워넣는다. - 숨길메시지를블록의크기 b 단위로일정한크기를갖는 n개의블록으로나눈다. - 블록의끝문자로할당된문자중에서끝문자로사용할수없는 ( 공백문자, space),. 에대해서이스케이프문자처리한다. - 4문자이하로블록이구성된경우는예약된파일명에해당하는지비교하고예약된파일명이면앞에 # 을붙인다. 단계 4. 블록순서지정위한머릿번호삽입 - 인덱스엔트리는인덱스레코드내에서알파벳오름차순으로자동으로정렬된다. - 숨길메시지가여러블록으로나뉠때블록의선두에붙여서항상순서가유지되도록한다. - 숫자또는문자를머릿번호로지정한다. - 메시지블록의개수에따라서자릿수를정한다. - 이것을메시지의선두부에합성하여각메시지배열에저장한다. - 이파일명은단계 4의머릿번호보다알파벳순으로앞선이름으로생성한다. 단계 7. 숨길파일생성 - 단계 4에서생성한메시지로파일이름으로정하고 n개의파일을생성한다. 단계 8. 첫번째메시지파일삭제 - 첫번째메시지파일을삭제하면알파벳순으로전체목록이재정렬된다. - 이때전체목록의맨끝의메시지파일이있던자리의흔적이남는다. - 마지막메시지처리시에는이단계를생략한다. 단계 9. 맨끝메시지파일명을위장파일명으로변경 - 맨끝파일명을임의의위장파일명으로변경한다. - 이것에의해 MFT 엔트리내의파일명정보에긴메시지로된파일명대신에위장파일명이기록된다. 단계 10. 위장파일삭제 - MFT 엔트리에서위장파일을삭제한다. - 메시지파일과관련된정보는위장파일을사용함으로써 MFT 엔트리내에서보이지않고위장파일이지워진흔적만남는다. 단계 5. 작업디렉토리설정 - 숨김파일들이들어갈작업디렉토리를설정한다. 단계 6. 고정파일생성 - 디렉토리안에는최소 1개의고정파일이있게하여인덱스레코드의할당이해제되지않도록한다. 단계 11. 첫번째메시지파일다시생성 - 첫번째메시지파일을다시생성한다. 맨끝의메시지한개가삭제되었고그흔적이인덱스목록의맨끝에남게된다. - 마지막메시지처리시에는이단계를생략한다. - 처리할메시지가 1개이상남아있으면단계 8로이동한다. 72 제 11 권제 4 호
단계 1~11까지의모든절차를마치고난후에디렉토리에는고정파일만남게된다. Windows 의파일탐색기로는인덱스레코드의슬랙영역에기록되어있는숨김메시지들을발견할수없다. 디지털포렌식도구들을사용하는포렌식과정에서파일명검색으로숨긴메시지가들어있다는사실을알수는없다. 다면파일이생성되지않는다. 이문자들은 Windows 에서해당문자마다파일작업에관련된어떤예약된기능이부여되어있기때문에사용할수없는경우이다. 4.3 ASCII 코드중사용불가능한문자들 Ⅳ. 파일명에사용할수없는문자들 4.1 개요 디렉토리안에파일들이존재하면 4KB 크기의인덱스레코드안에인덱스엔트리가생성된다. 인덱스엔트리는그안에들어있는정보중에서파일명을기준으로알파벳순으로소팅하여기록하게된다. 파일이삭제되면인덱스레코드의뒷부분에기록되었던내용이흔적으로남는다. 이점에주안하여 3장의알고리즘은고안된것이다. 파일명에메시지를기록하고그흔적을이용하기때문에파일을생성하는문제가이방법에서의가장중요한문제이다. 그러나파일명에사용하는문자들중에는파일명으로사용될수없는문자들이존재한다. 숨기려는메시지안에이런문자들이들어있다면파일생성에러가발생하여원하는방식으로메시지숨기기를할수없게된다. 그래서이장에서는파일생성에러를일으키는문자들에대한조사를수행하기로한다. 4.2 키보드의문자중사용불가능한문자들키보드로입력가능한문자들중에서표 1의 1 그룹에나열된 9개문자는파일명에사용할수없다. 파일명에한개의문자라도이에해당하는문자가사용된 표 1의그룹 2의 ASCII 코드집합중에서 0번문자인 NULL 문자부터 1~31번의문자들은파일명으로사용할수없다. 이 32자의문자들은프린트할수없는제어문자 (unprintable control codes) 라고불리운다. 주변기기나프린터를제어하기위해서사용하는코드들이다. 그룹 3은확장 ASCII 코드집합이다. 코드번호 128(0x80) ~ 160(0xA0) 사이의문자들도파일명에사용되면파일생성에러가발생한다. 이문자들역시화면에표시할수없는문자들이다. 그룹2 와그룹3은모두다파일명으로기록되지않는문자들이다. 그러나둘은파일명에사용될때다른결과를나타낸다. 그룹 2의문자들은파일명에이문자들이속해있으면파일생성에러를일으키며파일자체가생성되지않는다. 그러나그룹 3의경우는이문자와다른문자들과함께파일명에사용이되면이문자가파일명에서제외되고나머지문자들로만파일명이생성된다. 즉, 파일명에그룹 3의문자들이사용되면파일은생성되지만문자의흔적은남지않게된다. 4.4 특수기능의이름들표 1의그룹 4에열거된 22개의이름은 DOS 시절부터사용하던디바이스를정의하는파일명들이다. 이이름을사용하여파일을만들면파일생성에러가발생한다. 이이름들이파일명에단독으로사용되면 디지털산업정보학회논문지 73
안되지만부분적으로속해있는경우는가능하다. 예 를들어 PRN.txt 라고하면확장자가붙어있음에도 불구하고에러처리를한다. 그러나 helloprn.txt 라 고하면파일생성이가능하다. 결론적으로 22 개의예 약된디바이스파일명은단독형태가아닌다른글자 들과복합적으로사용하는것은가능하다는의미이 다. < 표 1> Windows 에서파일명에사용불가능한문자들 그룹항목문자들 1 2 3 4 5 키보드상의특수문자들 [8] ASCII code 의키보드에없는문자 [8] 확장 ASCII code 의문자들 특수기능의이름들 [8] 파일명의끝에사용할수없는문자 (34, 0x22) * (42, 0x2A) / (47, 0x2F) : (58, 0x3A) < (60, 0x3C) > (62, 0x3E)? (63 0x3F) \ (92, 0x5C) (124, 0x7C) 0(0x00)~31(0x1F) 번까지의문자들 128(0x80) ~ 160(0xA0) 까지의문자들 CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9. (46, 0x2E) (space, 32, 0x20) 표 1 의그룹 5 에서의구두점. (46, 0x2E) 은파일 명의중간에는사용이가능하지만파일명의맨끝에 는사용이불가능하다. 예를들면 a. b. c.txt 는가능 하지만 a. b. c. 라고쓰는것은불가능하다. 파일명 에맨끝에구두점을붙이게되면자동적으로삭제되 어직전까지쓰인문자까지만기록된다. 또한스페이 스문자 (32, 0x20) 경우도마찬가지방법으로적용된 다. 이것을파일의끝에붙이면자동적으로삭제되어 직전까지쓰인문자까지만파일명으로쓰이게된다. Ⅴ. 안티포렌식기법에사용하기위한파일명에문자처리방법 5. 1 키보드문자들을사용을위한방법제안 이절의내용은숨길메시지에서사용하는문자의 범위를키보드로입력가능한문자에대해처리를위 해제안된방법을설명한다. 키보드로입력가능한문자중에서파일명으로사 용할수없는문자들은표 1 의그룹 1 에나타낸 9 개의 문자들이다. 이문자들이사용되면파일이생성될수 없기때문에파일명에메시지를저장하여디렉토리 인덱스의슬랙영역을이용한메시지숨기는안티포 렌식방법을사용할수없게된다. 그래서 9 개의문자 들에대한대체표현방법 # 문자를이용하여이스 케이프 (escape) 문자들을정의한다. # 문자자체가 이스케이프기호로사용되므로이것에대한정의도 필요하다. 그래서전체이스케이프문자는 10 개가정 의된다. 이스케이프기호로 # 을사용한것은여러 기호문자들중에서평문에사용되는빈도가적고이 스케이프문자로사용하기에시각적으로적합하다고 판단되어 # 을기호를채택한것이다. < 표 2> 키보드상의특수문자들에대한이스케이프문자정의 순번키보드상의특수문자들 Escape 문자정의비고 1 (34, 0x22) #d 2 * (42, 0x2A) #e 3 / (47, 0x2F) #s 4 : (58, 0x3A) #c 5 < (60, 0x3C) #l 6 > (62, 0x3E) #r 7? (63 0x3F) #q 8 \ (92, 0x5C) #b 9 (124, 0x7C) #v 10 # (35, 0x23) ## 11. (dot, 46, 0x2E) #y 숨길메시지의 12 (space, 32, x20) #z 끝문자 74 제 11 권제 4 호
1 2 3 4 알고리즘 1 키보드입력문자의 Escape 변환 EOM=getMessageLength() if EOM 4 then 5 end 6 i=0 if checkspecialname() = TRUE then doforbiddenfilename() 7 while i<eom do 8 9 ch=getcharfrommessage(i) if ch 0xFF then //ASCII 10 if (ch 0x1F )AND 11 12 13 end (ch 0x80 AND ch 0xA0 ) then doforbiddenchar() 14 if ch = then ch #d 15 16 17 18 19 20 21 22 23 24 end 25 26 27 28 29 30 end i=i+1 end if i = EOM then 31 end else if ch = * then ch #e else if ch = / then ch #s else if ch = : then ch #c else if ch = < then ch #l else if ch = > then ch #r else if ch =? then ch #q else if ch = \ then ch #b else if ch = then ch #v else if ch = # then ch ## if ch = then ch #y else if ch =. then ch #z 알고리즘에서 1번행은입력된메시지의길이를구하는함수이다. 2~6번행은표 1의 5그룹을처리한부분이다. 처리하려는메시지의문자의수가 4이하일때예약된특수기능의파일명과같은문자열이라면메시지로사용할수없는경우라서에러처리기능을갖춘 doforbiddenfilename() 함수에의해서처리된다. 7번 ~27번행의 while문은전체메시지에들어있는 9개의특수문자를처리하는부분이다. 14번행에서부터 23번행까지의문장은파일명에사용할수없는문자 ( 표 1의 1번그룹 ) 이스케이프문자로처리하는과정이다. 10번 ~13번행의두개의조건은키보드로입력할수없고파일명에사용할수없는아스키코드에대한처리부분이다. 표 1의 2, 3번그룹에해당하는문자를처리하는과정이다. 28번 ~31번행의문장은표 1의 5번그룹을처리하는과정이다. 메시지의맨끝문자로공백문자나마침표문자가할당되면이스케이프문자로각각 #y 와 #z 로변환하는과정이다. Ⅵ. 적용사례 6.1 프로그램개발환경 5.2 의사코드알고리즘다음의알고리즘 1은표 2의문자들이입력되는경우를이스케이프문자로처리하는과정과아스키코드중키보드에없는문자와확장아스키코드영역의문자들, 그리고파일명의끝문자로사용할수없는경우에대한알고리즘을의사코드 (pseudo code) 형식으로표현한것이다. 이부분은 3.1절의알고리즘의 2단계에해당한다. 제안된방법은다음의환경에서프로그램이제작되었다. 개발환경 : OS : Windows 7 Ultimate K Service Pack 1 개발도구 : Visual Studio 2013 개발언어 : C/C++, MFC 클래스어플리케이션타입 : Windows 다이얼로그프로그램 디지털산업정보학회논문지 75
실행환경 : 디스크포맷 : NTFS v3.1 저장매체 : 외장 usb 드라이브저장공간 : 1TB 작업디렉토리 : HideDir 위장파일 : disguised-??.txt 고정파일 : $fixedfile.txt 6.2 적용사례 1 < 그림 3> 사례 1: 숨긴데이터 - 특수문자들의변환 < 그림 2> 사례 1: 숨길데이터 - 일반텍스트에특수문자가포함되어있는경우 < 그림 4> 사례 1: 위장파일들 그림 2는숨길데이터이다. 데이터의전체의길이는공백을포함하여 710자로구성되어있다. 한블록의크기는 116자의크기로설정한다. 머릿번호는 2문자로구성된다. 전체 7개의블록으로나뉘며블록크기의배수에맞지않는끝블록은빈영역을채우지않고문자의실제길이만사용한다. 그림 3은숨긴데이터들의일부를나타낸것이다. 변환된문자에대한설명을위하여앞쪽에숨겨진 0- ~ 3- 데이터부분생략하고 4- ~ 6- 부분만사각형으로표시하였다. a 부분의 23 00 63 00 은 < 그림 5> 사례 1: 작업마친후의디렉토리 #c -(:) 을변환한것이다. NTFS 의 ASCII 코드는 2 바 이트유니코드를사용하기때문에 23 00 과 63 00 76 제 11 권제 4 호
으로리틀엔디언 (little endian) 방식의 2바이트로저장된다. b 부분에서밑줄을표시한문자 23 00 63 00 은 #c -(:), 23 00 72 00 은 #r -(>), 23 00 63 00 은 #c -(:) 을변환한것이다. c 부분은앞의두메시지에비하여길이가짧다. 맨끝메시지이며길이가블록의배수가아니기때문에짧게저장된것이다. 두개의변환문자가저장되었는데하나는 23 00 63 00 은 #c -(:) 이고다른하나는 23 00 6C 00 은 #l -(<) 이변환된것이다. 그림 4는삭제된위장파일들을나타낸것이다. 디스크툴에의하여삭제된목록을찾아서표시한것이다. 이목록에서알수있듯이숨길데이터로파일명을만들었던것들은보이지않고위장파일로만표시e 된다. 그림 5에는고정파일만남아있고작업에사용된모든파일들은삭제후의디렉토리의모습이다. 데이터로사용된파일들과위장파일들은모두삭제된후라서디렉토리목록에는나타나지않는다. 6.3 적용사례 2 사례 2에서다루는데이터는 C/C++ 프로그램코드이다 ( 그림 6). 파일명에사용할수없는특수문자들이이코드안에는다양하게분포하고있어서본논문에서제안한방법을적용하기에최선의대상이다. 전체문자는공백문자를포함하여 338자이다. 블록의크기는 84문자크기이다. 머릿번호는 2문자로구성된다. 전체블록의수는 5개이다. 블록의크기를작게설정한것은그림 7에여러블록이표시되도록의도적으로설정한것이다. 그림 7에서 a 는고정파일의인덱스엔트리정보를나타내고있다. b 는마지막에삭제된위장파일의인덱스엔트리흔적이다. 이파일의영향으로숨긴데이터의첫번째데이터의앞에서일부분이위장파일이덮어쓰게된다. 그러므로 < 그림 6> 사례2: 숨길데이터 -프로그램코드감출데이터에는위장파일의파일명길이만큼여분을두어야한다. c 는첫번째숨긴데이터, d 는두번째데이터, e 는세번째데이터이다. 지면부족으로그림에는 3 개의데이터만표시되었다. 각데이터에는파일명으로사용될수없는문자가들어있는데각부분에밑줄로표시된부분이본논문에서제안한방법으로적용된이스케이프문자로변환된문자들을나타낸다. c 부분의첫째줄에서 23 00 23 00 은 ## 두문자의변환이다. 입력데이터의 #incldue 의 # 부분을변환한것이다. 둘째줄과셋째줄의 23 00 64 00 은 #d 를나타낸다. 이것은겹따옴표 ( ) 의변환이다. 일곱째줄의 23 00 65 00 는 #e 의변환이고 _TCHAR* 의 * 부분을변환한것이다. d 부분과 e 부분의밑줄부분들도 c 부분에서의방법과유사하게방법으로변환된것이다. 그림 8은위장파일이삭제된흔적을나타낸다. WinHex 프로그램을사용하여삭제된파일을표시한것이다. 숨긴데이터파일은삭제된파일의목록에서찾을수없다. 그림 9는데이터숨김을마친후에디 디지털산업정보학회논문지 77
보이지않고유일하게이고정파일만남게된다. Ⅶ. 결론 < 그림 7> 사례 2: 숨긴데이터 - 특수문자들의변환 < 그림 8> 사례 2: 위장파일들 < 그림 9> 사례 2: 작업마친후의디렉토리 이연구에서는윈도우즈의 NTFS 파일시스템에서디렉토리인덱스레코드에데이터를숨기기위한기법에서파일명에사용할수없는문자문제에대한해결방법을제안하였다. 데이터숨김기법을구현하는과정에서 DOS시절부터사용하던파일명규칙이 Windows 에서도적용되는데키보드로입력이가능한문자들중몇문자들에특별한기능을부여하고있어서파일명으로는사용할수없도록정하고있다는데에문제가있음을발견하여이논문에서는그문제에대한해결방안으로 5개그룹으로분류된파일명으로사용불가능한문자에대한처리방안을키보드입력문자의전처리알고리즘을제시하였다. 이연구에서제안한방법은디렉토리인덱스레코드에데이터를숨기는방법의기능향상을위한것이다. 문자들을키보드로입력하는방법을전제로구현된방법이다. 이방법과더불어파일에서바이너리형태의데이터를처리할수있도록기능이확장되면더많은활용이가능할것이다. 이연구에서의방법으로안티포렌식도구의개발하려는목적은일반포렌식도구의기능을향상시키기위함이다. 의도적으로숨겨놓은데이터에대해서단순히디스크에대한키워드검색만으로포렌식을수행할수있을것이라는기대는하지않도록해야하며고급기능이구현된포렌식도구들이개발되어야한다. 렉토리안의고정파일 $fixedfile.txt 파일을나타낸것 이다. 작업에관련된다른파일들은모두삭제되어 78 제 11 권제 4 호
참고문헌 [1] Wikipedia. org, NTFS - Features - Scalability, http://en. wikipedia. org/wiki/ntfs#features [2] Microsoft TechNet, How NTFS Works, https://technet.microsoft.com/en-us/library/ cc781134(v=ws.10).aspx. [3] B. Carrier, File System Forensic Analysis, Addison-Wesley, 2005, pp. 273-396. [4] William Ballenthin, NTFS INDX Attribute Parsing, http://www.williballenthin.com/ forensics/indx/index.html. [5] Chad Tilbury, NTFS $I30 Index Attributes: Evidence of Deleted and Overwritten Files, SANS Digital Forensics and Incident Response Blog, http://digital-forensics.sans.org. [6] William Ballenthin and Jeff Hamm, Incident Response with NTFS INDX Buffers - Parts 1, 2, 3 and 4, https://www.mandiant.com/blog/ author/willi-ballenthin/ [7] Ewa Huebner, Derek Bem and Cheong Kai Wee, Data hiding in the NTFS file system, Digital Investigation, Vol. 3, Issue 4, 2006, pp. 211-226. [8] 조규상, 타임스탬프변화패턴을근거로한평가함수에의한디지털포렌식방법, 디지털산업정보학회논문지, 10권, 2호, 2014, pp.91-105. [9] 조규상, Windows 파일시스템의디렉토리에대한디지털포렌식분석, 디지털산업정보학회논문지, 제11권, 제2호, 2015, pp. 73-90. [10] Gyu-Sang Cho, NTFS Directory Index Analysis for Computer Forensics, IMIS 2015(the 9-th Int. Conf. on Innovative Mobile and Internet Services in Ubiquitous Computing), July 8th-10th, Blumenau Brazil, 2015. [11] 조규상, 새로운 NTFS 디렉토리인덱스안티포렌 식기법, 한국정보전자통신기술학회논문지, 8 권, 4 호, 2015, pp. 327-337. [12] Microsoft MSDN, Naming Files, Paths, and Namespaces, https://msdn.microsoft.com/en-us/ library/aa365247 조규상 Cho Gyusang 저자소개 1996 년 3 월 ~ 현재동양대학교컴퓨터정보전학과교수 2010 년 9 월 ~2011 년 8 월미국 Purdue 대학교, Dept. of Computer Information Technology, Cyber Forensic Lab, Visiting scholar 1997 년 2 월한양대학교전자공학과 ( 공학박사 ) 관심분야 : 디지털포렌식, 시스템보안 E-mail : cho@dyu.ac.kr 논문접수일 : 2015 년 10 월 29 일수정일 : 2015 년월일게재확정일 : 2015 년 12 월 4 일 디지털산업정보학회논문지 79