Clear
Lead Graphic Papers

การวิเคราะห์มัลแวร์เบื้องต้น ตอนที่ 1

ผู้เขียน: เสฏฐวุฒิ แสนนาม
วันที่เผยแพร่: 19 ธันวาคม 2556
ปรับปรุงล่าสุด: 19 ธันวาคม 2556

Share on Facebook Share on Twitter Share on Google+

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

มัลแวร์คืออะไร?

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

ในการแบ่งประเภทของมัลแวร์ โดยปกติจะแบ่งตามพฤติกรรมการทำงาน ตัวอย่างเช่น

  • Virus - แพร่กระจายตัวเองไปยังเครื่องอื่นๆ ผ่านไฟล์
  • Worm - แพร่กระจายตัวเองไปยังเครื่องอื่นๆ ผ่านระบบเครือข่าย (เช่น อีเมล หรือระบบแชร์ไฟล์)
  • Trojan - หลอกว่าเป็นโปรแกรมที่ปลอดภัยแล้วให้ผู้ใช้หลงเชื่อนำไปติดตั้ง
  • Backdoor - เปิดช่องทางให้ผู้ไม่หวังดีเข้ามาควบคุมเครื่อง
  • Rootkit - เปิดช่องทางให้ผู้ไม่หวังดีเข้ามาควบคุมเครื่อง พร้อมได้สิทธิ์ของผู้ดูแลระบบ
  • Spyware - แอบดูพฤติกรรมการใช้งานของผู้ใช้ และอาจขโมยข้อมูลส่วนตัวด้วย
มัลแวร์หนึ่งตัวอาจมีพฤติกรรมหลายอย่าง จึงอาจถูกจัดให้อยู่ในได้หลายประเภท ตัวอย่างการแบ่งประเภทของมัลแวร์ เป็นดังรูปที่ 1


รูปที่ 1 ตัวอย่างการแบ่งประเภทของมัลแวร์ (ที่มา - Kaspersky [1])

นอกจากการทำงานข้างต้นแล้ว พฤติกรรมของมัลแวร์โดยส่วนใหญ่จะมีส่วนที่คล้ายๆ กันคือ หลบซ่อนตัวเองจากการตรวจจับ โหลดมัลแวร์ตัวอื่นมาลงเพิ่ม ปิดการทำงานของระบบรักษาความปลอดภัย (เช่น Antivirus) หรือฝังตัวเองในระบบเพื่อให้ยังสามารถกลับมาทำงานต่อได้เมื่อรีสตาร์ทเครื่อง เป็นต้น

วิธีการติดมัลแวร์

การติดมัลแวร์ โดยหลักๆ มีอยู่ 2 วิธีคือ หลอกให้ผู้ใช้เป็นคนรันโปรแกรมมัลแวร์เอง หรือติดตั้งตัวเองลงในเครื่องโดยอัตโนมัตผ่านช่องโหว่ของซอฟต์แวร์

การหลอกให้ผู้ใช้เป็นคนรันโปรแกรมมัลแวร์เอง ส่วนใหญ่จะอยู่ในรูปแบบไฟล์ประเภท Executable หรือ Script ซึ่งเป็นโค้ดของโปรแกรมที่สามารถเปิดขึ้นมาทำงานตามคำสั่งได้ทันที โดยส่วนใหญ่จะอยู่ในรูปแบบของไฟล์ประเภท .exe .bat .com หรือ .scr [2]

วิธีการแพร่กระจายมัลแวร์ แบบที่พบเห็นกันบ่อยๆ ก็คงจะเป็นการติดผ่าน USB Drive การส่งไฟล์ผ่านทางอีเมล หรือปล่อยไฟล์มัลแวร์ไปในเว็บไซต์ที่ให้ดาวน์โหลดซอฟต์แวร์เถื่อนหรือเว็บไซต์ประเภท Bittorrent

