SWUFORCE/인프런 강의

section3 ~ 바로가기(.LNK) 개념 및 실습 & 바로가기 파일 포렌식(LNK Forensics)

amy06s 2026. 5. 16. 16:06

인프런

$MFT 개념 및 실습

MFT(Master File Table)

  • NTFS 파일 시스템에서 파일, 디렉터리를 관리하기 위한 구조
  • 하나의 파일당 하나의 MFT 엔트리를 가짐
  • $MFT란 MFT 엔트리들의 집합

MFT 엔트리

  • 파일의 이름/생성/수정/변경시간/크기/속성 등을 가지고 있음
  • 파일의 디스크 내부 위치, 파일 시스템 경로르 알 수 있음

실습

FTK Imager 이용

[root]\$MFT 추출

MFTExplorer 다운로드 (Get-ZimmermanTools에 포함되어 있음) 후 추출한 $MFT 불러오기

  • C드라이브 구조와 동일
  • ADS, Hex 등의 기능 지원
  • MFT에서 얻을 수 있는 정보를 따로 뽑아줌

$LogFile, $UsnJrnl 개념 및 실습

저널링(Jounaling)

  • 데이터 변경을 디스크에 반영하기 전에 행위를 기록하여 추후 오류 복구에 활용
  • 데이터 기록하는 동안 시스템에 문제가 생기면 데이터가 손실됨
  • 문제가 발생하기 전에 '어떤 데이터를, 언제, 어디에 쓰는지' 기록
  • 문제가 발생하면 기록을 토대로 작업이 이루어지기 전 상태로 시스템 복원

트랜잭션(Transaction)

  • 쪼갤 수 없는 업무 처리의 최소 단위
  • 파일이나 디렉토리 생성/수정/삭제/MFT 레코드 변경 등
  • $LogFile: 메타데이터의 트랜잭션 저널 정보

$UsnJrnl

  • 파일이나 디렉토리에 변경 사항이 생길 때 이를 기록하는 로그 파일
  • 파일 복원 목적이 아니라, 단순 파일 작업이 있었다는 사실을 확인하기 위함
  • 시간 순서대로 엔트리를 저장하고, 기본 크기는 32MB(하루 8시간 사용 시 4-5일 정도 데이터 저장하고 있음)

 

실습

FTK Imager에서 [root]/$LogFile과 [root]/Extend/$UsnJrnl/$J 추출

이때 파일탐색기에서 안보이면 ...-옵션-보기-보호된 운영체제 파일 숨기기 해제

시스템 파일이라 기본적으로 안보이게 설정되어 있음

+숨김 파일 표시, 알려진 파일 형식의 파일 확장명 숨기기 해제(권장)

 

NTFS Log Tracker에서 Target Path에 $LogFile, UsnJrnl Path에 $J 넣고

NFTS File Path에 NFT 파일 넣고 Path 클릭

Parse Setting이 뜨는데 

DB File 이름, 경로를 설정

Timezone Information: 어떤 시간에 맞춰 생성할 것이냐

Start 누르면 DB가 생성됨

생성한 DB를 DB Browse for SQLite로 열고 분석 가능

 

바로가기(.LNK) 개념 및 실습

바로가기(LNK)

  • Windows Shortcut
  • .lnk 확장자

생성 방법

  • 사용자가 직접 생성
  • 프로그램 설치 시 생성
  • 운영체제가 자동으로 생성

바탕화면

  • %UserProfile%\Desktop

시작메뉴

  • %ProgramData%\Microsoft\Windows\Start Menu
  • %UserProfile%\Appdata\Roaming\Microsoft\Windows\Start Menu

최근 실행

  • %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent

빠른 실행

  • %ProgramData%\Microsoft\Internet Explorer\Quick Launch
  • %UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
  • %UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

실습

FTK Imager로 lnk 파일 추출

  • %UserProfile%\Desktop
  • %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent

LECmd로 분석

  • 추출한 파일을 LECmd 실행 프로그램과 같은 폴더에 넣고 Windows Shell에서 폴더로 이동 후 실행
  • Example 참고해서 분석
  • -f <>: 처리할 파일, d옵션 필요(파일)
  • -d <>:폴더 안의 모든 폴더를 뒤져 탐색(디렉토리)

.\LECmd.exe -f '.\R 4.5.3.lnk': 정상적으로 실행됨

소스파일: 입력한 바로가기 파일 그 자체

타겟: 원본 파일에 대한 생성/수정/접근 시간

 

.\LECmd.exe -d .\Recent\:정상적으로 실행됨

너무 많이 나오니까 -h 치면 다양한 저장 포맷 알려줌

.\LECmd.exe -d .\Recent\ --html "C:\Users\Desktop\lnk_jumplist\save": 지정한 폴더에 저장됨

