วันพุธที่ 30 มกราคม พ.ศ. 2556

จะตรวจสอบได้อย่างไรว่าเครื่องติดไวรัส


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

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

เมื่อไวรัสฝังติดหน่วยความจำ
        โปรแกรมที่ฝังติดหน่วยความจำ หรือ Memory-resident program เป็นโปรแกรมที่อาจจะถูกบรรจุ และค้างอยู่ในพื้นที่ของหน่วยความจำหลักของระบบหลังจากถูกเอ็กซิคิวต์ ซึ่งถ้าโปรแกรมดังกล่าวเป็นโปรแกรมไวรัสนั้นจะทิ้งส่วนของโปรแกรมไวรัสบางส่วนไว้ในหน่วยความจำ เพื่อคอยเฝ้าดูว่าถ้ามีเหตุการณ์ที่ตรงกับเงื่อนไขที่ไวรัสตั้งไว้ทำให้ส่วนของไวรัสเริ่มทำงานต่อไป เช่นไวรัสที่มีการทำงานทุกวันที่ 20 มีนาคม (Date Trigger) หรือทำงานทุกครั้งเมื่อผู้ใช้กดปุ่ม "x" บนแป้นพิมพ์ (Key Trigger) เป็นต้น
        วิธีการค้นหาว่ามีโปรแกรมไวรัสฝังตัวอยู่ในหน่วยความจำหรือไม่ จำเป็นต้องอาศัยโปรแกรม Task Manager ที่เป็นเครื่องมือที่มาพร้อมกับระบบปฏิบัติการวินโดวส์ทุกเวอร์ชัน โดยที่ถ้าเป็นระบบปฏิบัติการวินโดวส์ 95/98/ME ให้กดปุ่ม Ctrl-Alt-Del จะได้ผลดังรูปที่ และถ้าเป็นระบบปฏิบัติการวินโดวส์ NT 2000 และ XP ให้ทำการกด Ctrl-Shift-Esc จะได้ผลดังรูปที่ จากทั้งสองรูปจะเห็นว่าโปรแกรม Task Manager จะแสดงรายชื่อโพรเซสทั้งหมดที่รันอยู่ในหน่วยความจำ ดังนั้นถ้าแน่ใจว่าโพรเซสใดเป็นของไวรัสแล้ว ก็ทำการยุติการทำงานของโพรเซสนั้น โดยการเลือกโพรเซสที่แน่ใจว่าเป็นไวรัสแล้วกดปุ่ม End Task สำหรับระบบปฏิบัติการวินโดวส์ 95/98/ME หรือกดปุ่ม End Process สำหรับระบบปฏิบัติการวินโดวส์ NT 2000 และXP
        หมายเหตุ การยุติการทำงานของโพรเซสที่แน่ใจว่าเป็นโพรเซสของไวรัสนั้นก็อาจจะมีความเสี่ยงที่จะเกิดผลลัพธ์อันไม่พึงประสงค์ เช่น การเกิดหน้าจอสีฟ้า (Blue Screen of Death) หรือ ส่งผลให้ระบบทำการรีสตาร์ท เป็นต้น ดังนั้นการที่จะแน่ใจว่าโพรเซสนั้นอาจจะต้องทำการศึกษาจากคู่มือของระบบปฏิบัติการก่อนว่าเป็นโพรเซสของระบบปฏิบัติการหรือโปรแกรมที่ใช้งานอยู่หรือไม่ หรือค้นหาข้อมูลของโพรเซสนั้นๆ ในอินเทอร์เน็ต ถ้าผลจากการค้นหาไม่บ่งบอกว่าเป็นโพรเซสของไวรัส ก็ควรที่จะปล่อยทิ้งไว้ เพื่อป้องกันความเสี่ยงที่จะเกิดขึ้น

รูปที่ 1 โปรแกรม Task Manager ของระบบปฏิบัติการวินโดวส์ 98

รูปที่ โปรแกรม Task Manager ของระบบปฏิบัติการวินโดวส์ 2000

