Làm thế nào một người có thể thực sự có được thông tin nhạy cảm từ một phân vùng trao đổi?


8

Khi tôi google câu hỏi này, tôi chỉ nhận được tất cả các loại thông tin về cách bảo vệ dữ liệu nhạy cảm, cách mã hóa trao đổi và mức độ "nguy hiểm" có thể giữ một trao đổi "bình thường" trong hệ thống linux.

Nhưng tôi không thể tìm thấy bất kỳ phần mềm, phương pháp hoặc "cách nào" để thực sự có được (đọc) bất kỳ phần dữ liệu nào từ một phân vùng trao đổi.

Vì vậy, câu hỏi của tôi là, là một công dân "bình thường" sống ở Tây Âu, có thực sự cần thiết để xóa hoặc mã hóa trao đổi trên máy tính của tôi không? Và trước khi ai đó trả lời "có", tôi có thể có một ví dụ về cách tôi có thể kiểm tra và rò rỉ trao đổi của chính mình, để tôi thực sự có thể thấy loại dữ liệu nào không được bảo vệ mặc dù nhà được mã hóa của tôi không?


1
Một phương pháp có thể được tìm thấy trong câu hỏi này
Nattgew

Câu trả lời:


10

là một công dân "bình thường" sống ở Tây Âu, có thực sự cần thiết phải xóa hoặc mã hóa trao đổi trên máy tính của tôi không?

Đó là một phán quyết cá nhân, một phán quyết phụ thuộc vào mức độ bạn đánh giá sự riêng tư của dữ liệu của bạn và mức độ bạn muốn bảo vệ dữ liệu của mình khỏi bị lộ nếu nó rơi vào tay kẻ tấn công. Giả sử bạn có một máy tính xách tay và một ngày nào đó nó bị đánh cắp - khả năng kẻ trộm sẽ cố trích xuất mật khẩu hoặc khóa mã hóa hoặc dữ liệu riêng tư khác, và bạn có quan tâm không? Rất nhiều người không quan tâm, nhưng một số thì không. Phải thừa nhận rằng, hầu hết những tên trộm chỉ đơn giản là bán máy tính xách tay để kiếm lợi nhuận ngay lập tức, nhưng có những trường hợp kẻ tấn công có thể được thúc đẩy để tiến xa hơn trong nỗ lực truy cập dữ liệu.

Và trước khi ai đó trả lời "có", tôi có thể có một ví dụ về cách tôi có thể kiểm tra và rò rỉ trao đổi của chính mình, để tôi thực sự có thể thấy loại dữ liệu nào không được bảo vệ mặc dù nhà được mã hóa của tôi không?

Bộ nhớ của bất kỳ quá trình có khả năng có thể được trao đổi vào không gian trao đổi. Bộ nhớ bị rò rỉ có thể nguy hiểm - ví dụ rõ ràng là Heartbleed - xem Cách tôi sử dụng Heartbleed để đánh cắp khóa mật mã riêng của một trang web . Bộ nhớ được phơi bày bởi Heartbleed chỉ thuộc về một quy trình duy nhất, trong khi bộ nhớ có khả năng bị lộ bởi không gian hoán đổi của bạn thuộc về mọi quy trình. Hãy tưởng tượng một quá trình chứa khóa riêng hoặc danh sách mật khẩu (ví dụ: trình duyệt web) bị tráo đổi - những mục đó sẽ xuất hiện, trong bản rõ, trong không gian trao đổi. Trích xuất chúng là vấn đề sàng lọc thông qua bộ nhớ cho các mẫu dữ liệu cụ thể - đó có thể là dữ liệu ASCII rõ ràng có thể nhìn thấy thông quastringshoặc có thể liên quan nhiều hơn, như trong Heartbleed (trong đó thử nghiệm là một số byte liên tiếp là một ước số của khóa mật mã công khai). Nếu bạn có một phân vùng được mã hóa / gia đình, thì điều rõ ràng cần tìm là một khối dữ liệu hình thành khóa mã hóa sẽ mở khóa dữ liệu của người dùng.

Một ví dụ làm việc:

  • làm bash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'để tạo một quy trình bash với một số dữ liệu bí mật trên ngăn xếp của nó

  • làm sysctl vm.swappiness=100để tăng tính dễ thay đổi (không cần thiết, nhưng có thể làm cho ví dụ dễ dàng hơn)

  • chạy top -c, nhấn f, bật cột SWAP, nhấn q để quay lại chế độ xem trên cùng, cuộn xuống cho đến khi bạn thấy bash -cquy trình

  • trong một thiết bị đầu cuối khác, lưu chương trình Chimnay Kanchi từ Linux: Làm cách nào để tải vào bộ nhớ hệ thống? để usemem.c, biên dịch nó gcc -o usemem usemem.cvà chạy usemem &liên tục trong một thiết bị đầu cuối. Điều này sẽ sử dụng tối đa 512 MB bộ nhớ cùng một lúc. (Không quan trọng nguyên nhân khiến bộ nhớ bị tráo đổi, đó có thể là việc sử dụng hệ thống bình thường, quá trình chạy trốn hoặc tấn công có chủ ý, kết quả cuối cùng là như nhau)

  • xem hàng đầu, chờ bash -cđể được hoán đổi (giá trị cột SWAP> 0)

  • bây giờ chạy strings /dev/sdaX | grep SECRETtrong đó X là parititon trao đổi của bạn

  • Xin chúc mừng - bạn vừa trích xuất dữ liệu "bí mật" từ phân vùng trao đổi. bạn sẽ thấy nhiều bản sao của văn bản SECRET theo sau là "mật khẩu", các bản sao bao gồm dòng lệnh đầy đủ bị rò rỉ từ quy trình bash cha, quy trình hàng đầu và quy trình 'bash -c'. Các dòng không bao gồm dòng lệnh đầy đủ đã bị rò rỉ từ quá trình 'bash -c'.

  • Để chứng minh rằng các bí mật bị rò rỉ từ bộ nhớ quá trình, và không chỉ dòng lệnh, hãy thêm dòng unsigned char secret[] = "SECRET=XXXX";vào usemem.c (ngay bên dưới unsigned long mem;dòng). Biên dịch lại và chạy usemem &liên tục, và strings /dev/sdaX | grep SECRETmột lần nữa. Lần này bạn sẽ thấy bí mật 'XXXX' bị rò rỉ.


+1 cho một lời giải thích khá tốt và một ví dụ tuyệt vời.
việc

-1

Câu hỏi này dẫn chúng ta đến một cuộc thảo luận về các vấn đề giữa phát triển phần mềm, chẳng hạn như phần mềm giữ dữ liệu nhạy cảm trong bộ nhớ và mã hóa dữ liệu.

Vì vậy, để bắt đầu, bạn nên đọc một số bài viết về phát triển phần mềm thực tế và mã hóa dữ liệu.

Bắt đầu đọc bài viết này: http://www.ibm.com/developerworks/l Library / s-data.html? Ns-1111

Hy vọng nó giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.