Điểm:0

So sánh hàm băm để phát hiện mã hóa tệp ransomware

lá cờ br

Như chi tiết trong một câu hỏi riêng biệt, tôi nghĩ rằng mình có một cách để phát hiện loại ransomware âm thầm mã hóa các tệp, sau đó giải mã chúng một cách nhanh chóng, để ngăn người dùng nhận ra rằng các tệp đã được mã hóa.Tôi nghĩ rằng việc so sánh giá trị băm của tệp hiện tại và quá khứ sẽ phát hiện các thay đổi của tệp: nếu nhiều tệp bị thay đổi bất ngờ, có thể những thay đổi đó là do mã hóa ransomware.

Một nhận xét về câu hỏi đó dường như nói rằng khái niệm của tôi không thành công vì tệp phải được đọc để được băm. Phần mềm tống tiền sẽ cung cấp nội dung của tệp cho công cụ băm; công cụ đó sẽ thấy rằng nội dung không thay đổi; do đó tôi sẽ nhận được giá trị băm giống như trước đây.

Tôi không hiểu điều đó. Có vẻ như tôi cần giải quyết nó trong câu hỏi riêng biệt này. Nếu việc băm chỉ tính đến nội dung của tệp, thì chẳng phải là không thể băm một tệp mà người dùng đã mã hóa an toàn sao?

Một cuộc thảo luận về mật mã dường như nói rằng các giá trị băm, đối với một tệp, có thể thay đổi tùy theo thời gian mã hóa bằng khóa chung. Tôi giải thích điều đó có nghĩa là các biến thể trong quá trình mã hóa có thể tạo ra các biến thể trong giá trị băm. Điều đó dường như không tương thích với tuyên bố chung rằng việc băm sẽ không phát hiện ra bất kỳ sự khác biệt nào giữa một tệp được mã hóa (ngay cả khi được giải mã nhanh chóng) và dạng không được mã hóa trước đó của nó.

Tôi đang thiếu gì ở đây?

DannyNiu avatar
lá cờ vu
Trong mọi trường hợp, PUoSU. Thể hiện ý tưởng/phát hiện của bạn bằng cách thực hiện nó.
lá cờ br
Tôi đã làm. Câu hỏi khác liên kết đến bài viết.
Điểm:3
lá cờ kr

tôi không hiểu điều đó

Nếu hệ thống của bạn bị nhiễm virus, không có gì đảm bảo rằng bạn đọc được nội dung tệp thực, vì nó được lưu trữ trên đĩa. Nó có thể là tập tin được mã hóa bởi ransomware. Khi bạn yêu cầu một ứng dụng đọc nó, nó sẽ gọi hệ điều hành. Nếu phần mềm tống tiền lây nhiễm vào hệ thống, nó sẽ đọc nội dung được mã hóa, giải mã và cung cấp cho HĐH cũng như ứng dụng của bạn. Miễn là bạn sử dụng một hệ thống bị nhiễm, bạn không thể biết nội dung thực sự trên đĩa là gì.

Cách đáng tin cậy duy nhất để phát hiện mã hóa là đọc tệp bằng hệ thống khác. Khởi động từ thanh USB, tạo các giá trị băm của các tệp, lặp lại nó theo thời gian, ví dụ:. hàng ngày hoặc hàng tuần. Tất nhiên, nó khác với mong muốn của bạn là phát hiện những thay đổi ngay lập tức.

không phải là không thể băm, chẳng hạn, một tệp mà người dùng có được mã hóa an toàn?

Bạn có thể băm bất kỳ tập tin. Chỉ có bạn biết nếu bạn đã mã hóa các tập tin hay không. Đối với phần mềm điều hành và phần mềm tống tiền, không có sự khác biệt: Bất kỳ tệp nào cũng chỉ là một tập hợp các byte. Nếu bạn mã hóa tệp, tính toán hàm băm, ghi tệp vào đĩa, sau đó đọc lại, bạn sẽ nhận được chính xác những gì bạn đã viết (tệp được mã hóa của bạn). Nhưng bạn sẽ không biết nếu trước khi lưu vào đĩa, nó đã bị mã hóa bởi ransomware và sau khi đọc đã được giải mã.

