LNK File 이란?

LNK 파일은 흔히 링크파일이라고 이야기를 하는데, Windows 운영체제에서 바로가기 기능을 통해서 LNK 파일을 손쉽게 *.lnk 파일을 만들 수 있다. 바로가기는 사용자가 운영체제에 설치 또는 존재하는 응용프로그램, 디렉터리, 파일, 문서 등등 여러 데이터에 손쉽게 접근할 수 있도록 특정 데이터 객체를 참조하는 파일이다.

쉽게 이야기 하면 lnk 파일을 사용자가 실행 했을때 lnk 파일 내부에 기록된 Path 정보에 존재하는 프로그램을 참조해서 해당 프로그램을 실행해 준다.

Windows 운영체제에서는 lnk 라고 하는 바로가기 기능이 있다면, 다른 OS에는 똑같지는 않아도 비슷한 기능으로 심볼릭 링크가 존재한다.

대부분의 사람들은 두개의 기능(LNK 와 심볼릭링크)을 같은 기능이라고 보고 있지만, LNK 파일은 OS 차원에서 사용하는 기능이고, 심볼릭 링크 파일은 FS(File System) 차원의 기능이기 때문에 동작 방식 부터 다르다.

바로가기 생성은 Windows 운영체제를 사용하다보면 자연스럽게 사용하고 있었다.

  1. 운영체제 설치시에 생성되는 기본 프로그램들은 전부 바로가기 파일이다.
  2. 운영체제 설치 후에 운영체제를 사용하다보면 "Recent" 폴더(내 최근 문서)에 바로가기 파일이 존재한다.
  3. 응용프로그램 설치시 "바탕화면에 바로가기 파일을 설치 하시겠습니까?" 라는 문구를 통해 바탕화면에 바로가기 파일을 생성한다.
  4. 사용자가 응용프로그램을 복사 붙여넣기를 했거나, 파일 우클릭 후 바로가기 생성기능을 사용하는 경우

LNK 파일은 Shell Link Binary File Format 이라고도 하는데, Shell Link는 보통 응용프로그램을 실행하거나 OLE 같은 파일 Linking을 제공하기 위해서 사용하는 것 뿐만 아니라 파일에 대해 참조를 저장하는 기능을 필요로 하는 애플리케이션에 사용할 수도 있다.

포렌식 관점에서의 아티팩트

바로가기 파일을 일반적인 사용자가 봤을때에는 그냥 파일 정도로만 보일 것이다. 또한 바로가기 속성 정보를 확인해 보면 중요해 보이는 파일은 알 수 있지만, 아주 극히 일부분이다.

LNK 파일이라고 하면 대부분 바탕화면에 자동으로 생성되거나, 사용자 편의상 사용하는 바로가기 파일 생성 정도만을 떠올리기 일쑤 이지만, 바탕화면 폴더 뿐만 아니라 앞에서 잠깐 언급한 최근 문서 폴더(Recent)이나 시작 프로그램(Start)과 같은 폴더에서도 자동으로 사용자의 행위에 따라서 저장되기 때문에 이러한 파일을 통해서 사용자의 행위를 추적하고 분석을 할 수 있다.

사용자가 악성 문서를 열람 했거나, 최근에 사용한 문서를 확인해 볼때 사용자가 의도하지 않게 생성된 LNK 파일을 최근 문서(Recent)폴더가 저장 하고 있다. 이러한 경우에 사용자 행위 규명에 도움을 줄 수 있는 파일이 된다.

또한 파일 정보, 시간 정보, 파일 크기, 드라이브 형식, 드라이브 시리얼 번호, 링크 대상 경로와 같은 다양한 필수 분석 데이터가 하나의 파일 안에 들어 있기 때문에 더 많은 정보를 얻을 수 있다.

LNK 파일 저장 경로

LNK 파일은 사용자가 임의적으로 사용자의 편의를 위해서 생성하는 경우가 대다수 이기 때문에 이부분은 특정한 경로에 매번 생성하는 것이 아니기 때문에 해당 내용을 작성 할 수 없다.

하지만 사용자가 직접 생성하는 경우가 아닌 의도하지 않게 생성된 LNK 파일들이 존재 한다. 이러한 경로를 한번 운영체제 별로 알아 보면 아래와 같다.