ฉันจะตรวจสอบการปฏิบัติการเพื่อให้แน่ใจว่าไม่เป็นอันตรายได้อย่างไร


10

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

ด้วยการทำเช่นนั้นฉันต้องการตรวจสอบว่าปฏิบัติการนั้นเป็นอันตรายหรือไม่เช่นทำการดำเนินการที่ไม่ควร (อ่าน / เขียนไฟล์ฟัง / เชื่อมต่อกับพอร์ตเครือข่าย ... )

ฉันจะไม่รังเกียจอะไรกับส่วนต่อประสานกราฟิก


2
@EliahKagan: ถ้าฉันเข้าใจคำถามถูกต้อง OP ขอ "a (เครื่องมือ) ที่ฉันสามารถเห็นทุกอย่างที่ปฏิบัติการกำลังทำอยู่" - ลองจินตนาการว่าคุณสามารถเรียกใช้sandbox somebinaryและsandboxโปรแกรมจินตภาพจะบันทึกไฟล์ทั้งหมดที่somebinaryอ่านหรือเขียนทั้งหมด IP / พอร์ตที่เชื่อมต่อกับการถ่ายโอนข้อมูลเป็นต้นซึ่งจะเป็นสิ่งที่มีประโยชน์ฉันอยากรู้ว่ามีบางสิ่งที่มีอยู่ (และที่จริงแล้วหากไม่มีเครื่องมือเช่นนี้ที่สังเกตได้ว่าโปรแกรมที่ทำงานอยู่ใน VM จะไม่มีจุดหมายเหมือนคุณ ไม่สามารถพูดสิ่งที่มันทำอยู่แล้ว) คำถามที่ดี.
Sergey

2
คำถามที่เกี่ยวข้องกับ UL.SE ฉันถามก่อน: ฉันจะตรวจสอบไฟล์ที่เปิดของกระบวนการแบบเรียลไทม์ได้อย่างไร (ไม่เพียง แต่เกี่ยวกับไฟล์รวมถึงเครือข่าย) โปรดจำไว้ว่าเมื่อคุณเห็นมันเกิดขึ้นความเสียหายก็เกิดขึ้นแล้ว
gertvdijk

2
ฉันถามคำถามเกี่ยวกับเมตาเกี่ยวกับการปิดคำถามนี้: meta.askubuntu.com/questions/5871/ … - ฉันไม่เชื่อว่ามันควรจะถูกปิด
Sergey

คำตอบ:


10

เป็นเครื่องมือหรืออาจเป็นเครื่องเสมือนในการเรียกใช้โปรแกรมปฏิบัติการภายใน

ใช่นี้จะเรียกว่าการประยุกต์ใช้การทำงานแบบเสมือน

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

ฉันคิดว่ามันอยู่นอกขอบเขตของคำถามเล็กน้อยที่จะอธิบายถึงตู้คอนเทนเนอร์ LXC ที่สมบูรณ์รวมถึงวิธีการตรวจสอบอย่างถูกต้อง ข้างล่างนี้เป็นวิธีเริ่มต้นเล็กน้อย

ในขณะที่โปรแกรมกำลังทำงานอยู่ฉันต้องการเห็นทุกสิ่งที่โปรแกรมเรียกใช้งานอยู่ (การเข้าถึงไฟล์และเครือข่าย)

สิ่งนี้สามารถทำได้โดยใช้straceและฉันถามคำถามเดียวกันใน Unix & Linux:

ตามที่ได้รับคำตอบไว้

strace -t -e trace=open,close,read,getdents,write,connect,accept command-here

สำคัญ: เมื่อคุณเห็นสิ่งที่เกิดขึ้นความเสียหายเกิดขึ้นแล้ว


คอนเทนเนอร์ของแอ็พพลิเคชัน LXC

จากบทความนี้ มันลงมาที่:

  1. lxc-macvlan.conf ไฟล์การกำหนดค่า:

    # example as found on /usr/share/doc/lxc/examples/lxc-macvlan.conf
    # Container with network virtualized using the macvlan device driver
    lxc.utsname = alpha
    lxc.network.type = macvlan
    lxc.network.flags = up
    lxc.network.link = eth0 # or eth2 or any of your NICs
    lxc.network.hwaddr = 4a:49:43:49:79:bd
    lxc.network.ipv4 = 0.0.0.0/24
    
  2. เริ่มโดยใช้lxc-execute:

    sudo lxc-execute -n bash-test2 -f lxc-macvlan.conf /bin/bash
    

โปรดทราบว่า LXC มีทั้งระบบและประเภทของตู้คอนเทนเนอร์ คุณกำลังมองหาคอนเทนเนอร์ของแอปพลิเคชันที่นี่


1
LXC ยังไม่พร้อมและยังไม่ปลอดภัย ตัวอย่างเช่น/sysไม่ได้ทำเสมือนจริงและมีการเปลี่ยนแปลงที่ทำ/sysจากภาชนะที่ทำกับ/sysโฮสต์ ทำการค้นหาอย่างรวดเร็วบนเว็บมีบางบทความที่เอกสารวิธีการ "หลบหนี" จากภาชนะ LXC จะเป็นทางออกที่ดีในการแก้ไขปัญหา แต่ในขณะนี้ไม่ใช่และไม่ควรใช้เป็นเครื่องมือรักษาความปลอดภัย
Andrea Corbellini

