프로니어| Security is a people problem...
Flash Cookie Forensics에 대한 내용은 비교적 최근에 언급된 내용으로 SSRN(Social Science Research Network)에 발표된 논문 "Flash Cookies and Privacy"에 의해 이슈화되었다. Cookie라는 말은 기존의 HTTP Cookie에서 유래된 의미로 Macromedia에서는 Local Shared Objects(LSO)라는 말로 부르고 있다.
Flash Cookie(=Local Shared Object)는 브라우저에 기반한 인터넷 사용흔적이 아니기 때문에 브라우저에서 지원하는 기능을 통해 관리되지 않는다. 다시 말해, Internet Explorer의 경우 인터넷 옵션을 통해 검색 기록, 페이지 목록, 임시 파일, 쿠키 등의 정보를 삭제할 수 있다. 하지만 Flash Cookie는 브라우저에 의해 관리되지 않고 용량도 크게 부담되지 않기 때문에 사용자가 의식적으로 직접 삭제하지 않는 이상 해당 시스템에 반영구적으로 남게 된다.
최근 Ajax, Flex, Silverlight, JavaFX 등 동적인 웹 환경을 만들기 위한 다양한 언어들이 소개되었지만 아직까지도 간편함과 웹 페이지에 무리를 주지 않는다는 점에서 Flash를 많이 사용하고 있다. 플러그인(Plug-in) 형태로 웹 브라우저에서 실행하는 Flash는 기본적으로 사용자가 클릭하지 않아도 자동적으로 실행된다. 이때 사용자의 정보를 저장하기 위해 LSO가 사용된다. 앞서 언급한 논문에 따르면 조사한 웹 사이트 중 50% 이상이 LSO를 남겼다고 한다. 모든 Flash가 LSO를 남기는 것은 아니라는 말이다. 아마도 Flash 프로그래밍 중 HTTP Cookie 와 같이 특정 정보를 이용해야 할 경우에 프로그래밍을 통해 가능하게 하는 것이 아닌가 생각된다. (Flash 프로그래밍을 해보지 않아서 넘어가겠다. 혹시 해본사람이 있다면 답변바란다.)
LSO 정보는 ".sol" 이라는 확장자를 가지는 100 KB 이하의 파일형태로 다음의 경로에 기록이 된다. (Windows XP 기준)
위의 그림에서 확인할 수 있듯이 Flash가 실행된 사이트 주소를 폴더 이름으로 하여 생성이 된다. 다음 그림은 해당 폴더의 내용을 확인한 것이다. 사이트에 따라 하나 이상의 .sol 파일이 생성된다. 특이한 점은 사이트 대부분이 국내 사이트이기 보다는 국외 사이트라는 점이다.
Flash Cookie(or Local Shared Object) 분석
그렇다면 Flash Cookie를 통해 어떤 정보를 확인할 수 있을까? 현재 Flash Cookie를 분석해 주는 도구는 없는 것으로 알고 있다. (조만간 주말에 시간이 나면 만들어 볼 생각이다.) 다만 Mozilar Firefox 에서 "BetterPrivacy"라는 플러그인을 통해 확인이 가능하다. 다음은 BetterPrivacy 플러그인을 통해 LSO 정보를 확인한 내용이다.
해당 플러그인은 프라이버시를 보호하기 위한 플러그인으로 LSO 파일을 자동으로 삭제하게 하는 등의 기능을 통해 LSO를 통해 남을 수 있는 사용자 정보를 관리할 수 있다. 그렇다면 LSO 파일을 통해 어떤 정보를 확인할 수 있는지에 대해 알아보자.
Flash Cookie Forensics에 대한 내용은 비교적 최근에 언급된 내용으로 SSRN(Social Science Research Network)에 발표된 논문 "Flash Cookies and Privacy"에 의해 이슈화되었다. Cookie라는 말은 기존의 HTTP Cookie에서 유래된 의미로 Macromedia에서는 Local Shared Objects(LSO)라는 말로 부르고 있다.
Flash Cookie(=Local Shared Object)는 브라우저에 기반한 인터넷 사용흔적이 아니기 때문에 브라우저에서 지원하는 기능을 통해 관리되지 않는다. 다시 말해, Internet Explorer의 경우 인터넷 옵션을 통해 검색 기록, 페이지 목록, 임시 파일, 쿠키 등의 정보를 삭제할 수 있다. 하지만 Flash Cookie는 브라우저에 의해 관리되지 않고 용량도 크게 부담되지 않기 때문에 사용자가 의식적으로 직접 삭제하지 않는 이상 해당 시스템에 반영구적으로 남게 된다.
최근 Ajax, Flex, Silverlight, JavaFX 등 동적인 웹 환경을 만들기 위한 다양한 언어들이 소개되었지만 아직까지도 간편함과 웹 페이지에 무리를 주지 않는다는 점에서 Flash를 많이 사용하고 있다. 플러그인(Plug-in) 형태로 웹 브라우저에서 실행하는 Flash는 기본적으로 사용자가 클릭하지 않아도 자동적으로 실행된다. 이때 사용자의 정보를 저장하기 위해 LSO가 사용된다. 앞서 언급한 논문에 따르면 조사한 웹 사이트 중 50% 이상이 LSO를 남겼다고 한다. 모든 Flash가 LSO를 남기는 것은 아니라는 말이다. 아마도 Flash 프로그래밍 중 HTTP Cookie 와 같이 특정 정보를 이용해야 할 경우에 프로그래밍을 통해 가능하게 하는 것이 아닌가 생각된다. (Flash 프로그래밍을 해보지 않아서 넘어가겠다. 혹시 해본사람이 있다면 답변바란다.)
LSO 정보는 ".sol" 이라는 확장자를 가지는 100 KB 이하의 파일형태로 다음의 경로에 기록이 된다. (Windows XP 기준)
- C:\Documents and Settings\<account_name>\Application Data\Macromedia\Flash Player\#SharedObjects\<random_profile_id>\
위의 그림에서 확인할 수 있듯이 Flash가 실행된 사이트 주소를 폴더 이름으로 하여 생성이 된다. 다음 그림은 해당 폴더의 내용을 확인한 것이다. 사이트에 따라 하나 이상의 .sol 파일이 생성된다. 특이한 점은 사이트 대부분이 국내 사이트이기 보다는 국외 사이트라는 점이다.
Flash Cookie(or Local Shared Object) 분석
그렇다면 Flash Cookie를 통해 어떤 정보를 확인할 수 있을까? 현재 Flash Cookie를 분석해 주는 도구는 없는 것으로 알고 있다. (조만간 주말에 시간이 나면 만들어 볼 생각이다.) 다만 Mozilar Firefox 에서 "BetterPrivacy"라는 플러그인을 통해 확인이 가능하다. 다음은 BetterPrivacy 플러그인을 통해 LSO 정보를 확인한 내용이다.
해당 플러그인은 프라이버시를 보호하기 위한 플러그인으로 LSO 파일을 자동으로 삭제하게 하는 등의 기능을 통해 LSO를 통해 남을 수 있는 사용자 정보를 관리할 수 있다. 그렇다면 LSO 파일을 통해 어떤 정보를 확인할 수 있는지에 대해 알아보자.
- 웹사이트 접근 기록
사용자가 특정 웹사이트를 접근할 경우 해당 웹사이트의 Flash (대부분 광고 목적)를 통해 LSO 파일이 남는다. LSO 파일은 접근한 사이트의 이름을 폴더 이름으로 사용하기 때문에 #ShreadObjects\<random_profile_id>\ 폴더 밑의 폴더들의 이름이 사용자가 접근한 사이트의 목록이 된다.
물론 접근한 모든 사이트의 기록이 남지는 않는다. 하지만 사용자가 웹 브라우저의 삭제 기능을 통해 브라우저에서 지원하는 로그(검색 기록, 페이지 목록, 임시 파일, 쿠키 등) 정보를 삭제하였을 경우에는 인터넷 흔적을 찾기 어려울 것이다. 이 경우, LSO가 제공하는 접근 기록은 큰 의미를 지니게 될 것이다.
그리고 여러 사용자가 시스템을 사용하는 경우 C:\Documents and Settings\<account_name>\을 통해 특정 사용자가 방문한 사이트를 알수 있다.
- 웹사이트 접근 시간 정보
웹사이트에서 LSO 정보를 남길 경우 "<site_name>.sol" 파일을 생성하기 때문에 해당 파일의 시간정보를 확인하면 웹 사이트의 접근 시간을 알 수 있다. 다음은 특정 mail.google.com 사이트를 방문한 경우에 생성되는 SOL 파일의 시간정보를 확인한 것이다.
파일의 생성 시간은 사이트를 처음 방문했을 때의 시간이다. 이후 재 방문을 할 경우 파일의 수정시간, 접근 시간이 변경된다.
하지만 테스트를 해 본결과 해당 사이트를 재방문할 때마다 수정 및 접근 시간이 변경되는 것은 아니다. 브라우저를 띄운 상태라면 세션이 유지되기 때문에 해당 시간정보를 업데이트 하지 않는다. 브라우저를 종료한 후 재시작하고 다시 해당 사이트를 방문하면 수정 및 접근 시간이 변경된다.
따라서 파일의 수정, 접근 시간은 해당 사이트를 마지막으로 방문한 시간이라고 할 수는 없지만 마지막으로 방문한 시간 근처라는 것은 알 수 있다. 보통 브라우저를 한번 띄우고 24시간 이상을 사용하는 경우는 드물기 때문이다. 추정해 볼 수 있다. 이러한 시간 정보는 용의자의 인터넷 사용 패턴을 파악하는데 많은 도움을 줄 것이다.
- SOL 파일 포맷
SOL의 파일 포맷은 다음과 같다.
Header (16 bytes)
0 - 1 : version
2 - 5 : file size after 6 bytes (total size - 6)
6 - 9 : signature always "TCSO....."(0x5443534F000400000000)
10 - 15 : padding
Data Block (Remains)
16 - 17 : length of the value of the Shared Object
19 - X : value of the Shared object
X ~ :
다음은 mail.google.com 사이트를 방문했을 경우 생성되는 "wakeup.sol" 파일의 내용을 살펴본 것이다. 위의 포맷에서 헤더 구조가 일치하는 것을 알 수 있다. 다만 데이터 블록에 대해서는 처음의 파일이름에 대한 구조 이후의 내용에 대해서는 정보가 주어지지 않아 정확하게 어떤 의미를 가지는지 파악하지 못했다.
'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/29 01:05 [ ADDR : EDIT/ DEL : REPLY ]만드는 대로 여기다 올릴께요..ㅋ
2009/10/06 02:46 [ ADDR : EDIT/ DEL ]http://boanchanggo.tistory.com/483 여기에 쉽게 sol 구조 확인 가능한 도구 있습니다. 저도 개인적으로 연구중이기도 하고요^^
2009/10/05 22:38 [ ADDR : EDIT/ DEL : REPLY ]아핫.. 플래시 게임의 경우 실시간으로 값 변경이 가능하군요..^^ 좋은 정보 감사합니다.
2009/10/06 02:46 [ ADDR : EDIT/ DEL ]