xhmtl 열면 봤던 lnk 분석 가능

바로가기 파일 포렌식

바로가기 파일 소개

바로가기 파일(링크파일)

  • 윈도우에만 존재하는 기능
  • 응용 프로그램, 디렉터리, 파일 등의 객체를 참조하는 파일
  • 명령줄이 아닌 GUI에서만 동작
  • .lnk 확장자 가짐

 

바로가기 생성

시작 메뉴

  • XP: C:\Documents and Settings\<username>\Start Menu
  • VIsta/7: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu

 

사용자의 내 음악(My Music), 내 그림(My Pictures), 내 비디오(My Videos) 폴더

  • XP: C:\Documents and Settings\<username>\Documents => "All Users" 폴더를 링크
  • Vista/7: C:\Users\<username> => "Public" 폴더를 링크

 

최근 문서

  • XP: C:\Documents and Settings\<username>\Recent
  • Vista/7: C:\Users\<username>\AppData\Roaming\Microsoft\Windows/Recent

 

사용자별 바탕화면

  • XP: C:\Documents and Settings\<username>\Desktop
  • Vista/7: C:\Users\<username>\Desktop

 

Send to 폴더

  • Vista/7: C:\Users\<username>\AppData\Roaming\Microsoft\Windows/SendTo

 

빠른 실행(Quick Launch) 폴더

  • XP: C:\Documents and Settings\<username>\Application Data\Microsoft\Internet Explorer\Quick Launch
  • Vista/7: C:\Users\<username>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

 

응용프로그램 설치 시

  • 바탕화면, 시작 메뉴, 빠른 실행 폴더, 설치 폴더에 바로가기 생성

 

사용자 직접 생성

  • 사용자들도 필요에 따라 바로가기 생성

바로가기 파일 구조

구조 이름 설명
SHELL_LINK_HEADER(default) 식별 정보, 타임스탬프, 선택적인 구조의 존재 유무 플래그
LINKTARGET_IDLIST(optional) ShellLinkHeader의 HasLinkTargetIDList 플래그가 설정되어 있을때만 존재하는 구조로, 링크 대상의 다양한 정보를 리스트 형태로 구성해놓은 구조
LINKFO(optional) ShellLinkHeader의 HasLinkInfo 플래그가 설정되어 있을때만 존재하는 구조로 링크 대상을 참조하기 위한 정보를 가진 구조
STRING_DATA(optional) 링크 대상의 문자열 정보(이름, 상대경로, 작업디렉터리 등)를 저장하는 구조로 ShellLinkHeader에 관련된 플래그가 설정되어 있을때만 존재
EXTRA_DATA(optional) 링크 대상의 화면 표시 정보, 문자열코드페이지, 환경 변수와 같은 추가적인 정보 저장을 위한 구조

 

SHELL_LINK_HEADER

LINKTARGET_IDLIST

  • 링크 대상의 정보를 리스트 형태로 구성해놓은 구조

IDList

  • ItemIDSize
  • Data

LINKINFO

  • Volume ID

STRING_DATA

  • 바로가기 설명, 링크 대상까지의 상대 경로, 바로가기 활성화 시 작업 디렉터리 위치 저장

EXTRA_DATA

  • 링크 대상에 대한 추가 정보
  • 콘솔에서 실행될 경우 디스플레이 설정 값
  • 코드 페이지 정보/환경변수 정보/아이콘 위치 주소
  • NetBIOS 이름/MAC 주소/...

바로가기 파일의 디지털 포렌식적 의미

SHELL_LINK_HEADER

  • 링크 대상 파일의 속성(읽기 전용, 숨긴 파일, 시스템, 볼륨 레이블, 암호화, 압축 등)
  • 링크 대상 파일의 생성, 수정, 접근 시간

LINKINFO

  • 링크 대상 파일의 크기
  • 링크 대상 파일이 위치한 드라이브 형식
  • 링크 대상 파일이 위치한 드라이브 시리얼 번호
  • 링크 대상 파일의 경로

EXTRA_DATA

  • NetBIOS 이름/MAC 주소

바로가기 파일 카빙

시그니처 카빙

카빙의 필요성

  • 사용자의 필요에 의해 삭제 가능성
  • 최근 문서의 경우 바로가기 파일 수 제한(XP: ??, Vista/7: 150개)
  • 비할당 영역에 존재할 가능성이 많음

 

SHELL_LINK_HEADER

  • HeaderSize: 항상 0x0000004c
  • LinkCLSID: 바로가기 파일의 고정된 식별자로 값 동일
  • 00021401-0000-0000-C000-000000000046

바로가기 파일 분석

바로가기 분석 도구