แยกเครื่อง VirtualBox ออกโดยสิ้นเชิง


17

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

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

ตอนนี้เครื่องแขกกำลังเรียกใช้การทดสอบ GNU / Linux Debian


7
Stack Exchange มีกลุ่มความปลอดภัยของข้อมูลหากคุณต้องการถามคำถามเพื่อความปลอดภัยโดยละเอียด
cybernard

@cybernard ที่สองที่นี่ หลังจากผ่านไปสักครู่นี่จะเป็นคำถามที่เหมาะสมอย่างยิ่งสำหรับ Security.SE โดยสมมติว่าไม่ใช่สิ่งที่ซ้ำกัน (ซึ่งฉันเกรงว่ามันอาจจะเป็นอย่างดีเนื่องจากชุมชนของพวกเขาเติบโต)
0xdd

1
คุณไม่ควรใช้ VirtualBox เพราะมันโต้ตอบกับระบบของคุณผ่านโมดูลเคอร์เนลซึ่งมีความเสี่ยงสูงกว่าการใช้งาน userpace แท้ๆ และโดยเฉพาะอย่างยิ่งโมดูลเคอร์เนลกล่องเสมือนถือเป็นอึโดยนักพัฒนาเคอร์เนล ตัวเลือกที่ดีกว่าคืออีมูเลเตอร์บางตัวเช่น qemu ทำงานในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษซึ่งไม่สามารถเข้าถึงสิ่งที่น่าสนใจและกฎไฟร์วอลล์ซึ่งป้องกันการเข้าถึงเครือข่ายสำหรับผู้ใช้นั้น (โพสต์เป็นความคิดเห็นเพราะมันไม่ได้ตอบคำถามเกี่ยวกับ VirtualBox โดยตรง)
อัลโล

คำตอบ:


36

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

การทำงานภายใต้สมมติฐานที่ว่าคุณกำลังเรียกใช้มัลแวร์ที่ได้รับการวิจัยก่อนหน้านี้ว่าคุณแยกสภาพแวดล้อมของคุณขึ้นอยู่กับว่ามัลแวร์นั้นมีความสามารถอย่างไร กฎทั่วไปบางข้อที่ใช้กับมัลแวร์สมัยใหม่ส่วนใหญ่อาจเป็น:

  • แยก VM ของคุณออกจากอินเทอร์เน็ต สิ่งนี้สามารถทำได้ง่ายเพียงแค่ไม่ตั้งค่าการส่งต่ออินเทอร์เฟซไปยังเครื่องแขกและป้องกันมัลแวร์จากการสื่อสารกับโหนดคำสั่งและการควบคุมที่อาจเกิดขึ้นได้

  • ใช้ไฮเปอร์ไวเซอร์ที่เหมาะสม มีบางส่วนที่สำคัญในตลาดรวมถึง VirtualBox, HyperV, QEMU และ macOS Hypervisor.frameworkเพื่อตั้งชื่อไม่กี่คน มัลแวร์บางตัวมีการกำหนดเป้าหมายอย่างแข็งขันจากมัลแวร์และขึ้นอยู่กับเวอร์ชันอาจมีความเสี่ยงที่มัลแวร์จะแตกออกจากเครื่องแขก

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

วิธีระบุจุดของคุณโดยตรง:

เครื่องเสมือนสามารถแยกได้จากโฮสต์อย่างไร

ณ จุดนี้ VM สามารถแยกออกจากกันได้อย่างทั่วถึง แต่บางฟังก์ชั่นยังคงต้องผ่านโฮสต์มากกว่าหรือน้อยกว่าโดยตรงโดยมีการป้องกันไฮเปอร์ไวเซอร์น้อย ทันใดนั้นเครื่องเสมือนที่ไม่ใช่ KVM ส่วนใหญ่ (เช่น VirtualBox) จะไม่แชร์เคอร์เนลกับโฮสต์ระบบปฏิบัติการ สิ่งนี้ทำหน้าที่เป็นตัวบล็อกจากคลาสที่มีช่องโหว่จำนวนมากโดยเฉพาะการบล็อกความสามารถในการเรียกใช้ syscalls ตามอำเภอใจกับเคอร์เนลโฮสต์ของคุณ (ด้วยเครื่องหมายดอกจันที่น่าสังเกตว่า

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

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

ฉันควรตั้งค่าไฟร์วอลล์ระหว่างแขกและโฮสต์หรือไม่

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

แอดออนเป็นความเสี่ยงด้านความปลอดภัยหรือไม่?

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

สิ่งที่เกี่ยวกับไดเรกทอรีที่ใช้ร่วมกัน?

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


ความกังวลของฉันคือคุณได้ทำการวิจัยน้อยมากเกี่ยวกับเรื่องนี้และคุณอาจได้รับอันตรายจากเครื่องหรือข้อมูลของคุณ ก่อนที่คุณจะดำเนินการต่อฉันขอแนะนำให้คุณตรวจสอบกลไกการแยกที่แตกต่างกันในระบบปฏิบัติการทั่วไป (KVM) วิธีที่พวกเขารวมเข้ากับกรอบการทำงานเสมือนจริงระดับสูงขึ้น ( ) ตู้คอนเทนเนอร์ ( ) และchrootกลไก ( ) ไม่กี่) เมื่อแต่ละคนมีความเหมาะสมและสิ่งที่พวกเขาสามารถและไม่สามารถทำ ณ จุดนี้คุณจะสามารถตัดสินได้ดีขึ้นว่าคุณสามารถเล่นกับมัลแวร์ได้อย่างปลอดภัยในสภาพแวดล้อมที่แยกออกจากกันอย่างเหมาะสมหรือไม่

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


3
ฉันไม่คิดว่ามีความแตกต่างในแง่ของการแยกโดยทั่วไประหว่าง KVM และ VirtualBox / VMWare / ... เนื่องจากทั้งหมดต้องการการสนับสนุนโมดูลเคอร์เนลและใช้การจำลองเสมือนแบบใช้ฮาร์ดแวร์ช่วย บางทีคุณอาจหมายถึงคอนเทนเนอร์ / นักเทียบท่า? ที่กล่าวว่าการหาประโยชน์จาก qemu ที่บริสุทธิ์นั้นจะอยู่ใน userspace เท่านั้น แต่ในปัจจุบันมันมีการตรวจสอบน้อยกว่า kvm (ดูฟลอปปี้ไดรฟ์ที่หาช่องโหว่) แต่ทว่า kvm หรือ qemu ไม่อนุญาตให้ syscalls เข้าสู่เคอร์เนลโดยตรง .
Maciej Piechotka

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