fangoogle
18-08-2009, 07:41 PM
ดนตรีเริ่มบรรเลงภายในห้องอีกครั้ง หากเงี่ยหูฟังอย่างตั้งใจเราจะได้ยินเสียงคุยตอบโต้กันระหว่างโปรแกรมแต่ละ ตัว ชั่วขณะหนึ่งที่ผมมองโปรแกรมต่างๆ ผ่านนัยน์ตาไวรัส คำถามก็ผุดพรายขึ้นมาเหมือนฟองอากาศโผล่พ้นผิวน้ำ อะไรที่ทำให้เราเป็นมนุษย์ ใช่เพราะเราคิดได้อย่างนั้นหรือ โปรแกรมเหล่านี้ก็คิดได้เช่นกัน แล้วอะไรคือความแตกต่างระหว่างเรากับพวกมัน
ที่ สุดแล้วข้อสรุปของความเป็นมนุษย์ อาจเพราะเรามีอารมณ์ หัวเราะได้เมื่อได้ยินเรื่องตลก โศกเศร้าเมื่อเจอเรื่องกระทบจิตใจ และพร้อมกับการกระทำที่ส่วนมากจะไร้ตรรกะเหตุผลรองรับอยู่เสมอ มันน่าขันสิ่งที่แยกระหว่างเรากับโปรแกรมกลับเป็นสิ่งที่ดูสามัญที่สุด สำหรับเรา
หญิงสาวคนหนึ่งที่มุมห้องเดินนวยนาดมาใกล้ ขณะเดียวกันที่หน้าประตูทางเข้า นายตรวจสองนายก็ย่างเท้าเข้ามาในห้องพอดี
"สวัสดี ตอนดึก" เธอกล่าวอย่างแช่มช้า ส่งสายตาหยาดเยิ้มเชื้อเชิญ เสียงพูดแทบจะเป็นจังหวะเดียวกับดนตรีที่อ้อยอิ่ง ช่วงนั้นเองที่นายตรวจกวดตามองผ่านกลุ่มโปรแกรมที่นั่งทำงานอยู่ บางโปรแกรมชะงักครู่หนึ่งก่อนจะก้มหน้าทำงานต่อ
"ฉันเห็นคุณนั่งอยู่นานแล้ว คุณเป็นโปรแกรมประเภทไหน" พูดพลางเอื้อมเรียวงามลูบบนหลังมือที่วางบนโต๊ะของผม
เสียง เอะอะดังขึ้นที่ใกล้ประตู นายตรวจดึงเอาร่างโปรแกรมที่นั่งคุดคู้ออกมากลางลานห้อง เสียงเพลงเริ่มเร่งระดับขึ้น นายตรวจอีกคนจ้องข:-)พูดเสียงขึงขัง "มันเป็นไวรัส" จากนั้นก็ทาบฝ่ามือลงบนตัวโปรแกรม เพียงชั่วอึดใจเดียวร่างนั้นก็ลุกไหม้เหลือเพียงเถ้าถ่านหย่อมหนึ่งกองบน พื้น เพียงมองปราดผมก็รู้ทันทีการตรวจผิดพลาด เพราะนั่นแค่โปรแกรมแคร็กไม่ใช่ไวรัส
ในช่วงจังหวะเศษเสี้ยว วินาทีของเหตุการณ์นั้น มีสิ่งผิดปกติบังเกิดขึ้น ปลายนิ้วมือของหญิงสาวซึ่งอยู่ตรงหน้าได้ปล่อยกลุ่มโค้ดเข้าคำสั่งบางอย่าง แฝงแทรกลงบนมือผม มันเป็นการรับรู้ที่แปลกประหลาดยิ่ง ไม่ว่าเสียงดนตรีที่เร่งเร้าขึ้นตามจังหวะ เปลวไฟลุกไหม้จากการทำลายโปรแกรมของนายตรวจ โปรแกรมอื่นที่กำลังรับส่งข้อมูลกัน ทุกอย่างผ่านเข้ามาในการตระหนักรู้ทางร่างสถิตที่ผมสร้าง แต่ไม่ทันจะเกิดอะไรขึ้นเธอแทบจะชักมือกลับไปทันที จากนั้นเอียงหน้าเข้ามาพูดกระซิบใกล้ๆ
"คุณเป็นเหมือนกับฉัน"
ผมพยักหน้าแทนคำตอบ ใช่แล้วผมเป็นไวรัสเหมือนกับเธอ
++++++++++++++++++
ทำไม โปรแกรมแคร็กบางไฟล์จึงถูกมองว่าเป็นไวรัส ทำไมไวรัสบางตัวโปรแกรมจึงตรวจจับไม่ได้ ไวรัสกลายพันธุ์ได้อย่างไร คำตอบนั้นรอให้ท่านอ่านต่อจากนี้ครับ
เพื่อจะเข้าใจไวรัสยิ่ง ขึ้น เราต้องย้อนกลับไปยังสิ่งที่เป็นพื้นฐานที่สุดของมัน ซึ่งก็คือต้นกำเนิดนั่นเอง เราต้องเข้าใจกันก่อนว่าโดยปกติแล้วตัวไวรัสไม่ได้กำเนิดมาจากเวทย์มนต์ โบราณ หรือคำสาปแช่งภูตผีปีศาจแต่อย่างใด ถึงแม้ว่าหน้าตาของคนเขียนไวรัสบางคนจะหน้าตาเหมือนผุดจากนรกก็ตาม(นี่อาจจะ เป็นความจริงเพียงหนึ่งเดียวก็ได้)
ไวรัส, สปายแวร์, เวิร์ม, โทรจัน หรือเรียกรวมๆ ว่า มาลแวร์ (malware = malicious-logic software) แม้จะแบ่งแยกกันหลากประเภท แต่สิ่งเดียวที่พวกมันเป็นก็คือ โปรแกรมคอมพิวเตอร์ ซึ่งแน่นอนว่าถูกสร้างจากมนุษย์ด้วยการเขียนชุดคำสั่งจากภาษาคอมพิวเตอร์ นั่นเอง
ตัวภาษาคอมพิวเตอร์แทบทุกภาษาเราสามารถนำมาเขียนเป็น ไวรัสได้ทั้งนั้น ตรงจุดนี้เองที่สร้างปัญหาให้กับโปรแกรมป้องกันไวรัส เพราะไวรัสถูกสร้างขึ้นมาใหม่ทุกวัน การจะป้องกันไวรัสที่โผล่ออกมาอาละวาดต้องอาศัยระบบ virus signature คือ การตรวจสอบข้อมูลไฟล์ โดยดูจากลักษณะการเรียงลำดับข้อมูลในไฟล์ที่ต้องสงสัย ว่าเป็นไวรัสหรือไม่โดยเทียบจากฐานข้อมูลที่มีอยู่ในโปรแกรม
เช่น ให้ตรวจดูข้อมูลในไฟล์ถ้ามีข้อมูลเป็น 75 61 56 F7 E1 68 4C 2C 73 7A ตรงครบถ้วนทุกไบต์ให้ถือว่าไฟล์นี้เป็นไวรัสหรือติดไวรัสทันที (บางโปรแกรมจะมีการเช็ค Address มากกว่าหนึ่งตำแหน่งเพื่อป้องกันความผิดพลาด)
http://pic.citec.us/out.php/i17162_1.png
ซึ่งข้อเสียของการตรวจสอบแบบนี้ คือต้องอัปเดท virus signature อยู่เสมอจึงจะรู้จักไวรัสพันธุ์ใหม่ๆ และข้อเสียอย่างยิ่งยวดก็คือ ต้องมีคนรับเคราะห์ติด[hide=5]ไวรัสตัวนั้นเสียก่อนจึงจะมีการอัปเดทข้อมูลไวรัส (ข่าวลือ - บริษัทป้องกันไวรัสแอบสร้างไวรัสเสียเอง แล้วปล่อยไวรัสให้แพร่กระจาย จากนั้นก็อ้างว่าโปรแกรมตัวเองอัปเดทไวรัสนั้นก่อนบริษัทอื่น เพื่อให้คนหันมาซื้อโปรแกรมของบริษัทนั้นๆ)
อีกวิธีหนึ่งที่ โปรแกรมป้องกันไวรัสใช้ก็คือ heuristic (หรือชื่ออื่นแต่หลักๆ แล้วรูปแบบการทำงานเหมือนกัน) คือการตรวจสอบพฤติกรรมที่น่าสงสัยซึ่งไปกระตุ้นระบบภูมิคุ้มกันให้ทำงาน เช่น ไวรัสชอบเข้าไปตั้งค่าใน Registry ในส่วน Run , ไวรัสแอบเปิดพอร์ตบางพอร์ตในเครื่อง, ไวรัสเข้าไปเขียนข้อมูลในไฟล์ Autorun เหล่านี้จะถูกระบุเป็นพฤติกรรมที่ต้องสงสัย โปรแกรมป้องกันไวรัสเมื่อตรวจพบพฤติกรรมที่ต้องสงสัย ก็จะทำการแสกนโปรแกรมนั้นดูอีกครั้งว่าเป็นไวรัสหรือเปล่า บางโปรแกรมอาจจะแจ้งเตือนให้เรารู้เพื่อตรวจสอบเอง
อย่างไรก็ตาม ระบบการป้องกันแม้จะซับซ้อนความผิดพลาดย่อมเกิดขึ้นได้ ดูตัวอย่างในรูปด้านล่างนี้นะครับ ไฟล์แคร็กไฟล์หนึ่งถูกมองว่าเป็น Virus/Worm ทั้งที่ความจริงแล้วไม่ใช่ ความผิดพลาดนี้เกิดจากการตรวจ signature ที่ผิดพลาด เพราะไฟล์โปรแกรมดังกล่าวดันมี signature เหมือนกับไวรัส
ทำไม signature ถึงเหมือนไวรัส ต้นเหตุก็ต้องย้อนกลับไปตรงภาษาคอมพิวเตอร์ที่ใช้งานครับ เมื่อเราเขียนคำสั่งเสร็จแล้ว เราจะทำให้กลายเป็นไฟล์ .exe (executable) ก็ต้องนำไฟล์คำสั่งมา Compile(การแปลคำสั่งในภาษาระดับสูงต่างๆ เป็นภาษาที่เครื่องคอมพิวเตอร์เข้าใจ)
ตรงนี้เองที่เป็นปัญหา เพราะโปรแกรมนอกสารบบส่วนใหญ่จะสร้างมาจาก Compiler เฉพาะตัว และเมื่อมีคนสร้างไวรัสแล้วนำ Compiler ดังกล่าวมาใช้ โปรแกรมป้องกันไวรัสก็จะตีตราว่าโปรแกรมที่สร้างมาจาก Compiler นั้นๆ ว่าเป็นไวรัสทันที ผลที่ตามมาก็คือโปรแกรมแคร็กหรือตัวสร้างคีย์ลงทะเบียนที่ผ่านการ Compile มาจากตัว Compiler เดียวกันจะถูกมองว่าเป็นไวรัสด้วยเช่นกัน แม้จะไม่ใช่ก็ตาม
ถ้าท่านอยากจะตรวจว่าไฟล์โปรแกรมที่อยู่ใน เครื่องใช้อะไร Compile มาก็มีวิธีนะครับ โดยใช้โปรแกรม Hash & Crypto Detector ตรวจดู(โปรแกรมนี้เป็นฟรีแวร์หาได้จาก Google) วิธีการตรวจสอบก็แค่ลากไฟล์โปรแกรมมาวางไว้บนหน้าต่างโปรแกรม ตามตัวอย่างดังนี้
CyberLink PowerDVD 9 ใช้ Compiler คือ Microsoft Visual C++ 8.0 - 9.0
http://pic.citec.us/out.php/i17164_2.png
ที่ สุดแล้วข้อสรุปของความเป็นมนุษย์ อาจเพราะเรามีอารมณ์ หัวเราะได้เมื่อได้ยินเรื่องตลก โศกเศร้าเมื่อเจอเรื่องกระทบจิตใจ และพร้อมกับการกระทำที่ส่วนมากจะไร้ตรรกะเหตุผลรองรับอยู่เสมอ มันน่าขันสิ่งที่แยกระหว่างเรากับโปรแกรมกลับเป็นสิ่งที่ดูสามัญที่สุด สำหรับเรา
หญิงสาวคนหนึ่งที่มุมห้องเดินนวยนาดมาใกล้ ขณะเดียวกันที่หน้าประตูทางเข้า นายตรวจสองนายก็ย่างเท้าเข้ามาในห้องพอดี
"สวัสดี ตอนดึก" เธอกล่าวอย่างแช่มช้า ส่งสายตาหยาดเยิ้มเชื้อเชิญ เสียงพูดแทบจะเป็นจังหวะเดียวกับดนตรีที่อ้อยอิ่ง ช่วงนั้นเองที่นายตรวจกวดตามองผ่านกลุ่มโปรแกรมที่นั่งทำงานอยู่ บางโปรแกรมชะงักครู่หนึ่งก่อนจะก้มหน้าทำงานต่อ
"ฉันเห็นคุณนั่งอยู่นานแล้ว คุณเป็นโปรแกรมประเภทไหน" พูดพลางเอื้อมเรียวงามลูบบนหลังมือที่วางบนโต๊ะของผม
เสียง เอะอะดังขึ้นที่ใกล้ประตู นายตรวจดึงเอาร่างโปรแกรมที่นั่งคุดคู้ออกมากลางลานห้อง เสียงเพลงเริ่มเร่งระดับขึ้น นายตรวจอีกคนจ้องข:-)พูดเสียงขึงขัง "มันเป็นไวรัส" จากนั้นก็ทาบฝ่ามือลงบนตัวโปรแกรม เพียงชั่วอึดใจเดียวร่างนั้นก็ลุกไหม้เหลือเพียงเถ้าถ่านหย่อมหนึ่งกองบน พื้น เพียงมองปราดผมก็รู้ทันทีการตรวจผิดพลาด เพราะนั่นแค่โปรแกรมแคร็กไม่ใช่ไวรัส
ในช่วงจังหวะเศษเสี้ยว วินาทีของเหตุการณ์นั้น มีสิ่งผิดปกติบังเกิดขึ้น ปลายนิ้วมือของหญิงสาวซึ่งอยู่ตรงหน้าได้ปล่อยกลุ่มโค้ดเข้าคำสั่งบางอย่าง แฝงแทรกลงบนมือผม มันเป็นการรับรู้ที่แปลกประหลาดยิ่ง ไม่ว่าเสียงดนตรีที่เร่งเร้าขึ้นตามจังหวะ เปลวไฟลุกไหม้จากการทำลายโปรแกรมของนายตรวจ โปรแกรมอื่นที่กำลังรับส่งข้อมูลกัน ทุกอย่างผ่านเข้ามาในการตระหนักรู้ทางร่างสถิตที่ผมสร้าง แต่ไม่ทันจะเกิดอะไรขึ้นเธอแทบจะชักมือกลับไปทันที จากนั้นเอียงหน้าเข้ามาพูดกระซิบใกล้ๆ
"คุณเป็นเหมือนกับฉัน"
ผมพยักหน้าแทนคำตอบ ใช่แล้วผมเป็นไวรัสเหมือนกับเธอ
++++++++++++++++++
ทำไม โปรแกรมแคร็กบางไฟล์จึงถูกมองว่าเป็นไวรัส ทำไมไวรัสบางตัวโปรแกรมจึงตรวจจับไม่ได้ ไวรัสกลายพันธุ์ได้อย่างไร คำตอบนั้นรอให้ท่านอ่านต่อจากนี้ครับ
เพื่อจะเข้าใจไวรัสยิ่ง ขึ้น เราต้องย้อนกลับไปยังสิ่งที่เป็นพื้นฐานที่สุดของมัน ซึ่งก็คือต้นกำเนิดนั่นเอง เราต้องเข้าใจกันก่อนว่าโดยปกติแล้วตัวไวรัสไม่ได้กำเนิดมาจากเวทย์มนต์ โบราณ หรือคำสาปแช่งภูตผีปีศาจแต่อย่างใด ถึงแม้ว่าหน้าตาของคนเขียนไวรัสบางคนจะหน้าตาเหมือนผุดจากนรกก็ตาม(นี่อาจจะ เป็นความจริงเพียงหนึ่งเดียวก็ได้)
ไวรัส, สปายแวร์, เวิร์ม, โทรจัน หรือเรียกรวมๆ ว่า มาลแวร์ (malware = malicious-logic software) แม้จะแบ่งแยกกันหลากประเภท แต่สิ่งเดียวที่พวกมันเป็นก็คือ โปรแกรมคอมพิวเตอร์ ซึ่งแน่นอนว่าถูกสร้างจากมนุษย์ด้วยการเขียนชุดคำสั่งจากภาษาคอมพิวเตอร์ นั่นเอง
ตัวภาษาคอมพิวเตอร์แทบทุกภาษาเราสามารถนำมาเขียนเป็น ไวรัสได้ทั้งนั้น ตรงจุดนี้เองที่สร้างปัญหาให้กับโปรแกรมป้องกันไวรัส เพราะไวรัสถูกสร้างขึ้นมาใหม่ทุกวัน การจะป้องกันไวรัสที่โผล่ออกมาอาละวาดต้องอาศัยระบบ virus signature คือ การตรวจสอบข้อมูลไฟล์ โดยดูจากลักษณะการเรียงลำดับข้อมูลในไฟล์ที่ต้องสงสัย ว่าเป็นไวรัสหรือไม่โดยเทียบจากฐานข้อมูลที่มีอยู่ในโปรแกรม
เช่น ให้ตรวจดูข้อมูลในไฟล์ถ้ามีข้อมูลเป็น 75 61 56 F7 E1 68 4C 2C 73 7A ตรงครบถ้วนทุกไบต์ให้ถือว่าไฟล์นี้เป็นไวรัสหรือติดไวรัสทันที (บางโปรแกรมจะมีการเช็ค Address มากกว่าหนึ่งตำแหน่งเพื่อป้องกันความผิดพลาด)
http://pic.citec.us/out.php/i17162_1.png
ซึ่งข้อเสียของการตรวจสอบแบบนี้ คือต้องอัปเดท virus signature อยู่เสมอจึงจะรู้จักไวรัสพันธุ์ใหม่ๆ และข้อเสียอย่างยิ่งยวดก็คือ ต้องมีคนรับเคราะห์ติด[hide=5]ไวรัสตัวนั้นเสียก่อนจึงจะมีการอัปเดทข้อมูลไวรัส (ข่าวลือ - บริษัทป้องกันไวรัสแอบสร้างไวรัสเสียเอง แล้วปล่อยไวรัสให้แพร่กระจาย จากนั้นก็อ้างว่าโปรแกรมตัวเองอัปเดทไวรัสนั้นก่อนบริษัทอื่น เพื่อให้คนหันมาซื้อโปรแกรมของบริษัทนั้นๆ)
อีกวิธีหนึ่งที่ โปรแกรมป้องกันไวรัสใช้ก็คือ heuristic (หรือชื่ออื่นแต่หลักๆ แล้วรูปแบบการทำงานเหมือนกัน) คือการตรวจสอบพฤติกรรมที่น่าสงสัยซึ่งไปกระตุ้นระบบภูมิคุ้มกันให้ทำงาน เช่น ไวรัสชอบเข้าไปตั้งค่าใน Registry ในส่วน Run , ไวรัสแอบเปิดพอร์ตบางพอร์ตในเครื่อง, ไวรัสเข้าไปเขียนข้อมูลในไฟล์ Autorun เหล่านี้จะถูกระบุเป็นพฤติกรรมที่ต้องสงสัย โปรแกรมป้องกันไวรัสเมื่อตรวจพบพฤติกรรมที่ต้องสงสัย ก็จะทำการแสกนโปรแกรมนั้นดูอีกครั้งว่าเป็นไวรัสหรือเปล่า บางโปรแกรมอาจจะแจ้งเตือนให้เรารู้เพื่อตรวจสอบเอง
อย่างไรก็ตาม ระบบการป้องกันแม้จะซับซ้อนความผิดพลาดย่อมเกิดขึ้นได้ ดูตัวอย่างในรูปด้านล่างนี้นะครับ ไฟล์แคร็กไฟล์หนึ่งถูกมองว่าเป็น Virus/Worm ทั้งที่ความจริงแล้วไม่ใช่ ความผิดพลาดนี้เกิดจากการตรวจ signature ที่ผิดพลาด เพราะไฟล์โปรแกรมดังกล่าวดันมี signature เหมือนกับไวรัส
ทำไม signature ถึงเหมือนไวรัส ต้นเหตุก็ต้องย้อนกลับไปตรงภาษาคอมพิวเตอร์ที่ใช้งานครับ เมื่อเราเขียนคำสั่งเสร็จแล้ว เราจะทำให้กลายเป็นไฟล์ .exe (executable) ก็ต้องนำไฟล์คำสั่งมา Compile(การแปลคำสั่งในภาษาระดับสูงต่างๆ เป็นภาษาที่เครื่องคอมพิวเตอร์เข้าใจ)
ตรงนี้เองที่เป็นปัญหา เพราะโปรแกรมนอกสารบบส่วนใหญ่จะสร้างมาจาก Compiler เฉพาะตัว และเมื่อมีคนสร้างไวรัสแล้วนำ Compiler ดังกล่าวมาใช้ โปรแกรมป้องกันไวรัสก็จะตีตราว่าโปรแกรมที่สร้างมาจาก Compiler นั้นๆ ว่าเป็นไวรัสทันที ผลที่ตามมาก็คือโปรแกรมแคร็กหรือตัวสร้างคีย์ลงทะเบียนที่ผ่านการ Compile มาจากตัว Compiler เดียวกันจะถูกมองว่าเป็นไวรัสด้วยเช่นกัน แม้จะไม่ใช่ก็ตาม
ถ้าท่านอยากจะตรวจว่าไฟล์โปรแกรมที่อยู่ใน เครื่องใช้อะไร Compile มาก็มีวิธีนะครับ โดยใช้โปรแกรม Hash & Crypto Detector ตรวจดู(โปรแกรมนี้เป็นฟรีแวร์หาได้จาก Google) วิธีการตรวจสอบก็แค่ลากไฟล์โปรแกรมมาวางไว้บนหน้าต่างโปรแกรม ตามตัวอย่างดังนี้
CyberLink PowerDVD 9 ใช้ Compiler คือ Microsoft Visual C++ 8.0 - 9.0
http://pic.citec.us/out.php/i17164_2.png