Lnk File
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
# 빠른실행(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 File Format
Lnk File Format에는 크게 5가지 부분으로 나눌 수가 있다.
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) |
VolumeID 구조에는 DriveType, DriveSerialNumber 등의 정보가 포함되고, CommonNetworkRelativeLink 구조에는 링크 대상의 경로가 포함된다. 경로 정보는 StringData 구조의 정보를 이용해도 얻을 수 있다. 따라서, LinkInfo 구조에서 포렌식적으로 의미있는 정보를 다음과 같다.
- DriveType : 링크 대상이 위치한 드라이브 형식
- DRIVE_UNKNOWN : 0x00000000
- DRIVE_NO_ROOT_DIR : 0x00000001
- DRIVE_REMOVABLE : 0x00000002
- DRIVE_FIXED : 0x00000003
- DRIVE_REMOTE : 0x00000004
- DRIVE_CDROM : 0x00000005
- DRIVE_RAMDISK : 0x00000006
LocalBasePath : 링크 대상 경로
결론
링크 파일을 통하여 알 수 있는 정보는 꽤 많다. 아래는 LNK Parser를 통하여 보이는 화면을 캡처한 것으로 링크된 파일의 이름과 해당 파일의 경로, 그리고 파일의 사이즈 비교를 통하여 찾고자 했던 파일의 크기와 비교를 할 수가 있으며, 바로가기 생성시간, 접근시간, 쓰기 시간 등과 그리고 타겟 파일에 대한 타임스탬프가 존재한다. 또한 마지막으로 해당 파일이 만약 USB와 같은 외부 저장장치에서 실행이 됐다면 그 Volume Label과 해당 드라이브의 시리얼 넘버를 알 수가 있다.
참고
'Forensic > Theory' 카테고리의 다른 글
Project Spartan Forensic - Edge (0) | 2015.09.30 |
---|---|
윈도우 아티팩트 요소 (0) | 2015.09.28 |
Jump List (0) | 2015.09.27 |
File System Tunneling (0) | 2015.09.23 |
Web Forensic (0) | 2015.09.19 |