สร้างโพรเซสหลอกลวง
        ไวรัสจะพยายามใช้ชื่อโพรเซสที่เด่นและคล้าย ๆ กับชื่อโพรเซสทั่วไปที่ทำงานอยู่ในเครื่อง เพื่อที่จะหลอกให้ผู้ใช้ที่ไม่สังเกตไม่กล้าทำการยุติการทำงานของโพรเซสดังกล่าว นั่นก็หมายความว่าไวรัสจะสร้างโพรเซสหลอกลวง (Spoof) ให้มีชื่อคล้าย ๆ กับโพรเซสทั่วไป ยกตัวอย่างเช่น WSOCK32.DLL เป็นโพรเซสทั่ว ๆ ไปที่อยู่ในหน่วยความจำเพื่อใช้ handle library ของฟังก์ชั่น ซ็อกเก็ต และถูกเปลี่ยนชื่อเป็น WSOCK33.DLL อีกตัวอย่างเป็นโพรเซสที่ไวรัสมักใช้หลอกลวงมากคือ KERNEL32.DLL เปลี่ยนชื่อเป็น KERNE132.DLL (สังเกตว่าตัว ของคำว่า KERNEL ถูกเปลี่ยนเป็นเลข 1) แต่ในบางครั้งก็มีไวรัสบางตัวสร้างโพรเซสที่มีชื่อ โพรเซสเหมือนกันแต่เก็บไว้ที่ตำแหน่งต่างกัน(path ต่างกัน) เช่น KERNEL32.DLL ปกติจะถูกเก็บไว้ในไดเรกทอรี่ %Windows\System32% แต่ไวรัสบางตัวจะสร้างโพรเซสชื่อเดียวกันนี้เก็บไว้ในไดเรกทอรี่ %Windows\System% ก็เป็นได้
        อีกหนึ่งวิธีที่ใช้ตรวจสอบหาโพรเซสหลอกลวงก็คือ ตรวจสอบโพรเซสที่ยังคงทำงานค้างอยู่ในหน่วยความจำด้วยวิธีดังที่ได้กล่าวมาในหัวข้อที่ผ่านมาแล้ว อาการที่บ่งบอกว่าเครื่องได้ติดไวรัสแล้วก็คือเมื่อมีโปรแกรมทำงานแล้วโปรแกรมทำการคัดลอกตัวเองมากมายให้ทำงานอยู่ในหน่วยความจำ ถึงแม้ว่าในขณะนั้นไม่มีโปรแกรมดังกล่าวทำงานอยู่เลย
        ถ้าตรวจสอบการใช้งานหน่วยความจำ โปรแกรมที่เป็นการทำงานของไวรัสส่วนใหญ่จะใช้หน่วยความจำเกือบทั้งหมดที่มี แต่ถ้าไม่ปรากฏอาการดังกล่าวก็มั่นใจได้อีกระดับหนึ่งว่าไม่มีไวรัสที่ทำงานในเครื่องขณะนี้

