โปรแกรมทั้งหมดที่ทำงานในคอมพิวเตอร์ปรากฏในแท็บกระบวนการในตัวจัดการงานหรือไม่ [ซ้ำ]


34

คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:

เหตุผลที่ฉันถามสิ่งนี้เพราะฉันอยากรู้ว่ามีไวรัสในคอมพิวเตอร์หรือไม่โดยที่ฉันไม่สามารถรู้ได้ว่ามันมีอยู่จริง จะมีความเฉพาะเจาะจงมากขึ้นไวรัสที่ไม่แสดงอาการใด ๆ

คำตอบ:


48

มีคลาสของมัลแวร์ที่สามารถซ่อนตัวเองอย่างสมบูรณ์จากระบบปฏิบัติการที่เรียกว่ารูทคิ

รูทคิทใช้เพื่อซ่อนหลักฐานของมัลแวร์อื่น ๆ ในที่ทำงานและฝังลึกในระบบปฏิบัติการ เนื่องจากการฝังลึกของพวกเขาพวกเขาสามารถจัดการรายการกระบวนการตารางระบบแฟ้มและโครงสร้างที่สำคัญอื่น ๆ ได้ทันที

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

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


1
ฉันอยากรู้อยากเห็นพวกเขาประสบความสำเร็จได้อย่างไร ดูเหมือนว่าสิ่งที่ Windows ไม่ควรอนุญาตตั้งแต่แรก ฉันหมายถึงแม้ "ขั้นตอนการแสดงจากผู้ใช้ทุกคน" ก็น้อยกว่า 'การซ่อน' และอื่น ๆ 'การจัดหมวดหมู่'
Raestloz

2
@Raestloz: พวกเขาบรรลุผลสำเร็จโดยการเข้าถึงรูทแล้วเขียนใหม่ Windows เพื่อลบบิตที่ไม่อนุญาต ฉันได้ยินมาว่าบางคนทำโดยการ "บูท" ลงในรูทคิตเป็นระบบปฏิบัติการเปลี่ยนวินโดวส์จากนั้นพวกเขาใช้วินโดวส์ดังนั้นผู้ใช้หรือ Windows ไม่มีความคิดใด ๆ ว่ามีอะไรผิดปกติ
Mooing Duck

3
ดีแดงอาจจะมีคนควรคิดค้นป้องกันไวรัสที่รันบน BIOS ฮ่า ๆ
Raestloz

1
@zyboxenterprises การอัปเดต Windows จริงมีการลงชื่อและไม่สามารถปลอมแปลงได้ แต่คุณสามารถปลอมแปลงเพียงแค่ไดอะล็อกคำขอรีสตาร์ทหรือหลอกผู้ใช้ให้รีสตาร์ทด้วยวิธีอื่นใดหรือบังคับให้รีสตาร์ท ( shutdown -r -t 0ไม่ต้องใช้สิทธิ์พิเศษ) หรือรอจนกว่าผู้ใช้จะรีบูต
gronostaj

4
@zyboxenterprises อาจจะไม่ใช่;) Flameใช้ประโยชน์จาก Windows Update เพื่อจุดประสงค์ของตัวเองโดยการปลอมแปลงใบรับรอง แต่ช่องโหว่นั้นได้รับการแก้ไขแล้ว ไม่มีช่องโหว่ของ WU ที่เปิดเผยต่อสาธารณชน แต่นั่นไม่ได้หมายความว่าไม่มีอยู่จริง สิ่งที่ Flame ใช้ไม่เคยรู้จักมาก่อนเช่นกัน (ดูการโจมตี 0 วัน
gronostaj

16

โปรแกรมปกติทั้งหมดจะปรากฏที่นั่น แต่ ...

  • หากไม่มีบัญชีผู้ดูแลระบบคุณจะสามารถเห็นกระบวนการของคุณเองเท่านั้น (บัญชีผู้ดูแลระบบสามารถเลือกที่จะดูกระบวนการของทุกคน)
  • รูทคิทจะพยายามปกปิดการดำรงอยู่ของมันด้วยการซ่อนกระบวนการจากรายการประนีประนอมตัวจัดการงาน (ดังนั้นมันจะไม่แสดงให้เขาเห็น) ซ่อนตัวอยู่ในพื้นที่ที่อยู่ของกระบวนการอื่น ...
  • บริการจะทำงานเป็นกระทู้ภายใต้svchostกระบวนการ (ในกรณีส่วนใหญ่) ดังนั้นจึงไม่มีประเด็นที่ง่ายที่บริการจะทำงานภายใต้อินสแตนซ์ svchost ที่กำหนด

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

อย่างไรก็ตามเมื่อคุณติดเชื้อแล้วมันเป็นไปได้ที่ไวรัสจะปกปิดสถานะของมันได้ดีจนแทบเป็นไปไม่ได้ที่จะตรวจพบ โดยทั่วไปจะเรียกว่าAPTs (ภัยคุกคามถาวรขั้นสูง)


2
บางจุดเหล่านี้ถูกทำให้ใช้งานไม่ได้โดย Sysinternals Process Explorer - ผู้ใช้ที่ จำกัด สามารถดูชื่อไฟล์ของกระบวนการที่ดำเนินการโดยผู้ใช้รายอื่นและคำแนะนำเครื่องมือของ svchosts แสดงรายการสิ่งที่โฮสต์
kirb

คุณหมายถึงการเขียนว่า "ภัยคุกคาม" หรือคุณหมายถึง "ด้าย"? ใช้งานได้จริง)
Konerak

