PLAINBIT
HOME
  • πŸ˜„Welcome
    • Artifacts
  • πŸͺŸWindows
    • $Recycle.bin
    • EventLog
      • 원격 μœ μž…
      • μ‘μš©ν”„λ‘œκ·Έλž¨ μ‹€ν–‰
    • LNK
    • PowerShell
      • PowerShell Version and Logging
      • PagePowerShell Script Block Logging
    • Prefetch
    • Registry
    • WebBrowser (Chrome)
    • WER
Powered by GitBook
On this page
  • 1. κ°œμš”
  • LNK 파일 μœ„μΉ˜
  • 2. 데이터 ꡬ쑰
  • ShellLinkHeader
  • LinkTargetIDList
  • LinkInfo
  • StringData
  • ExtraData
  • 3. 뢄석 λ°©μ•ˆ/ν™œμš©
  • LNK 파일 뢄석 단계
  • LNK 파일 ν™œμš© λ°©μ•ˆ
  • 4. 뢄석 도ꡬ
  • 5. μ°Έμ‘°

Was this helpful?

  1. Windows

LNK

Previousμ‘μš©ν”„λ‘œκ·Έλž¨ μ‹€ν–‰NextPowerShell

Last updated 11 months ago

Was this helpful?

1. κ°œμš”

LNK νŒŒμΌμ€ Windows 95λΆ€ν„° λ„μž…λœ Windowsμ—μ„œ 파일, 폴더, μ‘μš© ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ β€˜λ°”λ‘œκ°€κΈ°β€™ λ˜λŠ” β€˜λ§ν¬β€™λ₯Ό λ§ν•˜λ©°, ν™•μž₯μžλŠ” .LNK이닀. 곡식 λͺ…칭은 Shell Link둜, Shell Link Binary File Format κ·œκ²©μ„ λ”°λ₯΄λ©°, λ‹€λ₯Έ 데이터 κ°œμ²΄μ— μ•‘μ„ΈμŠ€ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” 정보가 ν¬ν•¨λœ 데이터 κ°œμ²΄μ΄λ‹€. 이 νŒŒμΌμ€ μ‘μš© ν”„λ‘œκ·Έλž¨ μ‹œμž‘, OLE(개체 μ—°κ²° 및 포함) μ‹œλ‚˜λ¦¬μ˜€ 지원, λŒ€μƒ 파일 μ°Έμ‘° μ €μž₯ 등에 μ‚¬μš©λ˜λ©°, ν‚€λ³΄λ“œ 단좕킀, μ„€λͺ… μ½”λ©˜νŠΈ, μ‘μš© ν”„λ‘œκ·Έλž¨ λ™μž‘ μ œμ–΄ μ„€μ • λ“± λ‹€μ–‘ν•œ 정보λ₯Ό 포함할 수 μžˆλ‹€.

원본 파일과 λ™μΌν•œ μ•„μ΄μ½˜μ— 쒌츑 ν•˜λ‹¨μ— ν™”μ‚΄ν‘œ ν‘œμ‹œκ°€ μžˆμ–΄ 링크 νŒŒμΌμž„μ„ λ‚˜νƒ€λ‚Έλ‹€. LNK 파일의 속성을 μ‚΄νŽ΄λ³΄λ©΄ μ•„λž˜ 그림처럼 β€˜λ°”λ‘œ 가기’ νƒ­μ˜ λŒ€μƒμ— 원본 파일의 이름과 경둜λ₯Ό μ €μž₯ν•˜κ³  있고, κ·Έ μœ„μΉ˜μ— 파일이 μ‘΄μž¬ν•  경우, β€˜μΌλ°˜β€™ νƒ­μ—μ„œ μ‹œκ°„ λ‚ μ§œλ₯Ό 확인할 수 μžˆλ‹€.

LNK 파일의 ν¬λ Œμ‹ 관점

파일의 MAC Time, λ³Όλ₯¨ 정보, λ„€νŠΈμ›Œν¬ 곡유 정보, 원본 μœ„μΉ˜, μ‹œμŠ€ν…œ 이름, 원본 파일 좔적 κ°€λŠ₯

LNK 파일 μœ„μΉ˜

LNK νŒŒμΌμ€ μ‚¬μš©μž ν•„μš”μ— 따라 β€˜λ°”λ‘œ κ°€κΈ° λ§Œλ“€κΈ°β€™λ₯Ό 톡해 생성할 수 있고, μ‚¬μš©μžκ°€ 파일, 폴더, ν”„λ‘œκ·Έλž¨μ— μ ‘κ·Όν•  λ•Œ μžλ™μœΌλ‘œ μƒμ„±λœλ‹€. μœˆλ„μš° 10 κΈ°μ€€ LNK 파일이 μžλ™ μƒμ„±λ˜λŠ” κ²½λ‘œλŠ” μ•„λž˜μ™€ κ°™λ‹€. 특히 Recent κ²½λ‘œμ—λŠ” 파일, 폴더, ν”„λ‘œκ·Έλž¨μ΄ 싀행될 λ•Œ μžλ™μœΌλ‘œ lnk 파일이 μƒμ„±λ˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžμ˜ 졜근 μ‹€ν–‰ λͺ©λ‘κ³Ό κ·Έ 정보λ₯Ό μ•Œ 수 μžˆλ‹€.