ควบคุมการกระจายตัว
        จากที่ได้กล่าวมาในหัวข้อก่อนหน้านี้แล้ว การที่ไวรัสจะฝังตัวลงในหน่วยความจำได้นั้น จำเป็นต้องมีการถูกเอ็กซิคิวต์ก่อน การเอ็กซิคิวต์ไวรัสนั้นส่วนใหญ่จะเริ่มต้นจากผู้ใช้งานทำการเอ็กซิคิวต์อาจจะโดยตั้งใจหรือไม่ก็ตาม จากนั้นไวรัสเองก็จะใช้เทคนิคอื่นๆ เพื่อให้มั่นใจว่าได้ถูกเอ็กซิคิวต์อย่างน้อยหนึ่งครั้งในทุกๆ ระบบ โดยจะนำตัวมันเองไปไว้ในส่วนที่ใช้ในการเริ่มต้นทำงานของระบบปฏิบัติการ ขั้นตอนนี้ถือว่าเป็นขั้นตอนที่ค่อนข้างจะสำคัญของไวรัสในการที่จะถูกเอ็กซิคิวต์ตลอดเวลาและส่งผลต่อการฝังตัวในหน่วยความจำ ยังมีเทคนิคอื่นๆ ที่ไวรัสใช้ในการเอ็กซิคิวต์ตัวเองและฝังอยู่ในหน่วยความจำนอกเหนือจากวิธีนี้
        เทคนิคหนึ่งที่นิยมใช้ในยุคแรกๆ ก็คือไวรัสจะติดในโปรแกรมที่ใช้แปลคำสั่ง (Command Interpreter) ซึ่งส่วนใหญ่จะรู้จักในชื่อของ command.com ในการติดที่ไฟล์นี้รับรองได้เลยว่าไวรัสนั้นจะถูกเอ็กซิคิวต์และฝังตัวในหน่วยความจำก่อนที่โปรแกรมแปลคำสั่งจะถูกเอ็กซิคิวต์แน่นอน จากนั้นเพื่อให้บรรลุเป้าหมาย ไวรัสจะเพิ่มตัวเองในไฟล์autoexec.bat หรือ config.sys ซึ่งเป็นไฟล์ที่เก็บค่าการปรับแต่งถูกใช้ในระบบปฏิบัติการ DOS และถูกใช้ในการเริ่มต้นการใช้งานพื้นฐานของระบบปฏิบัติการวินโดวส์ด้วย

เรจิสทรีย์
        ต่อมาไวรัสได้พบช่องทางใหม่ในการที่จะฝังตัวเองอยู่ในระบบและจะถูกเอ็กซิคิวต์อย่างแน่นอน วิธีการนี้คือการแก้ไขค่าในเรจิสทรีย์ ซึ่งเรจิสทรีย์เป็นส่วนที่เก็บค่าในการเริ่มต้นใช้งานและค่าการปรับแต่งต่างๆ รวมทั้งลิ้งค์ต่างๆ ของโปรแกรมที่ต้องการถูกเอ็กซิคิวต์ ดังนั้นตำแหน่งนี้เองเป็นตำแหน่งที่เหมาะสมสำหรับไวรัสที่จะทำการฝังตัวเองใส่ในระบบได้
        การค้นหาว่ามีไวรัสแอบแฝงตัวอยู่ใรเรจิสทรีย์หรือไม่ นั้นจะเริ่มต้นด้วยการเรียกใช้งานโปรแกรมที่ใช้แก้ไขเรจิสทรีย์ โดยกดที่ปุ่ม Start -> Run จะปรากฏไดอะล็อกขึ้น ดังรูปที่ จากนั้นให้พิมพ์คำว่า regedit ในช่อง Open: แล้วเลือกปุ่ม OK จากขั้นตอนนี้จะปรากฏหน้าต่างโปรแกรมที่ใช้แก้ไขเรจิสทรีย์ชื่อ regedit ดังรูปที่ 4
        หมายเหตุ การแก้ไขค่าในเรจิสทรีย์คล้ายกับการยุติการทำงานของโพรเซสที่ได้กล่าวมาข้างต้นแล้ว ซึ่งการแก้ไขนั้นอาจจะนำมาซึ่งปัญหาของระบบที่ไม่ต้องการ เช่นการแก้ไขเพียงเล็กน้อยอาจจะทำให้ระบบไม่สามารถที่จะใช้งานได้หรือบูตได้นั่นเอง และในบางครั้งอาจจะทำให้บางโปรแกรมไม่สามารถใช้งานได้ ดังนั้นก่อนที่จะทำการแก้ไขค่าในเรจิสทรีย์ทุกครั้ง ต้องทำการสำรองข้อมูลไว้ก่อน และจะต้องดำเนินการด้วยความระมัดระวัง

รูปที่ 3 ไดอะล็อกใช้ในการเรียกรันโปรแกรมใดๆ

