วันศุกร์ที่ 3 สิงหาคม พ.ศ. 2550

หมดยุคของ vmware สำหรับการวิเคราะห์ malware

หากกล่าวถึง vmware หลายๆคนก็คงเคยเล่นกัน โดยเฉพาะพวกที่ชอบเล่นกับ malware หรือไม่ก็ exploit เพราะเนื่องจากเจ้า vmware นี่แหละ ที่ช่วยให้เราสามารถรันระบบปฏิบัติการหลายๆระบบ พร้อมกันไปในเครื่องคอมพิวเตอร์เพียงเครื่องเดียว ทำให้เราไม่ต้องหาเครื่องคอมพิวเตอร์อีกเครื่องเพื่อสร้างขึ้นมาเป็น test-based แต่ใช้เครื่องของเราเนี่ยแหละทำเป็น test-based ได้ไปในตัวได้เลย :)

ด้วยเหตุนี้ vmware จึงเหมาะสำหรับนำมาวิเคราะห์ malware เพราะการวิเคราะห์ malware นั้น นอกจากจะต้องวิเคราะห์แบบ static คือการวิเคราะห์โค้ดที่เขียนขึ้น (ผ่านทาง reverse engineering) ยังต้องวิเคราะห์แบบ dynamic คือการวิเคราะห์การทำงานจริง โดย vmware มักถูกนำมาใช้สำหรับการวิเคราะห์แบบ dynamic กล่าวคือทำการรันบน malware บนระบบปฏิบัติการที่สร้างขึ้นจาก vmware แล้วดูลักษณะการทำงานของ malware เนื่องด้วยระบบปฏิบัติการที่รัน malware เป็นระบบปฏิบัติการที่สร้างขึ้นบน vmware ดังนั้นนักวิเคราะห์มัลแวร์จึงไม่ต้องกังวลในกรณีที่ malware จะอันตรายกับระบบปฏิบัติการของตัวเอง

แต่ตอนนี้แนวทางการวิเคราะห์ใมัลแวร์ดังกล่าวทำท่าว่าจะมีปัญหาซะแล้ว เนื่องจากนาย Kato Ken นักวิจัยด้านความปลอยภัยคอมพิวเตอร์ชาวญี่ปุ่น ได้ค้นพบวิธีการตรวจสอบว่าระบบปฏิบัติการที่รันอยู่นั้นเป็นระบบที่อยู่บน vmware หรือไม่ โดยใช้ภาษา assembly ไม่เพียงกี่บรรทัดเท่านั้น ถ้าสนใจสามารถอ่านเพิ่มเติมได้ที่นี่ครับ

เนื่องจากผมไม่ค่อยมีเวลามาก (ทั้งๆที่แค่ใส่ inline assembly ลงไปในโค้ดไม่กี่บรรทัด แหะๆ) ดังนั้นก็เลยพยายามหาโค้ดสำเร็จรูปสำหรับการทดสอบที่มีชาวบ้านเขียนไว้แล้ว ซึ่งก็ได้พบกับ VmDetect ซึ่งพัฒนาโดย lallous ซึ่งโค้ดของหมอนี่นอกจากจะสามารถตรวจสอบ vmware ได้แล้ว ยังสามารถตรวจสอบ Microsoft Virtual PC ได้ด้วย

นี่เป็นภาพที่ทำการรัน VmDetect บนระบบปฏิบัติการธรรมดาครับ

Photo Sharing and Video Hosting at Photobucket

ส่วนนี่ก็เป็นภาพที่รัน VmDetect บนระบบปฏิบัติการที่อยู่บน vmware

Photo Sharing and Video Hosting at Photobucket