ตัวตรวจจับรูตคิตระบุเธรดหรือกระบวนการอย่างไร หากเป็นวิธีปกติ / WinAPI รูทคิทไม่สามารถจัดการการแจงนับและตัวตรวจจับรูตคิตจะไม่สังเกตเห็นสิ่งนี้หรือไม่
เรย์

1
@DebugErr พวกเขาดูที่ระดับสูงและระดับต่ำจากนั้นรายงานความแตกต่าง (บางครั้งก็สร้างผลบวกปลอมเช่นเมื่อไฟล์มีการเปลี่ยนแปลงในระหว่าง) โดยการตรวจสอบรายการของเธรดที่ตั้งโปรแกรมไว้สำหรับการดำเนินการฉันอ้างถึงรายการที่เชื่อมโยงสองครั้งที่ใช้โดยตัวกำหนดตารางเวลาระบบปฏิบัติการเช่น ระดับต่ำอย่างสมบูรณ์: ถ้ามันไม่ได้อยู่ที่นั่นมันจะไม่ได้รับการแบ่งเวลา (althogh มีสถานที่มากกว่าให้ตรวจสอบเหมือน ISR)
Ángel

5

พื้นหลัง

ระบบปฏิบัติการมีส่วนประกอบที่เรียกว่าเคอร์เนล หนึ่งในความรับผิดชอบ (จำนวนมาก) ของเคอร์เนลคือการจัดการหน่วยความจำระบบ (ทั้งทางกายภาพและเสมือน)

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

กระบวนการในโหมดผู้ใช้โดยทั่วไปไม่สามารถสื่อสารกับผู้ที่อยู่ในโหมดเคอร์เนลยกเว้นผ่านช่องทางที่กำหนดและควบคุมพิเศษ

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

กระบวนการ

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

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

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

ไดรเวอร์โหมดเคอร์เนล

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

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

สรุป

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


3

ไวรัสในปัจจุบันค่อนข้างซับซ้อน มีสามารถเป็นไวรัสในคอมพิวเตอร์ของคุณ แต่ไม่ได้แสดงใน Task Manager เป็นไปได้ที่ Task Manager (และส่วนอื่น ๆ ของระบบปฏิบัติการ) จะถูกโจมตีด้วยตนเองดังนั้นจึงซ่อนไวรัส ตัวอย่างเช่นรูทคิต

หากคุณวางแผนที่จะใช้ตัวจัดการงานเพื่อตรวจหาไวรัสคุณควรหยุดตอนนี้ ติดตั้งโปรแกรมป้องกันไวรัสและแม้แต่บางครั้งโปรแกรมป้องกันไวรัสก็อาจตรวจไม่พบไวรัสบนพีซีของคุณ


0

มีอีกวิธีที่ง่ายกว่าในการ "ซ่อนไวรัส" นอกเหนือจากวิธีอื่นที่อธิบายไว้แล้วในคำตอบอื่น ๆ :

DLL ที่ถูกบุกรุก (ไลบรารีที่ลิงก์แบบไดนามิก)

โปรแกรมจำนวนมาก - เกือบทั้งหมดของโปรแกรมที่ไม่สำคัญ - ต้องใช้ DLL อย่างน้อยหนึ่งตัวในการทำงาน บางตัวเป็นของระบบปฏิบัติการ (เช่น hal.dll ซึ่งเป็นนามธรรมการเข้าถึงฮาร์ดแวร์สำหรับ Windows) บางโปรแกรมถูกใช้โดยโปรแกรมเดียวเท่านั้นซึ่งถูกแบ่งเป็นชิ้นเล็ก ๆ (ไฟล์. exe และไฟล์. dll ที่มีฟังก์ชั่นหลักมากกว่าหนึ่งไฟล์) ปลั๊กอิน ฯลฯ ) คุณไม่ได้รับไวรัสของคุณให้ทำงานตลอดเวลาเหมือนกระบวนการหรือบริการทั่วไป แต่ไวรัสของคุณจะหายากมากเพราะมันจะดูเหมือนโปรแกรมบริสุทธิ์หรือส่วนประกอบโปรแกรม

อ่านเพิ่มเติม: http://msitpros.com/?p=2012


และมีสิ่งหนึ่งที่น่าสนใจอย่างมากเกี่ยวกับการทำไวรัสประเภทนี้คือ: มีเว็บไซต์มากมายที่ให้ดาวน์โหลดฟรี (ไม่ต้องจ่ายเงิน) ดาวน์โหลด DLLs ซึ่งอาจเกิดจากสาเหตุนี้หรือสาเหตุที่หายไปในคอมพิวเตอร์ของคุณ เนื่องจากความเป็นไปได้ที่จะเปรียบเทียบ checksums ของไฟล์ต้นฉบับและไฟล์. dll ใหม่มีจำนวน จำกัด มากและแทบไม่มีใครใส่ใจไวรัส dll จึงอาจเข้ามาและอยู่ในระบบเป็นเวลานานโดยที่ไม่มีใครสังเกตเห็น พวกเขาและผู้ใช้เห็นด้วยกับการลบ - คุณเห็นรูปแบบแล้ว)

จากคำถามที่ฉันคิดว่าเราพูดถึง Windows ที่นี่ แต่เทคนิคนี้อาจนำไปใช้กับ OS อื่นได้เป็นอย่างดี


0

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 ที่ใช้อยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.