อำพรางระบบไฟล์

เฮ้ ฮาเบอร์.

ฉันอยากจะนำเสนอโครงการเล็กๆ อัตชีวประวัติ, ทำในเวลาว่างจากการเรียน

ฉันสร้างโครงการเกี่ยวกับการจัดเก็บข้อมูลที่ซ่อนอยู่ในระบบไฟล์ (เพิ่มเติม ФС).
สามารถใช้เพื่อขโมยข้อมูลที่เป็นความลับเพื่อวัตถุประสงค์ทางการศึกษา

อำพรางระบบไฟล์

Linux FS ที่เก่ามากได้รับเลือกให้เป็นต้นแบบ ext2.

การดำเนินงาน

ข้อควรพิจารณาในการดำเนินการ

หากเป็นการดีที่จะ "เปิดเผย" มาตรฐาน ext2 คุณสามารถแทนที่สิ่งนั้นใน FS ได้ซึ่งเรียกว่า ซุปเปอร์บล็อกซึ่งให้ข้อมูลพื้นฐานเกี่ยวกับระบบ หลังจากที่ฉันถูกพบ บล็อกบิตแมป и ตารางไอโหนด. เกือบจะในทันทีที่เกิดแนวคิดในการบันทึกข้อมูลลงในบล็อก FS ที่ว่างเปล่าในปัจจุบัน ตอนนี้มันก็คุ้มค่าที่จะคิดถึงการปกป้องจากโปรแกรมเมอร์ที่ติดอาวุธ โปรแกรมแก้ไขฐานสิบหก.

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

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

หลักการทำงานทั่วไปของระบบ

อำพรางระบบไฟล์

อัลกอริธึมการบันทึก

คะแนน:

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

สำหรับผู้ชื่นชอบบล็อกไดอะแกรม

ด้านล่างนี้เป็นบล็อกไดอะแกรมของอัลกอริธึมการบันทึก อัลกอริทึมได้รับไฟล์สี่ไฟล์เป็นอินพุต:
- รูปภาพของระบบไฟล์ที่แก้ไขได้
-ไฟล์อาจมีการปกปิดข้อมูล;
- ไฟล์พร้อมคีย์เข้ารหัสสำหรับ AES;
- ไฟล์ที่มีเครื่องหมาย
อำพรางระบบไฟล์

เป็นที่น่าสังเกตทันทีว่าอัลกอริทึมนี้มีข้อเสียเปรียบประการหนึ่ง: หลังจากเขียนไฟล์ไปยัง FS แล้ว จะต้องไม่ เขียนสิ่งใหม่ ๆ ลงใน FS เนื่องจากข้อมูลใหม่ ๆ อาจไปอยู่ในบล็อกที่เราจัดสรรให้กับไฟล์ซิปของเรา แม้ว่าสิ่งนี้ยังเปิดโอกาสให้ "ครอบคลุมเส้นทางของเราอย่างรวดเร็ว"

แต่เห็นได้ชัดว่าสามารถแก้ไขได้อย่างไร: จำเป็นต้องเขียนอัลกอริทึมใหม่สำหรับการเขียนบล็อกใน FS นี่เป็นงานที่เข้าใจได้ แต่ใช้เวลานานอย่างไม่น่าเชื่อ
สำหรับ Proof Of Consept ฉันไม่ได้ใช้สิ่งนี้

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

อัลกอริธึมการอ่าน

คะแนน:

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

สำหรับผู้ชื่นชอบบล็อกไดอะแกรม

ด้านล่างนี้เป็นบล็อกไดอะแกรมของอัลกอริธึมการบันทึก อัลกอริทึมได้รับไฟล์สามไฟล์เป็นอินพุต:
- อิมเมจระบบไฟล์;
- ไฟล์พร้อมคีย์เข้ารหัสสำหรับ AES;
- ไฟล์ที่มีเครื่องหมาย
อำพรางระบบไฟล์

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

การเริ่มต้นระบบอัตโนมัติ

เพื่อความสะดวก สคริปต์ทุบตีถูกเขียนเพื่อทำให้การเปิดใช้งานบน Linux เป็นแบบอัตโนมัติ (ทดสอบบน Ubuntu 16.04.3 LTS)
มาดูการเปิดตัวทีละขั้นตอนกัน
บันทึก:

  1. sudo Copy_Flash.sh “DEVICE” - รับอิมเมจ FS จาก DEVICE (แฟลช)
  2. ./Write.sh “FILE” “KEY” “MARKER” – สร้างสภาพแวดล้อมเสมือนจริง ดาวน์โหลดไลบรารี่ที่จำเป็น และรันสคริปต์การเขียน
  3. sudo ./Write_Flash.sh “DEVICE” – เขียน FS ที่เปลี่ยนแปลงอีกครั้งไปยัง DEVICE

การอ่าน:

  1. sudo Copy_Flash.sh “DEVICE” - รับอิมเมจ FS จาก DEVICE (แฟลช)
  2. ./Read.sh “KEY” 'MARKER” - สร้างสภาพแวดล้อมเสมือนจริง ดาวน์โหลดไลบรารีที่จำเป็น และเรียกใช้การข้ามเพื่ออ่าน
  3. ในไดเร็กทอรีปัจจุบัน ให้เปิดไฟล์ Read ซึ่งเป็นข้อมูลซิป

ข้อสรุป

วิธีการอำพรางข้อมูลนี้อาจจำเป็นต้องได้รับการปรับปรุง ทดสอบเพิ่มเติม และขยายไปยังระบบไฟล์ยอดนิยม เช่น Fat32, NTFS и ext4.
แต่จุดประสงค์ของงานนี้คือเพื่อแสดงหลักการที่คุณสามารถดำเนินการจัดเก็บข้อมูลที่ซ่อนอยู่ในระบบไฟล์ได้
ด้วยความช่วยเหลือของอัลกอริธึมดังกล่าว คุณสามารถจัดเก็บข้อมูลได้อย่างไม่เกรงกลัว และหากคุณรู้กุญแจ ก็เป็นไปได้ที่จะแฮ็กระบบดังกล่าวได้โดยไม่ต้องใช้กำลังดุร้าย (แต่ใช้อัลกอริธึมที่ยาวมาก) โดยไม่ทราบรหัส สิ่งนี้ ดูเหมือนว่าระบบจะเสถียรสำหรับฉันอย่างยิ่ง อย่างไรก็ตาม นี่อาจเป็นเหตุผลสำหรับบทความแยกต่างหาก

โค้ดทั้งหมดถูกนำไปใช้ใน Python เวอร์ชัน 3.5.2 ตัวอย่างงาน นำเสนอในช่อง YouTube ของฉัน รหัสเต็มของโครงการถูกโพสต์ไว้ที่ GitHub.
(ใช่ ใช่ ฉันรู้ว่าสำหรับเวอร์ชันที่ใช้งานจริงคุณต้องเขียนด้วยคำว่า "เร็ว" เช่น C 😉)
ในการใช้งานนี้ ขนาดของไฟล์อินพุตสำหรับ Steganography ไม่ควรเกิน 1000 kB

ฉันต้องการแสดงความขอบคุณต่อผู้ใช้ พาเวลMSTU สำหรับคำแนะนำอันทรงคุณค่าในการวางแผนการศึกษาและข้อเสนอแนะในการออกแบบบทความ

ที่มา: will.com

เพิ่มความคิดเห็น