เมื่อใดก็ตามที่การอภิปรายจบลง ไวรัส y GNU / Linux ผู้ใช้ใช้เวลาไม่นานในการปรากฏตัว (โดยปกติคือ Windows) มันพูดว่าอะไร:
«ในลินุกซ์ไม่มีไวรัสเนื่องจากผู้สร้างโปรแกรมที่เป็นอันตรายเหล่านี้ไม่ต้องเสียเวลาทำอะไรบางอย่างกับระบบปฏิบัติการที่แทบไม่มีใครใช้»
สิ่งที่ฉันตอบเสมอ:
"ปัญหาไม่ใช่แค่นั้น แต่ผู้สร้างโปรแกรมที่เป็นอันตรายเหล่านี้จะไม่เสียเวลาสร้างสิ่งที่จะได้รับการแก้ไขด้วยการอัปเดตระบบครั้งแรกแม้จะใช้เวลาไม่ถึง 24 ชั่วโมงก็ตาม"
และฉันก็ไม่ผิดเนื่องจากบทความที่ยอดเยี่ยมนี้ตีพิมพ์ใน หมายเลข 90 (ปี 2008) จาก Todo Linux Magazine. นักแสดงของเขา เดวิด ซานโต ออร์เซโร ให้ทางเทคนิคแก่เรา (แต่เข้าใจง่าย) คำอธิบายว่าทำไม GNU / Linux ไม่มีซอฟต์แวร์ที่เป็นอันตรายประเภทนี้
แนะนำ 100% ตอนนี้พวกเขาจะมีเนื้อหาที่น่าเชื่อมากกว่าในการปิดปากใครก็ตามที่พูดโดยไม่มีพื้นฐานที่มั่นคงในเรื่องนี้
ดาวน์โหลดบทความ (PDF): ตำนานและข้อเท็จจริง: Linux และไวรัส
แก้ไข:
นี่คือบทความที่ถอดความเนื่องจากเราพิจารณาแล้วว่าการอ่านด้วยวิธีนี้จะสะดวกสบายกว่ามาก:
================================================== ======================
การถกเถียงเรื่องลินุกซ์และไวรัสไม่ใช่เรื่องใหม่ บ่อยครั้งที่เราเห็นอีเมลในรายการถามว่ามีไวรัสสำหรับ Linux หรือไม่ และจะมีคนตอบยืนยันโดยอัตโนมัติและอ้างว่าหากพวกเขาไม่ได้รับความนิยมมากกว่านั้นเป็นเพราะ Linux ไม่แพร่หลายเท่า Windows นอกจากนี้ยังมีข่าวประชาสัมพันธ์จากนักพัฒนาโปรแกรมป้องกันไวรัสอยู่บ่อยครั้งว่าพวกเขาปล่อยไวรัส Linux เวอร์ชันต่างๆ
โดยส่วนตัวแล้วฉันเคยพูดคุยกับคนอื่นทางไปรษณีย์หรือตามรายชื่อการแจกจ่ายเป็นครั้งคราวเกี่ยวกับปัญหาที่ว่ามีไวรัสอยู่ใน Linux หรือไม่ มันเป็นตำนาน แต่มันซับซ้อนที่จะทำลายตำนานหรือ แต่เป็นเรื่องหลอกลวงโดยเฉพาะอย่างยิ่งหากเกิดจากผลประโยชน์ทางเศรษฐกิจ มีคนสนใจที่จะถ่ายทอดความคิดที่ว่าถ้า Linux ไม่มีปัญหาเหล่านี้เป็นเพราะมีคนใช้น้อยมาก
ในขณะที่เผยแพร่รายงานนี้ฉันต้องการเขียนข้อความที่ชัดเจนเกี่ยวกับการมีอยู่ของไวรัสใน Linux น่าเสียดายที่เมื่อความเชื่อโชคลางและผลประโยชน์ทางเศรษฐกิจดำเนินไปอย่างรุนแรงก็ยากที่จะสร้างสิ่งที่ชัดเจน
อย่างไรก็ตามเราจะพยายามโต้แย้งอย่างสมเหตุสมผลที่นี่เพื่อปลดอาวุธการโจมตีของใครก็ตามที่ต้องการโต้แย้ง
ไวรัสคืออะไร?
ก่อนอื่นเราจะเริ่มต้นด้วยการกำหนดว่าไวรัสคืออะไร เป็นโปรแกรมที่คัดลอกตัวเองและทำงานโดยอัตโนมัติและมีจุดมุ่งหมายเพื่อเปลี่ยนแปลงการทำงานปกติของคอมพิวเตอร์โดยไม่ได้รับอนุญาตหรือความรู้จากผู้ใช้ ในการทำเช่นนี้ไวรัสจะแทนที่ไฟล์ปฏิบัติการกับคนอื่นที่ติดรหัสของมัน คำจำกัดความนี้เป็นมาตรฐานและเป็นบทสรุปหนึ่งบรรทัดของรายการ Wikipedia เกี่ยวกับไวรัส
ส่วนที่สำคัญที่สุดของคำจำกัดความนี้และสิ่งที่ทำให้ไวรัสแตกต่างจากมัลแวร์อื่น ๆ ก็คือไวรัสจะติดตั้งตัวเองโดยไม่ได้รับอนุญาตหรือความรู้จากผู้ใช้ หากไม่ได้ติดตั้งเองแสดงว่าไม่ใช่ไวรัสอาจเป็น rootkit หรือโทรจันก็ได้
รูทคิตเป็นแพตช์เคอร์เนลที่ช่วยให้คุณซ่อนกระบวนการบางอย่างจากยูทิลิตี้พื้นที่ผู้ใช้ กล่าวอีกนัยหนึ่งก็คือการปรับเปลี่ยนซอร์สโค้ดเคอร์เนลซึ่งมีวัตถุประสงค์เพื่อให้ยูทิลิตี้ที่ช่วยให้เราเห็นสิ่งที่กำลังทำงานอยู่ในช่วงเวลาใดเวลาหนึ่งไม่เห็นภาพกระบวนการบางอย่างหรือผู้ใช้บางราย
โทรจันมีลักษณะคล้ายกัน: เป็นการแก้ไขซอร์สโค้ดของบริการเฉพาะเพื่อซ่อนกิจกรรมฉ้อโกงบางอย่าง ในทั้งสองกรณีจำเป็นต้องได้รับซอร์สโค้ดของเวอร์ชันที่แน่นอนที่ติดตั้งบนเครื่อง Linux แพตช์โค้ดคอมไพล์ใหม่รับสิทธิ์ของผู้ดูแลระบบติดตั้งปฏิบัติการที่ได้รับการแก้ไขและเริ่มต้นบริการในกรณีของโทรจัน หรือระบบปฏิบัติการเสร็จสมบูรณ์ - ในกรณีของ
rootkit– กระบวนการดังที่เราเห็นไม่ใช่เรื่องเล็กน้อยและไม่มีใครสามารถทำทั้งหมดนี้ได้ "โดยไม่ได้ตั้งใจ" ทั้งสองคนต้องการให้บุคคลที่มีสิทธิ์ระดับผู้ดูแลระบบดำเนินการตามขั้นตอนต่างๆในการตัดสินใจตามลักษณะทางเทคนิคอย่างมีสติ
ซึ่งไม่ใช่ความแตกต่างทางความหมายที่ไม่สำคัญ: สำหรับไวรัสที่จะติดตั้งตัวเองสิ่งที่เราต้องทำคือเรียกใช้โปรแกรมที่ติดไวรัสในฐานะผู้ใช้ทั่วไป ในทางกลับกันสำหรับการติดตั้งรูทคิตหรือโทรจันจำเป็นอย่างยิ่งที่มนุษย์ที่ประสงค์ร้ายจะเข้าสู่บัญชีรูทของเครื่องเป็นการส่วนตัวและด้วยวิธีที่ไม่ใช่อัตโนมัติจะต้องดำเนินการหลายขั้นตอนที่อาจตรวจพบได้ ไวรัสแพร่กระจายอย่างรวดเร็วและมีประสิทธิภาพ รูทคิทหรือโทรจันต้องการให้พวกเขาติดตามเราโดยเฉพาะ
การส่งไวรัสบน Linux:
ดังนั้นกลไกการแพร่กระจายของไวรัสจึงเป็นสิ่งที่กำหนดให้มันเป็นเช่นนี้และเป็นพื้นฐานสำหรับการดำรงอยู่ของพวกมัน ระบบปฏิบัติการมีความไวต่อไวรัสมากขึ้นยิ่งง่ายต่อการพัฒนากลไกการส่งผ่านที่มีประสิทธิภาพและอัตโนมัติ
สมมติว่าเรามีไวรัสที่ต้องการแพร่กระจายตัวเอง สมมติว่ามีการเปิดตัวโดยผู้ใช้ปกติโดยบริสุทธิ์ใจเมื่อเปิดตัวโปรแกรม ไวรัสนี้มีกลไกการแพร่เชื้อเพียงสองอย่าง:
- จำลองตัวเองโดยการสัมผัสหน่วยความจำของกระบวนการอื่นโดยยึดตัวเองไว้ที่รันไทม์
- การเปิดไฟล์ปฏิบัติการของระบบไฟล์และเพิ่มโค้ด - เพย์โหลด - ลงในไฟล์ปฏิบัติการ
ไวรัสทั้งหมดที่เราสามารถพิจารณาได้ว่ามีกลไกการแพร่เชื้ออย่างน้อยหนึ่งในสองอย่างนี้ O ทั้งสอง ไม่มีกลไกอะไรอีกแล้ว
เกี่ยวกับกลไกแรกเรามาจำสถาปัตยกรรมหน่วยความจำเสมือนของ Linux และวิธีการทำงานของโปรเซสเซอร์ Intel เหล่านี้มีสี่วงนับจาก 0 ถึง 3; ยิ่งตัวเลขต่ำเท่าไหร่ก็ยิ่งมีสิทธิ์ที่รหัสที่รันในวงแหวนนั้นมีมากขึ้นเท่านั้น วงแหวนเหล่านี้สอดคล้องกับสถานะของโปรเซสเซอร์ดังนั้นสิ่งที่สามารถทำได้เมื่อระบบอยู่ในวงแหวนเฉพาะ Linux ใช้วงแหวน 0 สำหรับเคอร์เนลและวงแหวน 3 สำหรับกระบวนการ ไม่มีรหัสกระบวนการที่ทำงานบนวงแหวน 0 และไม่มีรหัสเคอร์เนลที่ทำงานบนวงแหวน 3 มีเพียงจุดเข้าสู่เคอร์เนลเดียวจากวงแหวน 3: อินเทอร์รัปต์ 80h ซึ่งช่วยให้คุณสามารถข้ามจากพื้นที่ที่ เป็นรหัสผู้ใช้ไปยังพื้นที่ที่เป็นรหัสเคอร์เนล
สถาปัตยกรรมของ Unix โดยทั่วไปและ Linux โดยเฉพาะไม่ทำให้การแพร่กระจายของไวรัสเป็นไปได้
เคอร์เนลโดยใช้หน่วยความจำเสมือนทำให้แต่ละกระบวนการเชื่อว่ามีหน่วยความจำทั้งหมดในตัวเอง กระบวนการซึ่งทำงานในวงแหวน 3- จะเห็นเฉพาะหน่วยความจำเสมือนที่กำหนดค่าไว้สำหรับวงแหวนที่ใช้งาน ไม่ใช่ว่าความทรงจำของกระบวนการอื่นจะได้รับการปกป้อง นั่นคือสำหรับกระบวนการหนึ่งหน่วยความจำของอีกกระบวนการหนึ่งจะอยู่นอกพื้นที่ที่อยู่ หากกระบวนการเอาชนะที่อยู่หน่วยความจำทั้งหมดมันจะไม่สามารถอ้างอิงที่อยู่หน่วยความจำของกระบวนการอื่นได้
ทำไมถึงโกงไม่ได้?
ในการแก้ไขสิ่งที่แสดงความคิดเห็นเช่นสร้างจุดเข้าในวงแหวน 0 แก้ไขเวกเตอร์ขัดจังหวะแก้ไขหน่วยความจำเสมือนแก้ไข LGDT ... - ทำได้จากวงแหวน 0 เท่านั้น
นั่นคือเพื่อให้กระบวนการสามารถสัมผัสกับหน่วยความจำของกระบวนการอื่นหรือเคอร์เนลได้ควรเป็นเคอร์เนลเอง และความจริงที่ว่ามีจุดเข้าเพียงจุดเดียวและพารามิเตอร์ถูกส่งผ่านรีจิสเตอร์ทำให้กับดักซับซ้อน - ในความเป็นจริงมันจะถูกส่งผ่านรีจิสเตอร์จนกว่าจะทำอะไรซึ่งจะถูกนำไปใช้เป็นกรณี ๆ ไปในรูทีนความสนใจ การหยุดชะงัก 80 ชม.
อีกสถานการณ์หนึ่งคือกรณีของระบบปฏิบัติการที่มีการโทรไปยังแหวน 0 ที่ไม่มีเอกสารหลายร้อยครั้งซึ่งเป็นไปได้ - อาจมีการเรียกลืมที่ใช้งานไม่ดีซึ่งสามารถพัฒนากับดักได้เสมอ - แต่ในกรณีของระบบปฏิบัติการที่มี กลไกขั้นตอนง่ายๆมันไม่ใช่
ด้วยเหตุนี้สถาปัตยกรรมหน่วยความจำเสมือนจึงป้องกันกลไกการส่งข้อมูลนี้ ไม่มีกระบวนการ - แม้แต่ผู้ที่มีสิทธิ์รูท - มีวิธีเข้าถึงหน่วยความจำของผู้อื่น เราสามารถโต้แย้งว่ากระบวนการสามารถมองเห็นเคอร์เนล มีการแมปจากที่อยู่หน่วยความจำลอจิคัล 0xC0000000 แต่เนื่องจากวงแหวนของโปรเซสเซอร์ทำงานคุณจึงไม่สามารถแก้ไขได้ จะสร้างกับดักเนื่องจากเป็นพื้นที่ความทรงจำที่อยู่ในวงแหวนอื่น
"โซลูชัน" จะเป็นโปรแกรมที่แก้ไขโค้ดเคอร์เนลเมื่อเป็นไฟล์ แต่ความจริงที่ว่าสิ่งเหล่านี้ถูกรวบรวมใหม่ทำให้เป็นไปไม่ได้ ไบนารีไม่สามารถแก้ไขได้เนื่องจากมีเมล็ดไบนารีที่แตกต่างกันหลายล้านรายการในโลก เพียงแค่ว่าเมื่อทำการคอมไพล์ใหม่พวกเขาได้ใส่หรือลบบางสิ่งบางอย่างออกจากเคอร์เนลที่ปฏิบัติการได้หรือพวกเขาเปลี่ยนขนาดของหนึ่งในป้ายกำกับที่ระบุเวอร์ชันการคอมไพล์ซึ่งเป็นสิ่งที่ทำโดยไม่ได้ตั้งใจ - ไม่สามารถใช้ไบนารีแพตช์ได้ ทางเลือกอื่นคือดาวน์โหลดซอร์สโค้ดจากอินเทอร์เน็ตแก้ไขกำหนดค่าสำหรับฮาร์ดแวร์ที่เหมาะสมรวบรวมติดตั้งและรีบูตเครื่อง ทั้งหมดนี้ควรทำโดยโปรแกรมโดยอัตโนมัติ ค่อนข้างท้าทายสำหรับสาขาปัญญาประดิษฐ์
อย่างที่เราเห็นไม่มีแม้แต่ไวรัสที่รูทสามารถข้ามอุปสรรคนี้ได้ ทางออกเดียวที่เหลือคือการส่งระหว่างไฟล์ปฏิบัติการ ซึ่งไม่ได้ผลตามที่เราจะเห็นด้านล่าง
ประสบการณ์ของฉันในฐานะผู้ดูแลระบบ:
กว่าสิบปีที่ฉันบริหารจัดการ Linux ด้วยการติดตั้งบนเครื่องหลายร้อยเครื่องในศูนย์ข้อมูลห้องทดลองของนักเรียน บริษัท ฯลฯ
- ฉันไม่เคยติดไวรัส
- ฉันไม่เคยเจอคนที่มี
- ฉันไม่เคยเจอคนที่เคยเจอคนที่มี
ฉันรู้จักคนที่เคยเห็น Loch Ness Monster มากกว่าที่เคยเห็นไวรัส Linux
โดยส่วนตัวฉันยอมรับว่าฉันประมาทและได้เปิดตัวโปรแกรมหลายโปรแกรมที่ "ผู้เชี่ยวชาญ" ที่เรียกตัวเองว่า "ไวรัสสำหรับ Linux" จากนี้ไปฉันจะเรียกพวกมันว่าไวรัสไม่ใช่เพื่อทำให้ข้อความอวดดี - จากบัญชีปกติของฉันกับเครื่องของฉัน เพื่อดูว่าไวรัสเป็นไปได้หรือไม่: ทั้ง bash virus ที่วนเวียนอยู่ที่นั่น - และยังไม่ติดไฟล์ใด ๆ - และไวรัสที่มีชื่อเสียงมากและปรากฏในสื่อ ฉันพยายามติดตั้งแล้ว และหลังจากผ่านไปยี่สิบนาทีของการทำงานฉันก็ยอมแพ้เมื่อเห็นว่าความต้องการอย่างหนึ่งของเขาคือการมีไดเร็กทอรี tmp ในพาร์ติชันของประเภท MSDOS โดยส่วนตัวฉันไม่รู้จักใครที่สร้างพาร์ติชันเฉพาะสำหรับ tmp และฟอร์แมตเป็น FAT
ในความเป็นจริงไวรัสที่เรียกว่าบางตัวที่ฉันได้ทดสอบสำหรับ Linux ต้องการความรู้ระดับสูงและรหัสผ่านรูทในการติดตั้ง อย่างน้อยที่สุดเราสามารถมีคุณสมบัติเป็นไวรัส "เส็งเคร็ง" ได้หากต้องการการแทรกแซงอย่างแข็งขันของเราเพื่อติดเครื่อง นอกจากนี้ในบางกรณีพวกเขาต้องการความรู้ที่กว้างขวางเกี่ยวกับ UNIX และรหัสผ่านรูท ซึ่งค่อนข้างไกลจากการติดตั้งอัตโนมัติที่ควรจะเป็น
การติดเชื้อไฟล์ปฏิบัติการบน Linux:
บน Linux กระบวนการสามารถทำในสิ่งที่ผู้ใช้ที่มีประสิทธิผลและกลุ่มที่มีประสิทธิผลอนุญาต เป็นความจริงที่ว่ามีกลไกในการแลกเปลี่ยนผู้ใช้จริงด้วยเงินสด แต่มีเพียงเล็กน้อยเท่านั้น ถ้าเราดูว่าไฟล์ปฏิบัติการอยู่ที่ไหนเราจะเห็นว่ามีเพียงรูทเท่านั้นที่มีสิทธิ์เขียนทั้งในไดเร็กทอรีเหล่านี้และในไฟล์ที่มีอยู่ กล่าวอีกนัยหนึ่งรูทเท่านั้นที่สามารถแก้ไขไฟล์ดังกล่าวได้ นี่เป็นกรณีใน Unix ตั้งแต่ยุค 70 ใน Linux ตั้งแต่ต้นกำเนิดและในระบบไฟล์ที่รองรับสิทธิ์ยังไม่มีข้อผิดพลาดที่ทำให้เกิดพฤติกรรมอื่น ๆ โครงสร้างของไฟล์ปฏิบัติการ ELF เป็นที่รู้จักและได้รับการบันทึกไว้เป็นอย่างดีดังนั้นในทางเทคนิคแล้วไฟล์ประเภทนี้จะโหลดเพย์โหลดในไฟล์ ELF อื่นได้ ... ตราบใดที่ผู้ใช้ที่มีประสิทธิภาพในอดีตหรือกลุ่มที่มีประสิทธิภาพของ เดิมมีสิทธิ์การเข้าถึงการอ่านการเขียนและการเรียกใช้ไฟล์ที่สอง ระบบไฟล์ปฏิบัติการสามารถติดเชื้อในฐานะผู้ใช้ทั่วไปได้กี่ไฟล์
คำถามนี้มีคำตอบง่ายๆหากเราต้องการทราบว่าเราสามารถ "ติดไวรัส" ได้กี่ไฟล์เราจะเปิดคำสั่ง:
$ find / -type f -perm -o=rwx -o \( -perm -g=rwx -group `id -g` \) -o \( -perm -u=rwx -user `id -u` \) -print 2> /dev/null | grep -v /proc
เราไม่รวมไดเร็กทอรี / proc เนื่องจากเป็นระบบไฟล์เสมือนที่แสดงข้อมูลเกี่ยวกับการทำงานของระบบปฏิบัติการ ไฟล์ประเภทไฟล์ที่มีสิทธิ์ในการดำเนินการที่เราจะพบนั้นไม่ก่อให้เกิดปัญหาเนื่องจากมักเป็นลิงก์เสมือนจริงที่ดูเหมือนจะอ่านเขียนและดำเนินการได้และหากผู้ใช้ลองใช้ก็จะไม่ได้ผล นอกจากนี้เรายังตัดข้อผิดพลาดมากมาย - เนื่องจากโดยเฉพาะใน / proc และ / home มีไดเร็กทอรีจำนวนมากที่ผู้ใช้ทั่วไปไม่สามารถเข้า - สคริปต์นี้ใช้เวลานาน ในกรณีเฉพาะของเราในเครื่องจักรที่มีคนสี่คนทำงานคำตอบคือ:
/tmp/.ICE-unix/dcop52651205225188
/tmp/.ICE-unix/5279
/home/irbis/kradview-1.2/src
/kradview
ผลลัพธ์จะแสดงไฟล์สามไฟล์ที่อาจติดไวรัสได้หากรันไวรัสสมมุติ สองไฟล์แรกคือไฟล์ประเภทซ็อกเก็ต Unix ที่ถูกลบเมื่อเริ่มต้น - และไม่สามารถรับผลกระทบจากไวรัสได้และไฟล์ที่สามเป็นไฟล์ของโปรแกรมที่กำลังพัฒนาซึ่งจะถูกลบทุกครั้งที่มีการคอมไพล์ใหม่ จากมุมมองที่ใช้งานได้จริงไวรัสจะไม่แพร่กระจาย
จากสิ่งที่เราเห็นวิธีเดียวที่จะกระจายน้ำหนักบรรทุกคือการรูท ในกรณีนี้เพื่อให้ไวรัสทำงานได้ผู้ใช้จะต้องมีสิทธิ์ของผู้ดูแลระบบเสมอ ในกรณีนั้นอาจทำให้ไฟล์ติดไวรัสได้ แต่นี่คือสิ่งที่จับได้: ในการส่งการติดเชื้อคุณต้องใช้ไฟล์ปฏิบัติการอื่นส่งไปยังผู้ใช้รายอื่นที่ใช้เครื่องเป็นรูทเท่านั้นและทำซ้ำขั้นตอน
ในระบบปฏิบัติการที่จำเป็นต้องเป็นผู้ดูแลระบบสำหรับงานทั่วไปหรือเรียกใช้แอปพลิเคชันประจำวันจำนวนมากอาจเป็นเช่นนั้นได้ แต่ใน Unix จำเป็นต้องเป็นผู้ดูแลระบบเพื่อกำหนดค่าเครื่องและแก้ไขไฟล์การกำหนดค่าดังนั้นจำนวนผู้ใช้ที่บัญชีรูทใช้เป็นบัญชีรายวันจึงมีน้อย มันมากกว่า; ลีนุกซ์บางรุ่นไม่ได้เปิดใช้งานบัญชีรูทด้วยซ้ำ ในเกือบทั้งหมดหากคุณเข้าถึงสภาพแวดล้อมแบบกราฟิกเช่นนี้พื้นหลังจะเปลี่ยนเป็นสีแดงเข้มและข้อความคงที่ซ้ำ ๆ กันเพื่อเตือนคุณว่าไม่ควรใช้บัญชีนี้
ในที่สุดทุกอย่างที่ต้องทำในฐานะรูทสามารถทำได้ด้วยคำสั่ง sudo โดยไม่มีความเสี่ยง
ด้วยเหตุนี้ใน Linux ไฟล์ปฏิบัติการจึงไม่สามารถแพร่เชื้อให้ผู้อื่นได้ตราบเท่าที่เราไม่ได้ใช้บัญชีรูทเป็นบัญชีการใช้งานทั่วไป และแม้ว่า บริษัท แอนตี้ไวรัสจะยืนยันว่ามีไวรัสสำหรับ Linux แต่จริงๆแล้วสิ่งที่ใกล้เคียงที่สุดที่สามารถสร้างได้ใน Linux คือโทรจันในพื้นที่ผู้ใช้ วิธีเดียวที่โทรจันเหล่านี้สามารถส่งผลกระทบต่อบางสิ่งในระบบได้คือการเรียกใช้ในฐานะรูทและด้วยสิทธิพิเศษที่จำเป็น หากโดยปกติแล้วเราจะใช้เครื่องในฐานะผู้ใช้ทั่วไปเป็นไปไม่ได้ที่กระบวนการที่เปิดใช้โดยผู้ใช้ทั่วไปเพื่อทำให้ระบบติด
ตำนานและการโกหก:
เราพบเรื่องโกหกหลอกลวงและเรื่องโกหกธรรมดา ๆ มากมายเกี่ยวกับไวรัสใน Linux เรามาดูรายชื่อของพวกเขาตามการสนทนาที่เกิดขึ้นเมื่อสักครู่กับตัวแทนของผู้ผลิตโปรแกรมป้องกันไวรัสสำหรับ Linux ซึ่งไม่พอใจอย่างมากกับบทความที่ตีพิมพ์ในนิตยสารเดียวกันนี้
การสนทนานั้นเป็นตัวอย่างอ้างอิงที่ดีเนื่องจากมีการพูดถึงไวรัสใน Linux เราจะตรวจสอบตำนานเหล่านี้ทีละเรื่องตามที่มีการพูดคุยกันในการสนทนาเฉพาะนั้น แต่มีการพูดซ้ำหลายครั้งในฟอรัมอื่น ๆ
ตำนาน 1:
"ไม่ใช่ทุกโปรแกรมที่เป็นอันตรายโดยเฉพาะไวรัสที่จำเป็นต้องมีสิทธิ์รูทในการติดไวรัสโดยเฉพาะอย่างยิ่งในกรณีเฉพาะของไวรัสที่ปฏิบัติการได้ (รูปแบบ ELF) ที่ติดโปรแกรมปฏิบัติการอื่น"คำตอบ:
ใครก็ตามที่อ้างสิทธิ์ดังกล่าวจะไม่ทราบว่าระบบสิทธิพิเศษของ Unix ทำงานอย่างไร ในการส่งผลกระทบต่อไฟล์ไวรัสจำเป็นต้องมีสิทธิ์ในการอ่าน - มันต้องอ่านเพื่อแก้ไข - และต้องเขียน - มันเพื่อให้การแก้ไขนั้นถูกต้องบนไฟล์ปฏิบัติการที่ต้องการเรียกใช้งาน
เป็นเช่นนี้เสมอโดยไม่มีข้อยกเว้น และในการแจกแจงแต่ละครั้งผู้ใช้ที่ไม่ใช่รูทจะไม่มีสิทธิ์เหล่านี้ จากนั้นเพียงแค่ไม่ได้รูทก็จะไม่สามารถติดเชื้อได้ การทดสอบเชิงประจักษ์: ในส่วนก่อนหน้านี้เราเห็นสคริปต์ง่ายๆในการตรวจสอบช่วงของไฟล์ที่อาจได้รับผลกระทบจากการติดไวรัส หากเราเปิดใช้งานบนเครื่องของเราเราจะเห็นว่ามันมีความสำคัญน้อยเพียงใดและเกี่ยวกับไฟล์ระบบเป็นโมฆะ นอกจากนี้ไม่เหมือนกับระบบปฏิบัติการเช่น Windows คุณไม่จำเป็นต้องมีสิทธิ์ของผู้ดูแลระบบในการทำงานทั่วไปกับโปรแกรมที่ผู้ใช้ทั่วไปใช้กันทั่วไปตำนาน 2:
"พวกเขาไม่จำเป็นต้องรูทเพื่อเข้าสู่ระบบจากระยะไกลในกรณีของ Slapper ซึ่งเป็นเวิร์มที่ใช้ช่องโหว่ใน SSL ของ Apache (ใบรับรองที่อนุญาตให้มีการสื่อสารที่ปลอดภัย) ได้สร้างเครือข่ายเครื่องซอมบี้ของตัวเองในเดือนกันยายน 2002"คำตอบ:
ตัวอย่างนี้ไม่ได้หมายถึงไวรัส แต่เป็นหนอน ความแตกต่างนั้นสำคัญมาก: เวิร์มเป็นโปรแกรมที่ใช้ประโยชน์จากบริการสำหรับอินเทอร์เน็ตเพื่อส่งผ่านตัวมันเอง ไม่ส่งผลกระทบต่อโปรแกรมท้องถิ่น ดังนั้นจึงมีผลกับเซิร์ฟเวอร์เท่านั้น ไม่ใช่เฉพาะเครื่อง
เวิร์มมีน้อยมากและมีอุบัติการณ์เล็กน้อย สามคนที่สำคัญจริงๆเกิดในยุค 80 ซึ่งเป็นช่วงเวลาที่อินเทอร์เน็ตไร้เดียงสาและทุกคนก็เชื่อใจทุกคน จำไว้ว่าพวกเขาเป็นคนที่ส่งผลกระทบต่อ sendmail, fingerd และ rexec วันนี้สิ่งที่ซับซ้อนมากขึ้น แม้ว่าเราจะไม่สามารถปฏิเสธได้ว่าพวกมันยังคงมีอยู่และหากปล่อยทิ้งไว้ก็เป็นอันตรายอย่างยิ่ง แต่ตอนนี้เวลาตอบสนองต่อเวิร์มนั้นสั้นมาก นี่คือกรณีของ Slapper: หนอนที่สร้างขึ้นจากช่องโหว่ที่ค้นพบและได้รับการแก้ไข - สองเดือนก่อนการปรากฏตัวของตัวหนอนเอง
แม้ว่าทุกคนที่ใช้ Linux มี Apache ติดตั้งและใช้งานอยู่ตลอดเวลาเพียงแค่อัปเดตแพ็คเกจรายเดือนก็เพียงพอแล้วที่จะไม่เสี่ยงต่อการเสี่ยงใด ๆ
เป็นความจริงที่ว่าข้อผิดพลาด SSL ที่ Slapper ก่อให้เกิดนั้นสำคัญมากซึ่งเป็นข้อบกพร่องที่ใหญ่ที่สุดที่พบในประวัติศาสตร์ทั้งหมดของ SSL2 และ SSL3 และด้วยเหตุนี้จึงได้รับการแก้ไขภายในไม่กี่ชั่วโมง สองเดือนหลังจากที่พบและแก้ไขปัญหานี้มีคนสร้างเวิร์มในจุดบกพร่องที่ได้รับการแก้ไขแล้วและนี่คือตัวอย่างที่ทรงพลังที่สุดที่สามารถให้เป็นช่องโหว่ได้อย่างน้อยก็ทำให้มั่นใจได้
ตามกฎทั่วไปการแก้ปัญหาเวิร์มไม่ใช่การซื้อแอนตี้ไวรัสติดตั้งและเสียเวลาในการคำนวณเพื่อให้มันมีถิ่นที่อยู่ วิธีแก้ปัญหาคือการใช้ระบบอัปเดตความปลอดภัยของการแจกจ่ายของเรา: เมื่อมีการอัปเดตการแจกจ่ายแล้วจะไม่มีปัญหาใด ๆ การเรียกใช้เฉพาะบริการที่เราต้องการเป็นความคิดที่ดีด้วยเหตุผลสองประการคือเราปรับปรุงการใช้ทรัพยากรและหลีกเลี่ยงปัญหาด้านความปลอดภัยตำนาน 3:
"ไม่คิดว่าแก่นคงกระพัน ในความเป็นจริงมีกลุ่มโปรแกรมที่เป็นอันตรายที่เรียกว่า LRK (Linux Rootkits Kernel) ซึ่งอาศัยช่องโหว่ในโมดูลเคอร์เนลและแทนที่ไบนารีของระบบ"คำตอบ:
รูทคิตนั้นเป็นเคอร์เนลแพทช์ที่ช่วยให้คุณสามารถซ่อนการมีอยู่ของผู้ใช้และกระบวนการบางอย่างจากเครื่องมือปกติเนื่องจากพวกเขาจะไม่ปรากฏในไดเร็กทอรี / proc สิ่งปกติคือพวกเขาใช้มันเมื่อสิ้นสุดการโจมตีในตอนแรกพวกเขาจะใช้ประโยชน์จากช่องโหว่ระยะไกลเพื่อเข้าถึงเครื่องของเรา จากนั้นพวกเขาจะทำการโจมตีตามลำดับเพื่อเพิ่มสิทธิ์จนกว่าพวกเขาจะมีบัญชีรูท ปัญหาเมื่อพวกเขาทำคือการติดตั้งบริการบนเครื่องของเราโดยไม่ถูกตรวจพบนั่นคือสิ่งที่ rootkit เข้ามา ผู้ใช้ถูกสร้างขึ้นซึ่งจะเป็นผู้ใช้ที่มีประสิทธิภาพของบริการที่เราต้องการซ่อนพวกเขาติดตั้งรูทคิตและซ่อนผู้ใช้ดังกล่าวและกระบวนการทั้งหมดที่เป็นของผู้ใช้ดังกล่าว
วิธีซ่อนการมีอยู่ของผู้ใช้มีประโยชน์ต่อไวรัสเป็นสิ่งที่เราสามารถพูดคุยกันได้ในระยะยาว แต่ไวรัสที่ใช้ rootkit เพื่อติดตั้งดูเหมือนจะสนุก ลองจินตนาการถึงกลไกของไวรัส (ในรหัสเทียม):
1) ไวรัสเข้าสู่ระบบ
2) ค้นหาซอร์สโค้ดเคอร์เนล ถ้าไม่ใช่เขาจะติดตั้งเอง
3) กำหนดค่าเคอร์เนลสำหรับตัวเลือกฮาร์ดแวร์ที่ใช้กับเครื่องที่เป็นปัญหา
4) รวบรวมเคอร์เนล
5) ติดตั้งเคอร์เนลใหม่ แก้ไข LILO หรือ GRUB ถ้าจำเป็น
6) รีบูตเครื่องขั้นตอน (5) และ (6) ต้องการสิทธิ์รูท ค่อนข้างซับซ้อนที่ขั้นตอน (4) และ (6) ไม่ถูกตรวจพบโดยผู้ติดเชื้อ แต่สิ่งที่น่าตลกคือมีคนที่เชื่อว่ามีโปรแกรมที่สามารถทำขั้นตอน (2) และ (3) ได้โดยอัตโนมัติ
สุดยอดถ้าเราเจอคนที่บอกเราว่า "เมื่อมีเครื่อง Linux มากขึ้นก็จะมีไวรัสมากขึ้น" และแนะนำให้เรา "ติดตั้งโปรแกรมป้องกันไวรัสและอัปเดตอยู่ตลอดเวลา" อาจเกี่ยวข้องกับ บริษัท ที่จำหน่าย โปรแกรมป้องกันไวรัสและการอัปเดต น่าสงสัยอาจเป็นเจ้าของเดียวกัน
Antivirus สำหรับ Linux:
จริงอยู่ที่ว่ามีแอนตี้ไวรัสดีๆสำหรับลินุกซ์ ปัญหาคือพวกเขาไม่ทำในสิ่งที่ผู้สนับสนุนแอนตี้ไวรัสโต้แย้ง หน้าที่ของมันคือการกรองจดหมายที่ส่งผ่านจากมัลแวร์และไวรัสไปยัง Windows รวมทั้งตรวจสอบการมีอยู่ของไวรัส Windows ในโฟลเดอร์ที่ส่งออกผ่าน SAMBA ดังนั้นหากเราใช้เครื่องของเราเป็นเกตเวย์อีเมลหรือเป็น NAS สำหรับเครื่อง Windows เราสามารถป้องกันได้
หอย - AV:
เราจะไม่ทำรายงานให้เสร็จโดยไม่พูดถึงโปรแกรมป้องกันไวรัสหลักสำหรับ GNU / Linux: ClamAV
ClamAV เป็นโปรแกรมป้องกันไวรัส GPL ที่มีประสิทธิภาพมากซึ่งรวบรวม Unix ส่วนใหญ่ที่มีอยู่ในตลาด ออกแบบมาเพื่อวิเคราะห์สิ่งที่แนบมากับข้อความเมลที่ส่งผ่านสถานีและกรองไวรัส
แอปพลิเคชั่นนี้ทำงานร่วมกับ sendmail ได้อย่างสมบูรณ์แบบเพื่อให้สามารถกรองไวรัสที่สามารถเก็บไว้ในเซิร์ฟเวอร์ Linux ที่ให้บริการจดหมายถึง บริษัท ต่างๆ มีฐานข้อมูลไวรัสที่อัพเดททุกวันพร้อมการสนับสนุนแบบดิจิทัล ฐานข้อมูลมีการอัปเดตหลายครั้งต่อวันและเป็นโครงการที่มีชีวิตชีวาและน่าสนใจมาก
โปรแกรมที่มีประสิทธิภาพนี้สามารถวิเคราะห์ไวรัสแม้ในไฟล์แนบในรูปแบบที่ซับซ้อนกว่าเพื่อเปิดเช่น RAR (2.0), Zip, Gzip, Bzip2, Tar, MS OLE2, ไฟล์ MS Cabinet, MS CHM (HTML COprinted) และ MS SZDD.
ClamAV ยังรองรับไฟล์เมล mbox, Maildir และ RAW และไฟล์ Portable Executable ที่บีบอัดด้วย UPX, FSG และ Petite Clam AV และคู่ spamassassin เป็นคู่ที่สมบูรณ์แบบในการปกป้องไคลเอนต์ Windows ของเราจากเซิร์ฟเวอร์อีเมล Unix
สรุปผลการศึกษา
สำหรับคำถามมีช่องโหว่ในระบบ Linux หรือไม่? คำตอบคือใช่
ไม่มีใครสงสัยในความคิดที่ถูกต้อง Linux ไม่ใช่ OpenBSD อีกประการหนึ่งคือหน้าต่างช่องโหว่ที่ระบบ Linux มีการอัปเดตอย่างถูกต้อง หากเราถามตัวเองว่ามีเครื่องมือที่จะใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยเหล่านี้และใช้ประโยชน์จากช่องโหว่เหล่านี้หรือไม่? ใช่ แต่นี่ไม่ใช่ไวรัส แต่เป็นการหาประโยชน์
ไวรัสจะต้องเอาชนะปัญหาอื่น ๆ อีกมากมายที่ผู้ปกป้อง Windows มักจะวางไว้เป็นข้อบกพร่อง / ปัญหาของ Linux และนั่นทำให้การมีอยู่ของไวรัสที่แท้จริงซับซ้อนขึ้น - เมล็ดพืชที่ถูกคอมไพล์ซ้ำแอพพลิเคชั่นหลายเวอร์ชันการแจกแจงจำนวนมากสิ่งที่พวกเขาไม่ใช่ ส่งผ่านไปยังผู้ใช้โดยอัตโนมัติอย่างโปร่งใส ฯลฯ - "ไวรัส" ตามทฤษฎีปัจจุบันต้องติดตั้งด้วยตนเองจากบัญชีรูท แต่นั่นไม่สามารถพิจารณาได้ว่าเป็นไวรัส
อย่างที่บอกนักเรียนเสมอว่าอย่าเชื่อฉันได้โปรด ดาวน์โหลดและติดตั้ง rootkit บนเครื่อง และหากคุณต้องการข้อมูลเพิ่มเติมโปรดอ่านซอร์สโค้ดของ "ไวรัส" ในตลาด ความจริงอยู่ในซอร์สโค้ด เป็นเรื่องยากสำหรับไวรัสที่ "ประกาศตัวเอง" จะตั้งชื่อแบบนั้นต่อไปหลังจากอ่านรหัสแล้ว และหากคุณไม่ทราบวิธีอ่านโค้ดมาตรการรักษาความปลอดภัยง่ายๆเพียงวิธีเดียวที่ฉันแนะนำ: ใช้บัญชีรูทเพื่อจัดการเครื่องเท่านั้นและอัปเดตความปลอดภัยให้ทันสมัยอยู่เสมอ
ด้วยเหตุนี้จึงเป็นไปไม่ได้ที่ไวรัสจะเข้าสู่คุณและไม่น่าเป็นไปได้มากที่เวิร์มหรือใครบางคนจะโจมตีเครื่องของคุณได้สำเร็จ