เราจะได้รับข้อมูลที่ละเอียดอ่อนจากพาร์ทิชัน swap ได้อย่างไร?


8

เมื่อฉัน google คำถามนี้ฉันเพียงได้รับข้อมูลทั้งหมดเกี่ยวกับวิธีการปกป้องข้อมูลที่สำคัญวิธีการเข้ารหัสการแลกเปลี่ยนและวิธี "อันตราย" สามารถเก็บสลับ "ปกติ" ในระบบลินุกซ์

แต่ฉันไม่พบซอฟต์แวร์วิธีการหรือ "วิธีการ" เพื่อรับ (อ่าน) ข้อมูลใด ๆ จากพาร์ทิชัน swap

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


1
สามารถพบวิธีการหนึ่งในคำถามนี้
Nattgew

1
อาจมีประโยชน์, security.stackexchange.com/questions/29350/…
user.dz

คำตอบ:


10

การเป็นพลเมือง "ปกติ" ที่อาศัยอยู่ในยุโรปตะวันตกจำเป็นต้องล้างหรือเข้ารหัสการแลกเปลี่ยนในคอมพิวเตอร์ของฉันหรือไม่?

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

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

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

ตัวอย่างการทำงาน:

  • ทำbash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'เพื่อสร้างกระบวนการทุบตีกับข้อมูลลับบางอย่างในกองซ้อนของมัน

  • ทำsysctl vm.swappiness=100เพื่อเพิ่มความรวดเร็ว (ไม่จำเป็น แต่อาจทำให้ตัวอย่างง่ายขึ้น)

  • รันtop -c, กด f, เปิดใช้งานคอลัมน์ SWAP, กด q เพื่อกลับไปที่มุมมองกระบวนการด้านบน, เลื่อนลงจนกว่าคุณจะเห็นbash -cกระบวนการ

  • ในเทอร์มินัลอื่นบันทึกโปรแกรม Chimnay Kanchi จากLinux: จะโหลดหน่วยความจำระบบได้อย่างไร เพื่อusemem.cรวบรวมgcc -o usemem usemem.cและเรียกใช้usemem &ซ้ำแล้วซ้ำอีกใน terminal ซึ่งจะใช้หน่วยความจำสูงสุด 512MB ในแต่ละครั้ง (ไม่สำคัญว่าอะไรทำให้หน่วยความจำเปลี่ยนไปมันอาจเป็นการใช้งานระบบตามปกติกระบวนการวิ่งหนีหรือการโจมตีโดยเจตนาผลลัพธ์สุดท้ายก็เหมือนกัน)

  • เฝ้าดูด้านบนรอbash -cรับการสลับ (ค่าคอลัมน์ SWAP> 0)

  • ตอนนี้ทำงานstrings /dev/sdaX | grep SECRETที่ X คือการแลกเปลี่ยนของคุณ

  • ขอแสดงความยินดี - คุณเพิ่งดึงข้อมูล "ความลับ" ออกจากพาร์ทิชันสลับ คุณจะเห็นข้อความ SECRET หลายสำเนาตามด้วย "รหัสผ่าน" สำเนาที่มีบรรทัดคำสั่งเต็มรูปแบบที่รั่วไหลออกมาจากกระบวนการทุบตีผู้ปกครองกระบวนการด้านบนและกระบวนการ 'bash -c' บรรทัดที่ไม่รวมบรรทัดคำสั่งทั้งหมดรั่วไหลออกมาจากกระบวนการ 'bash -c'

  • หากต้องการพิสูจน์ว่าความลับรั่วไหลจากหน่วยความจำกระบวนการและไม่ใช่เพียงแค่บรรทัดคำสั่งให้เพิ่มบรรทัดunsigned char secret[] = "SECRET=XXXX";ใน usemem.c (ด้านล่างunsigned long mem;บรรทัด) คอมไพล์แล้วเรียกใช้usemem &ซ้ำแล้วซ้ำstrings /dev/sdaX | grep SECRETอีก เวลานี้คุณจะเห็นความลับ 'XXXX' ถูกรั่วไหลออกมา


+1 สำหรับคำอธิบายที่ดีงามและเป็นตัวอย่างที่ดี
jobin

-1

คำถามนี้นำเราไปสู่การอภิปรายปัญหาระหว่างการพัฒนาซอฟต์แวร์เช่นซอฟต์แวร์เก็บข้อมูลที่สำคัญในหน่วยความจำและการเข้ารหัสข้อมูล

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

เริ่มอ่านบทความนี้: http://www.ibm.com/developerworks/library/s-data.html?ns-311

หวังว่ามันจะช่วย

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