λͺ…μΉ­
경둜

μ‹œμž‘ 메뉴

  • \ProgramData\Microsoft\Windows\Start Menu\Programs*.lnk

  • \User<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs**.ln

WinX Group

  • Users<user name>\AppData\Local\Microsoft\Windows\WinX\Group#*.lnk

λΉ λ₯Έ μ‹€ν–‰

  • \Users<user name>\AppData\Local\Microsoft\Internet Explorer\Quick Launch.lnk

Send To

  • \Users<user name>\AppData\Roaming\Microsoft\Windows\SendTo.lnk

μ‘μš© ν”„λ‘œκ·Έλž¨ λ°”λ‘œ κ°€κΈ°

  • \Users<user name>\AppData\Local\Microsoft\Windows\Application Shortcuts*.lnk

졜근 λ¬Έμ„œ

  • \Users<user name>\AppData\Roaming\Microsoft\Windows\Recent*.lnk


2. 데이터 ꡬ쑰

LNK νŒŒμΌμ€ 크게 ShellLinkHeader(default), LinkTargetIDList, LinkInfo, StringData, ExtraData둜 κ΅¬μ„±λ˜μ–΄ 있고, ABNF μ€€μˆ˜ν•˜λŠ” 일련의 ꡬ쑰둜 이루어져 μžˆλ‹€. 각 ꡬ쑰에 λŒ€ν•œ μ„€λͺ…은 μ•„λž˜ ν‘œμ™€ κ°™κ³ , ν¬λ Œμ‹μ μœΌλ‘œ μœ μ˜λ―Έν•œ 정보λ₯Ό λ‹΄κ³  μžˆλŠ” κ΅¬μ‘°λŠ” ShellLinkHeader와 LinkInfo이닀.

λͺ…μΉ­
μ„€λͺ…

SHELL_LINK_HEADER

76 λ°”μ΄νŠΈμ˜ κΈ°λ³Έ 헀더 ꡬ쑰둜 식별정보, νƒ€μž„μŠ€νƒ¬ν”„, λŒ€μƒ 파일 크기, ν”Œλž˜κ·Έ 등이 ν¬ν•¨λœλ‹€.

LINKTARGET_IDLIST

링크 λŒ€μƒμ„ μ§€μ •ν•˜λŠ” ꡬ쑰이닀. SHELL_LINK_HEADER의 HasLinkTargerID λΉ„νŠΈκ°€ μ„€μ •λ˜μ–΄ μžˆμ„ λ•Œλ§Œ μ‘΄μž¬ν•˜λ©°, λ°”λ‘œκ°€κΈ°μ—μ„œ ν•„μˆ˜μ μΈ ν•­λͺ©μœΌλ‘œ 원본에 λŒ€ν•œ 정보λ₯Ό λ‹΄κ³  μžˆλ‹€.

LINKINFO

링크 λŒ€μƒμ„ ν•΄κ²°ν•˜λŠ” 데 ν•„μš”ν•œ 정보λ₯Ό μ§€μ •ν•˜λŠ” ꡬ쑰이닀. SHELL_LINK_HEADER의 HasLinkInfo λΉ„νŠΈκ°€ μ„€μ •λ˜μ–΄ μžˆμ„ λ•Œλ§Œ μ‘΄μž¬ν•˜λ©°, 원본 μœ„μΉ˜λ₯Ό 찾을 λ•Œ ν•„μš”ν•œ 정보λ₯Ό λ‹΄κ³  μžˆλ‹€.

STRING_DATA

μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ 및 경둜 식별 정보λ₯Ό μ „λ‹¬ν•˜λŠ”λ° μ‚¬μš©ν•˜λŠ” ꡬ쑰이닀. ShellLinkHeader의 λΉ„νŠΈκ°€ μ„€μ •λ˜μ–΄ μžˆμ„ λ•Œ μ‘΄μž¬ν•˜λ©°, 링크 λŒ€μƒμ˜ λ¬Έμžμ—΄ 정보(이름, μƒλŒ€κ²½λ‘œ, μž‘μ—… 디렉터리 λ“±)을 μ €μž₯ν•˜κ³  μžˆλ‹€.

EXTRA_DATA

링크 λŒ€μƒμ˜ ν™”λ©΄ ν‘œμ‹œ 정보, λ¬Έμžμ—΄ μ½”λ“œ νŽ˜μ΄μ§€, ν™˜κ²½ λ³€μˆ˜μ™€ 같은 좔가적인 정보 μ €μž₯ν•˜κ³  μžˆλ‹€.

ShellLinkHeader

