เนื่องจากเมื่อวานไปเจอ malware ที่ใช้ DLL injection เข้าไปยัง process ของระบบ ก็เลยมาเล่าสู่กันฟังครับ (ความจริงเขียนไว้กันลืมตะหาก 555) แต่ก่อนที่เล่าถึง malware ตัวดังกล่าว จะขออธิบายก่อนสักเล็กน้อยว่า DLL injection นั้นคืออะไร
DLL injection เป็นเทคนิคที่นักเขียน malware นิยมนำมาใช้ในการฝัง malicious code ในระบบ โดย malicious code ที่ทำการฝังลงไปนั้นจะอยู่ในรูปของ DLL ซึ่งจะถูกฝังเข้าไปยัง process ที่ทำงานอยู่ในระบบเช่น explorer.exe ซึ่งถ้าหาก incident handler ไม่ได้ทำการตรวจสอบ DLL ที่แต่ละ process ทำการโหลด ก็จะไม่ทราบว่าระบบถูกฝัง malware ลงไป เนื่องจาก malware ที่ใช้วิธีนี้เวลาทำงาีนจะไม่ทำการสร้าง process ใหม่ แต่จะสร้าง thread จาก process เดิม ซึ่งไม่สามารถมองเห็นด้วย task manager
เรื่องเริ่มขึ้นเมื่อเครื่องของชาวบ้านคนหนึ่ง หลังจากที่ทำการเปิดเครื่อง nod32 จะทำการแจ้งเตือนทุกครั้ง
ข้อความแจ้งเตือนดังกล่าวเป็นการบอกว่า
explorer.exe ได้ทำการสร้าง malware ขึ้นมา ??!
เมื่อทำการสำรวจ process ที่รันอยู่พบว่ามี explorer.exe รันอยู่เพียงโปรเซสเดียวเท่านั้น ซึ่งเป็น explorer.exe ของระบบ แต่เมื่อเรียกดู DLL ที่ explorer.exe ทำการโหลดเข้าไปนั้นพบว่ามี DLL ที่แปลกประหลาดอยู่
่
DLL ที่แปลกประหลาดคือ DLL ที่ถูกไฮไลต์ด้วยสีม่วง ซึ่งเป็น DLL ที่ถูก packed หรือทำการเข้ารหัส เมื่อใช้ nod32 ทำการแสกน DLL เหล่านี้ก็ไม่พบความผิดปกติแต่อย่างไร
เมื่อได้รายชื่อของ DLL ที่น่าสงสัย ขั้นตอนต่อไปคือนำรายชื่อของ DLL เหล่านี้ไปคำการค้นหาในตำแหน่ง Auto-Start ต่างๆใน registry key ซึ่งจากการค้นหาพบว่ารายชื่อของ DLL เหล่านี้ปรากฏอยู่ใน
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooksHKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notifyผมจึงได้ทำการลบ registry key ที่มีชื่อของ malicious DLL ทิ้งไปแล้วทำการ reboot ระบบ แต่เมื่อทำการล็อกอินเข้ามาใหม่พบว่า nod32 ยังคงแจ้งเตือนเหมือนเดิม แต่ชื่อของไฟล์เปลี่ยนไป ผมจึงได้ทำการตรวจสอบ explorer.exe ใหม่อีกครั้ง และพบว่ายังคงถูก DLL inject เข้าไปเหมือนเดิม โดยรายชื่อ malicious DLL นั้นจะมีชื่อที่เหมือนเดิม 2 ไฟล์คือ
ssqolij.dllvturp.dllทั้ง 2 ไฟล์อยู่ใน directory C:\WINDOWS\system32 สำหรับ malicious DLL ตัวอื่นนั้นชื่อจะ random เปลี่ยนไปเรื่อยๆ
ผมจึงได้ทำการ
monitoring การเข้าถึง registry key เพื่อทำการตรวจสอบว่ามี process ใดเข้าถึง registry key ของ ssqolij.dll หลังจากที่ทำการลบ key เหล่านี้ทิ้งไป ซึ่งพบว่า
winlogon.exe ซึ่งเป็น process ของระบบ (ดูจาก process tree) มีการเรียกดู registry key เหล่านี้ตลอดเวลา และเมื่อใดก็ตามที่ทำการลบ registry key เหล่านี้ทิ้งไป winlogon.exe ก็จะทำการสร้าง key ก็จะทำการสร้าง key ขึ้นมาใหม่ นี่จึงเป็นสาเหตุที่ว่าทำไม registry key เหล่านี้กลับมาอยู่ในระบบ
นอกจากนี้ผมได้ทำการสำรวจ DLL ที่ winlogon.exe ทำการโหลดเข้ามาในระบบ พบว่า winlogon.exe ถูก DLL injection เหมือนกัน ซึ่งมี 2 ไฟล์หลักคือ ssqolij.dll และ vturp.dll
เนื่องจาก winlogon.exe เป็น process ที่ทำหน้าที่เกี่ยวกับการล็อกอินของระบบ หากเราทำการ kill process นี้ไปจะทำให้เกิดอาการจอฟ้า ดังนั้นผมเลือกที่จะทำการ
suspend winlogon.exe ซึ่งปรากฏว่าได้ผล กล่าวคือไม่มีการเข้าถึง registry key จาก winlogon.exe อีก ในขณะเดียวกันระบบก็ไม่ขึ้นจอฟ้า ซึ่งทำให้ผมสามารถทำงานต่อไปได้
เมื่อหยุด winlogon.exe ได้ ผมจึงทำการลบ regiskey key ทิ้งไป จากนั้นใช้
movefile ทำการกำหนด schedule ให้ทำการลบ malicious DLL ทิ้งไปหลังจากที่ระบบทำการ reboot ใหม่ พบว่า malicious DLL ได้ถูกลบไป และ winlogon.exe และ explorer.exe ก็ไม่ถูก DLL injection อีกต่อไป :)
P.S. พอดี capture รูปมาไม่ครบน่ะนะ แหะๆ