ช่วงนี้มีหลายๆ blog เกี่ยวกับ Malware Analysis มักพูดถึงเรื่อง process hollowing วันนี้ก็เลยเอามาพูดอีกที (คล้ายๆกับตอนที่มีคนพูดถึง psexec และ wmic ใน NotPetya)

Process Hollowing

Process hollowing technique เป็นเทคนิคที่ว่าด้วยเรื่องการนำ code injection (payload หรือ Portable Executable (PE) file) เข้าไปใน memory ของ process ธรรมดาทั่วไป

เทคนิคนี้ใช้โดย Attacker เมื่อต้องการให้ Malware นั้นถูกรันบนเครื่องเหยื่อแบบหลบเลี่ยงการตรวจจับโดย Antivirus และคนทำ forensic ต่างๆ มีหลายวิธีที่จะทำให้เกิด Process Hollowing ได้ โดยในเพจนี้จะยกตัวอย่างจากการทำงานของ DarkComet ครับ

Step#1

เมื่อ DarComet ทำงานจะมีการสร้าง Process ลูกให้ไปสิงที่ Process ตัวอื่นซึ่ง Process นั้นจะเป็น Process ที่ดูปกติ โดยใช้ Windows API Function “CreateProcess” ซึ่ง LpApplicationName จะเป็นตัวชี้ไปยังชื่อของ Process ที่ถูกกฎหมาย ซึ่งเมื่อ function ทำงานตัว Process จะถูกโหลดโดย Windows API แล้วกลายเป็น Process ลูกของ DarkComet ไป

เช่น หากใช้เป็น Internet Explorer process เป็นเป้าหมาย ตัว malware จะกำหนด LpApplicationName ให้เป็น C:\Program Files\Internet Explorer\iexplore.exe  เมื่อทำการรัน process ดังกล่าวขึ้นมาแล้วก็จะทำการเปลี่ยนสถานะของ process ไว้ให้เป็น suspend process(CREATE_SUSPENDED) flag โดยการกำหนดที่ dwCreationFlags parameter.  ซึ่งทำให้ process จะถูกสั่งให้ทำงานในสถานะ suspended state, ทำให้ malware ทำการสิงตัวเองเข้าไปใน memory ของ process ก่อนที่จะนำ process ของ Internet Explorer กลับมาโดยใช้ ResumeThread Windows API function. (ขั้นตอนสุดท้าย)

Step#2

ในขณะที่ IE Process กำลังหยุดอยู่ malware จะใช้งาน NtUnmapViewOfSection เพื่อเข้าไปจัดการในส่วน memory ของ IE

ตัว ProcessHandle parameter เป็น process เป้าหมายที่เราต้องการเข้าไปจัดการและส่วน BaseAddress parameter เป็นตำแหน่งของ process. ที่ DarkComet จะเข้าไปยกเลิกการ map ไปยัง memory section ซึ่งในที่นี้คือของ Internet Explorer process โดยการจะทราบเรื่องรายละเอียดต่างๆของ Internet Explorer นั้น จะเป็นการใช้งานผ่าน GetCurrentProcess Windows API function.

Step#3

ตัว DarkComet จะจอง memory ส่วนหนึ่งโดยใช้ VirtualAllocEx Windows API function. ซึ่งตัว Malware ต้องแน่ใจว่า memory ส่วนนั้นเป็นส่วนที่สามารถเขียนและรันได้ โดยการกำหนด flProtect parameter ให้เป็น PAGE_EXECUTE_READWRITE flag (แน่นอนว่า Malware ตัวอื่นอาจจะ set Flag นี้เป็นอย่างอื่นก็ได้)

Step# 4

ใช้ Windows API Function “WriteProcessMemory”  เพื่อทำการเขียน code ทับเข้าไปใน code เดิม​

จากนั้นแก้ตัว context ของไฟล์ให้ไปรันที่ code ที่ inject เข้าไปโดยใช้ SetThreadContext Windows API function.

Step#5

Malware ใช้ ResumeThread Windows API function เพื่อให้​ IE กลับมาทำงาน

 

จากทั้งหมดจะเห็นว่า Process Hollowing นั้นเป็นการทำงานที่ไม่ซับซ้อนอะไรมาก และเป็นที่นิยมของ Malware หลายๆตัวอีกด้วย ซึ่งจริงๆแล้วเทคนิคนี้ไม่ได้ใหม่อะไรเลย แต่ก็ยังมีหลายๆตัวที่ยังใช้งานอยู่ครับ

 

Source::