Windows Forensics

윈도우 포렌식

LNK 파일

개요

  • 특정 응용프로그램을 때 바탕화면에 자동으로 생성되는 파일
  • 사용자가 편의를 위해 바로가기를 생성했을 때 생기는 파일
  • 로컬 및 원격 데이터 파일, 문서를 열었을 때 생성되는 파일
  • 바탕화면 외에도 최근 문서 폴더, 시작프로그램, 빠른실행 등 다양한 곳에서도 생성

포렌식 관점

  • 파일의 MAC Time

  • 볼륨 정보

  • 네트워크 공유 정보

  • 원본 위치

  • 시스템 이름

  • 원본 파일 추적 가능

윈도우 버전별 Lnk 파일 폴더

  • 바탕화면(Desktop) 폴더

    - Windows XP : C:\Documents and Settings\<user name>\Desktop
    - Windows 7 : C:\Users\<user name>\Desktop

  • 최근문서(Recent) 폴더

    - Windows XP : C:\Documents and Settings\<user name>\Recent
    - Windows 7 : C:\Users<user name>\AppData\Roaming\Microsoft\Windows\Recent

  • 시작프로그램(Start) 폴더

    - Windows XP : C:\Documents and Settings\<user name>\Start Menu\Programs
    - Windows 7 : C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

  • 바탕화면(Desktop) 폴더

    - Windows XP : C:\Documents and Settings\<user name>\Desktop
    - Windows 7 : C:\Users\<user name>\Desktop

  • 빠른실행(QuickLaunch) 폴더

    - Windows XP : C:\Documents and Settings\<user name>\Application Data\Microsoft\Internet Explorer\Quick Launch
    - Windows 7 : C:\Users\<user name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

LNK 파일 형식

  • ShellLinkHeader(default)

    - 총 76bytes인 기본적인 헤더로 식별 정보, 시간 정보, 대상 파일 크기, 대상 파일 특성 등의 정보가 저장됩니다.

  • LinkTargetIDList(optional)

    - ShellLinkHeader의 HasLinkTargetIDList 플래그가 설정되어 있을때 만 존재하는 구조로, 링크된 대상의 다양한 정보를 리스트 형태로 구성해놓은 구조입니다.

  • LinkInfo(optional)

    - ShellLinkHeader의 HasLinkInfo 플래그가 설정되어 있을때만 존재하는 구조로 링크 대상을 참조하기 위한 정보를 가진 구조입니다.

  • StringData(optional)

    - 링크 대상의 문자열 정보(이름, 상대경로, 작업디렉터리 등)를 저장하는 구조로 ShellLinkHeader에 관련된 플래그가 설정되어 있을 때만 존재합니다.

  • ExtraData(optional)

    - 링크 대상의 화면 표시 정보, 문자열 코드페이지, 환경 변수와 같은 추가적인 정보 저장을 위한 구조입니다.

  • 위의 5가지 구조 중 포렌식적으로 의미있는 정보를 저장한 구조는 ShellLinkHeader와 LinkInfo 구조입니다.

ShellLinkHeader 구조

범위(Hex) 크기(Byte) 이름 설명
0 - 3 4 HeaderSize 헤더의 크기로 항상 0x0000004C(76) 값
4 - 13 16 LinkCLSID 클래스 식별자(class identifier;CLSID)로 항상 00021401-0000-0000-C000-000000000046 값
14 - 17 4 LinkFlags 링크 대상의 다양한 정보에 대한 플래그
18 - 1B 4 FileAttributes 링크 대상의 파일 특성 정보
1C - 23 8 CreationTime 링크 대상의 생성 시간
24 - 2B 8 AccessTime 링크 대상의 접근 시간
2C - 33 8 WriteTime 링크 대상의 쓰기 시간
34 - 37 4 FileSize 링크 대상의 크기
38 - 3B 4 IconIndex 아이콘 인덱스
3C - 3F 4 ShowCommand 링크가 실행될 때 응용프로그램의 동작 모드
40 - 41 2 HotKey 핫키 정보
42 - 43 2 Reserved1 예약된 필드 (항상 0)
44 - 47 4 Reserved2 예약된 필드 (항상 0)
48 - 4B 4 Reserved3 예약된 필드 (항상 0)