ในการหลอกให้ผู้ใช้เรียกใช้งานโปรแกรมมัลแวร์ ผู้เขียนมัลแวร์อาจใช้วิธีการหลอกลวงต่างๆ เช่น เปลี่ยนไอคอนของโปรแกรมให้เป็นรูปไฟล์เอกสาร รูปโฟลเดอร์ หรือตั้งชื่อไฟล์หลอกให้ผู้ใช้เข้าใจว่าเป็นไฟล์เอกสารธรรมดา แต่ในบางกรณี มัลแวร์อาจมาในรูปของไฟล์เอกสาร เช่น ไฟล์ Microsoft Office หรือไฟล์ PDF เนื่องจากซอฟต์แวร์ที่ใช้อ่านข้อมูลจากไฟล์ประเภทดังกล่าวมีช่องโหว่ให้สามารถฝังโค้ดของมัลแวร์ได้

นอกจากวิธีข้างต้นแล้ว แนวโน้มในปัจจุบันยังพบการโจมตีแบบ Drive-by-Download ซึ่งเป็นการใช้ช่องโหว่ของเบราว์เซอร์หรือปลั๊กอินของเบราว์เซอร์ในการโจมตี ซึ่งโดยส่วนมากจะพบการโจมตีผ่านช่องโหว่ของ Java, Adobe Reader หรือ Flash Player ผู้โจมตีจะฝังโค้ดอันตรายไว้ในเว็บไซต์ เมื่อผู้ใช้เปิดเข้าไปยังเว็บไซต์ดังกล่าวก็จะติดมัลแวร์ในทันที (สามารถศึกษาเพิ่มเติมได้ที่บทความ การโจมตีผ่านเว็บเบราว์เซอร์และการป้องกัน [3])

การวิเคราะห์มัลแวร์

ในการวิเคราะห์มัลแวร์ จุดประสงค์หลักๆ คือเพื่อต้องการศึกษาพฤติกรรมและขั้นตอนการทำงานของมัลแวร์ เพื่อตรวจสอบผลกระทบจากความเสียหาย รวมถึงศึกษาวิธีป้องกันและแก้ไขปัญหาหลังติดมัลแวร์ ซึ่งอาจจะเป็นประโยชน์ในการแจ้งเตือนเรื่องความปลอดภัย ในกรณีที่พบมัลแวร์ชนิดใหม่ที่ Antivirus ส่วนใหญ่ยังไม่รู้จัก หรือเป็นมัลแวร์สายพันธุ์ใหม่ที่ข้อมูลผลการวิเคราะห์เดิมอาจเชื่อถือได้ไม่ 100%

ในกรณีพบไฟล์ที่ต้องสงสัยว่าเป็นมัลแวร์ การวิเคราะห์เบื้องต้นอาจทำได้โดยการใช้เครื่องมือ Online Malware Scan ที่ใช้วิธีการอัพโหลดไฟล์ขึ้นไปเพื่อให้ Antivirus ค่ายต่างๆ ช่วยกันสแกน เช่นเว็บไซต์ http://www.virustotal.com หรือ http://virusscan.jotti.org/en ซึ่งทั้งสองเว็บไซต์ดังกล่าวนี้สามารถใช้งานได้ฟรี อย่างไรก็ตาม หากเป็นมัลแวร์ชนิดใหม่ๆ ก็อาจจะตรวจสอบด้วยวิธีนี้ไม่ได้ ตัวอย่างการสแกนโดยใช้เว็บไซต์ Virustotal เป็นดังรูปที่ 2


รูปที่ 2 ตัวอย่างการสแกนไฟล์ที่น่าสงสัยโดยใช้เว็บไซต์ Virustotal

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

ในกรณีที่สแกนแล้วไม่พบข้อมูล หรือข้อมูลที่ได้รับไม่เพียงพอต่อการแก้ไขปัญหา ก็จำเป็นที่จะต้องทำการวิเคราะห์มัลแวร์เอง ซึ่งก็มีวิธีการหลักๆ อยู่ด้วยกัน 2 วิธี คือ Behavior Analysis และ Code Analysis

Behavior Analysis

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