các giá trị băm đó, đối với một tệp, có thể thay đổi theo thời gian của mã hóa bằng khóa công khai

  1. Không phải băm của tệp đơn giản, nhưng kết quả mã hóa có thể thay đổi. Kết quả là, đối với các tệp khác nhau, bạn sẽ nhận được các giá trị băm khác nhau.
  2. Kết quả mã hóa của cùng một tệp có thể khác nhau, nhưng không phải do thời gian. Chẳng hạn, bạn có thể khởi chạy mã hóa AES GCM của như nhau tập tin với như nhau mật khẩu trên 100 chủ đề song song trên như nhau máy tính tại như nhau thời gian, tất cả chúng sẽ sản xuất khác biệt kết quả. Nhưng khi được giải mã, tất cả chúng sẽ tạo ra như nhau tập tin gốc.
lá cờ br
Câu hỏi trước đây của tôi liên kết với quy trình của tôi để so sánh giá trị băm của tệp trên ổ đĩa nguồn Windows với giá trị băm của tệp từ bản sao lưu trước đó, được tính toán trên hệ thống Linux. Nhận xét đã gửi cho tôi ở đây, trả lời câu hỏi trước đó, dường như nói rằng việc so sánh các giá trị băm này sẽ là vô nghĩa. Bạn dường như đồng ý với cách tiếp cận ban đầu của tôi. Câu hỏi trước: https://security.stackexchange.com/questions/259716/hash-based-technique-to-detect-ransomware-transform-on-the-fly?noredirect=1. Bài gốc: https://raywoodcockslatest.wordpress.com/2021/12/08/ransomware-hash/
lá cờ kr
@RayWoodcock: Không, tôi không đồng ý với bạn. Xin lỗi, đó là câu trả lời của tôi không rõ ràng. Trước tiên, bạn tính toán hàm băm trong một hệ thống sạch và lưu nó ở đâu đó bên ngoài. Sau đó, hệ thống của bạn bị nhiễm ransomware. Nó đã mã hóa một số tập tin của bạn. Khi bạn đọc chúng để tính toán hàm băm, ransomware sẽ giải mã nó và bạn sẽ nhận được hàm băm giống như trước đây. Bạn sẽ nhận được hàm băm giống như trước đây. Nhưng không thể biết liệu có một "lớp ở giữa" mã hóa và giải mã dữ liệu một cách minh bạch hay không. Do đó, khi bạn làm việc trong một hệ thống bị lây nhiễm, bằng cách tính toán các giá trị băm, bạn không thể phát hiện xem chúng có được mã hóa trên đĩa hay không.
lá cờ br
Cảm ơn đã theo lên. Vâng, bạn hiểu câu hỏi của tôi. Phần khiến tôi bối rối là trường hợp các tệp do người dùng mã hóa. Công cụ băm có "đọc chúng để tính toán hàm băm" không? Tôi nghĩ rằng câu trả lời là công cụ đọc hình thức bên ngoài của chúng: nó nhận các ký tự ngẫu nhiên và tính toán hàm băm dựa trên các ký tự đó. Tại sao (hoặc có thể câu hỏi nên là, tại sao không thể) công cụ băm cũng nhận thấy rằng tệp được mã hóa bằng ransomware khác với tệp trước đây?
lá cờ kr
1) *"Công cụ băm có "đọc chúng để tính toán hàm băm" không?"* - Có. Hash không phải là thứ được tính toán tự động. Không đọc tệp thì không có cách nào để tính toán hàm băm. Không có hàm băm **the**. Có thể có vô số thuật toán để tính toán hàm băm. Bạn quyết định loại băm nào bạn muốn: MD5, SHA-256, SHA-512, BLAKE, v.v.
lá cờ kr
2) *"Tại sao ... không thể ... công cụ băm cũng nhận thấy ...?" * - Bởi vì để nhận thấy sự khác biệt, công cụ cần tính toán hàm băm. Đối với điều này, công cụ cần đọc tệp. Công cụ này không thể truy cập trực tiếp vào bộ lưu trữ. Điều này chỉ có thể được thực hiện gián tiếp, thông qua hệ điều hành. Hệ điều hành bị nhiễm. Phần mềm tống tiền chặn tất cả các yêu cầu lưu trữ. Đó là lý do tại sao công cụ băm có được những gì ransomware cung cấp. Ransomware giải mã tệp sau khi đọc nó từ bộ lưu trữ và trước khi đưa nó vào HĐH. Do đó, công cụ băm không có cách nào để biết những gì thực sự được lưu trữ trên ổ cứng HDD hoặc SSD.
lá cờ br
VÂNG. Cảm ơn vì sự kiên nhẫn của bạn. Tôi nghĩ rằng tôi hiểu. Có vẻ như (loại) ransomware này làm hỏng HĐH (Windows, trong thiết lập của tôi), khiến tệp của nó bị nghi ngờ.Nhưng nếu các tệp đã được mã hóa bằng ransomware, thì điều đó sẽ hiển nhiên khi so sánh các hàm băm của Windows với các hàm băm của cùng một tệp, được tính toán trên một máy Linux có lẽ là sạch. Nếu đó là sự thật, thì sơ đồ được nêu trong bài đăng khác (liên kết được cung cấp ở đầu câu hỏi của tôi, ở trên) có vẻ hợp pháp.
lá cờ kr
@RayWoodcock: Tôi e rằng bạn vẫn hiểu sai về cách thức hoạt động của hệ điều hành và phần mềm tống tiền. Bạn đề cập đến powershell phát hiện các thay đổi của tệp. Nhưng có rất nhiều công cụ phát hiện các thay đổi của tệp một cách nhanh chóng. Windows cung cấp lớp *FileSystemWatcher* mà bạn có thể sử dụng để làm điều đó. Hoặc bạn chỉ có thể so sánh kích thước tệp và dấu thời gian. Tất cả các công cụ này đều thông báo những thay đổi *thực* của nội dung tệp. Nhưng không phải cách tiếp cận nào trong số này đều thông báo mã hóa/giải mã được thực hiện bởi ransomware.
lá cờ br
Về PowerShell: cảm ơn, tôi thấy điều đó. Bài đăng khác có trước bài đăng này, cũng như bài đăng trên blog của tôi. Tôi sẽ cập nhật cái sau. Nhưng nhận xét cuối cùng của tôi (ở trên) không chính xác? Tình huống: một công cụ băm của Windows bị lừa khi báo cáo không có thay đổi nào đối với một tệp. Nhưng một công cụ băm trên hệ thống Linux không bị nhiễm mã độc, kiểm tra cùng một tệp, không bị đánh lừa: nó đánh giá tệp đã bị thay đổi bởi phần mềm tống tiền và tính toán một hàm băm khác. (Người ta sẽ hy vọng vào phần mềm tống tiền không đa nền tảng.) Sau đó, so sánh các hàm băm của Windows và Linux sẽ phát hiện ra sự không nhất quán. Không?
lá cờ kr
@RayWoodcock: *"Sau đó, so sánh các giá trị băm của Windows và Linux sẽ phát hiện ra sự không nhất quán"* - Chính xác. Nhưng nó quá phức tạp. Chỉ cần so sánh các giá trị băm trong hệ thống bên ngoài (bạn đặt tên cho nó là Linux): So sánh các giá trị băm của trạng thái hiện tại với các giá trị băm của trạng thái trước đó.
lá cờ br
Miễn là tôi chắc chắn rằng hệ thống Windows bị nhiễm.
Điểm:2
lá cờ ng

