.NET 实战Web.config数据库解密及逆向技巧
2023-12-20 08:37:27 Author: dotNet安全矩阵(查看原文) 阅读量:21 收藏

干货满满,来自dotnet安全矩阵微信群一位师傅的投稿分享 

分析配置文件发现以下特征:

数据库连接字符串应该是经过(Base64编码+AES或DES等加密)算法混淆。connecttionString的上级节点中没有类似Encrypt的节点名称。

说明没有使用IIS内置的加密类:DataProtectionConfigurationProvider类 和 RsaProtectedConfigurationProvider类。查看整个web.config文件,没有在发现解密密钥之类的配置节点。

提示信息:因为IIS内置的DataProtectionConfigurationProvider类、RsaProtectedConfigurationProvider类的加密过程中使用了一个基于本机的密钥,所以会影响web应用的分发,所以可能不会使用这两个算法,所以一般开发者会使用DES等加解密算法在代码内部对配置字符串进行动态解密。

根据以上场景判断,数据库加密字符串没有使用IIS内置的加密方法,而是在程序内部使用了其他的解密方法。所以想在web源码中查找对应的解密函数和密钥,对数据进行解密。

bin目录下有很多的dll文件,web目录下也有很多的aspx等代码文件。我们需要一种方法快速的去定位我们需要的函数对应的配置文件,而不是每个文件都进行翻阅。我们需要一种方式进行全局内容搜索,本示例中采用的是emeditor工具。更重要的是,需要知道应该搜索什么关键字来筛选代码文件。

connectionStrings是.NET开发中的一种常见形式,我通过文心一言AI搜索了一个调用demo。

参考实例中的对象名称,选取了如下几个搜索关键字:

usingSystem.Configuration;using System.Data.SqlClient;ConfigurationManager.ConnectionStrings["conn"].ConnectionString;

全局搜索ConnectionString,采集到如下DLL文件:CODE\bin\Easy.FrameWork.dllCODE\bin\EntityFramework.dllCODE\bin\log4net.dllCODE\bin\System.Configuration.dll:CODE\bin\System.Data.dll: CODE\bin\System.Data.Entity.dll: CODE\bin\System.dll: CODE\bin\System.Web.dll: CODE\bin\System.Web.Entity.dll: CODE\bin\System.Web.Providers.dll: CODE\bin\XX.Utility.dll:

开始也猜测内部使用了Des解密,因此也尝试搜索了Decrypt关键字和DESDecrypt关键字。全局搜索DESDecrypt采集到如下DLL文件:CODE\bin\Easy.FrameWork.dll

使用dnSpy打开DLL文件,分析了好几个dll文件后,最终打开Easy.FrameWork.dll。成功搜索到desdecrypt关键字,搜索到解密函数和解密密钥。

提示:感觉System开头的DLL文件一般都是IIS内置的,优先级可以延后处理。Dll内部使用DESCryptoServiceProvider类实现解密,因此没有重写解密工具。直接使用了[dot.Net安全矩阵星球]SharpofDecryptWebconfig.exe程序(非广告)进行了字符串解密。

分析过该工具的函数,是使用DESCryptoServiceProvider类对字符串进行解密的。

以上搜索方法的缺陷

1、主观的优先分析某个dll本身是个缺陷。对于不熟悉.net开发的人来讲,根本不知道写在哪个dll内,完全是看天意,如果一个关键字都没有搜索到,就得逐个dll逆向查看分析。

2、dnSpy不会使用怎么办?在所有dll文件中搜索,发现搜索DesDecrypt存在内容,但搜索Decrypt却没有(含字符串条件)。真的需要每次都在dnSpy内部进行搜索吗? 有没其他的处理办法呢?上文中开始其实查找了很久,就算只有几个dll进行分析,其实也耗费了一段时间。之所以耗费时间较多,其实问题也很明显,主要是没有熟悉使用dnSpy这个工具。如果能导出这些dll文件的源码,像审计java代码一样就好了。

经过测试 点击文件——>导出到工程 可以逆向的源码到sln项目中。

直接在源码文件夹搜索关键字,很快就发现了解密密钥参数。但是依然存在缺陷,逐个dll解密也是很浪费时间的事情,需要寻找使用dnSpy批量dll逆向的方案。

测试过程中发现,在dnSpy的目录下存在dnSpy.Console.exe程序。其中存在需要的批量逆向命令:dnSpy.Console.exe -o C:\out\path C:\some\path

为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展经过运营团队成员商议一致同意给到师傅们最大优惠力度,只需199元就可以加入我们。

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等,后续还会倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyOTc3NTQ5MA==&mid=2247489910&idx=1&sn=64bc940d21ad43aaa1f681ffe13334bb&chksm=fb16de743f20475e33289707a07e7fb47646441b344f01df1e2a587507e440fc4070d50b5a6c&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh