Wednesday, September 25, 2013

Virus Signature - รหัสลับไวร้สมหาประลัย

     ความหมายของ Virus Signature เนี่ยนะมันหมายถึงกลุ่มตัวอักศรเป็น bit หรือเป็นชุดของเลขฐานเฉพาะของไวรัสคอมพิวเตอร์แต่ละช นิด พูดไปมันก็เหมือนลายนิ้วมือของคนเลยเนี่ยละครับซึ่งพ วกโปรแกรม Anti-Virus เขาเอาไว้ตรวจสอบโดยดูจากรหัส Virus Signature นี้ได้

     มีคนบอกว่า Virus Signature นั้นใช้กับ Anti-Virus ยุค 80s - 90s เท่านั้นปัจจุบันนี้ไม่มีแล้ว เป็นเรื่องไม่จริงครับ ปัจจุบันนี้ยังคงใช้ Virus Signature อยู่ ถ้าตำรวจไม่ตรวจลายนิ้วมือแล้วจะให้ไปตรวจจากที่ไหน ? Virus เช่นเดียวกันครับ และนี่คือตัวอย่างของ Virus Signature

                    A6 7C FD 1B 45 82 90 1D 6F 3C 8A OF 96 18 A4 C3 4F FF 0F 1D

     เป็น Virus Signature เฉพาะของไวรัสที่มีชื่อว่า "Doctor Evil" โดยส่วนมากแล้วนะครับ Virus Signature จะอยู่ในรูปแบบของชุดเลขฐาน 16 ก็คือ 0123456789ABCDEF ... "ว่าแต่เขาคิดคำนวนหาค่า Virus Signature นี้กันยังไงหนอ ?" คำตอบนี้ยาวแล้วยังค่อนข้างจะซับซ้อนพอดูเลยละท่าน

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

                                                                   A3 B7 11 00

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

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

     แบบจำลอง Markov เป็นแบบจำลองทางคณิตศาสตร์ที่ใช้วิเคราะห์พฤติกรรมของตัวแปรเพื่อพยากรณ์พฤติกรรมของตัวแปรในอนาคต แต่มีเงื่อนไขอยู่ว่า