ShellLinkHeaderλŠ” 76 λ°”μ΄νŠΈμ˜ κΈ°λ³Έ 헀더 ꡬ쑰이며, ν•΄λ‹Ή κ΅¬μ‘°μ—λŠ” LinkTargerIDList, LinkInfo, StringData λ“± ꡬ쑰의 쑴재λ₯Ό μ§€μ •ν•˜λŠ” 식별정보, νƒ€μž„μŠ€νƒ¬ν”„ 및 ν”Œλž˜κ·Έκ°€ ν¬ν•¨λ˜μ–΄ μžˆλŠ” ꡬ쑰이닀. ν•΄λ‹Ή κ΅¬μ‘°μ—μ„œ 원본 파일의 속성 정보와 생성, μ ‘κ·Ό μˆ˜μ • μ‹œκ°„μ„ 확인할 수 μžˆλ‹€. ShellLinkHeaderμ—μ„œ ν¬λ Œμ‹μ μœΌλ‘œ μ˜λ―ΈμžˆλŠ” 뢀뢄은 FileAttributes, CreationTime, AccessTime, WriteTime, FileSize 등이 μžˆλ‹€.

SHELL_LINK_HEADER의 ꡬ쑰 별 μ˜€ν”„μ…‹κ³Ό μ„€λͺ…은 λ‹€μŒ ν‘œμ™€ κ°™λ‹€.

μ˜€ν”„μ…‹
λͺ…μΉ­
크기
μ„€λͺ…

0~3

HeaderSize

4λ°”μ΄νŠΈ

크기λ₯Ό λ‚˜νƒ€λ‚΄λ©°, 값은 0x0000004C둜 κ³ μ •

4~13

LinkCLSID

16λ°”μ΄νŠΈ

클래슀 μ‹λ³„μž(CLSID)둜 값은 00021401-0000-0000-C000-000000000046둜 κ³ μ •

14~17

LinkFlags

4λ°”μ΄νŠΈ

링크에 λŒ€ν•œ 정보와 ꡬ쑰의 쑴재 μ—¬λΆ€λ₯Ό μ§€μ •

18~1B

FileAttributes

4λ°”μ΄νŠΈ

링크 λŒ€μƒμ— λŒ€ν•œ 정보λ₯Ό μ§€μ •

1C~23

CreationTime

8λ°”μ΄νŠΈ

링크 λŒ€μƒμ˜ 생성 μ‹œκ°„μ„ UTC둜 μ§€μ • (0이면 링크 λŒ€μƒμ— μ‹œκ°„ μ—†μŒ)

24~2B

AccessTime

8λ°”μ΄νŠΈ

링크 λŒ€μƒμ˜ μ•‘μ„ΈμŠ€ μ‹œκ°„μ„ UTC둜 μ§€μ • (0이면 링크 λŒ€μƒμ— μ‹œκ°„ μ—†μŒ)

2C~33

WriteTime

8λ°”μ΄νŠΈ

링크 λŒ€μƒμ˜ μ“°κΈ° μ‹œκ°„μ„ UTC둜 μ§€μ • (0이면 링크 λŒ€μƒμ— μ‹œκ°„ μ—†μŒ)

34~37

FileSize

4λ°”μ΄νŠΈ

링크 λŒ€μƒμ˜ 크기λ₯Ό μ§€μ •ν•˜λŠ” λΆ€ν˜Έ μ—†λŠ” μ •μˆ˜ (링크 λŒ€μƒ 파일이 0xFFFFFFFF보닀 큰 경우 이 값은 링크 λŒ€μƒ 파일 크기의 μ΅œν•˜μœ„ 32λΉ„νŠΈλ₯Ό μ§€μ •)

38~3B

IconIndex

4λ°”μ΄νŠΈ

μ£Όμ–΄μ§„ μ•„μ΄μ½˜ μœ„μΉ˜ λ‚΄μ˜ μ•„μ΄μ½˜ 인덱슀λ₯Ό μ§€μ •ν•˜λŠ” λΆ€ν˜Έ μžˆλŠ” μ •μˆ˜

3C~3F

ShowCommand

4λ°”μ΄νŠΈ

링크에 μ˜ν•΄ μ‹œμž‘λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ™μž‘ λͺ¨λ“œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λΆ€ν˜Έ μ—†λŠ” μ •μˆ˜

  • SW_SHOWNORMAL(0x00000001) : μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ—΄λ € 있고 ν•΄λ‹Ή 창이 일반적인 λ°©μ‹μœΌλ‘œ μ—΄λ € 있음

  • SW_SHOWMAXIMIZED(0x00000003) : μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ—΄λ € 있고 ν‚€λ³΄λ“œ ν¬μ»€μŠ€κ°€ μ£Όμ–΄μ§€κ³  ν•΄λ‹Ή 창은 ν‘œμ‹œλ˜μ§€ μ•ŠμŒ

  • SW_SHOWMINNOACTIVE(0x00000007) : μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ—΄λ € 있고 ν‚€λ³΄λ“œ ν¬μ»€μŠ€κ°€ μ£Όμ–΄μ§€μ§€ μ•Šκ³  ν•΄λ‹Ή 창이 ν‘œμ‹œλ˜μ§€ μ•ŠμŒ