แล้วมันสำคัญยังไง ? มันสำคัญตรงที่ว่านักพัฒนา malware สามารถใช้ความรู้ตรงจุดนี้เพิ่มความสามารถให้กับ malware เพื่อให้ทำการตรวจสอบว่าตัว malware เองรันอยู่บน vmware หรือไม่ หากรันอยู่บน vmware ตัว malware เองจะไม่ทำงาน หรืออาจะสั่งให้ทำลายระบบปฏิบัติการบน vmware เลยก็ได้... evil ครับ evil

pulsing zombie

zombie ในเชิงของ computer security หมายถึงเครื่องคอมพิวเตอร์ที่ถูกแฮกและถูกนำมาใช้เป็นเครื่องมือเพื่อกระทำสิ่งต่างๆตามที่ผู้บุกรุกต้องการ ไม่ว่าจะเป็นทำการสแกนเครื่องของชาวบ้านเค้า โจมตี DoS (Denial of Service) หรือ DDoS (Distributed Denial of Service) เพื่อทำให้ระบบเครื่อข่ายหรือเซิร์ฟเวอร์เป้าหมายไม่สามารถใช้งานได้อย่างปกติ ด้วยลักษณะของการที่เครื่องคอมพิวเตอร์ที่ถูกแฮค (ตายไปแล้ว) และได้ถูกใช้มาทำการโจมตีระบบอื่นๆอย่างบ้าคลั่ง (ถูกปลุกขึ้นมาและอะละวาด) ทำให้เป็นที่มาของคำว่า zombie นั่นเอง

แต่วันนี้ผมจะไม่กล่าวถึง zombie เพราะรู้สึกว่าก็น่าจะรู้จักกันมาพอสมควรแล้ว แต่ที่จะกล่าวในวันนี้จะเป็นรูปแบบหนึ่งที่พัฒนาขึ้นจาก zombie แบบธรรมดา โดยจุดประสงค์ของมันเพื่อหลีกเลี่ยงการตรวจสอบของผู้ดูแลระบบ และถึงแม้สามารถตรวจพบก็ไม่สามารถมั่นใจได้ว่าเป็น zombie หรือไม่ ชื่อของมันคือ pulsing zombie

pulsing zombie คือ zombie ประเภทหนึ่ง เป็นเครื่องคอมพิวเตอร์ที่ถูกแฮกและถูกนำมาใช้เพื่อทำการโจมตีระบบอื่นเช่นเดียวกับ zombie แบบธรรมดา แต่อย่างไรก็ตามข้อแตกต่างระหว่าง pulsing zombie และ zombie แบบธรรมดาก็คือ pulsing zombie จะไม่โจมตีเป้าหมายอย่าง "บ้าคลั่ง" (จำนวนมาก/เวลาน้อย) แต่จะโจมตีเหยื่ออย่าช้าๆ ค่อยเป็นค่อยไป (จำนวนปกติ/เวลานาน) ด้วยเหตุนี้เองทำให้มีความยากลำบากในการตรวจสอบ pulsing zombie มากกว่า zombie แบบธรรมดา เพราะลักษณะการโจมตีจะเหมือนการใช้งานธรรมดาของผู้ใช้นั่นเอง

โดยปกติแล้ว pulsing zombie มักถูกนำมาใช้เพื่อทำการ slow-down เป้าหมายมากกว่าการ shutdown เป้าหมาย หรือเรียกอีกอย่างหนึ่งว่า Degradation of Service ซึ่งเป็นรูปแบบหนึ่งของ DoS นั่นเอง (ตัวย่อ DoS เหมือนกันด้วย เฮ่อๆ)

แล้วทำไมถึงใช้คำว่า "pulsing" ? คำนี้ๆสามารถแปลได้ว่า ลักษณะของบางสิ่งบางอย่างที่มีการเต้นขึ้น-ลง เหมือนกับคลื่นหัวใจ ซึ่งก็ถูกนำมาใช้กับเจ้า zombie รูปแบบนี้ที่คล้ายๆกับคนที่ยังมีชีวิตอยู่นั่นเอง (แต่ที่จริงมันก็ตายไปแล้วนั่นแหละนะ) :)