Phát hiện băm (với xác suất áp đảo) không tí nào sự khác biệt giữa hai phần dữ liệu, bao gồm một phần là phiên bản được mã hóa của phần kia. Do đó, nguyên tắc so sánh giá trị băm của các tệp để phát hiện nhiều tệp đã thay đổi là hợp lý.

Tuy nhiên, có một số cách mà một chương trình mã hóa các tệp trên đĩa một cách có hệ thống có thể tránh được sự phát hiện từ một chương trình đang kiểm tra xem giá trị băm của các tệp trên đĩa không thay đổi. Chúng bao gồm:

  • Vô hiệu hóa kiểm tra bằng cách thu giữ tất cả tài nguyên CPU trong quá trình mã hóa.
  • Kết nối với mã đã đọc của tất cả các chương trình (bao gồm cả chương trình thực hiện kiểm tra hàm băm) để hiển thị cho chúng dữ liệu chưa sửa đổi cho đến khi tất cả các tệp đã được mã hóa, mặc dù dữ liệu đã được mã hóa vật lý trên đĩa. Điều này có thể thực hiện được nếu khóa mã hóa được sử dụng để giải mã cho đến khi quá trình mã hóa hoàn tất.

Cập nhật: phần mềm mã hóa tiền điện tử không cần phải được điều chỉnh theo hàm băm hoặc chương trình so sánh hàm băm; tất cả những gì nó cần làm là thực hiện đúng một trong hai gạch đầu dòng ở trên. Mặt khác, một số phần mềm mã hóa mã hóa thực tế mà tôi đã nghiên cứu (trong máy ảo) chỉ thực hiện một phần chiến lược đầu tiên (như một tác dụng phụ của chiến lược chính của chúng: mã hóa nhanh nhất có thể) chứ không phải chiến lược thứ hai, trong đó các hệ điều hành hiện đại yêu cầu leo ​​thang đặc quyền.