40~41

HotKey

2λ°”μ΄νŠΈ

λ°”λ‘œ κ°€κΈ° ν‚€κ°€ μ°Έμ‘°ν•˜λŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν‚€ μž…λ ₯을 μ§€μ • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹œμž‘λœ ν›„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν• λ‹Ήλ˜λ―€λ‘œ ν‚€λ₯Ό λˆ„λ₯΄λ©΄ ν•΄λ‹Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν™œμ„±ν™”

42~4B

Reserved1,2,3

10λ°”μ΄νŠΈ

μ˜ˆμ•½ μ˜μ—­μœΌλ‘œ 0으둜 κ³ μ •

β–Ά ShellLinkHeader ꡬ쑰 μ˜ˆμ‹œ

μ˜ˆμ‹œλ₯Ό 톡해 ShellLinkHeaderλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ μ•„λž˜ κ·Έλ¦Όκ³Ό κ°™λ‹€.

ShellLinkHeader의 첫 4λ°”μ΄νŠΈλŠ” 크기λ₯Ό λ‚˜νƒ€λ‚΄λ©° 0x0000004C둜 κ³ μ •λ˜μ–΄ 있고, μ‹œκ°„ 정보 및 파일 μ‚¬μ΄μ¦ˆ 등을 확인할 수 μžˆλ‹€.

LinkTargetIDList

링크 λŒ€μƒμ„ μ§€μ •ν•˜λŠ” ꡬ쑰둜 β€˜λ°”λ‘œκ°€κΈ°β€™ νŒŒμΌμ—μ„œ ν•„μˆ˜μ μΈ ν•­λͺ©μœΌλ‘œ 원본에 λŒ€ν•œ 정보λ₯Ό κ°€μ§€κ³  μžˆλŠ” ꡬ쑰이닀. LinkTargetIDListλŠ” IDListSize와 IDList둜 이루어져 있고, IDListλŠ” ItemIDList와 TerminalID둜 λ‚˜λ‰œλ‹€. TerminalIDλŠ” 맨 끝에 μ‘΄μž¬ν•˜λŠ” 2λ°”μ΄νŠΈ μ˜ˆμ•½ μ˜μ—­μ΄λ©°, μ’…λ£Œλ₯Ό λ‚˜νƒ€λ‚Έλ‹€. ItemIDλŠ” ItemIDSize와 Data둜 λ‚˜λ‰œλ‹€.

LinkTargetIDList의 ꡬ쑰 별 μ„€λͺ…은 λ‹€μŒ ν‘œμ™€ κ°™λ‹€.

λͺ…μΉ­
크기
μ„€λͺ…

IDListSize

2λ°”μ΄νŠΈ

IDList ν•„λ“œμ˜ 크기

IDList

variable

item ID 리슀트λ₯Ό μ €μž₯ν•˜λ©°, ABNF [RFC5234]λ₯Ό μ€€μˆ˜

IDListλŠ” ItemIDList와 TerminalID둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

λͺ…μΉ­
크기
μ„€λͺ…

ItemIDList

variable

ItemID ꡬ쑰 λ°°μ—΄

TerminalID

2λ°”μ΄νŠΈ

0으둜 μ±„μ›Œμ Έ 있으며, 끝을 λ‚˜νƒ€λƒ„

ItemIDλŠ” ItemIDSize와 Data둜 λ‚˜λ‰œλ‹€.

λͺ…μΉ­
크기
μ„€λͺ…

ItemIDSize

2λ°”μ΄νŠΈ

ItemID ꡬ쑰 크기 (ItemIDSize 포함)

Data

variable

shell data source에 μ •μ˜λœ 데이터

β–Ά ꡬ쑰 μ˜ˆμ‹œ

μ˜ˆμ‹œλ₯Ό 톡해 LinkTargetIDListλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

μœ„ μ‚¬μ§„μ—μ„œ 보듯 SHELL_LINK_HEADERκ°€ λλ‚œ ν›„ 2λ°”μ΄νŠΈ 0x00DA(218)κ°€ IDList ν•„λ“œμ˜ 크기λ₯Ό κ²°μ •ν•˜λŠ” IDListsize 뢀뢄이고, 0x4EλΆ€ν„° 218λ°”μ΄νŠΈ 길이의 IDList 정보가 이어진닀.

LinkInfo

μ›λž˜ μœ„μΉ˜μ—μ„œ 링크 λŒ€μƒμ„ 찾을 수 μ—†λŠ” 경우 링크 λŒ€μƒμ„ ν™•μΈν•˜λŠ”λ° ν•„μš”ν•œ 정보λ₯Ό κ°€μ§€κ³  μžˆλŠ” ꡬ쑰이닀.

