windows CS架构客户端渗透测试 BetaFast BetaBank 2020-07-03 05:19:12 Steven Xeldax ## 目录 - 客户端UI测试 - 网络流量测试 - 文件系统和注册表分析 - API测试 - 代码逆向分析 - 动态调试分析 Windows上C/S架构下客户端的渗透测试主要是针对客户端前台本身以及涉及后端逻辑处理上,在这类类型的渗透测试中我们关注的是WEB API层面,客户端逻辑,数据存储层面,而对于二进制层面的漏洞我们并不在关心。 本文将利用NETSPI出的一份C# 厚客户端DEMO来讨论关于客户端渗透测试的一系列技巧。 Github地址:https://github.com/NetSPI/BetaFast BetaFast是采用三层架构编写的: 第一层:客户端显示和采集数据 第二层:服务端接受web请求并处理业务逻辑 第三层:数据库服务器修改和获取应用服务器的数据 Beta Bank采用双层架构编写: 第一层:客户端显示和采集数据 第二层:数据库服务器处理业务逻辑,执行客户端数据查询和修改 单层架构也是存在的,客户端,业务逻辑,数据存储都在同一台系统上,本文就不去讲解单层架构了。当然也有三层以上的架构。 ### 客户端UI测试 gui的界面上可以使用winspy也可以使用windows detective来进行界面上UI指定的测试。   面对WPF的软件我们可以使用snoopwpf来做 https://github.com/snoopwpf/snoopwpf  ### 网络流量测试 网络流量不同层面的服务大致有: - HTTP - 纯TCP 针对纯TCP也就是像BetaBank这一类的应用我们wireshark来进行流量探测。  像Echo Mirage工具我们可以截获并修改tcp流量,有点像brupsuite。 另外是对于走HTTP层面的流量: Windows 下 C# 一类的服务器我们可以直接使用Fiddler方便的进行web API测试,这个和传统的渗透测试上没有很大的差别。  ### 文件系统和注册表分析 windows厚客户端往往会在本地文件系统或者是注册表操作,如果开发者编码不当可能会把一些敏感的信息存储到文件系统中或者注册表中,包括社保账号凭证等等。测试文件系统或者注册表的信息泄露非常简单,只需要查找应用程序使用的文件和注册表键,确认是否有敏感信息。 在该项目测试的过程中我们主要使用的软件就是AccessEnum和Process Mointor。   AccessEnum 可以筛选出目录文件和注册表的权限  ### API测试 主要使用工具API Monitor  还有一个.net Smoke Test工具也不错http://smoketest.wesleysteiner.com/ 这边重点介绍一下smokeTest感觉非常好用,可以非常方便的运行单个函数,有点像frida function hook的感觉了。 Assembly里加载二进制,然后选择类创建类,然后我们选择想要运行的方法就行。   ### 代码逆向分析 检查安全机制,这个和linux下pwntools的checksec是一样的 下载地址https://github.com/NetSPI/PESecurity  ILSPY + dnSPY方便的看到.net 系列程序源代码  ### 动态调试分析 dnSpy直接启动调试就可以了  也可以在调试界面设置  ### 参考资料 https://www.4hou.com/posts/AAM7 https://blog.netspi.com/introduction-to-hacking-thick-clients-part-1-the-gui/