"Heap Spray" เทคนิคในการ Exploit ที่กำลังกลับมาได้รับความนิยม
ตอนนี้การโจมตีผ่านทาง Client (Client Site Attact) กำลังเป็นที่ได้รับความนิยม เราคงได้ข่าวช่องโหว่ใหม่ของ Web Browser ออกมาอยู่เนืองๆ ช่วงนี้ ไม่จำกัดเฉพาะ IE เท่านั้น Firefox ก็โดนกะเขาด้วย วันนี้เลยอยากเอาเรื่องนี้มาเล่าให้ฟัง
History
เมื่อก่อนนี้การ Exploit ส่วนทั้งหมดจะเป็นการ Exploit แบบ Buffer Overflow และก็มี Hacker หลายคนเชื่อว่าไม่สามารถที่จะ Exploit โดยการทำ Heap Overflow ได้ Skylined เป็น hacker คนแรกๆ ที่มีความสงสัยในข้อจำกัดนี้ และได้ทดลองการโจมตีผ่านทาง Heap Overflow เมื่อประมาณปี 2004 โดยการ Exploit ผ่าน IFrame ซึ่ง M$ ก็ได้ออก Patch มาปิดช่องโหว่นี้แล้ว (MS04-040) การโจมตีโดยหลักการของ Heap Spray นี้เริ่มต้นตั้งแต่ปี 2001 แต่มานิยมใช้ในการโจมตีแพร่หลายก็เมื่อ 2005 นี่เอง ซึ่งการโจมตีรูปแบบนี้ยังเป็นรูปแบบที่ตรวจจับอยากอยู่เหมือนกัน
How-to
วิธีการโจมตีแบบ Heap Spray มีวิธีการคล้ายๆ กับ Buffer Overflow คือ Attacker จะทำการเขียนโปรแกรมเพื่อจัดการ Copy "Exploit Code" เข้าไปยัง Heap ของ process เป้าหมาย (ตอนนี้เป้าหมายหลักก็คือ Browser นั่นเอง) โดยการจัดการส่วนใหญ่ก็ไม่ยุงยากมาก ซึ่งอาศัย JavaScript ในการจัดการกับ Exploit Code และก็สร้าง Array และคัดลอกอัดเข้าไปยัง Heap ของ Process เป้าหมาย เลยเป็นที่มาของคำว่า "Spray" ลองดูโค้ดตัวอย่างได้ที่นี้ครับ เป็นโค้ด exploit ของ IE6 และ IE7
แต่อย่างไรก็ตาม การโจมตีในรูปแบบนี้ก็ยัีงมีข้อจำกัดอยู่ คือไม่รู้ตำแหน่งที่แน่นอนของ Address ที่อยู่ใน Heap ทำให้ไม่สามารถควบคุมให้ Expoit Code ที่ต้องการทำงานได้ 100% เนื่องจาก OS ส่วนใหญ่ ทั้ง Windows XP/ Vista ทีการป้องกันที่เรียกว่า "address-based layout randomization" เป็นการสุมตำแหน่ง layout ใน Heap ทำให้ Attacker ไม่สามารถระบุตำแหน่งที่แน่นอนได้ แต่จากการ Spray โค้ดเข้าไปใน Heap ที่มีขนาดใหญ่ (ขึ้นอยู่กับแต่ละ process) ก็ทำให้มีโอกาสที่จะสำเร็จสูง รวมถึงจำนวนเหยีือที่เข้าไปเปิดหน้าเว็บที่มี Expoit Code (JavaScript) ฝังอยู่ยิ่งมากก็ยิ่งทำให้โอกาสที่จะโจมตีสำเร็จสูงตามไปด้วย
หากการโจมตีสำเร็จ Attacker สามารถสั่งให้เครื่องของเหยือทำอะไรก็ได้ตาม Exploit Code ที่ฝังไว้ยกตัวอย่างเช่น ให้ไปดาวน์โหลด โปรแกรม Trojan ผมฝังไว้ที่เครื่องของเหยือ เป็นต้น
ระบบที่มีผลกระทบ ไม่ได้ถูกจำกัดไว้ที่ web browser อย่างเดียว เมื่อต้นปีที่ผ่านมีก็มีช่องโหว่ที่เราอาจจะเคยได้ยินแล้ว เป็นช่องโหว่ของโปรแกรม Acrobat Reader ซึ่งสามารถสั่งให้รัน Exploit Code ใดๆ ก็ได้ที่ Attacker ต้องการ เมื่อผู้ใช้เปิดไฟล์ PDF ซึ่งก็อาศัยเทคนิคที่ชื่อว่า "Heap Spray " นี้เช่นกัน
ตัวอย่างช่องโหว่ล่าสุด
"Microsoft Internet Explorer 'Style' Object Remote Code Execution Vulnerability" เป็นช่องโหว่ล่าสุดที่ใช้เทคนิค Heap Spray ประกาศไว้ที่ Securiyfocus มีตัวอย่าง Exploit ให้ไปศึกษาด้วยนะครับ