[9μ›” 5μ£Όμ°¨ ν•΄ν‚Ή μ•Œλ €μ€„κ²Œ 8ν™”: DLL Hijacking]


ν•΄ν‚Ή μ•Œλ €μ€„κ²Œ
8ν™”: DLL Hijacking

μ•ˆλ…•ν•˜μ„Έμš”! 2μ£Ό λ§Œμ— λŒμ•„μ˜¨ ν•΄ν‚Ή μ•Œλ €μ€„κ²Œ μž…λ‹ˆλ‹€. 😎
늘 μ‚¬μš©ν•˜λ˜ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν–ˆμ„ λΏμ΄μ—ˆλŠ”λ° μ•…μ„± μ½”λ“œκ°€ μ‹€ν–‰λœλ‹€λ©΄ μ–΄λ–¨κΉŒμš”? 또 이런 ν–‰μœ„κ°€ λ‹¨μˆœνžˆ 파일 ν•˜λ‚˜λ₯Ό μ‚½μž…ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ μ‰½κ²Œ 일어날 수 μžˆλ‹€λ©΄μš”? λ„ˆλ¬΄λ‚˜λ„ μ‰½κ²Œ λ§Žμ€ ν”„λ‘œκ·Έλž¨μ„ 곡격할 수 있겠죠! πŸ˜±
κ·Έλž˜μ„œ μ–΄λ–€ 곡격 κΈ°λ²•μ΄λƒκ΅¬μš”? λ°”λ‘œ 였늘 λ“€κ³  온 μ£Όμ œλŠ” DLL Hijacking μž…λ‹ˆλ‹€! 

DLL이 λ­”κ°€μš”?

μ•„λ§ˆ Windows 운영체제λ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ μ—¬λŸ¬ 폴더λ₯Ό 듀여닀보면 μ‹¬μ‹¬μΉ˜ μ•Šκ²Œ .dllμ΄λΌλŠ” ν™•μž₯μžκ°€ 뢙은 νŒŒμΌλ“€μ„ μ‰½κ²Œ 보싀 수 μžˆμ–΄μš”.

νŠΉνžˆλ‚˜ κ²Œμž„μ„ μ¦κ²¨ν•˜μ‹œλŠ” 뢄듀이라면 μœ„μ˜ 경고창처럼 .dll ν™•μž₯자λ₯Ό κ°€μ§„ νŠΉμ • 파일이 μ—†μ–΄ λ°œμƒν•˜λŠ” 였λ₯˜ λ©”μ‹œμ§€λ₯Ό 보신 적이 μžˆμ„ κ²λ‹ˆλ‹€! κ²Œμž„μ„ ν•˜κΈ° μœ„ν•΄ μ—΄μ‹¬νžˆ DirectXλ₯Ό μ„€μΉ˜ν–ˆλ˜ 기얡이 μƒˆλ‘μƒˆλ‘ λ‚˜λ„€μš”. 🀭

DLL은 라이브러리의 μΌμ’…μž…λ‹ˆλ‹€. λΌμ΄λΈŒλŸ¬λ¦¬λŠ” κ°œλ°œμžλ“€μ΄ 자주 μ“°λŠ” κΈ°λŠ₯듀은 맀번 κ°œλ°œν•  λ•Œλ§ˆλ‹€ λ‹€μ‹œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ°κ°€ λ²ˆκ±°λ‘œμ›Œ 쀑볡 κ°œλ°œμ„ ν”Όν•˜κΈ° μœ„ν•΄ 자주 μ“°λŠ” κΈ°λŠ₯의 μ½”λ“œλ“€μ„ λͺ¨μ•„ 놓은 νŒŒμΌμ„ λ§ν•΄μš”!

그리고 개발 μ΄ˆκΈ°μ— λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ν•΄λ‹Ή λΌμ΄λΈŒλŸ¬λ¦¬κ°€ ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨ νŒŒμΌλ§ˆλ‹€ ν¬ν•¨λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 같은 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨μ— μ€‘λ³΅λœ 것 λ˜ν•œ λ‚­λΉ„κ² μ£ ? πŸ€”

κ·Έλž˜μ„œ "ν•˜λ‚˜μ˜ 라이브러리λ₯Ό ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨λ§ˆλ‹€ κ·Έλ•Œκ·Έλ•Œ κ³΅μœ ν•˜μ—¬ μ“°μž!"λΌλŠ” μƒκ°μœΌλ‘œ λ‚˜μ˜€κ²Œ 된 것이 동적 링크 라이브러리(Dynamic Link Library), DLL 인 것이죠. μ‰½κ²Œ λΉ„κ΅ν•΄λ³΄μžλ©΄ 초기 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ν•„μš”ν•œ 책이 μžˆλ‹€λ©΄ λͺ¨λ“  μ‚¬λžŒμ΄ ꡬ맀해야 ν•˜λŠ” μ„œμ μ΄κ³ , DLL은 ν•„μš”ν•œ 책이 ν•„μš”ν•œ μ‚¬λžŒμ΄ λŒ€μ—¬ν•΄κ°€λŠ” λ„μ„œκ΄€μœΌλ‘œ 생각할 수 μžˆκ² λ„€μš”! πŸ˜‰  (쑰금 더 DLL이 κΆκΈˆν•˜μ‹œλ‹€λ©΄? 클릭!)