รูปที่ 4 หน้าต่างโปรแกรมแก้ไขเรจิสทรีย์ชื่อ regedit

        ในโปรแกรม regedit นั้น ค่าเรจิสทรีย์คีย์ (Registry keys) จะอยู่ในคอลัมน์ทางด้านซ้ายมือที่มีลักษณะคล้ายๆ กับโครงสร้างของไฟล์และโฟลเดอร์ในโปรแกรม Windows Explorer ในตำแหน่ง\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion จะมี 3-6 โฟลเดอร์อยู่ในนั้น ที่เป็นส่วนที่ใช้ในการเริ่มต้นใช้งานเรจิสทรีย์โดยอัตโนมัติ มีดังนี้
                "Run"
                "RunOnce"
                "RunOnce\Setup"
                "RunOnceEx"
                "RunServices"
                "RunServicesOnce"

        ซึ่งแอพพลิเคชันต่างๆ ที่อยู่ในโฟลเดอร์เหล่านี้จะถูกระบบปฏิบัติการวินโดวส์เอ็กซิคิวต์ทันทีที่ระบบเริ่มต้นใช้งาน นอกจากนี้แล้วอีกตำแหน่งที่มี 
3-6 เรจิสทรีย์ที่เริ่มต้นใช้งานโดยอัตโนมัติคือในตำแหน่ง\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion
        เมื่อเข้าถึงตำแหน่งของเรจิสทรีย์คีย์ที่ได้กล่าวมาแล้ว ให้สังเกตจำนวนแอพพลิเคชันที่อยู่ในนั้นเปรียบเทียบกับจำนวนแอพพลิเคชันที่ถูกเปิดเมื่อระบบปฏิบัติการเริ่มต้นใช้งาน โดยดูจากจำนวนไอคอนที่อยู่ใน system tray
        หมายเหตุ system tray อยู่บริเวณมุมล่างด้านขวามือของหน้าจอวินโดวส์ข้างนาฬิกา และจะมีไอคอนเล็กๆ อยู่ในนั้น
        ถ้าในโฟลเดอร์ \HKEY_LOCAL_MACHINE\SOFTWARE\ ประกอบด้วยโฟลเดอร์ของโปรแกรมที่น่าสงสัย เช่นสะกดชื่อบริษัทผิดๆ หรือผิดหลักไวยกรณ์ ให้ทำการตรวจสอบดูว่าโปรแกรมดังกล่าวนั้นไวรัสเป็นผู้ทำการติดตั้งหรือไม่ อาจจะอ้างอิงจากคู่มือหรือค้นหาจากอินเทอร์เน็ต เป็นต้น ถ้ามั่นใจว่าโปรแกรมนั้นเป็นไวรัสจริงก็ให้ทำการลบโปรแกรมดังกล่าวนั้นออกจากเรจิสทรีย์ แต่ต้องจำไว้เสมอว่าการแก้ไขค่าในเรจิสทรีย์อาจจะนำมาซึ่งความเสียหายของระบบได้ ต้องใช้ความระมัดระวังให้มาก และก่อนจะแก้ไขควรทำการสำรองเรจิสทรีย์ด้วย
        อีกหนึ่งหนทางที่ไวรัสใช้ในการกระจายตัวเองได้โดยจะแก้ไขเรจิสทรีย์ที่เกี่ยวข้องกับนามสกุลของไฟล์ทั่วๆ ไป ให้รันด้วยโปรแกรมของไวรัสเอง ตัวอย่างของนามสกุลของไฟล์ทั่วๆ ไปเช่น .EXE .DLL .COM เป็นต้น ซึ่งในระบบปฏิบัติการวินโดวส์นั้นมีเรจิสทรีย์คีย์ที่ชื่อ /HKEY_CLASSES_ROOT สำหรับเก็บค่าว่าไฟล์ที่มีนามสกุลใดให้รันด้วยแอพพลิเคชันใด เช่นไฟล์ที่มีนามสกุล .DOC ให้รันด้วยโปรแกรมไมโครซอฟต์เวิร์ด (MS Word) เป็นต้น
        การสำรองเรจิสทรีย์อยู่เสมอเป็นหนทางที่จะช่วยกู้ระบบคืนหลังจากระบบทำงานผิดพลาดอันเนื่องมาจากการแก้ไขเรจิสทรีย์ผิดพลาด ทั้งนี้อาจจะมีสาเหตุจากไวรัสแก้ไขเองหรือผู้ใช้เป็นผู้แก้ไขเอง วิธีการในการสำรองเรจิสทรีย์โดยการส่งค่าเรจิสทรีย์ออกมาเก็บไว้เป็นไฟล์ หรือเรียกว่าการ export นั่นเอง ทำได้โดยเลือกเมนู Registry -> Export Registry File ดังรูปที่ จะปรากฏไดอะล็อกดังรูปที่ จากนั้นจึงทำการป้อนชื่อที่จะบันทึกแล้วกด Save เป็นอันเสร็จขั้นตอนการสำรองเรจิสทรีย์ เมื่อทำการสำรองเรจิสทรีย์แล้วการเรียกเรจิสทรีย์ที่สำรองไว้มาใช้งานทำได้โดยเลือกเมนู Registry -> Import Registry File ดังรูปที่ และจะปรากฏไดอะล็อกดังรูปที่ แล้วเลือกไฟล์ที่ต้องการจะเรียกใช้ จากนั้นจึงกดปุ่ม Open