LinkInfo 구조

  • LinkInfo 구조에서 중요한 정보는 VolumeID, CommonNetworkRelativeLink 정보입니다.

  • VolumeID 구조에는 DriveType, DriveSerialNumber 등의 정보가 포함되고,
    CommonNetworkRelativeLink 구조에는 링크 대상의 경로가 포함됩니다.

  • LocalBasePath: 링크 대상 경로
    DriveSerialNumber : 링크 대상이 위치한 드라이브의 시리얼 번호
    DriveType : 링크 대상이 위치한 드라이브 형식

  • DRIVE_UNKNOWN : 0x00000000
    DRIVE_NO_ROOT_DIR : 0x00000001
    DRIVE_REMOVABLE : 0x00000002
    DRIVE_FIXED : 0x00000003
    DRIVE_REMOTE : 0x00000004
    DRIVE_CDROM : 0x00000005
    DRIVE_RAMDISK : 0x00000006

최근 문서 폴더(Recent) 위치 :
C:\Users<user name>\AppData\Roaming\Microsoft\Windows\Recent
유형 탭을 통해서 바로가기 파일 확인

시작프로그램(Start) 폴더 위치 :
C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

시작프로그램(Start) 폴더 위치 :
각 폴더 내에 존재하는 바로가기 파일 확인

빠른실행(QuickLaunch) 폴더 위치 :
C:\Users\<user name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

[ 바로가기 정보 ]를 통해서 원본파일의 경로 확인

[ 일반 정보 ]를 통해서 원본파일의 데이터 시간 확인

좌측 운영체제 카테고리에서 Lnk File 아티팩트 클릭

[증거]테이블의 상단 칼럼 정보를 통해
경로, MAC Time, MAC 주소, 드라이브 유형, 볼륨 정보 확인이 가능하고
우측 [세부 정보]테이블을 통해서도 확인 가능

[세부 정보]테이블의 [증거 정보]- [소스]를 통해서 Lnk File 경로 확인 가능하고
하이퍼링크를 클릭하면 자동으로 이동

최근문서폴더(Recent)
C:\Users\사용자\AppData\Roaming\Microsoft\Windows\Recent

바탕화면(Desktop) 폴더
Windows XP : C:\Documents and Settings\<user name>\Desktop
Windows 7이후 : C:\Users\<user name>\Desktop

시작프로그램(Start) 폴더
Windows XP : C:\Documents and Settings\<user name>\Start Menu\Programs
Windows 7이후: C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

빠른실행(QuickLaunch) 폴더
Windows XP : C:\Documents and Settings\<user name>\Application Data\Microsoft\Internet Explorer\Quick Launch
Windows 7이후 : C:\Users\<user name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

EnCase에서 최근문서(Recent) 폴더경로 확인
C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Recent

경로를 찾아간 후 최근문서(Recent) 폴더에 저장된 lnk파일 확인

EnCase에서 시작프로그램(Start) 폴더 경로 확인
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

경로를 찾아간 후 시작프로그램(Start) 폴더에 저장된 lnk파일 확인

EnCase에서 빠른실행(QuickLaunch) 폴더 경로 확인
C:\Users\<user name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

경로를 찾아간 후 빠른실행(QuickLaunch) 폴더에 저장된 lnk파일 확인

EnCase의 Process Evidence 기능을 이용한 lnk파일 자동 수집
[Process]탭-[Modules]-[Windows Artifact Parser]- Link File 옵션 선택

Lnk파일 자동 수집 결과 확인
[View]탭-[Artifacts]-[Evidence Processor Module Results]-[Windows Artifact Parser]

모든 경로에서 수집한 lnk파일 확인

%UserProfile%AppData\Roaming\Microsoft\Windows\Recent

[lnk] 확장자로 분류