ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 점프 목록 포렌식(Jump List Forensic)
    $ 포렌식 $/$ 포렌식 기술적 이론 $ 2019. 11. 25. 13:46

    점프 목록(Jump List)이란 무엇일까??

     

    윈도우 7 에서 새롭게 추가된 기능

    응용프로그램을 사용할때 사용한 로그를 표현해주는 목록 3가지

    - 최근 접근 문서(Recent) 폴더 와 RecentDocs 레지스트리 키

    - UserAssist 레지스트리 키

    - 점프 목록

     

    위의 로그를 표현해주는 목록 3가지 중 점프목록에 대해서 이야기 해보려고 합니다.

    ↑ 윈도우 7에서의 점프 목록

     

    ↑ 윈도우 10에서의 점프 목록

     

    위의 사진이 제 노트북의 파일 탐색기 점프 목록 입니다. (저의 사생활이 들어있...)

    작업표시줄에 있는 응용프로그램을 우클릭 해보면 점프 목록을 확인해 보실 수 있습니다

     

    점프목록의 종류로는 4가지가 존재 합니다.

    1. Recent : 사용자가 최근 접근한 파일이나 폴더를 의미합니다.

    2. Frequent : 사용자가 빈번히 접근한 파일이나 폴더를 이야기 합니다.

    3. Tasks : 응용프로그램에서 지원하는 작업 목록 입니다.

    4. Pinned : 사용자가 고정 시킨 작업 목록 입니다.

     

    위의 사진에서는 Recent 와 Pinned 점프 목록이 있다는 것을 알 수 있습니다.

     

    포렌식을 공부 하기 때문에 왜 우리가 점프 목록 포렌식을 공부 해야하는가가 매우 중요한 요소가 될거같습니다.

    1. 사용자의 응용프로그램 사용 흔적 및 패턴을 보다 쉽게 파악이 가능합니다.

    2. 대부분 많이 사용하는 윈도우 7에서 부터 기본 활성화가 됩니다. 그렇기 때문에 대부분 사용하는 컴퓨터에서는 점프목록이 활성화 되어있습니다.

    3. 최근 접근 문서(Recent)나 UserAssist 키보다 더많은 정보를 포함하고 있습니다.

    4. 사용자가 직접 삭제 하지 않는 이상 운영체제 설치 시부터 지속적으로 로그를 저장합니다.

    5. 사용자의 행위를 파악하거나 정보 유출 사건 분석에 큰 역할을 합니다.

     

    점프 목록 설정 하는 방법

     

    제어판 -> 작업표시줄 및 시작메뉴 에 들어가 보면 아래와 같은 팝업 창을 확인 하실 수 있습니다.

    ↑ 윈도우 7 에서의 점프 목록 설정 창

     

    윈도우 7에 뜨는 팝업창 내용을 보면 체크박스가 총 2개 입니다.

     

    1. 첫번째 체크박스

    최근 사용한 프로그램 시작 메뉴에 표시 여부를 설정

    체크를 해제하고 적용을 누르면 시작 메뉴 항목 제거

     

    2. 두번째 체크박스

    점프 목록에 관련 설정

    체크 해체한 후 적용을 누르면 이전에 기록된 모든 점프 목록 삭제

    고정된 점프 목록은 삭제되지 않습니다

     

    3. 사용자 지정 버튼

    시작 메뉴와 점프 목록에 지정할 프로그램 지정이나 목록 수 설정

     

    일반 비전공 사용자라면 위의 설정을 통해서 점프 목록을 삭제 하기가 쉽지 않습니다.

    따라서 점프 목록은 사용자의 운영체제 사용 흔적을 파악하는데에 큰 도움이 될 수 있습니다.

     

    점프 목록 구조

     

    점프 파일은 Recent 폴더 하위에 저장이 됩니다. 경로는 아래와 같습니다.

     

     

    위와 같이 위의 경로에 다음과 같이 .lnk 파일들이 눈에 보입니다.

    그중에서 DIR 만 확인해 보겠습니다.

     

    AutomaticDestinations 폴더와 CustomDestinations 폴더가 존재 합니다.

     

    AutomaticDestinations

    - 단어 뜻 그대로 운영체제가 자동으로 남기는 항목

    - 최근 사용한 목록(Resent)나 사용자가 직접 고정시킨 항목(Pinned)가 위치하고 있다.

     

    CustomDestinations

    - 자주 사용되는 목록(Frequent)나 작업 목록(Tasks)가 존재하고 있다.

     

    두개의 폴더를 들어가보면 아래와 같은 파일명을 확인 할 수 있습니다.

    ↑ AutomaticDestinations

     

    ↑ CustomDestinations

     

    해당 문자열은 총 16글자로 App ID 라는 고유한 문자열입니다.

    각 응용프로그램에는 각각의 고유한 16자리 문자열을 가지고 있습니다.

    해당 16개의 문자열이 어떤 응용프로그램의 App ID 인지는 아래의 URL 에서 검색이 가능합니다.

    Jump List App ID : https://kali-km.tistory.com/entry/Jump-List-App-ID

     

    해당 사이트에 없는 App ID 도 있지만 1b4dd67f29cb1962를 예시로 들어보자면 아래와 같습니다.

     

    점프 목록 파일의 구조는 OLE Compound 파일 구조를 사용합니다.

    점프 목록 각 아이템을 OLE Stream(바로가기) 으로 저장하게 됩니다.

     

    OLE Stream 파일은 SSView(Structured Storage Viewer) 라는 툴을 이용해서 파일을 Stream 별로 확인이 가능합니다.

     

    총 스트림 개수가 19개네요 16진수 형식으로 숫자가 매겨 지네요

     

    점프 목록을 공부하기 위해서 일단 점프 목록 파일구조의 헤더를 차지하는 OLE 파일구조도 공부를 해야하며, lnk 파일의 연속이기 때문에 LNK 관련 파일 구조도 기본적으로 알고 있어야 합니다.

     

    OLE File Struecture 관련 글 :  https://whitesnake1004.tistory.com/584

     

    LNK File Struecture 관련 글 :  https://whitesnake1004.tistory.com/591

     

    기본적으로 점프 파일 구조는 아래와 같은 구조를 띄고 있습니다.

     

    LNK File Structure는 여러개가 있고, DestList File Structure는 1개가 존재 합니다. 

    DestList File Structure의 크기는 다른 LNK File 보다 크게 출력됩니다.

    그 이유는 완벽히는 아니지만 LNK File에 대응하는 DestList File이 있기 때문입니다.

     

    허나 종종 LNK File은 있지만 DestList File이 없거나 그 반대인 경우도 있는데, 데이터를 저장시에 시스템 오류가 있었거나 쓰기 동작중 예기치 못하게 중지되는 경우가 있습니다.

     

    현재 개발 되어있는 툴을 이용해서 열어보면 automaticDestinations-ms 파일의 데이터를 확인할 수 있습니다.

     

    이런식으로 데이터가 쉽게 확인이 가능합니다.

    해당 프로그램에서 좀 불편한 부분이나 값이 출력되지 않는 데이터가 있습니다.

     

    특히 DestList 관련 데이터가 구별되서 출력되지 않았고, DestList 데이터를 출력해 주면서 OLE File 구조를 동시에 보여주는 툴을 한번 만들어 봐야 겠다고 생각을 했습니다.

    Jump List File을 공부하기 위해서 앞에서 OLE File 구조와 LNK File 구조를 공부 했었습니다.

     

    좀더 깊이 공부해 보고 툴을 개발해 볼 생각입니다.

    (현재 Windows 10 에서 사용하는 Jump List를 분석해주는 Jump List Analysis 라는 툴을 개발하고 있으며 언제 개발 완료 될지는 미지수 입니다..!)

    댓글

Designed by Tistory.