นี่เป็นเทคนิคการฉีด DLL ของ Windows Explorer ที่ใช้กล่องโต้ตอบการเปลี่ยนแปลงไอคอนบน Windows
ประการแรก โฟลเดอร์จะถูกสร้างขึ้นในไดเร็กทอรีชั่วคราว และคุณสมบัติของโฟลเดอร์จะถูกเปิดโดยใช้ SHObjectProperties หากต้องการดึงข้อมูลหมายเลขอ้างอิงของหน้าต่างโดยไม่ขึ้นอยู่กับภาษาของระบบ EnumWindows จะใช้กับฟังก์ชันโทรกลับที่จะตรวจสอบชื่อโฟลเดอร์ที่แตกต่างกันในทุกหน้าต่างที่เปิดอยู่
ผ่านหน้าคุณสมบัติ กล่องโต้ตอบไอคอนการเปลี่ยนแปลงจะถูกเรียกใช้ ซึ่งหมายเลขอ้างอิงจะถูกดึงข้อมูลด้วย EnumWindows ด้วย สุดท้าย เส้นทางไอคอนจะเปลี่ยนเป็น DLL (ซึ่งมีนามสกุล .ico ในกรณีนี้) ซึ่งทำให้ explorer โหลด DLL หลังจากกดปุ่ม OK
ที่จริงแล้ว "ไอคอน" นั้นเป็นไฟล์ DLL ธรรมดาที่มีนามสกุล .ico ที่เปิดแอปเครื่องคิดเลขพร้อมทรัพยากรไอคอนที่เพิ่มเข้ามาโดยใช้ Resource Hacker
มีความผิดปกติบางประการเมื่อพูดถึงลักษณะที่ปรากฏของไอคอนในมุมมองโฟลเดอร์ ฉันได้ทดสอบสิ่งนี้กับ Windows 10 เวอร์ชันที่แตกต่างกันสองเวอร์ชัน (เวอร์ชันใหม่ล่าสุดและเก่ากว่า) และบน Windows 11
ใน Widnows 10 ทั้งสองเวอร์ชัน ไอคอนที่จัดเก็บไว้ใน DLL จะไม่แสดงเมื่อเปลี่ยนนามสกุลเป็น .ico
อย่างไรก็ตาม ใน Windows 10 เวอร์ชันใหม่ล่าสุด มันใช้งานได้จนกว่าฉันจะลองเปิด "ไอคอน" ภายในแอปรูปภาพ ตั้งแต่นั้นมาฉันก็ไม่สามารถสร้างมันขึ้นมาใหม่ได้
บน Windows 11 ไอคอนจะแสดงเหมือนกับไอคอนปกติในมุมมอง Explorer แต่เมื่อเปิดในแอปรูปภาพ จะมีข้อผิดพลาดปรากฏขึ้น
พฤติกรรมนี้น่าสนใจอย่างยิ่ง เนื่องจากผู้ใช้ที่ต้องการเปลี่ยนไอคอนของโฟลเดอร์อาจแทรก DLL ที่เป็นอันตรายลงใน explorer แทน นี่อาจมีลักษณะเช่นนี้:
นี่เป็นวิธีที่ซ่อนเร้นมากในการแทรก DLL เข้าไปในกระบวนการ Explorer เนื่องจากไม่ได้ใช้ API การแทรก DLL ตามปกติ มันสร้างป๊อปอัปสั้น ๆ สองอันซึ่งไม่รบกวนเกินไป ดังนั้นจึงสามารถใช้เป็นเทคนิคการหลีกเลี่ยง AV โดยผู้คุกคามเพื่อรันโค้ดผ่านกระบวนการ explorer ที่ถูกต้องหรือเพื่อโหลดรูทคิท UMD
นอกจากนี้ การแพร่กระจาย DLLs ที่ปลอมแปลงเป็นไฟล์ .ico อาจเป็นเวกเตอร์การโจมตีที่น่าสนใจ
เพื่อให้ได้ตัวจัดการหน้าต่างที่ถูกต้อง ฉันใช้ Spy++ ซึ่งเป็นเครื่องมือที่ติดตั้งกับ Visual Studio
ขอขอบคุณ Bill G. จาก Microsoft สำหรับไอคอนโฟลเดอร์ที่สวยงาม!
ขอบคุณผู้ชายสุ่มบนอินเทอร์เน็ตสำหรับไอคอนการฉีดที่สวยงาม!