1
ด้วยวิธีที่การกำหนดค่าตัวอย่างที่โพสต์ไม่ได้ใช้ประโยชน์จากlxc.mountตัวเลือก ซึ่งหมายความว่าระบบไฟล์ของผู้ใช้ทั้งหมดสามารถเข้าถึงได้โดยการเรียกใช้งานได้
Andrea Corbellini

10

สิ่งที่คุณกำลังมองหาคือเครื่องมือที่แสดงให้เห็นว่าโปรแกรมโต้ตอบกับระบบอย่างไร (โดยเฉพาะอย่างยิ่งกับเคอร์เนล) โปรแกรมโต้ตอบกับระบบโดยใช้ syscalls ตัวอย่างของ syscalls คือ:

  • open - ใช้เพื่อเปิดไฟล์;
  • readและwrite- ใช้เพื่ออ่าน / เขียนจาก / ถึงตัวอธิบายไฟล์
  • connect - ใช้เพื่อเชื่อมต่อซ็อกเก็ตกับเพียร์;
  • อื่น ๆ อีกมากมาย (ดูman syscalls)

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

  • ระบบเรียกโปรแกรมกำลังเรียก;
  • ข้อโต้แย้งที่ใช้ในการทำ syscalls;
  • ผลลัพธ์ของ syscalls

ผลลัพธ์อยู่ในรูปแบบ C นี่คือตัวอย่าง:

$ strace cat test
execve("/bin/cat", ["cat", "test"], [/* 55 vars */]) = 0
/* ... */
open("test", O_RDONLY)                 = 3
/* ... */
read(3, "hello\n", 32768)               = 6
write(1, "hello\n", 6)                  = 6
read(3, "", 32768)                      = 0
/* ... */

ที่นั่นคุณจะเห็นว่าcat testมีการเปิดไฟล์ชื่อtestอ่านเนื้อหา ( hello) และวางไว้ในเอาท์พุทมาตรฐาน

straceสามารถสร้างเอาต์พุตจำนวนมากได้ดังนั้นโปรดอ่าน man page ( man strace) โดยเฉพาะเอกสารประกอบของ-eเอาต์พุตที่จะช่วยให้คุณเห็นเฉพาะ syscalls ที่คุณสนใจ

น่าเสียดายที่ฉันไม่ทราบถึงทางเลือกแบบกราฟิกหรือใช้งานง่าย หากคุณต้องการค้นหาptraceควรเป็นหนึ่งในคำค้นหาของคุณ


เกี่ยวกับความโดดเดี่ยวมีเทคโนโลยีมากมายที่นั่น Chroots, Linux container (ซึ่งขณะนี้อยู่ระหว่างการพัฒนาและไม่สมบูรณ์), virtualization ซอฟต์แวร์และ parav virtualization อย่างไรก็ตามนี่เป็นหัวข้อที่ใหญ่เกินไปที่จะอภิปราย ฉันขอแนะนำให้เปิดคำถามใหม่หากคุณต้องการมีรายละเอียดเพิ่มเติม


5

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

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

AppArmor ก้าวไปไกลกว่านี้และอนุญาตให้แอปพลิเคชันถูก จำกัด การใช้งานที่ได้รับอนุญาตเท่านั้น แอพที่ลงท้ายด้วยUbuntu Software Center มาพร้อมกับโปรไฟล์ AppArmor


5

ตามที่คุณระบุไว้เครื่องเสมือนจะดีกว่าที่จะให้การแยกโดยเฉพาะอย่างยิ่งถ้าคุณมีเหตุผลที่เชื่อได้ว่าปฏิบัติการที่เป็นอันตรายในสถานที่แรก แต่สิ่งนี้ยังไม่สมบูรณ์แบบเนื่องจากช่องโหว่ในแพลตฟอร์มเวอร์ชวลไลเซชัน (ทั้งฮาร์ดแวร์และซอฟต์แวร์) สามารถถูกโจมตีโดยมัลแวร์เพื่อทำลาย นี่คือตัวอย่างของช่องโหว่การจำลองเสมือนจริงในโลกแห่งความเป็นจริง: http://www.kb.cert.org/vuls/id/649219


1

คุณสามารถสร้างสแนป

Snaps คือ "ถูก จำกัด จากระบบปฏิบัติการและแอพอื่น ๆ ผ่านกลไกความปลอดภัย แต่สามารถแลกเปลี่ยนเนื้อหาและฟังก์ชั่นกับ snaps อื่น ๆ ได้ตามนโยบายละเอียดที่ควบคุมโดยผู้ใช้และค่าเริ่มต้นของระบบปฏิบัติการ" (จากhttp://snapcraft.io/docs/snaps/intro )

สิ่งเหล่านี้ให้แยกเพิ่มเติมนอกเหนือจาก AppArmor ตัวอย่างเช่นใช้seccompเช่นกัน

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


0

ขอบคุณคำตอบมีประโยชน์มาก ...

ฉันพบสิ่งนี้ด้วย: https://downloads.cuckoosandbox.org/docs/

ซึ่งเป็นเครื่องมือที่น่าสนใจในการวิเคราะห์มัลแวร์ขณะที่อยู่ใน VM

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