DLL μ‚¬μš©μ˜ μž₯점이 더 μžˆλ‚˜μš”?
더 적은 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•œλ‹€λŠ” 것 외에도 DLL μ‚¬μš©μ— 큰 μž₯점이 ν•˜λ‚˜ 더 μžˆμŠ΅λ‹ˆλ‹€! λ°”λ‘œ μˆ˜μ •κ³Ό 관리가 μ‰½λ‹€λŠ” μ μž…λ‹ˆλ‹€. λ§Œμ•½ 초기 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ”λ° νŠΉμ • ν•¨μˆ˜μ—μ„œ 보완/μˆ˜μ •ν•΄μ•Ό ν•  점이 생기면 μ–΄λ–»κ²Œ ν• κΉŒμš”? 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨λ§ˆλ‹€ ν•¨μˆ˜λ₯Ό μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. 😭 ν•˜μ§€λ§Œ DLL을 μ‚¬μš©ν•œλ‹€λ©΄ DLL 파일 ν•˜λ‚˜λ§Œμ„ μˆ˜μ •ν•΄λ„ ν•΄λ‹Ή 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ—μ„œ μˆ˜μ •ν•˜λŠ” 것과 같은 효과λ₯Ό μ§€λ‹™λ‹ˆλ‹€! κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 보완/μˆ˜μ • λ©΄μ—μ„œ λ›°μ–΄λ‚©λ‹ˆλ‹€.

κ·Έλž˜μ„œ DLL Hijacking은 λ­”κ°€μš”?
DLLμ΄λΌλŠ” 것도 μ•Œμ•˜κ² λ‹€. DLL Hijacking이 λ­”μ§€ λŒ€μΆ© μ§μž‘μ΄ κ°€μ‹œλ‚˜μš”? DLL Hijackingμ΄λ‹ˆκΉŒ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” DLL을 λ‚©μΉ˜ν•˜λŠ” 기법인 κ±ΈκΉŒμš”? μ •ν™•νžˆ λ§ν•˜μžλ©΄, DLL이 μ‚¬μš©λ  기회λ₯Ό λΉΌμ•—κΈ°λŠ” κ²ƒμž…λ‹ˆλ‹€. 
DLL Hijacking은 Windows 기반 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ DLL을 λ‘œλ”©ν•˜λŠ” κ³Όμ •μ—μ„œ λ°œμƒν•  수 μžˆλŠ” μ·¨μ•½μ μ΄μ—μš”. κ·ΈλŸ¬λ‹ˆκΉŒ ν”„λ‘œκ·Έλž¨μ΄ DLL을 μ–΄λ–»κ²Œ λ‘œλ”©ν•΄μ„œ μ‚¬μš©ν•˜λŠ”μ§€ μ‚΄νŽ΄λ³΄λ©΄μ„œ ν•¨κ»˜ 이해해보도둝 ν•΄μš”! πŸ€—

μ–΄λ–€ ν”„λ‘œκ·Έλž¨μ—μ„œ C:\Windows\hackyboiz.dll μ΄λΌλŠ” νŒŒμΌμ„ μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ‹€ν–‰νŒŒμΌμ—μ„œ λ‹Ήμ—°νžˆ hackyboiz.dll을 μ‚¬μš©ν•œλ‹€ λΌλŠ” 정보λ₯Ό κ°€μ§€κ³  있고 ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” ν•΄λ‹Ή 정보λ₯Ό 읽어 hackyboiz.dllνŒŒμΌμ„ λ‘œλ“œν•΄ μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€. 

μ‚¬μš©μžλ§ˆλ‹€ 컴퓨터 ν™˜κ²½μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή DLL파일이 λͺ…μ‹œν•œ κ²½λ‘œμ— μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜ μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” DLL파일의 μ ˆλŒ€κ²½λ‘œλ₯Ό μ œλŒ€λ‘œ 지정을 ν•˜μ§€ μ•ŠλŠ” κ²½μš°λŠ” μ–΄λ–»κ²Œ ν• κΉŒμš”? πŸ€” 
OSλŠ” DLL 탐색 μš°μ„ μˆœμœ„μ— 따라 ν•΄λ‹Ή DLLνŒŒμΌμ„ μ°Ύμ•„ λ‘œλ“œν•˜κ²Œ λ©λ‹ˆλ‹€.