ν•΄λ‹Ή κ΅¬μ‘°μ—μ„œ 원본 파일의 크기, 원본 파일이 μœ„μΉ˜ν•œ VolumeID와 Volume의 μ‹œλ¦¬μ–Ό 번호, 경둜 등을 확인할 수 μžˆλ‹€. LinkInfoμ—μ„œ ν¬λ Œμ‹μ μœΌλ‘œ μ˜λ―ΈμžˆλŠ” 뢀뢄은 VolumeID λ‚΄μ˜ DriveType, DriveSerialNumber, LocalBasePath 등이 μžˆλ‹€.

LinkInfo의 ꡬ쑰별 μ„€λͺ…은 λ‹€μŒ ν‘œμ™€ κ°™λ‹€.

λͺ…μΉ­
크기
μ„€λͺ…

LinkInfoSize

4λ°”μ΄νŠΈ

LinkInfo ꡬ쑰의 크기

LinkInfoHeaderSize

4λ°”μ΄νŠΈ

LinkInfo 헀더 크기 (LinkInfo ν—€λ”λŠ” LinkInfoSize, LinkInfoHeaderSize, LinkInfoFlags, VolumeIDOffset, LocalBasePathOffset, CommonNetworkRelativeLinkOffset, CommonPathSuffixOffset ν•„λ“œλ‘œ ꡬ성)

LinkInfoFlags

4λ°”μ΄νŠΈ

VolumeID, LocalBasePath, LocalBasePathUnicode 및 CommonNetworkRelativeLink ν•„λ“œκ°€ 이 ꡬ쑰에 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό μ§€μ •ν•˜λŠ” ν”Œλž˜κ·Έ

VolumeIDOffset

4λ°”μ΄νŠΈ

VolumeID ν•„λ“œμ˜ μœ„μΉ˜λ₯Ό μ§€μ •

LocalBasePathOffset

4λ°”μ΄νŠΈ

LocalBasePath ν•„λ“œμ˜ μœ„μΉ˜λ₯Ό μ§€μ •

CommonNetworkRelativeLinkOffset

4λ°”μ΄νŠΈ

CommonNetworkRelativeLink ν•„λ“œμ˜ μœ„μΉ˜λ₯Ό μ§€μ •

CommonPathSuffixOffset

4λ°”μ΄νŠΈ

CommonPathSuffix ν•„λ“œμ˜ μœ„μΉ˜λ₯Ό μ§€μ •

VolumeID

variable

링크가 생성될 λ•Œ 링크 λŒ€μƒμ΄ 있던 λ³Όλ₯¨μ— λŒ€ν•œ 정보λ₯Ό μ§€μ •

파일 λ³„λ‘œ 쑴재 μ—¬λΆ€κ°€ λ‹€λ₯Έ ꡬ쑰에 λŒ€ν•œ μ„€λͺ…은 μƒλž΅ν–ˆμœΌλ©°, μžμ„Έν•œ 사항에 λŒ€ν•œ μ„€λͺ…은 κ΄€λ ¨ λ¬Έμ„œμ˜ LinkInfo 뢀뢄을 ν™•μΈν•˜λŠ” 것을 μΆ”μ²œν•œλ‹€.

  • volumeID

    링크가 생성될 λ•Œ 링크 λŒ€μƒμ΄ 있던 λ³Όλ₯¨μ— λŒ€ν•œ 정보λ₯Ό μ§€μ •. 파일이 μ›λž˜ μœ„μΉ˜μ—μ„œ λ°œκ²¬λ˜μ§€ μ•Šμ€ 경우 링크λ₯Ό 확인할 수 μžˆλ‹€.

λͺ…μΉ­
크기
μ„€λͺ…

VolumeIDSize

4λ°”μ΄νŠΈ

VolumeID의 크기λ₯Ό μ§€μ •ν•˜λ©° 0x00000010보닀 컀야 함

DriveType

4λ°”μ΄νŠΈ

링크 λŒ€μƒμ΄ μ €μž₯된 λ“œλΌμ΄λΈŒ μœ ν˜•μ„ μ§€μ •

  • DRIVE_UNKNOWN (0x00000000) : λ“œλΌμ΄λΈŒ μœ ν˜• κ²°μ • λͺ» 함

  • DRIVE_NO_ROOT_DIR (0x00000001) : 루트 경둜 잘λͺ»λ¨

  • DRIVE_REMOVABLE (0x00000002) : λ“œλΌμ΄λΈŒμ— 이동식 λ―Έλ””μ–΄ 쑴재

  • DRIVE_FIXED (0x00000003) : λ“œλΌμ΄λΈŒμ— κ³ μ • λ―Έλ””μ–΄ 쑴재

  • DRIVE_REMOTE (0x00000004) : λ“œλΌμ΄λΈŒκ°€ 원격 λ“œλΌμ΄λΈŒ 일 λ•Œ

  • DRIVE_CDROM (0x00000005) : λ“œλΌμ΄λΈŒκ°€ CD-ROM 일 λ•Œ

  • DRIVE_RAMDISK (0x00000006) : λ“œλΌμ΄λΈŒκ°€ RAM λ””μŠ€ν¬

