본문 바로가기

[+] Forensic

Torrent Forensic Artifact

흔히 어떤 미디어 콘텐츠나 응용 프로그램등의 불법적인 다운로드는 P2P로 이루어진다. 이전에는 당나귀나 프루나 라는 P2P 프로그램으로 이루어졌으나 요즘은 토렌트라는 응용프로그램으로 넘어와 자료 공유가 무척이나 활발히 이루어지고 있다. 특히 성인동영상이 P2P에서 공유되고 있는 대표적인 미디어 콘텐츠 인데, 이와 같은 미디어로 인해 현재 우리나라에서는 크고작은 성폭력 범죄등이 발생하고 있는 시점이다. 최근에까지만 하여도 웹하드에서 주로 성인물을 쉽게 받아 볼 수 있었는데 근래에 들어 정부와 각 기관들의 강력한 대응으로 웹하드의 사업자 등록화와 저작권물에 대한 강력한 단속등으로 인해 웹하드에서는 우리가 흔히 말하는 '야동'이라는 것을 쉽게 접하지 못하게 되었다. 하지만 아직까지도 토렌트 시드파일을 전문적으로 공유하는 사이트에서는 쉽게 '야동' 이라는 미디어 콘텐츠를 쉽게 접하고 다운로드 할 수 있다.


 * 참고 : 토렌트 시드파일은 토렌트 공유를 가능케 하는 파일로, 해당 파일을 이용 해 토렌트 프로그램 리스트에 등록을 하게 되면 다운로드와 함께 공유가 자동적으로 되 일반적으로 씨앗파일, 시드파일로 불린다.


요즘 수사기관에서는 근래에 들어 발생한 성폭력 사건의 근본원인을 이런 유해 미디어라고 판단하여 대대적인 단속과 수사를 벌이고 있다. 아래 언론 기사를 참고하면 좀 더 정확히 이해를 할 수 있을 것이다.


 - “한달새 제작·유포사범 3130명 검거 단속 사각지대 ‘토렌트’까지 뚫었다”(http://www.seoul.co.kr/news/newsView.php?id=20121003006007)


위 기사와 같이 여러 피의자 또는 용의자를 소환해 조사한다고 가정하였을 때 가장 확실한 증거물은 무엇일까? 가장 간단하게 생각 할 수 있는 것은 해당 컴퓨터를 조사하여 다운로드 또는 업로드 흔적을 발견하는 것이다. 토렌트 프로그램을 이용하면 여러 흔적이 컴퓨터에 남게 되는데 이 흔적을 이번 글에서 알아 볼 것이다.


 * 참고 : 토렌토 클라이언트 프로그램은 다양하게 존재한다. 이 중 우리나라와 전 세계적으로 많이 쓰이는 uTorrent를 기준으로 알아 볼 것이다.


1. 레지스트리 흔적

 토렌트 프로그램이 스스로 레지스트리를 만들어 어떠한 흔적을 남기지는 않는다. 그러므로 토렌트 프로그램이 접근하는 레지스트리가 아닌 Windows에서 토렌트 프로그램으로 접근하는 레지스트리를 확인해야 한다. 보통 Windows에서는 MRUList로 최근 열린 파일들의 목록을 저장하고 있다. 토렌트 시드파일 또한 이 목록에 포함된다. 


 - HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.torrent


위 레지스트리 키로 이동하여 보면 바이너리 데이터로 토렌트 파일의 정보가 저장되어 있는 것을 볼 수 있다.


[그림 1 - 최근 열어본 토렌트 시드파일 목록]


MRUListEx의 내용을 보면 각 바이너리 데이터들의 번호를 볼 수 있는데 이 내용에서 가장 최근의 파일은 0x00 오프셋에 있는 데이터(번호)로 알 수 있다.

또 해당 파일을 언제 열어본 것이지 파악하기 위해서는 해당 키의 LastWrittenTime을 알아봐야 한다. 간단하게 레지스트리 내보내기로 보면 시간 값을 확인 할 수 있다.


[그림 2 - 가장 최근 토렌트 프로그램에 파일을 추가한 시간]


그런데 이 레지스트리 정보는 가장 큰 약점(?)이 한가지 존재한다. Windows 로컬 상에서 클릭 해 파일을 열어야 한다는 점이다. 일반적으로(필자도 마찬가지로) 어떤 파일을 다운로드 받아 열거나 또는 실행 할 때 브라우저에서 제공하는 열기(IE) 또는 다운로드 완료목록(Chrome)을 이용한다. 이런 방식으로 해당 파일이 열리게 되면 해당 파일은 레지스트리에 추가 되지 않는다. 만약에 이런 습관이 있는 용의자의 컴퓨터를 조사한다면 레지스트리에서는 아무런 흔적도 발견하지 못할 수 있다. 그럼 어떻게 확실한 증거를 잡아야 할까?



2. Windows의 Roaming Data

 Windows 계정마다 Roaming 폴더가 존재하는데 이 폴더에는 토렌트 프로그램에 대한 데이터가 존재한다. 제일 중요한 것은 해당 폴더에 열렸던 토렌트 시드파일의 원본이 저장된다는 점이다.


 - \Users\%UserName%\AppData\Roaming\uTorrent


[그림 3 - 원본 토렌트 시드파일]


해당 파일의 MFT 타임정보를 보면 MAC 타임 모두 동일한 것을 볼 수 있다. 이런 경우 해당 시간은 해당 파일이 열린 시간을 말해준다.


[그림 4 - 토렌트 원본 시드파일의 MAC]


만약에 해당 파일이 한번 삭제되거나 다시 열렸을 경우에는 만든 날짜(C)와 엑세스한 날짜(A)가 가장 최근에 열린 시간을 말해주며 수정한 날짜(M)가 처음 열렸던 시간을 말해준다.


[그림 5 - 파일이 다시 열렸을 때 MAC]


이 글을 여기까지 읽었다면 아마 '어떻게 원본파일이라고 장담하는 것인가?' 라는 의문이 들을 것이다. Roaming 폴더에 있는 시드파일과 인터넷에서 다운받아 열었던 최초의 파일의 해쉬 값을 비교해보면 이 의문을 쉽게 풀린다.


[그림 6 - 해쉬 값 비교]


위와 같은 관계를 이용 해 할 수 있는 일이 한가지 존재한다. 간혹 인터넷에서 토렌트 시드파일을 다운받는 경우 파일의 제목이 해쉬 값으로 바뀌어 다운로드 될 때가 있는데 Roaming 폴더에는 해쉬 값 제목의 시드파일이 아닌 다운로드 되는 원본 파일의 제목으로 시드파일이 저장되어 쉽게 해쉬 값으로 된 시드파일이 어떤 파일을 다운받는 시드파일인지 해쉬 값 비교를 통해 알 수 있다.



3. 결론

 지금까지 간단하게 토렌트를 포렌식 관점에서 알아보았다. 원본 시드파일이 존재한다는 것은 수사과정에서 아주 중요하게 작용될거라 생각이 든다. 어떤 파일을 언제 받았고 언제 공유했으며, 그 파일의 시드파일 획득까지 가능하다면 용의자를 아주 확실하게 법정에 세울 수 있을 것이다.