1. μ‹€ν–‰ 파일이 μžˆλŠ” 폴더에 μžˆλŠ” DLL 파일
2. μ‹œμŠ€ν…œ 폴더에 μžˆλŠ” DLL 파일 
3.μœˆλ„μš° 폴더에 μžˆλŠ” DLL 파일 
4.ν˜„μž¬ μž‘μ—… κ²½λ‘œμ— μžˆλŠ” DLL 파일 
5.μœˆλ„μš° ν™˜κ²½μ„€μ • 정보에 μžˆλŠ” κΈ°λ³Έ 경둜 쀑에 μžˆλŠ” DLL 파일

μœ„λŠ” 기본적인 DLL 탐색 μš°μ„ μˆœμœ„μž…λ‹ˆλ‹€. μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” DLL 파일이 μ‹œμŠ€ν…œ 폴더에 μžˆμ§€ μ•ŠμœΌλ©΄ μœˆλ„μš° ν΄λ”μ—μ„œ μ°ΎλŠ” μ‹μœΌλ‘œ DLL νŒŒμΌμ„ νƒμƒ‰ν•˜κ²Œ λ©λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ ν”„λ‘œκ·Έλž¨μ—μ„œ μœˆλ„μš° 폴더에 μžˆλŠ” hackyboiz.dll 을 μ‚¬μš©ν•˜λ €κ³  ν•  λ•Œ λˆ„κ΅°κ°€ μ‹œμŠ€ν…œ 폴더에 hackyboiz.dll 을 λ§Œλ“€μ–΄ λ†“λŠ”λ‹€λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”? λ§žμ•„μš”! μ‹œμŠ€ν…œ 폴더에 μžˆλŠ” hackyboiz.dll 이 λ‘œλ“œλ˜κ² μ£ . 그리고 μœˆλ„μš° 폴더에 있던 μ›λž˜ hackyboiz.dll νŒŒμΌμ€ μ‚¬μš©λ  기회λ₯Ό λΉΌμ•—κΈ°κ²Œ 된 κ²ƒμž…λ‹ˆλ‹€. λ§Œμ•½ μ‹œμŠ€ν…œ 폴더에 μžˆλŠ” DLL 파일이 μ•…μ„±μ½”λ“œκ°€ ν¬ν•¨λœ 파일이라면 ν‰μ†Œμ— 잘 μ‚¬μš©ν•˜λ˜ ν”„λ‘œκ·Έλž¨μ΄λ”λΌλ„ κ°‘μžκΈ° μ•…μ„±μ½”λ“œκ°€ 싀행될 수 있겠죠? πŸ˜– μ΄λŸ°μ‹μœΌλ‘œ DLL Hijacking은 μ•…μ„±μ½”λ“œκ°€ λͺ©ν‘œλ‘œ ν•˜λŠ” μ‹œμŠ€ν…œμ— λ“€ν‚€μ§€ μ•Šκ³  였래 λ‚¨μ•„μžˆκΈ° μœ„ν•΄ μ‚¬μš©λ˜κΈ°λ„ ν•©λ‹ˆλ‹€. ν˜Ήμ€ 더 높은 κΆŒν•œμœΌλ‘œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨μ— μ‹¬μ–΄μ„œ κΆŒν•œνƒˆμ·¨ μš©λ„λ‘œ 많이 ν™œμš©λ˜κΈ°λ„ ν•΄μš”! 

μ–΄λ–»κ²Œ 막을 수 μžˆμ„κΉŒμš”?
κ°€μž₯ μ‰¬μš΄ 방법은 DLL λ‘œλ”©μ‹œ LoadLibrary()λŒ€μ‹  LoadLibraryExW()λ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

무엇이 λ‹€λ₯΄κΈΈλž˜ DLL Hijacking을 λ°©μ§€ν•  수 μžˆλŠ” κ±ΈκΉŒμš”? μœ„μ˜ μ˜ˆμ‹œ μ½”λ“œμ²˜λŸΌ hackyboiz.dll λ‘œλ“œλ₯Ό μœ„ν•΄ LoadLibrary()λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή 파일이 없을 경우 탐색 μš°μ„ μˆœμœ„μ— 따라 DLL νŒŒμΌμ„ 찾게 λ©λ‹ˆλ‹€. 
ν•˜μ§€λ§Œ LOAD_LIBRARY_SEARCH_SYSTEM32와 같은 νŒŒλΌλ―Έν„°λ₯Ό μΆ”κ°€ν•΄ LoadLibraryExW()λ₯Ό μ‚¬μš©ν•˜λ©΄ νŒŒλΌλ―Έν„°λ‘œ μ§€μ •ν•œ ν΄λ”λ§Œ 탐색해 좔가적인 탐색 없이 ν•΄λ‹Ή DLL이 νŠΉμ • 폴더에 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ DLL κ΄€λ ¨ 였λ₯˜λ‘œ ν”„λ‘œκ·Έλž¨μ„ μ€‘μ§€ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ DLL Hijacking을 λ°©μ§€ν•  수 μžˆλŠ” 것이죠!

