คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:
เหตุผลที่ฉันถามสิ่งนี้เพราะฉันอยากรู้ว่ามีไวรัสในคอมพิวเตอร์หรือไม่โดยที่ฉันไม่สามารถรู้ได้ว่ามันมีอยู่จริง จะมีความเฉพาะเจาะจงมากขึ้นไวรัสที่ไม่แสดงอาการใด ๆ
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:
เหตุผลที่ฉันถามสิ่งนี้เพราะฉันอยากรู้ว่ามีไวรัสในคอมพิวเตอร์หรือไม่โดยที่ฉันไม่สามารถรู้ได้ว่ามันมีอยู่จริง จะมีความเฉพาะเจาะจงมากขึ้นไวรัสที่ไม่แสดงอาการใด ๆ
คำตอบ:
มีคลาสของมัลแวร์ที่สามารถซ่อนตัวเองอย่างสมบูรณ์จากระบบปฏิบัติการที่เรียกว่ารูทคิท
รูทคิทใช้เพื่อซ่อนหลักฐานของมัลแวร์อื่น ๆ ในที่ทำงานและฝังลึกในระบบปฏิบัติการ เนื่องจากการฝังลึกของพวกเขาพวกเขาสามารถจัดการรายการกระบวนการตารางระบบแฟ้มและโครงสร้างที่สำคัญอื่น ๆ ได้ทันที
โดยการจัดการโครงสร้างระบบแฟ้มในหน่วยความจำพวกเขาสามารถส่งคืนผลลัพธ์ที่เป็นเท็จหรือทำให้เข้าใจผิดสำหรับไดเรกทอรีโดยเฉพาะอย่างยิ่งไม่แสดงไฟล์ที่เกี่ยวข้องกับมัลแวร์หลักเอง ไฟล์จะอยู่ที่นั่นและทำการบูทเข้าสู่ระบบปฏิบัติการที่ไม่ติดไวรัสเช่น Linux LiveCD จะแสดงไฟล์ดังกล่าวเนื่องจากไฟล์เหล่านั้นจะต้องถูกเก็บไว้ที่ใดที่หนึ่ง
รูทคิทสามารถปล่อยกระบวนการบางอย่างจากการรายงานไปยังโปรแกรมเช่นตัวจัดการงานได้ แกนหลักของระบบปฏิบัติการรู้เกี่ยวกับพวกเขาตามที่ต้องการเพื่อกำหนดเวลามันเพิ่งถูกบล็อกไม่ให้โลกภายนอกรู้เกี่ยวกับพวกเขา
shutdown -r -t 0
ไม่ต้องใช้สิทธิ์พิเศษ) หรือรอจนกว่าผู้ใช้จะรีบูต
โปรแกรมปกติทั้งหมดจะปรากฏที่นั่น แต่ ...
svchost
กระบวนการ (ในกรณีส่วนใหญ่) ดังนั้นจึงไม่มีประเด็นที่ง่ายที่บริการจะทำงานภายใต้อินสแตนซ์ svchost ที่กำหนดมีบางโปรแกรมที่ออกแบบมาเพื่อตรวจจับรูทคิท พวกเขาทำได้โดยการตรวจสอบรายการของเธรดที่ตั้งโปรแกรมไว้สำหรับการดำเนินการและรายการกระบวนการในระบบ (เธรดที่ไม่ได้เป็นของกระบวนการใด ๆ เป็นสัญญาณของกระบวนการที่ซ่อนอยู่) หรือรายการไฟล์ที่เห็นในระดับสูง และเปรียบเทียบกับไฟล์ที่อ่านด้วยตนเองจากพาร์ติชั่นดิสก์
อย่างไรก็ตามเมื่อคุณติดเชื้อแล้วมันเป็นไปได้ที่ไวรัสจะปกปิดสถานะของมันได้ดีจนแทบเป็นไปไม่ได้ที่จะตรวจพบ โดยทั่วไปจะเรียกว่าAPTs (ภัยคุกคามถาวรขั้นสูง)
ระบบปฏิบัติการมีส่วนประกอบที่เรียกว่าเคอร์เนล หนึ่งในความรับผิดชอบ (จำนวนมาก) ของเคอร์เนลคือการจัดการหน่วยความจำระบบ (ทั้งทางกายภาพและเสมือน)
ในฐานะที่เป็นส่วนหนึ่งของการทำเช่นนี้เคอร์เนลจะแบ่งหน่วยความจำที่มีอยู่ออกเป็นสองส่วนที่แตกต่างกันซึ่งรู้จักกันในชื่อโหมดผู้ใช้และโหมดเคอร์เนล เคอร์เนลและไดรเวอร์แบ่งใช้หน่วยความจำโหมดเคอร์เนลและโปรแกรมผู้ใช้และส่วนประกอบระบบที่สำคัญน้อยกว่าอยู่ในพื้นที่หน่วยความจำโหมดผู้ใช้
กระบวนการในโหมดผู้ใช้โดยทั่วไปไม่สามารถสื่อสารกับผู้ที่อยู่ในโหมดเคอร์เนลยกเว้นผ่านช่องทางที่กำหนดและควบคุมพิเศษ
เพื่อความครบถ้วนควรกล่าวว่ากระบวนการที่ทำงานในโหมดผู้ใช้นั้นถูกแยกออกจากกัน แต่สามารถสื่อสารกันได้อย่างอิสระมากขึ้นโดยใช้สิ่งอำนวยความสะดวกที่ระบบปฏิบัติการจัดเตรียมให้โดยที่โปรแกรมนั้นถูกออกแบบมาให้ทำ
เคอร์เนลให้ความสามารถในการเปิดใช้งานกระบวนการในโหมดผู้ใช้ เมื่อกระบวนการถูกสร้างขึ้นมันจะถูกเพิ่มลงในรายการภายในของกระบวนการที่มีอยู่ในปัจจุบัน เมื่อโปรแกรมเช่นตัวจัดการงานขอรายการกระบวนการจะได้รับชุดย่อยของข้อมูลในรายการนี้กรองตามการอนุญาตของผู้ใช้
วิธีการหนึ่งสำหรับมัลแวร์เช่นรูทคิทเพื่อซ่อนการมีอยู่คือการลบตัวเองออกจากตารางนี้โดยตรง การทำสิ่งนี้จะยังคงสามารถดำเนินการได้ แต่จะไม่ปรากฏในรายการกระบวนการที่ได้รับโดยวิธีปกติ
เนื่องจากกระบวนการเหล่านี้ยังคงมีอยู่และดำเนินการจริงพวกเขาสามารถพบได้โดยการตรวจสอบโครงสร้างข้อมูลเคอร์เนลอื่น ๆ เช่นจัดการตารางซึ่งเก็บข้อมูลเกี่ยวกับทรัพยากรที่กระบวนการเปิด (เช่นไฟล์) หรือโดยการตรวจสอบการจัดสรรหน่วยความจำที่มันเป็นมากกว่า ยากที่จะซ่อนโดยไม่ขัดขวางความสามารถของซอฟต์แวร์ในการทำงาน
โปรแกรมควบคุมโหมดเคอร์เนลใช้สำหรับหลายสิ่งรวมถึงการโต้ตอบกับอุปกรณ์ฮาร์ดแวร์ทางกายภาพ พวกเขาดำเนินการภายใต้การควบคุมของเคอร์เนลตามความจำเป็น แต่เนื่องจากพวกเขาไม่ใช่กระบวนการโหมดผู้ใช้จึงไม่ปรากฏในตารางกระบวนการ และด้วยเหตุนี้จะไม่ปรากฏในตัวจัดการงานหรือเครื่องมืออื่น ๆ ที่เกี่ยวข้องกับกระบวนการ
ความสามารถในการเรียกใช้รหัสในโหมดเคอร์เนลเป็นขั้นตอนสำคัญในการซ่อนการเรียกใช้โค้ดอย่างมีประสิทธิภาพ ภายใต้สถานการณ์ปกติ Windows ต้องการรหัสที่ในโหมดเคอร์เนลเพื่อให้ทำงานได้ดังนั้นมัลแวร์อาจจำเป็นต้องใช้ช่องโหว่ในระบบปฏิบัติการซอฟต์แวร์อื่นหรือแม้กระทั่งวิศวกรรมทางสังคมเพื่อมาที่นี่ แต่เมื่อโค้ดทำงานในโหมดเคอร์เนลซ่อน ง่ายขึ้น
โดยสรุปเป็นไปได้ที่จะซ่อนหลักฐานการมีอยู่ของกระบวนการมีแนวโน้มที่จะเป็นตัวบ่งชี้ว่ากระบวนการนั้นมีอยู่เสมอเพราะโดยทั่วไปจะต้องใช้ทรัพยากรบางรูปแบบเพื่อทำสิ่งที่มันถูกออกแบบมา การตรวจจับนั้นขึ้นอยู่กับมัลแวร์เฉพาะ
ไวรัสในปัจจุบันค่อนข้างซับซ้อน มีสามารถเป็นไวรัสในคอมพิวเตอร์ของคุณ แต่ไม่ได้แสดงใน Task Manager เป็นไปได้ที่ Task Manager (และส่วนอื่น ๆ ของระบบปฏิบัติการ) จะถูกโจมตีด้วยตนเองดังนั้นจึงซ่อนไวรัส ตัวอย่างเช่นรูทคิต
หากคุณวางแผนที่จะใช้ตัวจัดการงานเพื่อตรวจหาไวรัสคุณควรหยุดตอนนี้ ติดตั้งโปรแกรมป้องกันไวรัสและแม้แต่บางครั้งโปรแกรมป้องกันไวรัสก็อาจตรวจไม่พบไวรัสบนพีซีของคุณ
มีอีกวิธีที่ง่ายกว่าในการ "ซ่อนไวรัส" นอกเหนือจากวิธีอื่นที่อธิบายไว้แล้วในคำตอบอื่น ๆ :
DLL ที่ถูกบุกรุก (ไลบรารีที่ลิงก์แบบไดนามิก)
โปรแกรมจำนวนมาก - เกือบทั้งหมดของโปรแกรมที่ไม่สำคัญ - ต้องใช้ DLL อย่างน้อยหนึ่งตัวในการทำงาน บางตัวเป็นของระบบปฏิบัติการ (เช่น hal.dll ซึ่งเป็นนามธรรมการเข้าถึงฮาร์ดแวร์สำหรับ Windows) บางโปรแกรมถูกใช้โดยโปรแกรมเดียวเท่านั้นซึ่งถูกแบ่งเป็นชิ้นเล็ก ๆ (ไฟล์. exe และไฟล์. dll ที่มีฟังก์ชั่นหลักมากกว่าหนึ่งไฟล์) ปลั๊กอิน ฯลฯ ) คุณไม่ได้รับไวรัสของคุณให้ทำงานตลอดเวลาเหมือนกระบวนการหรือบริการทั่วไป แต่ไวรัสของคุณจะหายากมากเพราะมันจะดูเหมือนโปรแกรมบริสุทธิ์หรือส่วนประกอบโปรแกรม
อ่านเพิ่มเติม: http://msitpros.com/?p=2012
และมีสิ่งหนึ่งที่น่าสนใจอย่างมากเกี่ยวกับการทำไวรัสประเภทนี้คือ: มีเว็บไซต์มากมายที่ให้ดาวน์โหลดฟรี (ไม่ต้องจ่ายเงิน) ดาวน์โหลด DLLs ซึ่งอาจเกิดจากสาเหตุนี้หรือสาเหตุที่หายไปในคอมพิวเตอร์ของคุณ เนื่องจากความเป็นไปได้ที่จะเปรียบเทียบ checksums ของไฟล์ต้นฉบับและไฟล์. dll ใหม่มีจำนวน จำกัด มากและแทบไม่มีใครใส่ใจไวรัส dll จึงอาจเข้ามาและอยู่ในระบบเป็นเวลานานโดยที่ไม่มีใครสังเกตเห็น พวกเขาและผู้ใช้เห็นด้วยกับการลบ - คุณเห็นรูปแบบแล้ว)
จากคำถามที่ฉันคิดว่าเราพูดถึง Windows ที่นี่ แต่เทคนิคนี้อาจนำไปใช้กับ OS อื่นได้เป็นอย่างดี
TL; DR:ระบบปฏิบัติการ Windows Task Manager ที่ถูก จำกัด สวยในสิ่งที่สามารถทำได้และมัน * จะไม่เคยแสดงให้เห็นทุกขั้นตอนการทำงานในระบบของคุณ ต้องการพิสูจน์ไหม นับ (ประมาณ) จำนวน RAM ที่กระบวนการที่แสดงในตัวจัดการงานใช้งานและเปรียบเทียบกับการใช้ RAM ของระบบ คุณควรมีหน่วยความจำอย่างน้อย 100MB RAM และบางครั้งมันก็เพิ่มเป็นประมาณ 1GB ขึ้นอยู่กับสิ่งที่คุณใช้ระบบ การ์ดกราฟิกสามารถใช้หน่วยความจำบางส่วนจาก RAM พร้อมกับ GDDR RAM ของตัวเอง *
เพื่อขยายคำตอบของ Pavel Petman ฉันอาจเพิ่มเครื่องมือโกงที่ซับซ้อนจำนวนมากสำหรับเกมที่อาศัยการฉีดรหัสเข้าไปใน DLLs ของเกมที่เปิดใช้กลโกงของพวกเขา
การประนีประนอมประเภทนี้ค่อนข้างยากที่จะตรวจจับและสามารถใช้เทคนิคเดียวกันนี้ในคำถามนี้ หากกล่าวว่าไวรัสต้องการตรวจไม่พบมันอาจเป็นการโพสต์แบบ Windows ที่แยกตัวเองไปยังไดเรกทอรีของระบบไวรัสอาจเขียนทับไฟล์ระบบที่สำคัญ โปรแกรมป้องกันไวรัสส่วนใหญ่จะไม่ตรวจจับไวรัสประเภทนี้ซึ่งหมายความว่าไวรัสสามารถฉีดโค้ดไวรัสลงใน Windows DLL ที่สำคัญได้ (และยังเป็น. exes) ด้วย
เมื่อลูกค้าของฉันบอกถึงพฤติกรรมที่ผิดปกติฉันจะเรียกใช้ Process Explorer (ดาวน์โหลดจาก Microsoft) เพื่อตรวจหาไวรัสใด ๆ ที่ทำงานอยู่ Process Explorer สามารถบอกคุณได้ว่ากระบวนการใดกำลังทำงานอยู่ (แม้แต่กระบวนการที่ไม่ได้อยู่ในตัวจัดการงาน) และโมดูล DLL ที่ใช้อยู่