Clear
Lead Graphic Papers

เสริมความมั่นคงปลอดภัยให้กับซอฟต์แวร์ด้วย EMET

ผู้เขียน: วิศัลย์ ประสงค์สุข
วันที่เผยแพร่: 2 มี.ค. 2555
ปรับปรุงล่าสุดวันที่: 2 มี.ค. 2555

Share on Facebook Share on Twitter Share on Google+

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

โปรแกรม Enhanced Mitigation Experience Toolkit หรือ EMET เป็นทางเลือกหนึ่งสำหรับผู้ใช้งานระบบปฏิบัติการ Windows เนื่องจากการทำงานภายใน EMET ประกอบไปด้วยเทคโนโลยีต่าง ๆ ที่มีคุณสมบัติเรียกว่า Mitigation Technology โดยจะทำหน้าที่ขัดขวางการทำงานที่ผิดปรกติ จึงสามารถช่วยลดโอกาสของผู้ไม่หวังดีในการโจมตีผู้ใช้งานระบบปฏิบัติการ Windows ได้สำเร็จ ซึ่งจากข้อมูลของ EMET ได้ระบุถึงรายละเอียดของเทคนิค Mitigation Technology ต่าง ๆ โดยจะอธิบายในหัวข้อถัดไป

ปัจจุบัน EMET พัฒนามาถึงเวอร์ชั่น 2.1 โดยผู้ใช้สามารถใช้งานได้ทั้งในรูปแบบ Graphic User Interface (GUI) และแบบ Command-line Interface (CLI) ผู้ใช้สามารถดาวน์โหลด EMET ไปติดตั้งได้ด้วยตนเองจาก เว็บไซต์ของ Microsoft โปรแกรม EMET สามารถทำงานได้บนระบบปฏิบัติการดังต่อไปนี้
  • Windows XP ที่ติดตั้ง Service Pack 3 หรือเวอร์ชั่นใหม่กว่า
  • Windows Vista ที่ติดตั้ง Service Pack 1 หรือเวอร์ชั่นใหม่กว่า
  • Windows 7 ทุกเวอร์ชั่น
  • Windows Server 2003 หรือเวอร์ชั่นใหม่กว่า
  • Windows Server 2008 ทุกเวอร์ชั่น
*หมายเหตุ การใช้งาน EMET ในรูปแบบ GUI ผู้ใช้จำเป็นต้องติดตั้ง .NET Framework 2.0 หรือใหม่กว่า

Mitigation Technology

Mitigation Technology ที่เกี่ยวข้องกับ Microsoft จะหมายถึงเทคโนโลยีที่ทาง Microsoft พัฒนาขึ้นมาเอง โดยมีวัตถุประสงค์เพื่อเพิ่มความมั่นคงปลอดภัยให้กับระบบปฎิบัติการ ซึ่งโดยส่วนใหญ่มักจะอัพเดทเทคโนโลยีดังกล่าวเข้ามาร่วมกับ Windows เวอร์ชั่นใหม่หรือเวอร์ชั่นล่าสุด ณ ช่วงเวลานั้น แต่ข้อเสียคือเทคโนโลยีดังกล่าวจะสามารถตรวจสอบและป้องกันได้เพียงโปรแกรมที่ติดตั้งมาพร้อมกับระบบปฎิบัติการเท่านั้น ซึ่งในโปรแกรม EMET ที่มีหลักการทำงานของ Mitigation Technology อยู่แล้วนั้น ผู้ใช้สามารถกำหนดให้ใช้ Mitigation Technology กับโปรแกรมอื่น ๆ ที่ติดตั้งเพิ่มเติมภายหลังได้ จึงทำให้ระบบมีความมั่นคงปลอดภัยมากยิ่งขึ้น โดย Mitigation Technology ที่มีในโปรแกรม EMET เวอร์ชั่น 2.1 มีดังต่อไปนี้

1. Structure Exception Handler Overwriter Protection [1] [9]

SEHOP จะตรวจสอบการทำงานของ Structure Exception Handler (SEH) ซึ่งเป็นส่วนที่ทำหน้าที่จัดการกับข้อผิดพลาดที่เกิดขึ้นในระหว่างการประมวลผล (Exception Handlind) โดยจะป้องกันไม่ให้มีการนำคำสั่งอันตรายเข้ามาประมวลผลในระหว่างการจัดการ Exception ทำให้การโจมตีโดยใช้วิธี Stack Overflow ทำได้ยากขึ้น

2. Dynamic Data Execution Prevention [2] [9]

DEP จะเป็นการตรวจสอบการใช้งานหน่วยความจำ โดยจะป้องกันไม่ให้มีการนำค่าในตำแหน่งของหน่วยความจำที่มีไว้สำหรับเก็บข้อมูลไปประมวลผล ทำให้การโจมตีด้วยวิธี Buffer Overflow ทำได้ยากขึ้น

3. Heap Spray Allocation [3] [9]