DriveSerialNumber

4λ°”μ΄νŠΈ

링크 λŒ€μƒμ΄ μ €μž₯된 λ³Όλ₯¨μ˜ λ“œλΌμ΄λΈŒ 일련 번호λ₯Ό μ§€μ •

VolumeLabelOffset

4λ°”μ΄νŠΈ

링크 λŒ€μƒμ΄ μ €μž₯된 λ“œλΌμ΄λΈŒμ˜ λ³Όλ₯¨ λ ˆμ΄λΈ”μ΄ ν¬ν•¨λœ λ¬Έμžμ—΄μ˜ μœ„μΉ˜λ₯Ό μ§€μ • (VolumeID ꡬ쑰의 μ‹œμž‘λΆ€ν„° μ‹œμŠ€ν…œ κΈ°λ³Έ μ½”λ“œ νŽ˜μ΄μ§€μ— μ˜ν•΄ μ •μ˜λœ NULL둜 λλ‚˜λŠ” λ¬Έμžμ—΄κΉŒμ§€μ˜ μ˜€ν”„μ…‹)

VolumeLabelOffsetUnicode

4λ°”μ΄νŠΈ

링크 λŒ€μƒμ΄ μ €μž₯된 λ“œλΌμ΄λΈŒμ˜ λ³Όλ₯¨ λ ˆμ΄λΈ”μ΄ ν¬ν•¨λœ λ¬Έμžμ—΄μ˜ μœ„μΉ˜λ₯Ό μ§€μ • (VolumeID ꡬ쑰의 μ‹œμž‘λΆ€ν„° NULL둜 λλ‚˜λŠ” μœ λ‹ˆμ½”λ“œ 문자 λ¬Έμžμ—΄κΉŒμ§€μ˜ μ˜€ν”„μ…‹)

Data

variable

이전 ν•„λ“œμ— μ§€μ •λœ λŒ€λ‘œ μ‹œμŠ€ν…œ κΈ°λ³Έ μ½”λ“œ νŽ˜μ΄μ§€ λ˜λŠ” μœ λ‹ˆμ½”λ“œ 문자둜 μ •μ˜λœ λ¬Έμžμ—΄λ‘œ λ“œλΌμ΄λΈŒμ˜ λ³Όλ₯¨ λ ˆμ΄λΈ”μ„ ν¬ν•¨ν•˜λŠ” 데이터 버퍼

β–Ά ꡬ쑰 μ˜ˆμ‹œ

μ˜ˆμ‹œλ₯Ό 톡해 LinkInfoλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

μœ„ 그림처럼 LINKTARGET_IDLISTκ°€ λλ‚œ 이후 λ”°λΌμ˜€λŠ” 4λ°”μ΄νŠΈ(0x128~0x12B)λŠ” LinkInfosizeλ₯Ό λ‚˜νƒ€λ‚΄λ©°, 0x12CλΆ€ν„° 101λ°”μ΄νŠΈκ°€ μ§€λ‚œ 0x190에 LinkInfoκ°€ μ €μž₯λ˜μ–΄ μžˆλ‹€.

LinkInfoHeaderSizeκ°€ 0x1C이기 λ•Œλ¬Έμ— 선택적 ν•„λ“œμ— λŒ€ν•œ μ˜€ν”„μ…‹μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

μœ„ κ·Έλ¦Όμ—μ„œλŠ” LinkInfo 쀑 volumeID의 ꡬ쑰λ₯Ό 확인할 수 있으며, LinkTarget이 μ €μž₯된 λ“œλΌμ΄λΈŒμ™€ κ΄€λ ¨λœ 뢀뢄을 확인할 수 μžˆλ‹€.

StringData

파일 μ„€λͺ…, μƒλŒ€ 경둜, μž‘μ—… 디렉토리, λͺ…령쀄 인수, μ•„μ΄μ½˜ μœ„μΉ˜ 등에 λŒ€ν•œ λ¬Έμžμ—΄ 데이터λ₯Ό ν™•μΈν•˜λŠ”λ° ν•„μš”ν•œ 정보λ₯Ό κ°€μ§€κ³  μžˆλŠ” ꡬ쑰이닀.

  • NAME_STRING: 링크의 λͺ©μ μ„ μ‹λ³„ν•˜κΈ° μœ„ν•΄ μ΅œμ’… μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œλ˜λŠ” λ°”λ‘œ 가기에 λŒ€ν•œ μ„€λͺ…을 μ§€μ •

  • RELATIVE_PATH: 링크가 ν¬ν•¨λœ νŒŒμΌμ„ κΈ°μ€€μœΌλ‘œ 링크 λŒ€μƒμ˜ μœ„μΉ˜λ₯Ό μ§€μ •

  • WORKING_DIR: 링크 λŒ€μƒμ„ ν™œμ„±ν™”ν•  λ•Œ μ‚¬μš©ν•  μž‘μ—… λ””λ ‰ν„°λ¦¬μ˜ 파일 μ‹œμŠ€ν…œ 경둜λ₯Ό μ§€μ •

  • COMMAND_LINE_ARGUMENTS: 링크 λŒ€μƒμ„ ν™œμ„±ν™”ν•  λ•Œ μ§€μ •λ˜λŠ” λͺ…λ Ή 인수λ₯Ό μ €μž₯

  • ICON_LOCATION: 링크 ν•­λͺ©μ„ ν‘œμ‹œν•  λ•Œ μ‚¬μš©ν•  μ•„μ΄μ½˜μ˜ μœ„μΉ˜λ₯Ό μ§€μ •

