Proneer | Security is a people problem...
연구실에서 업무용으로 사용하는 컴퓨터 외에 발표용이나 집에서 영화 감상용으로 사용하는 노트북 바이오(VAIO SZ74L). 학교에서 거의 하루를 보내기 때문에 새벽에 집에 가서야 잠깐씩 보는 놈인데 얼마 전부터 휴지통이 사라졌다. 분명 OS 설치 후 초기에는 바탕화면에 있었는데 어느 순간부터 보이지 않기 시작했다.
대부분 파일을 지울 때 SHIFT 키를 활용하기 때문에 휴지통이 가득찰 염려는 없었다. 하지만 인터넷에서 다운 받은 파일이나 메신저로 받는 파일의 기본 경로가 바탕화면이어서 순간 활용하고 필요없으면 마우스로 끌어다가 휴지통에 넣어버리곤 한다. 근데 휴지통이 없어서 습관때문에 불편함이 생겼다.
그래서 휴지통을 다시 만들어 보기로 했다.
1. 쉽게 만드는 방법은 바탕화면에 새 폴더를 생성하고 다음과 같이 폴더 이름을 변경한다.
"Recycle Bin.{645ff040-5081-101b-9f08-00aa002f954e}" 이렇게 만들어 버리면 폴더 아이콘이 휴지통으로 변경될 것이다. 아이콘을 클릭하면 휴지통 영역을 보여준다. 하지만 휴지통이 가득차거나 비었을때 아이콘을 제대로 표현하지 못한다.
2. 레지스트리를 변경한다.
경로 :: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace 새로운 키 생성 :: {645ff040-5081-101b-9f08-00aa002f954e}

이렇게 생성하면 이전의 휴지통과 같이 휴지통의 상태에 따라서 아이콘이 정확히 표시되고 속성 정보를 확인하면 정상적인 휴지통 역할을 하는 것을 알 수 있다. 왜 "{645ff040-5081-101b-9f08-00aa002f954e}" 이 값의 입력만으로 휴지통이 되는 것일까?
레지스트리를 실행(실행 -> regedit 입력)하고 레지스트리 구조에서 최상위 루트에 마우스를 올려 놓고 편집 -> 찾기를 클릭한 후 앞서 언급한 "{645ff040-5081-101b-9f08-00aa002f954e}" 값을 입력 후 찾기를 눌러보자. 그러면 HKEY_CLASSES_ROOT 항목의 CLSID 키의 하위 키로 해당 값이 존재하는 것을 확인할 수 있다.

