2013-01-24 35 views
7

Tôi vừa xem qua số german VB.NET forums của chúng tôi và có điều gì đó thú vị mang lại cho tôi một số loại nhức đầu.Xác nhận hợp lệ .NET Framework Assemblies

Có thể thực hiện chỉnh sửa hội đồng .NET Framework bằng cách sử dụng ReflexIL hoặc một số trình soạn thảo IL khác. Điều duy nhất bạn phải bỏ qua là chữ ký tên mạnh mẽ của hội đồng. Sau khi thay đổi IL lắp ráp, bạn phải chạy sn.exe -Vr [assemblyname] để loại bỏ việc xác thực tên mạnh. Sau đó bạn phải xóa các hình ảnh gốc được lưu trong bộ nhớ cache. Chỉ cần đi qua thư mục C:\Windows\assembly và xóa mọi hình ảnh liên quan đến hội đồng của bạn. Sau đó khởi động lại. Khi bạn đăng nhập, hãy chạy ngen install [assemblyname]. Bây giờ, mới hình ảnh gốc được tạo.

Tác phẩm này. Tôi đã xác minh quy trình này trong môi trường ảo của mình (Windows XP x86). Bây giờ điều khiến tôi lo lắng nhất là bạn có thể dễ dàng bỏ qua các phương thức .NET VerifyHash hoặc VerifyData của RSACryptoServiceProvider. Điều này thực sự làm việc, quá. Một người bạn của tôi và tôi đã được thử nghiệm có thể xác minh vấn đề này (see screenshots). Điều đó khá dễ dàng.

Ví dụ, nếu tôi muốn tạo ra một hệ thống cấp giấy phép xây dựng trên lớp mật mã NET Framework, nó có thể được bỏ qua system-wide cho mọi ứng dụng .NET trên hệ thống sử dụng khuôn khổ này. Ngoài ra, mọi người có thể đăng nhậpthay đổi đầu vào của functios mà tôi gọi chỉ bằng cách móc vào các phương thức.

Bây giờ câu hỏi của tôi là: Vì đây có thể là một vấn đề lớn, làm thế nào tôi có thể làm điều gì đó về điều đó? Tất nhiên, người dùng độc hại chỉ có thể chỉnh sửa ứng dụng của tôi, nhưng điều đó sẽ không tệ như việc thực hiện toàn bộ hệ thống này. Tôi đã suy nghĩ về một số xác minh kiểm tra khung, nhưng vì có rất nhiều bản cập nhật khác nhau cho Khuôn khổ .NET, điều này dường như là không thể.

Bất kỳ giải pháp hoặc đề xuất nào? Liệu Microsoft có quan tâm đến vấn đề này theo một cách nào đó không?

+5

Bạn sẽ cần thực hiện lại toàn bộ bài tập, nhưng lần này không có tên người dùng và mật khẩu quản trị viên. Nó là một sai lầm phổ biến trong phân tích mối đe dọa, không có điểm trong khóa cửa khi kẻ xâm nhập có chìa khóa. –

+0

Ngoài ra, hệ thống cấp phép thường là các bài tập trong vô ích. –

Trả lời

7

Nếu kẻ tấn công có quyền truy cập quản trị vào máy tính của bạn (cần thiết cho cuộc tấn công bạn mô tả), thì bạn đã mất khá nhiều. Bất cứ điều gì bạn có thể làm đều có thể bị kẻ tấn công phá hỏng.

Vì lý do đó, tôi nghĩ rằng nó hoàn toàn vô nghĩa khi cố gắng chống lại kiểu tấn công này. Nếu bạn phải đối phó với các máy tính không đáng tin cậy, có khả năng bị xâm nhập, thì bạn không thể tin tưởng họ làm bất cứ điều gì nhạy cảm và bạn phải làm điều đó trên máy chủ của riêng bạn, hoặc một cái gì đó tương tự.

+0

Tôi biết rằng thật vô nghĩa khi làm mọi thứ về điều đó. Tôi chỉ quan tâm lý do tại sao Microsoft làm cho nó dễ dàng như vậy. Đó không phải là câu trả lời tôi đang tìm kiếm, nhưng được rồi. – nikeee

+2

Tôi không hiểu lý do của bạn. Bạn nói nó không có ý nghĩa để ngăn chặn các loại tấn công, nhưng bạn vẫn nghĩ rằng Microsoft nên chi tiêu tài nguyên trên nó không? – svick

+0

Vì MS có quyền truy cập vào Hạt nhân .NET Framework và CLR, chúng ít nhất có thể làm cho nó khó hơn một chút. – nikeee

Các vấn đề liên quan