รูปที่ 5 แสดงการ Export เรจิสทรีย์

รูปที่ 6 แสดงไดอะล็อกเพื่อเลือกไฟล์ที่จะใช้สำรองเรจิสทรีย์

รูปที่ 7 แสดงวิธีการ Import เรจิสทรีย์

รูปที่ 8 แสดงไดอะล็อกเพื่อเลือกใช้ไฟล์ในการกู้ระบบคืน

ตำแหน่ง StartUp อื่นๆ
        จากที่ได้กล่าวมาในข้างต้นแล้ว ยังมีตำแหน่งอื่นๆ ที่ไวรัสมักนิยมใช้ในการเริ่มทำงาน เช่นในไฟล์ System.iniและ Win.ini ไวรัสจะแก้ไขไฟล์เหล่านี้ที่อยู่ในไดเรกทอรีของวินโดวส์ (เช่น %Windows% หรือ %Winnt% ) โดยไวรัสจะเพิ่มบรรทัดที่บอกว่า " run= ชื่อโปรแกรมของไวรัส " หรือ " load= ชื่อโปรแกรมของไวรัส "
        ค่าการปรับแต่งที่สำคัญต่อระบบสามารถแก้ไขได้ด้วยโปรแกรม Sysedit มีวิธีการเรียกใช้งานโดยกดปุ่ม Start -> run จากนั้นป้อนคำว่า "sysedit" ในช่อง Open: แล้วกดปุ่ม OK จะปรากฏหน้าต่างดังรูปที่ 9
        หมายเหตุ การปรับแต่งค่าต่างๆ โดยใช้โปรแกรม Sysedit ควรที่จะสำรองข้อมูลของแต่ละไฟล์ก่อนทุกครั้ง

รูปที่ 9 แสดงโปรแกรม Sysedit

        นอกจากนี้ยังมีโฟลเดอร์ที่ให้ระบบปฏิบัติการทำการเอ็กซิคิวต์แอพพลิเคชั่นที่อยู่ในโฟลเดอร์นี้ทุกครั้งที่ระบบเริ่มทำงาน โฟล์เดอร์ดังกล่าวนั้นเข้าถึงได้โดย Start -> (All) Programs -> Startup ถ้ามีแอพพลิเคชั่นที่ไม่ได้ใช้งานหรือแอพพลิเคชั่นที่น่าสงสัยว่าเป็นไวรัสอยู่ในโฟลเดอร์นี้ให้ทำการลบได้ทันที
        วิธีการตรวจหาไวรัสที่ได้กล่าวมาทั้งหมดนั้น ควรศึกษาให้เข้าใจและฝึกฝนอยู่เสมอเพื่อให้เกิดความชำนาญ และที่สำคัญคือจะต้องทำการป้องกันตัวเองให้ปลอดภัยจากไวรัสด้วยวิธีการต่างๆ เช่นการอัพเดตโปรแกรมต่างๆ ที่ใช้งาน ตลอดจนอัพเดตฐานข้อมูลของโปรแกรมป้องกันไวรัส เป็นต้น

ไม่มีความคิดเห็น:

แสดงความคิดเห็น