lnk-file

윈도우 LNK(Shell Link) 바로가기 파일을 파싱하여 바로가기 대상 파일 정보, 경로, 타임스탬프 등의 메타데이터를 조회합니다. 사용자 활동 분석 및 악성코드 실행 흔적 추적에 활용됩니다.

명령어 속성

항목설명
명령어 유형드라이버 쿼리
필요 권한클러스터 관리자
라이선스 사용량집계함
병렬 실행미지원
분산 실행수집 노드에서 실행 (mapper)

문법

lnk-file [zippath=STR] [zipcharset=STR] [codepage=STR] FILE_PATH

옵션

zippath=STR
LNK 파일이 포함된 ZIP 파일의 경로. ZIP 파일 내부의 LNK 파일을 직접 조회할 때 사용합니다.
zipcharset=STR
ZIP 파일 엔트리의 문자 집합 (기본값: utf-8)
codepage=STR
LNK 파일 내부의 ANSI 문자열을 디코딩할 때 사용하는 윈도우 기본 코드페이지 (기본값: euc-kr)

대상

FILE_PATH
조회할 LNK 파일의 경로. 와일드카드(*)를 사용하여 여러 파일을 지정할 수 있습니다.

출력 필드

필드타입설명
_file문자열LNK 파일 이름
file_ctime날짜LNK 파일 자체의 생성 시각
file_mtime날짜LNK 파일 자체의 수정 시각
file_atime날짜LNK 파일 자체의 접근 시각
target_file_size64비트 정수바로가기 대상 파일의 크기 (바이트)
target_file_attrs배열바로가기 대상 파일의 속성 플래그 목록. READONLY, HIDDEN, SYSTEM, DIRECTORY, ARCHIVE, DEVICE, NORMAL, TEMPORARY, SPARSE_FILE, REPARSE_POINT, COMPRESSED, OFFLINE, NOT_CONTENT_INDEXED, ENCRYPTED, VIRTUAL 중 해당 값
target_file_ctime날짜바로가기 대상 파일의 생성 시각
target_file_mtime날짜바로가기 대상 파일의 수정 시각
target_file_atime날짜바로가기 대상 파일의 접근 시각
drive_serial64비트 정수대상 파일이 위치한 볼륨의 드라이브 시리얼 번호
drive_type문자열대상 파일이 위치한 볼륨의 드라이브 유형. DRIVE_UNKNOWN, DRIVE_NO_ROOT_DIR, DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM, DRIVE_RAMDISK 중 하나
volume_label문자열대상 파일이 위치한 볼륨의 레이블
local_path문자열대상 파일의 로컬 기본 경로 (ANSI)
local_path_unicode문자열대상 파일의 로컬 기본 경로 (유니코드)
net_name문자열대상 파일의 네트워크 공유 이름
common_path_suffix문자열공통 경로 접미사
show_window문자열바로가기 실행 시 윈도우 표시 방식. SHOW_NORMAL, SHOW_MAXIMIZED, SHOW_MIN_NO_ACTIVE
shortcut_name문자열바로가기 이름
working_dir문자열바로가기 실행 시 작업 디렉터리
relative_path문자열바로가기 대상 파일의 상대 경로
cmd_args문자열바로가기 실행 시 전달되는 명령줄 인자
icon_location문자열바로가기 아이콘 파일 경로
hot_key문자열바로가기 단축키 (예: CTRL + ALT + A)

오류 코드

파싱 오류

해당 사항 없음

런타임 오류
오류 코드메시지설명후처리 동작
-cannot read lnk file {파일 경로}LNK 파일을 읽을 수 없는 경우쿼리 실행을 중단함

설명

lnk-file 명령어는 윈도우 Shell Link (.lnk) 바이너리 형식을 파싱하여 바로가기 파일에 포함된 메타데이터를 조회합니다. LNK 파일에는 바로가기 대상 파일의 경로, 타임스탬프, 크기, 속성뿐만 아니라 실행 시 윈도우 표시 방식, 명령줄 인자, 작업 디렉터리 등의 정보가 포함되어 있습니다.

LNK 파일 자체의 파일 시스템 타임스탬프(file_ctime, file_mtime, file_atime)와 LNK 파일 내부에 기록된 대상 파일의 타임스탬프(target_file_ctime, target_file_mtime, target_file_atime)를 구분하여 출력합니다. LNK 파일을 ZIP 파일에서 읽는 경우 파일 시스템 타임스탬프는 ZIP 엔트리의 타임스탬프를 사용합니다.

LNK 파일 내부의 ANSI 문자열은 codepage 옵션으로 지정한 코드페이지로 디코딩합니다. 한국어 윈도우 시스템에서 생성된 LNK 파일은 기본값인 euc-kr을 사용하면 됩니다. 다른 언어 윈도우 시스템에서 생성된 LNK 파일을 분석할 때는 해당 시스템의 코드페이지를 지정해야 합니다.

LNK 파일은 파일당 하나의 레코드를 출력합니다. 링크 정보(LinkInfo)의 존재 여부에 따라 볼륨 정보와 로컬 경로 관련 필드가 포함되거나 생략될 수 있습니다.

이 명령어는 4.0.2511.0 버전부터 클러스터 관리자 권한이 필요하며, 접근 가능한 파일 경로가 제한됩니다. 자세한 내용은 파일 접근 제한을 참고하세요.

사용 예

각 사용 예의 파일 경로는 ALLOWED_FILE_SCAN_PATHS 설정에 포함되어 있다고 가정합니다.

  1. LNK 파일 조회

    lnk-file /opt/logpresso/evidence/Recent/document.lnk
    

    지정한 LNK 파일에서 바로가기 메타데이터를 조회합니다.

  2. 여러 LNK 파일 일괄 조회

    lnk-file /opt/logpresso/evidence/Recent/*.lnk
    

    지정한 디렉터리의 모든 LNK 파일에서 바로가기 메타데이터를 조회합니다.

  3. ZIP 파일 내부의 LNK 파일 조회

    lnk-file zippath=/opt/logpresso/evidence/artifacts.zip Recent/*.lnk
    

    ZIP 파일 내부의 Recent 디렉터리에 있는 모든 LNK 파일을 조회합니다.

  4. 코드페이지를 지정하여 일본어 윈도우 LNK 파일 조회

    lnk-file codepage=shift_jis /opt/logpresso/evidence/Recent/*.lnk
    

    일본어 윈도우 시스템에서 생성된 LNK 파일을 Shift_JIS 코드페이지로 디코딩하여 조회합니다.

  5. 실행 명령줄 인자가 포함된 LNK 파일 필터링

    lnk-file /opt/logpresso/evidence/Recent/*.lnk
    | search isnotnull(cmd_args)
    

    명령줄 인자가 포함된 LNK 파일만 필터링합니다. 악성코드가 명령줄 인자를 통해 실행되는 경우를 식별할 수 있습니다.

호환성

lnk-file 명령어는 소나 4.0 이전 버전부터 제공되었습니다. 4.0.2511.0 버전부터 클러스터 관리자 권한이 필요합니다.