LNK 파일
개요
- 특정 응용프로그램을 실행하였을 때 바탕화면에 자동으로 생성되는 파일
- 사용자가 편의성을 위해 [ 바로 가기 만들기 ]를 하였을 때 생성되는 파일
- 로컬 및 원격 데이터 파일 및 문서를 열기 하였을 때 생성되는 파일
- 바탕화면 외에도 최근 문서 폴더, 시작 프로그램, 빠른 실행 등 다양한 곳에 생성
포렌식 관점
파일의 MAC Time
볼륨 정보
네트워크 공유 정보
원본 위치
시스템 이름
원본 파일 추적 가능
윈도우 버전별 LNK 파일 폴더
-
바탕화면(Desktop) 폴더
- Windows XP : C:\Documents and Settings\<user name>\Desktop
- Windows 7 / 8 / 10 / 11 : C:\Users\<user name>\Desktop -
최근문서(Recent) 폴더
- Windows XP : C:\Documents and Settings\<user name>\Recent
- Windows 7 / 8 / 10 / 11 : C:\Users<user name>\AppData\Roaming\Microsoft\Windows\Recent -
시작프로그램(Start) 폴더
- Windows XP : C:\Documents and Settings\<user name>\Start Menu\Programs
- Windows 7 / 8 / 10 / 11 : C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs -
바탕화면(Desktop) 폴더
- Windows XP : C:\Documents and Settings\<user name>\Desktop
- Windows 7 / 8 / 10 / 11 : C:\Users\<user name>\Desktop -
빠른실행(QuickLaunch) 폴더
- Windows XP : C:\Documents and Settings\<user name>\Application Data\Microsoft\Internet Explorer\Quick Launch
- Windows 7 / 8 / 10 / 11 : 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] 확장자로 분류
오픈소스인 LNK Parser 프로그램을 활용하여 .lnk 파일 수집 및 분석
.lnk 파일이나 저장된 폴더를 불러온 후 분석 진행 (Start)
.lnk 파일 분석을 통해 파일 이름, 원본 경로, 크기, .lnk 파일 생성/수정 날짜, 원본 생성/수정 날짜, 시리얼 넘버, 드라이브 타입 등 확인 가능