ข้อมูลเบื้องต้นที่จะได้จากการวิเคราะห์ด้วยวิธีนี้ เช่น

  • ไฟล์ที่ถูกสร้าง/แก้ไข/ลบ
  • Registry ที่เกี่ยวข้อง
  • การแก้ไขการตั้งค่าระบบ
  • Service ที่มัลแวร์สร้างขึ้นหรือใช้งาน
  • การเชื่อมต่อเครือข่าย

โดยทั่วไปการวิเคราะห์ด้วยวิธีนี้จะทำในระบบจำลองโดยใช้ Virtual Machine (เช่น VirtualBox หรือ VMWare) เนื่องจากมีข้อดีคือเป็นระบบที่สามารถควบคุมสภาวะแวดล้อมได้ง่าย (เช่น จำนวน CPU หรือรูปแบบการเชื่อมต่อเครือข่าย) และสามารถทำ Snapshot เพื่อบันทึกสถานะของระบบในขณะนั้น และย้อนกลับคืนเหตุการณ์เพื่อทดสอบพฤติกรรมในรูปแบบอื่นๆ ได้ ตัวอย่างการวิเคราะห์มัลแวร์โดยใช้ Virtual Machine เป็นดังรูปที่ 3


รูปที่ 3 ตัวอย่างการวิเคราะห์มัลแวร์โดยใช้ Virtual Machine

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

Code Analysis

มีอีกชื่อหนึ่งว่า Static Analysis เป็นการวิเคราะห์โค้ดเพื่อทำความเข้าใจฟังก์ชันการทำงานของมัลแวร์ สิ่งที่ต้องทำคือการ Reverse Engineer เพื่อดูโค้ดของโปรแกรมในแบบภาษาเครื่อง (เช่น ภาษา Assembly) และใช้วิธีการ Debug เพื่อทดสอบการทำงานในส่วนของโค้ดที่น่าสงสัย ตัวอย่างโปรแกรม IDA ที่ใช้วิเคราะห์มัลแวร์แบบ Code Analysis เป็นดังรูปที่ 4


รูปที่ 4 ตัวอย่างการ Reverse Engineer โดยใช้โปรแกรม IDA (ที่มา Hex-Rays [4])

การวิเคราะห์ด้วยวิธีนี้มีข้อเสียคือทำได้ยาก เพราะต้องใช้ความรู้ระดับ Low-level language และใช้เวลานานในกรณีที่เป็นมัลแวร์ที่มีความซับซ้อนสูง แต่มีข้อดีคือถ้าวิเคราะห์โค้ดได้ทั้งหมดก็สามารถเข้าใจทุกฟังก์ชันการทำงานของมัลแวร์

ข้อควรระวัง

การวิเคราะห์มัลแวร์ ไม่ว่าจะด้วยวิธีใดก็ตาม จำเป็นต้องทำในระบบปิด นั่นคือต้องไม่ทำในเครื่องที่สามารถเชื่อมต่อกับระบบเครือข่ายภายนอกได้ เพื่อป้องกันไม่ให้มัลแวร์หลุดรอดออกไปสร้างความเสียหายกับระบบอื่นๆ หากเป็นไปได้ควรทำในระบบ Virtual Machine ที่อัพเดตแพทช์เป็นเวอร์ชันล่าสุดทั้งตัวโปรแกรมและระบบปฏิบัติการ

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

สำหรับเนื้อหาของบทความ “การวิเคราะห์มัลแวร์เบื้องต้น ตอนที่ 1” นี้ก็คงจะเป็นการเกริ่นนำที่มาคร่าวๆ เพียงเท่านี้ก่อน สำหรับตอนที่ 2 จะเป็นเนื้อหาเกี่ยวกับการวิเคราะห์มัลแวร์ด้วยวิธี Behavior Analysis และตอนที่ 3 จะเป็นวิธี Code Analysis ซึ่งจะนำเสนอในโอกาสต่อไป

อ้างอิง

  1. http://www.kaspersky.com/internet-security-center/threats/malware-classifications
  2. http://pcsupport.about.com/od/tipstricks/a/execfileext.htm
  3. https://www.thaicert.or.th/papers/general/2012/pa2012ge008.html
  4. https://www.hex-rays.com/products/ida/
Clear