1.ปัญหาที่จะใช้แบบจำลองมาร์คอฟจะต้องสามารถแจกแจงสถานะ (state) ของบุคคลหรือสิ่งที่กำลังศึกษาได้
2.ต้องมีข้อมูลความน่าจะเป็นปัจจุบันเกี่ยวกับการเกิดสถานะต่างๆ (state probability)
3.ต้องมีข้อมูลความน่าจะเป็นในการเกิดเหตุการณ์ในอนาคต เกี่ยวกับการคงอยู่ในสถานะเดิมหรือเปลี่ยนแปลงสถานะใหม่เรียกความน่าจะเป็นนี้ว่าความน่าจะเป็นของการเปลี่ยนสถานะ (transition rob-ability)


     แบบ จำลอง Markov เนี่ยนะครับ ประโยชน์คือไว้สำหรับการตลาดไปวิเคราะห์ความเป็นไปได้ในการเลือกบริโภคของ ลูกค้า เปรียบเทียบกับคู่แข่งด้วย

     กลับมาเรื่องเดิมครับ ... ลอง ๆ เปรียบเทียบไปมาแล้วก็ดูว่าง่ายในการตรวจว่าไฟล์ไหนบ้างที่มีเชื้อไวรัสอยู่ ที่ต้องการก็แค่ชุดเลขฐานหรือ Signature ที่ค่อนข้างจะเอาแน่เอานอนได้ครับ แต่ถ้าเกิดไอ้ไวรัสนี่มันเปลี่ยนนิดหน่อยไม่ก็เข้ารหัสตัวมันเองใหม่บางที อาจจะบีบอัดตัวเองในกรณีนี้ขอบอกว่าการตรวจหาการติดเชื้อไม่ใช่เรื่องง่าย อีกต่อไปแล้วครับ อาจต้องอาศัยเวลาเยอะขึ้นกว่าจะมาแกะมันรอยมันออกได้ แล้วต้องแกะออกให้ถูกต้องชัดเจนอีกด้วย

     คิดจะตรวจสอบไวรัสที่มันซับ ซอนแล้ว เราก็ต้องมีเทคนิคที่ดีอย่างเช่น Generic Emulation เทคนิคนี้ใช้มากโดยบริษัท Symantec เท่าที่เขาเล่าไว้ได้ยินมาว่า คนแรกที่คิดเอาวิธีนี้มาใช้ในการตรวจจับไวรัสเนี่ยก็ คือ Carey Nachenberg หัวหน้าสถาปนิกใน Symantec’s Antivirus Labs นั่นเอง

     วิธีนี้ก็คือ จะเริ่ม Scan โปรแกรมต่าง ๆ แล้วลองมาทำเลียนแบบดูบ้างโดยอาศัยโครงสร้างภาษา C ทุก ๆ ที่บนหน่วยความจำเราจะวิเคราะห์ให้หมด ทำแบบนี้เรื่อยไป โปรแกรมไหนมาถอดรหัสหรือแตกจากการบีบอัดออกมาได้ไวรั สตัวเป็น ๆ โดยดูจาก Signature แล้ว Signature นี้ต้องมีอยู่ในฐานข้อมูลด้วยนะครับ แต่มันก็เป็นไปได้ถ้าเกิดการทำ Generic Emulation นี้มีขั้นตอนที่นานเกินไปจนไวรัสมันสร้างตัวมันเองไป ในอีกรูปแบบลงบนหน่วยความจำ ทีนี้ละงานเข้าแล้วครับพี่น้องครับ !!!

     ทั้ง หมดนี้ที่พูดไปก็เพียงแค่คร่าว ๆ ครับ พอที่จะบอกได้ว่า Anti-Virus มองหาไวรัสได้ยังไง ขั้นตอนมันซับซ้อนนะแต่คอมพิวเตอร์เราก็ทำเรียกว่าตด ไม่ทันหายเหม็นมันก็เสร็จแล้ว (หืออ ยังเหม็นอยู่เลย) ลองดูทาง Norton Antivirus เขาใช้ Signatures นิดหน่อยรวม ๆ แล้วไม่กี่ byte แบบนี้ก็ช่วยให้ทำงานได้เร็วขึ้นเยอะเลยครับเพราะว่า prefix หรือคำนำหน้ามันช่วยให้ค้นหาได้ไว แล้วเป็นอะไรที่เครื่องตระกูล 80×86 machine code ใช้กันบ่อยเหลือเกิน แต่ก็นะไม่ใช่ว่าจะทำอย่างนี้ได้กับไวรัสทุกตัวไป

     สรุปเลยครับ คุณ Takuma_Gear จากเว็บ www.gotoknow.org อธิบายคร่าว ๆ ไว้ว่า Virus Signature คือ รูปแบบของการติดเชื้อมีลักษณะเป็นกลุ่มของไบต์ หรือเลขฐาน ไฟล์ไหนติดเชื้อไฟล์นั้นย่อมมี Virus Signature ชนิดนั้น ๆ เมื่อค้นหา Virus Signature ในไฟล์แล้วพบว่ามีค่าบางส่วนของไฟล์ดันตรงกับค่าของ Virus Signature นั่นละครับงานเข้า เราสามารถระบุชนิดของไวรัสได้จากเลขฐานกลุ่มนั้น ด้านล่างนี้เป็นตัวอย่างของค่า Virus Signature เพื่อให้ตรวจสอบ

MBL_15721=7a31332e7a75706c6f61642e636f6d
MBL_15722=7777772e75706c6f61646875742e636f6d
MBL_15724=7777772e66696c6573786665722e636f6d2f
MBL_15952=6d736775726c30302e636f6d2e7361706f2e7074 2f6d7367


     ประโยค หน้าเครื่องหมายเท่ากับ (=) เช่น MBL_15721 จะเป็นรหัสของไวรัสชนิดต่างๆ ส่วนค่า เลขฐาน 16 หลังเท่ากับนั้นก็ค่าของ Virus Signature เอาไว้ใช้เปรียบเทียบกับข้อมูลในไฟล์ต่าง ๆ ได้ด้วย

     เรื่องไวรัสนี่ มันยาวจริง ๆ ครับ วันนี้พูดไปเฉพาะเรื่องของ Virus Signature เท่านั้นเอง ยังมีอีกเยอะที่อยากจะเล่าให้ฟังแต่คงต้องไว้วันหน้า ละครับ ขอขอบคุณสำหรับการอ่านทั้งที่อ่านเข้าใจและไม่เข้าใจ สำหรับวันนี้ ราตรีสวัสด พี่น้องชาวไทย .


Credit :

What is a virus signature? Are they still used? - Agustín’s Blog
http://www.agusblog.com/wordpress/wh...ill-used-3.htm

บทที่ 7 แบบจำลองมาร์คอฟ (Markov Model)
http://www.management.cmru.ac.th/hom...01/lesson7.pdf

Virus Signature - www.gotoknow.org - Takuma_Gear
http://www.gotoknow.org/blogs/posts/...esh_cache=true..

No comments:

Post a Comment