ν•˜μ§€λ§Œ μœ„μ˜ 방식은 ν”„λ‘œκ·Έλž¨ μ‚¬μš©μž μž…μž₯μ—μ„œ μ·¨ν•  수 μžˆλŠ” μ‘°μΉ˜κ°€ μ•„λ‹™λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ‚¬μš©μž μž…μž₯μ—μ„œ DLL Hijacking λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ–΄λ–€ 방법이 μžˆμ„κΉŒμš”? DLL Hijacking은 κ°€μž₯ 근본적으둜 컴퓨터에 μžˆλŠ” μ•…μ„± DLL 파일둜 인해 μΌμ–΄λ‚˜λŠ” 것이기 λ•Œλ¬Έμ— 아무 μ΄λ©”μΌμ΄λ‚˜ μ—΄μ–΄ λ³΄κ±°λ‚˜ μΆœμ²˜κ°€ λΆˆλΆ„λͺ…ν•œ νŒŒμΌμ€ λ‹€μš΄λ°›μ§€ μ•ŠλŠ” λ“± μ•…μ„± DLL이 μ„€μΉ˜λ˜μ§€ μ•Šλ„λ‘ ν•˜λŠ” 것이 κ°€μž₯ 쒋은 예방 λ°©λ²•μž…λ‹ˆλ‹€. 사싀 λ°©ν™”λ²½κ³Ό μ—¬λŸ¬ λ°±μ‹  ν”„λ‘œκ·Έλž¨λ“€λ‘œ 인해 λ‹€λ₯Έ μ‚¬λžŒμ˜ 컴퓨터에 μ•…μ„± DLL을 μ‹¬λŠ”λ‹€λŠ” 것은 맀우 μ–΄λ €μš΄ μΌμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ λ°±μ‹ κ³Ό 방화벽을 항상 μ΅œμ‹  λ²„μ „μœΌλ‘œ μœ μ§€ν•˜λŠ” 것도 μžŠμ§€ λ§ˆμ„Έμš”! πŸ˜†

μ‹€μ œ DLL Hijacking이 μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€ κΆκΈˆν•˜λ‹€λ©΄? 

였늘의 ν•΄ν‚Ή μ•Œλ €μ€„κ²ŒλŠ” μ—¬κΈ°κΉŒμ§€! λ‹€μŒμ£Όμ— 더 μž¬λ―ΈμžˆλŠ” λ‚΄μš©μœΌλ‘œ μ°Ύμ•„μ˜€κ² μŠ΅λ‹ˆλ‹€. πŸ€—
였늘 μ „ν•΄λ“œλ¦° λ‚΄μš©μ΄ λ§ˆμŒμ— λ“œμ…¨λ‚˜μš”?
μ£Όμœ„ μΉœκ΅¬λ“€μ—κ²Œ λ‰΄μŠ€λ ˆν„°λ₯Ό μΆ”μ²œν•΄μ£Όμ„Έμš”!
λ‹€μŒμ£Όμ—λ„ μ•Œμ°¬ λ‚΄μš©μœΌλ‘œ λŒμ•„μ˜€κ² μŠ΅λ‹ˆλ‹€. πŸ˜™
ν˜Ήμ‹œ λ§ˆμŒμ— μ•ˆλ“œλŠ” 뢀뢄이 μžˆμ—ˆλ‚˜μš”? μ—¬κΈ°μ—μ„œ ν”Όλ“œλ°±μ„ μ „λ‹¬ν•΄μ£Όμ„Έμš”!
μ—¬λŸ¬λΆ„μ˜ μ˜κ²¬λ“€μ„ 적극 λ°˜μ˜ν•΄μ„œ λ”μš± μœ μ΅ν•œ λ‰΄μŠ€λ ˆν„°λ₯Ό λ§Œλ“€μ–΄κ°€λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. πŸ˜ƒ
ν•΄ν‚€λ³΄μ΄μ¦ˆ
hackyboizteam@gmail.com
μ„œμšΈμ‹œ 광진ꡬ κ΅°μžλ™ 134-33 3μΈ΅
μˆ˜μ‹ κ±°λΆ€ Unsubscribe