厚客户端渗透介绍(五):API测试

厚客户端渗透测试介绍是一个系列博客文章,上一篇我们讲到了程序集的测试,这一章我们来看看API的测试。

示例应用下载地址:BetaFast Github repo。

已发布文章

厚客户端渗透介绍(一):GUI测试

厚客户端渗透介绍(二):网络测试

厚客户端渗透介绍(三):文件系统和注册表测试

厚客户端渗透介绍(四):程序集测试

信息收集

测试应用程序时,搞清楚程序表面背后的逻辑是非常重要的。想象一下你们见过的最大的桌面应用程序,可能跟我测试过的体量庞大的厚客户端相比,都算不了什么。测试这些庞杂的厚客户端需要团队合作和坚持不懈的精神。我曾经做过一个demo的测试,花了6个小时,都没有看完整个应用程序的逻辑和代码。即使代码没有进行混淆,我也不可能读完,完全搞懂每句代码的意思。

不过好在有大牛开发了工具,可以帮助我们测试。

API Monitor

首先来介绍下API Monitor。这个工具会监控进程中的所有API调用,并且显示参数。在这个例子中,我们会筛选出BetaFast在登录认证过程中API调用列表,注意看一下左侧的API过滤器。奇热当我勾选相应的模块并且通过BetaFast认证时,summary这一栏瞬间就记录了50000多条API调用,占用了相当一部分的系统资源:

厚客户端渗透介绍(五):API测试_第1张图片

以我的经验来看,使用API Monitor来监控BetaFast程序,并不会突出显示一些特定的漏洞,并且几乎所有的主要功能都包含在单独的程序集中,所以API Monitor可能无法找到在库之间传递的大量敏感信息。但是这个工具在显示其他信息方面也是很有帮助的,如显示正在使用的系统资源,被引用或创建的文件,网络调用,安全调用等。除了信息收集外,我们再来看看攻击方面,它能够在加密之前拦截和修改数据,或者是收集库之间传递的明文密码和连接字符串。

发起调用

下面我们看看高级测试。有一款测试工具叫“.net SmokeTest”,可用于加载和运行单个方法调用。不需要加载程序并搜索方法调用的位置,不需要调试应用程序,而且一行代码都不用编写。如果测试时需要写一个方法,用.net SmokeTest执行也很简单,比在程序中找到正确的调用点简单得多。而且,对于在预写方法中测试各种数据输入也是非常有用的。

请看下面这个加密方法!使用上篇文章介绍到的反编译器,我们在BetaFast.exe程序中找到了一个硬编码的加密密码,具体来说,就是在LoginModelView这个类中,看下代码,在点击登录时,登录表单中的密码会被加密,然后与存储的值进行比较。

厚客户端渗透介绍(五):API测试_第2张图片

加密方法如下:

厚客户端渗透介绍(五):API测试_第3张图片

再往下看,是解密方法,但是在程序中没有调用。由于IV和key在硬编码在了程序中,因此只需要输入密文即可:

厚客户端渗透介绍(五):API测试_第4张图片

下一步自然就是解密硬编码在代码中的加密密码了。首先启动.net SmokeTest,然后创建一个LoginViewModel类的实例:

厚客户端渗透介绍(五):API测试_第5张图片

打开LoginViewModel类,将密码作为密文参数传递到解密函数中,然后就可以显示出明文密码了:

厚客户端渗透介绍(五):API测试_第6张图片

还有一个powershell解密脚本,几年前的NetSPI的一篇博客中也有提到,以下代码可以运行来调用特定的方法:

# Load Assembly
$Assembly = [System.Reflection.Assembly]::LoadFile("C:\Users\netspi\Desktop\Examples\3-Tier\BetaFast.exe")
# Create binding
$BindingFlags= [Reflection.BindingFlags] "NonPublic,Instance"
# Target the class
$Instance = new-object "BetaFast.ViewModel.LoginViewModel"
# Call the methods
$Instance.GetType().GetMethod("Encrypt",$BindingFlags).Invoke($Instance,"Spring1980!")
$Instance.GetType().GetMethod("Decrypt",$BindingFlags).Invoke($Instance,"PE/jSP7tOGDLoZLXRvPtlA==")

可以看到Spring1980!成功加密,而PE/jSP7tOGDLoZLXRvPtlA== 也成功解密:

厚客户端渗透介绍(五):API测试_第7张图片

你可能感兴趣的:(厚客户端渗透介绍(五):API测试)