2013-01-24 136 views
7

我剛剛通過我們的german VB.NET forums,有一些有趣的事情讓我感到頭疼。驗證.NET Framework程序集

它實際上可以通過編輯使用ReflexIL或其他IL編輯器的.NET Framework程序集。唯一必須繞過的是裝配體的強名稱簽名。更改裝配IL後,您必須運行sn.exe -Vr [assemblyname]以略過強名稱驗證。之後,您必須清除緩存的本機映像。只需瀏覽C:\Windows\assembly目錄並刪除與裝配相關的所有圖像。然後重啓。當您登錄時,運行ngen install [assemblyname]。現在生成新的原生圖像。

This Works。我在我的虛擬環境(Windows XP x86)中驗證了此過程。現在讓我最擔心的是你可以輕鬆繞過RSACryptoServiceProvider的.NET VerifyHashVerifyData方法。這實際上也起作用。我和我的一個朋友測試可以驗證這個問題(see screenshots)。這很容易。

例如,如果我創建構建在.NET Framework加密類許可制度,它可以被繞過全系統使用框架系統上的每個 .NET應用程序。此外,每個人都可以日誌更改函數的輸入,我只是通過掛鉤方法調用。

現在我的問題是: 由於這可能是一個巨大的問題,我該怎麼做呢?當然,惡意用戶可以編輯我的應用程序,但這並不像在系統範圍內那樣糟糕。 我正在考慮一些框架校驗和驗證,但由於.NET框架有很多不同的更新,這似乎是不可能的。

任何解決方案或建議?微軟是否以某種方式處理這個問題?

+5

您需要再次進行整個練習,但這次沒有管理員用戶名和密碼。在威脅分析中這是一個常見的謬誤,當入侵者擁有鑰匙時,沒有必要鎖門。 –

+0

另外,許可證制度一般都是徒勞無益的。 –

回答

7

如果攻擊者有管理員訪問您的計算機(這是您描述的攻擊所需的),那麼你幾乎已經失去了。任何你能做的事都可以被攻擊者繞過。

因此,我認爲完全沒有意義,試圖抵禦這種類型的攻擊。如果你必須處理不可信的,可能受損的計算機,那麼你根本無法相信他們做任何敏感的事情,你必須在自己的服務器上做這件事,或者類似的事情。

+0

我知道這樣做毫無意義。我只是對微軟爲什麼如此簡單感興趣。這不是我正在尋找的答案,但沒關係。 – nikeee

+2

我不明白你的推理路線。你認爲防止這種攻擊是沒有意義的,但是你仍然認爲微軟應該爲此花費資源嗎? – svick

+0

由於MS有權訪問.NET Framework和CLR內核,它們至少可以讓它變得更難一點。 – nikeee

相關問題