본문 바로가기

Forensics/Windows Forensics

Link File

LNK 파일은 Windows 운영체제에서 특정 응용프로그램, 디렉터리, 파일, 문서 등을 참조하는 바로가기 파일이다. 일반적으로 "Windows Shortcut" 또는 "Shell Link"라고도 불린다. 이러한 링크 파일은 사용자가 직접 생성할 수도 있지만, 운영체제가 자동으로 생성하는 경우도 있다. 예를 들어, Windows를 설치하면 바탕화면에 "내 컴퓨터", "휴지통", "최근 문서" 등의 바로가기 파일이 기본적으로 생성된다.

 

LNK 파일은 디지털 포렌식에서 중요한 아티팩트로 활용된다. 사용자가 최근 접근한 파일과 폴더의 정보를 포함하고 있어 자료 유출 분석 및 사용자 활동 추적에 유용하다. 또한, 원본 파일이 로컬에서 삭제되었더라도 해당 파일과 관련된 LNK 파일이 남아 있는 경우가 많아, 삭제된 파일의 존재 여부를 확인하는 데 도움을 줄 수 있다.

 

LNK 파일은 아래와 같은 폴더에 저장된다.

  • 바탕화면(Desktop) 폴더
    • C:\Users\<user name>\Desktop
  • 최근 문서(Recent) 폴더
    • C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\Recent
  • 빠른 실행(QuickLaunch) 폴더
    • C:\Users\<user name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

 

링크 파일 분석으로 알 수 있는 정보는 아래와 같다.

  • 원본 파일 시스템 경로
  • 원본 파일과 LNK 파일 타임스탬프
  • 원본 파일의 크기
  • 원본 파일 속성(예: 읽기 전용, 숨김, 아카이브 등)
  • 시스템 이름, 볼륨 이름, 볼륨 일련번호
  • 로컬 또는 MAC 주소 대상이 저장된 원격 시스템에 저장 여부

 

LinkParser를 사용하면 GUI 형태로 링크 파일을 분석할 수 있다.

 

1. LNK File Structure

기본적으로 5개의 구조체로 이루어져 있는데, 각각의 Link File마다 다 다르게 존재한다.

  • ShellLinkHeader(default): 기본적인 헤더로 식별정보, 시간 정보, 대상 파일 크기, 대상 파일 특성 등의 정보가 저장
  • LinkTargetIDList(optional): ShellLinkHeader의 HasLinkTargetIDList 플래그가 설정되어 있을 때만 존재하는 구조로, 링크된 대상의 다양한 정보를 리스트 형태로 구성해 놓은 구조
  • LinkInfo(optional): ShellLinkHeadr의 HasLinkInfo 플래그가 설정되어 있을 때만 존재하는 구조로, 링크 대상을 참조하기 위한 정보를 가진 구조
  • StringData(optional): ShellLinkHeader에 관련된 플래그가 설정되어 있을 때만 존재하는 구조로, 링크 대상의 문자열 정보(이름, 상대 경로, 작업 디렉터리 등)를 저장하는 구조
  • ExtraData(optional): 링크 대상의 화면 표시 정보, 문자열 코드 페이지, 환경 변수와 같은 추가적인 정보 저장을 위한 구조

 

2. ShellLinkHeader 구조

범위(Hex) 크기(Byte) 이름 설명
0x00 - 0x03 4 HeaderSize 헤더의 크기, 향상 0x4C(76) 값
0x04 - 0x13 16 LinkCLSID 클래스 식별자, 항상 0x4600000000000C0000000000021401 값
0x14 - 0x17 4 LinkFlags 링크 대상의 다양한 정보에 대한 플래그
0x18 - 0x1B 4 FileAttributes 링크 대상의 파일 특성 정보
0x1C - 0x23 8 CreationTime 링크 대상의 생성 시각
0x24 - 0x2B 8 AccessTime 링크 대상의 접근 시각
0x2C - 0x33 8 WriteTime 링크 대상의 쓰기 시각
0x34 - 0x37 4 FileSize 링크 대상의 크기
0x38 - 0x3B 4 IconIndex 아이콘 인덱스
0x3C - 0x3F 4 Show Command 링크가 실행될 때 응용프로그램의 동작 모드
0x40 - 0x41 2 HotKey 핫키 정보(응용 프로그램을 바로 실행하기 위한 키보드 조합)
0x42 - 0x43 2 Reserved 1 예약된 필드 (항상 0)
0x44 - 0x47 4 Reserved 2 예약된 필드 (항상 0)
0x48 - 0x4B 4 Reserved 3 예약된 필드 (항상 0)

 

3. LinkTargetIDList 구조

범위(Hex) 크기(Byte) 이름 설명
0x4C - 0x4D 2 IDListSize ID List 크기
0x4E - 0xCD 128 IDListData ID List 데이터 저장

4. LinkInfo 구조

 

범위(Hex) 크기(Byte) 이름 설명
0x00 - 0x03 4 LnkInfoSize LinkInfo 구조체 크기
0x04 - 0x07 4 LnkInfoHeaderSize LinkInfo Header Section 크기, 일반적으로 0x0000001C
0x08 - 0x0B 4 LnkInfoFlags LnkInfo 플래그
0x0C - 0x0F 4 VolumeIDOffset Volume ID 위치
0x10 - 0x13 4 LocalBasePathOffset Local 경로 위치
0x14 - 0x17 4 CommonNetworkRelativeLnkOffset Network Volume Info 위치
0x18 - 0x1B 4 CommonPathSuffixOffset CommonPathSuffix 위치
0x1C - 0x26 11 Volume ID Volume ID
 0x27 - 0x30 10 LocalBasePath Local 경로
0x31 - 0x31 1 CommonPathSuffix 링크 대상의 전체 경로를 구성하는 데 사용되는 페이지
0x32 - 0x35 4 CommonNetworkRelativeLnkSize Network Volume 크기
0x36 - 0x39 4 CommonNetworkRelativeLnkFlags Network Volume 플래그
0x3A - 0x3D 4 NewNameOffset 유저 정보 위치
0x3E - 0x41 4 DeviceNameOffset 실제 파일 위치
0x42 - 0x45 4 NetworkProviderType 타입
0x46 - 0x55 16 NetName 유저 정보(가변적)
0x56 - 0x81 44 DeviceName 실제 파일의 위치 경로(가변적)

 

'Forensics > Windows Forensics' 카테고리의 다른 글

Thumbnail  (0) 2025.02.27
점프 리스트  (0) 2025.02.25
슈퍼패치  (0) 2025.02.23
프리패치(Prefetch)  (0) 2025.02.23
Volume Shadow Copy  (0) 2025.02.23