lnk-file
윈도우 LNK(Shell Link) 바로가기 파일을 파싱하여 바로가기 대상 파일 정보, 경로, 타임스탬프 등의 메타데이터를 조회합니다. 사용자 활동 분석 및 악성코드 실행 흔적 추적에 활용됩니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 |
| 필요 권한 | 클러스터 관리자 |
| 라이선스 사용량 | 집계함 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
옵션
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_size | 64비트 정수 | 바로가기 대상 파일의 크기 (바이트) |
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_serial | 64비트 정수 | 대상 파일이 위치한 볼륨의 드라이브 시리얼 번호 |
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 설정에 포함되어 있다고 가정합니다.
-
LNK 파일 조회
lnk-file /opt/logpresso/evidence/Recent/document.lnk지정한 LNK 파일에서 바로가기 메타데이터를 조회합니다.
-
여러 LNK 파일 일괄 조회
lnk-file /opt/logpresso/evidence/Recent/*.lnk지정한 디렉터리의 모든 LNK 파일에서 바로가기 메타데이터를 조회합니다.
-
ZIP 파일 내부의 LNK 파일 조회
lnk-file zippath=/opt/logpresso/evidence/artifacts.zip Recent/*.lnkZIP 파일 내부의
Recent디렉터리에 있는 모든 LNK 파일을 조회합니다. -
코드페이지를 지정하여 일본어 윈도우 LNK 파일 조회
lnk-file codepage=shift_jis /opt/logpresso/evidence/Recent/*.lnk일본어 윈도우 시스템에서 생성된 LNK 파일을 Shift_JIS 코드페이지로 디코딩하여 조회합니다.
-
실행 명령줄 인자가 포함된 LNK 파일 필터링
lnk-file /opt/logpresso/evidence/Recent/*.lnk | search isnotnull(cmd_args)명령줄 인자가 포함된 LNK 파일만 필터링합니다. 악성코드가 명령줄 인자를 통해 실행되는 경우를 식별할 수 있습니다.
호환성
lnk-file 명령어는 소나 4.0 이전 버전부터 제공되었습니다. 4.0.2511.0 버전부터 클러스터 관리자 권한이 필요합니다.