λͺ…μΉ­
크기
μ„€λͺ…

CountCharacters

2λ°”μ΄νŠΈ

μ‹œμŠ€ν…œ κΈ°λ³Έ μ½”λ“œ νŽ˜μ΄μ§€μ— μ •μ˜λœ 문자 수 λ˜λŠ” λ¬Έμžμ—΄ ν•„λ“œμ— μžˆλŠ” μœ λ‹ˆμ½”λ“œ 문자 수λ₯Ό μ§€μ •

String

variable

μ‹œμŠ€ν…œ κΈ°λ³Έ μ½”λ“œ νŽ˜μ΄μ§€μ— μ˜ν•΄ μ •μ˜λœ 선택적 문자 μ§‘ν•© λ˜λŠ” CountCharacters ν•„λ“œμ— μ§€μ •λœ 길이의 μœ λ‹ˆμ½”λ“œ λ¬Έμžμ—΄

ExtraData

좔가적인 속성 μ •λ³΄λ‘œ, λ‹€μˆ˜μ˜ λ‹€μ–‘ν•œ 데이터 블둝이 포함될 수 μžˆλ‹€. 파일의 μ΄λ™μ΄λ‚˜ λ³€κ²½ 이λ ₯ 및 μΆ”κ°€ 속성이 기둝될 수 μžˆμ–΄ μ‚¬μš©μž ν™œλ™ 뢄석과 파일 속성 확인에 μœ μš©ν•˜λ‹€. 각 νŒŒμΌλ§ˆλ‹€ κ°€λ³€μ μ΄λ―€λ‘œ, 이 κΈ€μ—μ„œ μƒμ„Έν•œ 정보λ₯Ό μ„€λͺ…ν•˜μ§€ μ•Šκ² λ‹€. μžμ„Έν•œ μ„€λͺ…이 ν•„μš”ν•œ 경우 MS의 LNK 파일 쀑 ExtraData 파트λ₯Ό μ‚΄νŽ΄λ³΄λŠ” κ±Έ μΆ”μ²œν•œλ‹€.


3. 뢄석 λ°©μ•ˆ/ν™œμš©

LNK 파일 κ΅¬μ‘°μ—μ„œ 확인할 수 μžˆλ“― LNK 파일 뢄석 μ‹œ 원본 파일의 속성 정보, 생성, μ ‘κ·Ό, μˆ˜μ • μ‹œκ°„ 등을 μ•Œ 수 μžˆλ‹€. LNK 파일 자체둜 μΉ¨ν•΄ 사고λ₯Ό νŒŒμ•…ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμ— 사고 μœ ν˜•μ„ λ¨Όμ € νŒŒμ•…ν•˜κ³ , νƒ€μž„λΌμΈκ³Ό 연계해 뢄석할 ν•„μš”κ°€ μžˆλ‹€.

LNK 파일 뢄석 단계

μ•„λž˜μ™€ 같은 λ°©λ²•μœΌλ‘œ LNK νŒŒμΌμ„ 뢄석할 수 μžˆλ‹€.

  1. LNK 파일 μˆ˜μ§‘ : 뢄석 λŒ€μƒμ—μ„œ LNK νŒŒμΌμ„ μˆ˜μ§‘ν•œλ‹€. (바탕화면, 졜근 λ¬Έμ„œ, μ‹œμž‘λ©”λ‰΄ λ“±)

  2. 파일 식별 : ν™•μž₯자, 파일 μ‹œκ·Έλ‹ˆμ²˜, GUID 확인 등을 톡해 LNK νŒŒμΌμΈμ§€ ν™•μΈν•œλ‹€.

  3. ꡬ쑰 뢄석 : ShellLinkHeader, LinkTargetIDList, LinkInfo, StringData, ExtraData ꡬ쑰λ₯Ό λΆ„μ„ν•œλ‹€.

  4. 데이터 μΆ”μΆœ 및 뢄석 : 경둜, νƒ€μž„μŠ€νƒ¬ν”„, 파일 속성, λ„€νŠΈμ›Œν¬ λ“±μ˜ 정보 μΆ”μΆœν•œλ‹€.

  5. μ—°κ΄€ 뢄석 : νƒ€μž„λΌμΈκ³Ό μ—°κ΄€ μ§€μ–΄ λΆ„μ„ν•˜λ©°, μ‚¬μš©μžμ˜ ν™œλ™μ„ νŒŒμ•…ν•œλ‹€.

LNK 파일 ν™œμš© λ°©μ•ˆ

LNK νŒŒμΌμ„ ν¬λ Œμ‹μ μœΌλ‘œ ν™œμš©ν•  수 μžˆλŠ” λ°©μ•ˆμ€ λ‹€μ–‘ν•˜λ©°, 주둜 μ‚¬μš©μžμ˜ ν™œλ™μ„ μΆ”μ ν•˜λŠ” 데 쀑점을 λ‘”λ‹€.

  1. μ‚¬μš©μž ν™œλ™ 좔적 : 파일 μ ‘κ·Ό 이λ ₯ 및 μ‚¬μš© 이λ ₯을 확인할 수 있고, 파일 생성 및 μˆ˜μ • μ‹œκ°„μ„ 확인할 수 μžˆλ‹€.

  2. 파일 및 ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 경둜 좔적 : LNK νŒŒμΌμ— μ €μž₯된 경둜 정보λ₯Ό νšλ“ν•΄ μ €μž₯된 μœ„μΉ˜ 및 μˆ¨κ²¨μ§„ νŒŒμΌμ„ μ°ΎλŠ” 데 ν™œμš©ν•  수 있고, λ„€νŠΈμ›Œν¬ 경둜일 경우 λ„€νŠΈμ›Œν¬ μƒμ˜ 파일 접근을 좔적할 수 μžˆλ‹€.

  3. μ‹œμŠ€ν…œ 및 μ‚¬μš©μž ν™˜κ²½ 뢄석 : μ‹œμŠ€ν…œ ν™˜κ²½ 정보 μˆ˜μ§‘ 및 μ•„μ΄μ½˜ 정보λ₯Ό 확인할 수 μžˆλ‹€.

  4. 상관 관계 뢄석 : λ‹€λ₯Έ μ•„ν‹°νŒ©νŠΈμ™€ 연계 뢄석해 μ‚¬μš©μžμ˜ ν™œλ™ νŒ¨ν„΄μ„ 뢄석할 수 있고, 상관 관계λ₯Ό νŒŒμ•…ν•  수 μžˆλ‹€.

  5. μ•…μ„±μ½”λ“œ 뢄석 : μ•…μ„±μ½”λ“œ μ‹€ν–‰ 흔적을 좔적할 수 있고, μžλ™ μ‹€ν–‰ 섀정을 뢄석할 수 μžˆλ‹€.


4. 뢄석 도ꡬ

LNK νŒŒμΌμ„ 뢄석할 수 μžˆλŠ” λ„κ΅¬μ—λŠ” LECmd, 010editor, AXIOM λ“± λ‹€μ–‘ν•œ 도ꡬ가 μžˆμœΌλ‚˜ 이 κΈ€μ—μ„œλŠ” μ‚¬μš©μžμ˜ 접근성이 μ’‹λ‹€κ³  μƒκ°λ˜λŠ” Eric Zimmerman 도ꡬ 쀑 ν•˜λ‚˜μΈ LECmdλ₯Ό μ†Œκ°œν•˜λ„λ‘ ν•˜κ² λ‹€.

LECmdλŠ” command line tool둜 μ•Œλ €μ Έ 있으며, 이 도ꡬλ₯Ό ν™œμš©ν•΄ LNK 파일 속성을 확인할 수 μžˆλ‹€. LECmd λ„κ΅¬λŠ” μ•„λž˜ λ§ν¬μ—μ„œ λ‹€μš΄λ‘œλ“œ 받을 수 μžˆλ‹€.

LECmd μ‚¬μš© λͺ…λ Ήμ–΄λŠ” μ•„λž˜μ™€ κ°™μœΌλ©°, 뢄석 κ²°κ³ΌλŠ” 좜λ ₯ 뿐만 μ•„λ‹ˆλΌ 내보내기 μ˜΅μ…˜μ„ μ‚¬μš©ν•΄ json파일둜 내보낼 수 μžˆλ‹€.

LECmd.exe -f "C:\\Temp\\foobar.lnk"
LECmd.exe -f "C:\\Temp\\somelink.lnk" --json "D:\\jsonOutput" --pretty
LECmd.exe -d "C:\\Temp" --csv "c:\\temp" --html c:\\temp --xml c:\\temp\\xml -q
LECmd.exe -f "C:\\Temp\\some other link.lnk" --nid --neb
LECmd.exe -d "C:\\Temp" --all

LECmdλ₯Ό μ΄μš©ν•΄ 단일 LNK파일 뢄석 μ‹œ λ‚˜μ˜€λŠ” κ²°κ³Ό 화면은 μ•„λž˜μ™€ κ°™λ‹€.


5. μ°Έμ‘°

πŸͺŸ
https://www.sans.org/tools/lecmd/
[MS-SHLLINK]: Shell Link (.LNK) Binary File FormatMicrosoftLearn
Logo