HSA จะเป็นการจองพื้นที่ในหน่วยความจำในส่วนของ Heap ให้กับโพรเซสนั้นๆ ไว้ล่วงหน้า เพื่อทำให้การโจมตีโดยวิธี Heap spray ทำได้ยากขึ้น

4. Null Page Allocation [3] [9]

NPA ช่วยให้การโจมตีโดยใช้เทคนิค Null Dereference ทำได้ยากขึ้น (Null Dereference คือการใช้ Pointer กำหนดค่า Null ให้กับหน่วยความจำ ทำให้โพรเซสไม่สามารถทำงานต่อได้) ปัจจุบันยังไม่พบการโจมตีด้วยวิธีนี้

5. Address Space Layout Randomization [5] [9]

ASLR จะสลับตำแหน่ง (Shuffle) โมดูลในแต่ละส่วนของโปรแกรม แล้วสุ่มตำแหน่งของหน่วยความจำที่จะเก็บโมดูลนั้นไว้ ก่อนจะโหลดโปรแกรมเข้าไปในหน่วยความจำเพื่อทำการประมวลผล ทำให้การโจมตีโดยการสั่ง Jump ไปยังตำแหน่งในหน่วยความจำเป็นไปได้ยาก

6. Bottom-Up Randomization [3] [4] [9]
BUR เป็นการใส่ Offset เข้าไปในส่วนท้ายของ Stack หรือ Heap เพื่อให้แต่ละครั้งที่มีการโหลดไลบรารีเข้าไปในหน่วยความจำจะไม่ได้อยู่ที่ ตำแหน่งเดิม ทำให้การโจมตีโดยการคาดการณ์ที่อยู่ของไลบรารีทำได้ยาก

7. Export Address Table Access Filtering [3] [9]
EAF จะป้องกันการค้นหาตำแหน่งของฟังก์ชันของระบบปฏิบัติการใน Export Address Table (EAT) โดยจะทำการตรวจสอบว่าฟังก์ชันนั้นสามารถเรียกใช้งาน EAT ได้หรือไม่ ทำในการโจมตีโดยใช้ Shellcode บางประเภทนั้นทำได้ยาก

การใช้งานโปรแกรม EMET

เอกสารฉบับนี้จะแสดงวิธีการใช้งานโปรแกรม EMET ในรูปแบบ GUI บนระบบปฏิบัติการ Windows XP โดยมีวิธีการดังนี้

เมื่อเปิดโปรแกรม EMET ขึ้นมาจะพบหน้าต่างแสดงส่วนประกอบของโปรแกรมดังรูปที่ 1

Pp2012te0004-1.png

รูปที่ 1 หน้าต่างเริ่มต้นเมื่อเปิดโปรแกรม EMET

จากรูปที่ 1 ส่วนประกอบของหน้าต่างโปรแกรม EMET มีดังต่อไปนี้

  • System Status เนื่องจากในระบบปฏิบัติการ Windows XP มีการติดตั้ง DEP ไว้ในระบบแล้วแต่ยังไม่ได้มีการติดตั้ง SEHOP และ ASLR ดังนั้นหน้าต่างโปรแกรม EMET จึงแสดงค่าเป็น Unavailable อย่างไรก็ตามผู้ใช้ยังสามารถใช้งาน SEHOP และ ASLR ได้เนื่องจาก EMET ได้รับการพัฒนาให้ใช้ SEHOP และ ASLR กับโปรแกรมต่าง ๆ ได้
    • Configure System เป็นปุ่มเรียกหน้าต่างการตั้งค่าโหมดการทำงานของ Mitigation ที่รองรับให้กับระบบ ซึ่งในที่นี้คือ DEP โดยหน้าต่างการตั้งค่ามีส่วนประกอบดังรูปที่ 2

      Pp2012te0004-2.png

      รูปที่ 2 หน้าต่างการตั้งค่า DEP ให้กับระบบ

      • Profile name
        • Maximum Secutiy Settings จะเป็นเปลี่ยนค่าให้ DEP ทำงานในโหมด AlwaysOn
        • Recommended Security Settings จะเป็นการเปลี่ยนให้ DEP ทำงานในโหมด OptIn
    • *หมายเหตุ โหมดการทำงานของ DEP มีดังต่อไปนี้ [2]
      • OptIn: เป็นการตั้งค่าให้ DEP ตรวจสอบเฉพาะไบนารีของระบบปฏิบัติการ โหมดการทำงานนี้เป็นค่าตั้งต้นของระบบ
      • OptOut: เป็นการตั้งค่าเพื่อเลือกโปรแกรมที่ไม่ต้องใช้ DEP
      • AlwaysOn: เป็นการตั้งค่าเพื่อให้ DEP ตรวจสอบทุกโพรเซสที่รันอยู่ในระบบ ไม่ว่าโพรเซสนั้นจะเป็นของโปรแกรมที่ระบุใน OptOut หรือไม่
      • AlwaysOff: ตั้งค่าเพื่อไม่ใช้งาน DEP
  • Running Processes เป็นรายการของโพรเซสที่กำลังทำงานอยู่ในขณะนั้น รายการนี้โปรแกรม EMET จะตรวจสอบการเปลี่ยนแปลงทุก ๆ 30 วินาที
    • Configure Apps เป็นปุ่มเรียกหน้าต่างตั้งค่าเพื่อให้ผู้ใช้สามารถเลือกโปรแกรมที่ต้องการ ให้ EMET ตรวจสอบโพรเซส ซึ่งมีส่วนประกอบดังรูปที่ 3

      Pp2012te0004-3.png

      รูปที่ 3 หน้าต่างเลือกโปรแกรมที่ต้องการให้ EMET ตรวจสอบ