결국 휴지통의 고유한 CLSID 키가 존재하기 때문에 윈도우 OS 어디에서나 해당 CLSID 값은 휴지통을 의미한다. 그렇다면 CLSID는 또 무엇인가?
CLSID(Class Identifier)는 이름 그대로 클래스 식별자이다. 휴지통을 구성하는 클래스의 식별자가 앞서 입력했던 값인 것이다. 엄밀히 말해서는 윈도우는 클래스라는 용어는 적절하지 않다. 클래스 보다는 오브젝트(Object) 형태로 모든 운영체제의 리소스를 관리한다.
위의 그림에서 휴지통 CLSID 외의 나머지 CLSID들은 윈도우를 구성하는 또다른 오브젝트들의 클래스 식별자가 될 것이다. 실제 해당 CLSID 의 하위 값들을 살펴보면 휴지통의 상태에 따라 표현할 아이콘 설정이나 메뉴에 따라 연결할 또 다른 오브젝트의 식별자를 명시해 놓았다. 궁금하다면 지금 바로 확인해 보자.
추가적인 내용
하지만 위와 같은 방법으로 휴지통을 생성해도 기본적으로 Windows 설치시 생성되었던 아이콘과 다른점을 느낄 수 있다. 다름 아닌 아이콘 삭제와 이름 변경 기능이다. Windows 설치를 했을때 기본 휴지통아이콘은 다음과 같이 "삭제", "이름 바꾸기" 기능을 사용할 수 없다.
하지만 위와 같은 방법으로 아이콘을 생성한 후 마우스 오른쪽을 클릭하면 다음과 같이 "삭제", "이름 바꾸기" 기능이 활성화 되어 있다.
그렇다면 이것은 어떡해 설정해야 하는 것인가? 직관적으로 생각해보아 Windows 레지스트리에 해당 오브젝트와 관련된 키의 특정 값을 넣어 해당 기능을 막았을 거라는 추측을 해 볼 수 있다. 이에 관련 내용을 찾아보았다.
앞서 언급한 대로 Windows 의 각 오브젝트들은 다음의 위치에 해당 클래스 ID 값을 가지고 있다.
경로 :: HKEY_CLASSES_ROOT\CLSID\{XXX-.... - XXX}
이러한 클래스 ID들은 오브젝트에 따라 하위 키로 "ShellFolder"를 가지는데 이 하위 키의 "Attributes" 값을 통해 해당 오브젝트의 특성을 정의할 수 있다. "휴지통"의 경우 다음의 경로에 "Attributes" 값을 통해 특성을 정의할 수 있다.
경로 : HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder
이 Attributes에 들어가는 값들은 다음에 정의되어 있다.
Shellforlders & -objects
http://msdn.microsoft.com/en-us/library/cc144093(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb762589(VS.85).aspx
기본적인 "휴지통"의 속성 값은 "40 01 00 20" 이다. 따라서 맨 위의 값인 SFGAO_CANRENAME, SFGAO_CANDELETE 속성이 적용되지 않기 대문에 "삭제"와 "이름 바꾸기" 기능이 동작하지 않는 것이다. 필자의 값은 "70 01 00 20"으로 변경되어 있었다. 따라서 "40 01 00 20"으로 다시 변경한 후 바탕화면에서 "F5(새로고침)" 키를 누른 후 확인해 보면 "삭제", "이름 바꾸기" 기능이 숨겨진 것을 확인할 수 있을 것이다.
휴지통 아이콘 제거/복구
연구실에서 업무용으로 사용하는 컴퓨터 외에 발표용이나 집에서 영화 감상용으로 사용하는 노트북 바이오(VAIO SZ74L). 학교에서 거의 하루를 보내기 때문에 새벽에 집에 가서야 잠깐씩 보는 놈인데 얼마 전부터 휴지통이 사라졌다. 분명 OS 설치 후 초기에는 바탕화면에 있었는데 어느 순간부터 보이지 않기 시작했다.
대부분 파일을 지울 때 SHIFT 키를 활용하기 때문에 휴지통이 가득찰 염려는 없었다. 하지만 인터넷에서 다운 받은 파일이나 메신저로 받는 파일의 기본 경로가 바탕화면이어서 순간 활용하고 필요없으면 마우스로 끌어다가 휴지통에 넣어버리곤 한다. 근데 휴지통이 없어서 습관때문에 불편함이 생겼다.
그래서 휴지통을 다시 만들어 보기로 했다.
1. 쉽게 만드는 방법은 바탕화면에 새 폴더를 생성하고 다음과 같이 폴더 이름을 변경한다.
"Recycle Bin.{645ff040-5081-101b-9f08-00aa002f954e}" 이렇게 만들어 버리면 폴더 아이콘이 휴지통으로 변경될 것이다. 아이콘을 클릭하면 휴지통 영역을 보여준다. 하지만 휴지통이 가득차거나 비었을때 아이콘을 제대로 표현하지 못한다.
2. 레지스트리를 변경한다.
경로 :: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace 새로운 키 생성 :: {645ff040-5081-101b-9f08-00aa002f954e}
이렇게 생성하면 이전의 휴지통과 같이 휴지통의 상태에 따라서 아이콘이 정확히 표시되고 속성 정보를 확인하면 정상적인 휴지통 역할을 하는 것을 알 수 있다. 왜 "{645ff040-5081-101b-9f08-00aa002f954e}" 이 값의 입력만으로 휴지통이 되는 것일까?
레지스트리를 실행(실행 -> regedit 입력)하고 레지스트리 구조에서 최상위 루트에 마우스를 올려 놓고 편집 -> 찾기를 클릭한 후 앞서 언급한 "{645ff040-5081-101b-9f08-00aa002f954e}" 값을 입력 후 찾기를 눌러보자. 그러면 HKEY_CLASSES_ROOT 항목의 CLSID 키의 하위 키로 해당 값이 존재하는 것을 확인할 수 있다.
결국 휴지통의 고유한 CLSID 키가 존재하기 때문에 윈도우 OS 어디에서나 해당 CLSID 값은 휴지통을 의미한다. 그렇다면 CLSID는 또 무엇인가?
CLSID(Class Identifier)는 이름 그대로 클래스 식별자이다. 휴지통을 구성하는 클래스의 식별자가 앞서 입력했던 값인 것이다. 엄밀히 말해서는 윈도우는 클래스라는 용어는 적절하지 않다. 클래스 보다는 오브젝트(Object) 형태로 모든 운영체제의 리소스를 관리한다.
위의 그림에서 휴지통 CLSID 외의 나머지 CLSID들은 윈도우를 구성하는 또다른 오브젝트들의 클래스 식별자가 될 것이다. 실제 해당 CLSID 의 하위 값들을 살펴보면 휴지통의 상태에 따라 표현할 아이콘 설정이나 메뉴에 따라 연결할 또 다른 오브젝트의 식별자를 명시해 놓았다. 궁금하다면 지금 바로 확인해 보자.
추가적인 내용
하지만 위와 같은 방법으로 휴지통을 생성해도 기본적으로 Windows 설치시 생성되었던 아이콘과 다른점을 느낄 수 있다. 다름 아닌 아이콘 삭제와 이름 변경 기능이다. Windows 설치를 했을때 기본 휴지통아이콘은 다음과 같이 "삭제", "이름 바꾸기" 기능을 사용할 수 없다.
하지만 위와 같은 방법으로 아이콘을 생성한 후 마우스 오른쪽을 클릭하면 다음과 같이 "삭제", "이름 바꾸기" 기능이 활성화 되어 있다.
그렇다면 이것은 어떡해 설정해야 하는 것인가? 직관적으로 생각해보아 Windows 레지스트리에 해당 오브젝트와 관련된 키의 특정 값을 넣어 해당 기능을 막았을 거라는 추측을 해 볼 수 있다. 이에 관련 내용을 찾아보았다.
앞서 언급한 대로 Windows 의 각 오브젝트들은 다음의 위치에 해당 클래스 ID 값을 가지고 있다.
경로 :: HKEY_CLASSES_ROOT\CLSID\{XXX-.... - XXX}
이러한 클래스 ID들은 오브젝트에 따라 하위 키로 "ShellFolder"를 가지는데 이 하위 키의 "Attributes" 값을 통해 해당 오브젝트의 특성을 정의할 수 있다. "휴지통"의 경우 다음의 경로에 "Attributes" 값을 통해 특성을 정의할 수 있다.
경로 : HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder
이 Attributes에 들어가는 값들은 다음에 정의되어 있다.
Shellforlders & -objects
http://msdn.microsoft.com/en-us/library/cc144093(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb762589(VS.85).aspx
- SFGAO_CANRENAME 10 00 00 00 Object can be renamed;
- SFGAO_CANDELETE 20000000 Object can be deleted;
- SFGAO_HASPROPSHEET 40 00 00 00 Object have a property sheet;
- SFGAO_CANCOPY 01 00 00 00 Object can be copied;
- SFGAO_CANMOVE 02 00 00 00 Object can be moved;
- SFGAO_CANLINK 04 00 00 00 Object can be linked;
- SFGAO_DROPTARGET 00 01 00 00 Object can be pasted into;
- SFGAO_NONENUMERATED 00 00 10 00 Object is a non-enumerated object (?);
- SFGAO_NEWCONTENT 00 00 20 00 Object should show bold in explorer tree;
- SFGAO_LINK 00 00 01 00 Object is shortcut (arrow);
- SFGAO_SHARE 00 00 02 00 Object is shared (hand);
- SFGAO_READONLY 00 00 04 00 Object has readonly attribute;
- SFGAO_GHOSTED [/_HIDDEN] 00 00 08 00 Object has disabled look;
- SFGAO_FILESYSANCESTOR 00 00 00 10 Object contain file system folder (?);
- SFGAO_FOLDER 00 00 00 20 Object is a folder;
- SFGAO_FILESYSTEM 00 00 00 40 Object is "part of the file system (that is, they are files, directories, or root directories");
- SFGAO_HASSUBFOLDER 00 00 00 80 Object contain folders (expandable in explorer/plus sign);
- SFGAO_VALIDATE 00 00 00 01 Invalidate cached information (content is checked);
- SFGAO_REMOVABLE 00 00 00 02 Object is on removable media;
- SFGAO_COMPRESSED 00 00 00 04 Object is compressed (alt color);
- SFGAO_BROWSABLE 00 00 00 08 The specified items can be browsed in place (?).
기본적인 "휴지통"의 속성 값은 "40 01 00 20" 이다. 따라서 맨 위의 값인 SFGAO_CANRENAME, SFGAO_CANDELETE 속성이 적용되지 않기 대문에 "삭제"와 "이름 바꾸기" 기능이 동작하지 않는 것이다. 필자의 값은 "70 01 00 20"으로 변경되어 있었다. 따라서 "40 01 00 20"으로 다시 변경한 후 바탕화면에서 "F5(새로고침)" 키를 누른 후 확인해 보면 "삭제", "이름 바꾸기" 기능이 숨겨진 것을 확인할 수 있을 것이다.
'Data Foreniscs' 카테고리의 다른 글
| INFO2 File Analysis (0) | 2009/10/23 |
|---|---|
| 어플리케이션 바인딩 (Application Binding) (0) | 2009/10/17 |
| Windows Recycle Bin Analysis (0) | 2009/10/16 |
| 휴지통 아이콘 제거/복구 (3) | 2009/10/07 |
| Flash Cookie Forensics (4) | 2009/09/28 |
| Index.dat 분석 (2) | 2009/09/04 |
댓글을 달아 주세요
바탕화면에서 오른쪽 버튼을 누른 후 나오는 속성 정보에서 데스트탑 탭을 보면 가장 아래에 아이콘 커스터마이징이 있는데 그곳에서 휴지통을 선택하면 바탕화면에 휴지통이 보입니다.
2009/09/21 14:05 [ ADDR : EDIT/ DEL : REPLY ]순수 Windows XP 버전을 쓰시는 건가요? 바탕화면 사용자 지정에서 바탕화면 아이콘 지정은 "내문서, 내컴퓨터, 내네트워크환경"만 기본적으로 가능한 것으로 알고 있습니다. ^^ 혹시 윈도우 버전이 어떡해 되시나요?
2009/09/21 17:49 [ ADDR : EDIT/ DEL ]비스타에서는 휴지통이 지워 집니다. 제가 이야기한 내용은 비스타 적용 인것 같습니다. 순수 윈도우를 안써서 그런지 XP에서는 휴지통이 애초에 지워지지 않군요. 좋은글 감사합니다.
2009/09/22 12:53 [ ADDR : EDIT/ DEL : REPLY ]