验证.NET框架组件(Validating .NET Framework Assemblies)

2019-08-08 03:24发布

我只是通过我们去德国VB.NET论坛并有一些有趣的事情,让我某种头痛。

它实际上是可以编辑使用ReflexIL或其他一些IL编辑器中的.NET Framework程序集。 你必须绕过唯一的事情就是组件的强名称签名。 改变装配IL之后,你必须运行sn.exe -Vr [assemblyname]来还挺跳过强名称验证。 之后,你必须清除缓存的本机映像。 只要经过C:\Windows\assembly目录,并删除所有的与您的组装部件图像。 然后重新启动。 当你登录,运行ngen install [assemblyname] 现在, 新的原生图像生成。

这工作。 我在虚拟环境(Windows XP x86)的验证此过程。 现在我担心的最多的东西是,你可以很容易地绕过.NET VerifyHashVerifyData的方法RSACryptoServiceProvider 。 这实际上工作了。 我的一个朋友和我测试可以验证这个问题( 见截图 )。 这是相当容易的。

例如,如果我创建构建在.NET Framework加密类许可制度,它可以绕过系统范围内使用框架系统上的每个 .NET应用程序。 此外,每个人都可以登录更改我只是挂接到方法调用functios的输入。

现在的问题是:由于这可能是一个巨大的问题,我怎么能做些什么呢? 当然,恶意用户可能只是编辑我的应用程序,但不会像这样全系统的那样糟糕。 我曾想过一些框架校验和验证,但因为有很多的.NET Framework不同的更新,这似乎是不可能的。

任何解决方案或建议吗? 微软是否照顾这个问题以某种方式?

Answer 1:

如果攻击者对您的计算机(这是需要您所描述的攻击)的管理员权限,那么你已经差不多失去了。 任何你可以做可能会被攻击者绕过。

正因为如此,我认为这是完全没有意义的尝试,以抵御这种类型的攻击。 如果你必须处理不可信的,潜在的受感染的计算机,那么你根本无法相信他们做任何事的敏感,你必须做你自己的服务器,或者类似的东西上。



文章来源: Validating .NET Framework Assemblies