ผู้ใช้สามารถเพิ่มหรือลดโปรแกรมที่ต้องการให้ EMET ตรวจสอบการทำงานได้โดยคลิกที่ปุ่ม Add หรือ Remove ในด้านล่างซ้าย ในการเลือกโปรแกรมนั้นจะต้องระบุพาธที่โปรแกรมนั้นติดตั้งอยู่

ในการพิจารณาเลือกโปรแกรมเพื่อใช้งานกับ EMET ผู้ใช้ควรเลือกโปรแกรมที่ใช้งานในชีวิตประจำวัน เพราะว่าโปรแกรมที่ใช้งานบ่อยมักจะเป็นเป้าหมายของการโจมตี [6] ตัวอย่างโปรแกรมที่ใช้งานบ่อยเช่น โปรแกรมเว็บเบราว์เซอร์ โปรแกรมสำนักงาน (Microsoft Office, OpenOffice) โปรแกรมด้านมัลติมีเดีย และโปรแกรม Adobe Reader, Adobe Acrobat เป็นต้น

หลังจากเลือกโปรแกรมเรียบร้อยแล้วจะต้องทำการเริ่มโปรแกรมนั้นใหม่เพื่อให้ EMET ทำงาน

*หมายเหตุ บางเทคนิคไม่สามารถใช้งานได้กับบางโปรแกรม เนื่องจากอาจทำให้โปรแกรมนั้นทำงานผิดปรกติได้ ดังนั้นหลังจากเลือกโปรแกรมใช้งานแล้ว จึงควรทดสอบให้แน่ใจว่าโปรแกรมนั้น ๆ ทำงานได้ปรกติ [7]

เนื่องจาก EMET เป็นเครื่องมือที่มีการทำงานอยู่เบื้องหลัง ทำให้ผู้ใช้ไม่สามารถตรวจสอบว่า EMET ทำงานอยู่หรือไม่ได้โดยตรง แต่สามารถตรวจสอบได้โดยดูจากโปรแกรมที่มีความสามารถตรวจสอบโพรเซสของโปรแกรมต่าง ๆ ที่กำลังทำงานอยู่เช่น โปรแกรม Process Explorer [8] เป็นต้น ในรูปที่ 4 เป็นการใช้โปรแกรม Process Explorer ตรวจสอบโพรเซสของ Internet Explorer

Pp2012te0004-4.png

รูปที่ 4 EMET กำลังตรวจสอบการทำงานในขณะที่ใช้โปรแกรม Internet Explorer

การใช้งาน EMET ช่วยให้ซอฟต์แวร์ต่าง ๆ มีความมั่นคงปลอดภัยเพิ่มขึ้นระดับหนึ่ง อย่างไรก็ตามผู้ใช้ควรหมั่นติดตามข่าวสารและอัพเดทซอฟต์แวร์ให้เป็นเวอร์ชั่นล่าสุดอยู่เสมอ และที่สำคัญ ผู้ใช้ควรระมัดระวังการเปิดเว็บไซต์ ไฟล์ หรือสิ่งอื่น ๆ ที่ไม่น่าไว้ใจซึ่งอาจเป็นอันตรายต่อระบบคอมพิวเตอร์ได้

อ้างอิง

  1. http://blogs.technet.com/b/srd/archive/2009/02/02/preventing-the-exploitation-of-seh-overwrites-with-sehop.aspx
  2. http://support.microsoft.com/kb/875352
  3. http://blogs.technet.com/cfs-filesystemfile.ashx/__key/communityserver-components-postattachments/00-03-35-03-78/Users-Guide.pdf
  4. http://blog.didierstevens.com/2011/09/29/add-bottom-up-randomization-to-your-own-source-code/
  5. http://blog.didierstevens.com/2011/08/16/so-how-good-is-pseudo-aslr/
  6. http://rationallyparanoid.com/articles/microsoft-emet-2.html
  7. http://support.microsoft.com/kb/2458544
  8. http://technet.microsoft.com/en-us/sysinternals/bb896653
  9. http://www.infoworld.com/t/microsoft-windows/microsoft-shuffles-windows-security-deck-emet-21-831

Clear