lá cờ br
Câu trả lời này rõ ràng với tôi hơn câu trả lời khác. Có vẻ như ý tưởng ban đầu (được viết trên blog) của tôi đã đi đúng hướng: băm sẽ phát hiện ra sự khác biệt giữa phiên bản tệp được mã hóa và không được mã hóa. Tôi vẫn còn bối rối rằng nhận xét về câu hỏi khác của tôi (liên kết ở trên) không chỉ tự tin mà còn được tán thành. Về điểm gạch đầu dòng thứ hai của bạn: liệu phần mềm tống tiền có phải được viết cho từng công cụ băm cụ thể hay việc "kết nối vào mã đọc của tất cả các chương trình" có thể được thực hiện theo cách chung chung sẽ làm hỏng hoạt động đọc tệp của bất kỳ chương trình nào không?
fgrieu avatar
lá cờ ng
@RayWoodcock: Tôi đoán [bình luận này](https://security.stackexchange.com/questions/259716/#comment536553_259716) đã được ủng hộ vì nó chỉ ra rằng bản thân câu hỏi giả định: "dạng phần mềm tống tiền chủ yếu mã hóa một tệp ** *và sau đó giải mã nó một cách nhanh chóng***, để cung cấp cho người dùng mà không thông báo cho người dùng rằng tệp có thể được mã hóa vĩnh viễn bất cứ lúc nào", giống như gạch đầu dòng thứ hai trong câu trả lời của tôi. Nếu đúng (điều _not_ hiển nhiên), điều đó sẽ đánh bại kỹ thuật băm, bởi vì nó đã băm dữ liệu đã giải mã, giống hệt với dữ liệu ban đầu, do đó có cùng hàm băm.
lá cờ br
Bài đọc của tôi cho thấy rằng điều này là đúng, về dạng phần mềm tống tiền chủ yếu, nhưng tôi sai cũng không sao. Bất chấp điều đó, tôi không nghĩ rằng có bất kỳ tranh cãi nào về việc loại ransomware này tồn tại. Tôi nghĩ rằng bản cập nhật và điểm đầu dòng thứ hai của bạn đang nói rằng công cụ băm không nhìn thấy tệp được mã hóa nếu hệ thống được yêu cầu bỏ qua, ít nhất là vào lúc này, tất cả mã hóa tệp loại X.Một tệp được mã hóa có lẽ không phải là một hòn đảo đối với chính nó; nó là một phòng giam trong một ngân hàng các phòng giam, tất cả đều có thể được mở khóa đồng thời bằng một công tắc điện tử. Nhưng đó không phải là "on-the-fly."

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.