Syswall เป็นการพัฒนาใหม่ที่มุ่งสร้างความคล้ายคลึงกันของไฟร์วอลล์แบบไดนามิกเพื่อกรองการเข้าถึงแอปพลิเคชันไปยังการเรียกระบบ รหัสโครงการเขียนด้วยภาษา Rust ไม่ได้ระบุใบอนุญาต
การพัฒนาใหม่นี้ ดูเหมือนว่ายูทิลิตี้ strace เวอร์ชันโต้ตอบและช่วยให้คุณสามารถติดตามการเรียกระบบทั้งหมดที่ทำโดยโปรแกรม ความแตกต่างที่สำคัญคือนอกเหนือจากการแสดงข้อมูลเกี่ยวกับการเรียกระบบและผลลัพธ์ของการดำเนินการแล้ว
เกี่ยวกับ Syswall
syswall รองรับโหมดโต้ตอบ ซึ่งกระบวนการที่ถูกตรวจสอบจะหยุดลงก่อนทำการเรียกระบบ และผู้ใช้จะถูกขอให้ดำเนินการต่อหรือละเว้นการดำเนินการ (ตัวอย่างเช่นคุณสามารถตรวจสอบความพยายามในการเปิดแต่ละไฟล์หรือกระบวนการเชื่อมต่อเครือข่าย)
Syswall ยังสามารถรวบรวมสถิติเกี่ยวกับการโทรของระบบและสร้างรายงานตามข้อมูลนั้น
วัตถุประสงค์ของ syswall มีดังนี้:
ไปยัง ให้ strace เวอร์ชันปรับปรุง ซึ่งง่ายกว่าในการระบุว่าซอฟต์แวร์ใดกำลังทำอยู่
จัดเตรียมสภาพแวดล้อมในการทดสอบและทดลองกับซอฟต์แวร์โดยให้วิธีการที่ละเอียดและโต้ตอบในการอนุญาตและปฏิเสธการโทรของระบบ
แต่ละกระบวนการสามารถมีไฟล์คอนฟิกูเรชัน
สำหรับแต่ละกระบวนการ se สามารถเชื่อมต่อไฟล์คอนฟิกูเรชันกับรายการการเรียกระบบที่อนุญาตอย่างชัดเจนหรือถูกบล็อก
สำหรับการโทรที่รองรับ syswall อนุญาตให้ผู้ใช้ดำเนินการดังต่อไปนี้:
- อนุญาต syscall ครั้งเดียว
- อนุญาตให้ใช้ syscall นั้นเสมอ
- บล็อก syscall หนึ่งครั้ง (แข็งหรืออ่อน)
- ปิดกั้น syscall นั้นเสมอ (แข็งหรืออ่อน)
- เมื่อบล็อกโปรแกรมสามารถดำเนินการบล็อก (แข็งหรืออ่อน)
ในระหว่างเซสชันแบบโต้ตอบคุณสามารถอนุญาตหรือบล็อกการเรียกระบบเฉพาะในขณะรันไทม์และการเรียกใช้การเรียกระบบนี้ไม่ว่าจะเข้าถึงโปรแกรมที่ใดก็ตาม
รองรับการบล็อกในโหมด "ยาก" และ "อ่อน"
ประเภทของล็อค
ในกรณีแรกการเรียกระบบจะไม่ดำเนินการและรหัสข้อผิดพลาดในการเข้าถึงจะถูกส่งไปยังกระบวนการ. ในกรณีที่สองการเรียกระบบจะไม่ดำเนินการเช่นกัน แต่กระบวนการได้รับรหัสส่งคืนที่เป็นจริงซึ่งจำลองการดำเนินการเรียกระบบที่ประสบความสำเร็จ
ตัวอย่างเช่นในขณะนี้รองรับเฉพาะการวิเคราะห์การเรียกระบบที่เกี่ยวข้องกับการทำงานของไฟล์เท่านั้น
ฮาร์ดบล็อกป้องกันไม่ให้ syscall ดำเนินการและส่งกลับข้อผิดพลาดที่ปฏิเสธการอนุญาตไปยังกระบวนการย่อย ในทางกลับกันซอฟต์ล็อกจะป้องกัน syscall แต่จะพยายามส่งคืนการตอบสนองที่เหมาะสมให้กับกระบวนการย่อยเพื่อแสร้งทำเป็นว่า syscall ถูกเรียกใช้งานจริง
ในกรณีนี้คำขอยืนยันจะแสดงเฉพาะเมื่อพวกเขาอ้างถึงการโทรระบบที่โทรออกเป็นพิเศษหรือก่อนหน้านี้ที่ขาดหายไป
บันทึกและโหลดการกำหนดค่ากระบวนการ
ตัวเลือกที่ทำระหว่างการดำเนินการสามารถบันทึกลงในไฟล์ JSON ได้ ไฟล์นี้สามารถโหลดได้ในระหว่างการรันอีกครั้งเพื่อให้ใช้ตัวเลือกข้างต้น
นี่เป็นงานที่อยู่ระหว่างดำเนินการ - ระบบจะบันทึกเฉพาะคำตอบที่อนุญาต / บล็อกไว้เสมอ
ข้อมูล
เมื่อกระบวนการย่อยเสร็จสิ้น syswall จะออกรายงานสั้น ๆ เกี่ยวกับการเรียกระบบของกระบวนการย่อย ปัจจุบันประกอบด้วยไฟล์ที่เปิดหรือล็อกทั้งหมด แต่จะขยายออกไปในอนาคต
โครงการนี้ยังอยู่ในขั้นตอนของต้นแบบที่ใช้งานได้และไม่ได้ตระหนักถึงความเป็นไปได้ทั้งหมด
ยังมีอีกมากที่ต้องพัฒนา
มีรายการสิ่งที่ต้องทำขนาดใหญ่สำหรับโครงการในอนาคตมีการวางแผนที่จะเพิ่มการสนับสนุนสำหรับคลาสเพิ่มเติมของการเรียกระบบ lความสามารถในการตรวจสอบโดยคำนึงถึงอาร์กิวเมนต์ที่ส่งไปยังการเรียกระบบหมายถึงการบันทึกสถานะกระบวนการลงในไฟล์สำหรับการเปรียบเทียบกิจกรรมในภายหลังระหว่างการเปิดโปรแกรมต่างๆ (ตัวอย่างเช่นเพื่อเปรียบเทียบรายการไฟล์และการเชื่อมต่อของเครือข่าย) ตัวเลือก เพื่อละเว้นการโหลดไลบรารีไดนามิกและสนับสนุนชุดการตั้งค่าทั่วไป (ตัวอย่างเช่นล็อกซ็อกเก็ตทั้งหมด แต่อนุญาตการเข้าถึงไฟล์)