开yun体育app入口登录 【C/S架构安全测试】客户端应用程序测试(测试项补充)
文章目录
前言
客户端应用安全测试项目、测试工具介绍、测试方法! ! !
本文参考了老大分享的客户端应用测试文献:vlan911。非常感谢! ! !
1. 客户端测试 1.1 程序加壳检测
问题描述:使用DIE文件类型识别文件查看客户端程序文件的编译器连接器信息。检查exe文件,没有发现存在加壳保护。
测试过程:使用测试工具DIE检查shell,发现系统没有打包安装程序。以下是检查结果。
包装过程结果
风险分析:脱壳程序可检测目标开发语言,未采取防逆向、防反汇编安全措施。攻击者会利用该漏洞对目标程序进行调试、分析和篡改。
修复建议:建议在客户端加壳敏感程序文件,注意加壳质量,避免使用薄弱的保护壳。可以采用VMProtect等加壳方式,安全性较高。
1.2 签名检测
问题描述:程序使用受信任的电子证书进行签名,这是识别程序或第三方库是否可信的重要方式之一,同时有效防止程序被篡改或替换。
测试过程:Windows操作系统对自己的程序进行签名,以保证程序的完整性和可用性云开·全站app中心手机版,避免恶意替换。
您可以使用 sigcheck 工具来检测目录中所有文件的签名。
下面是签名的样子
风险分析:脱壳程序可检测目标开发语言,未采取防逆向、防反汇编安全措施。攻击者会利用该漏洞对目标程序进行调试、分析和篡改。
修复建议:建议在客户端加壳敏感程序文件,注意加壳质量,避免使用薄弱的保护壳。可以采用VMProtect等加壳方式,安全性较高。
1.3 逆向分析/反编译保护
问题描述:使用IDA对程序文件进行逆向分析,观察IDA能否获取到程序的汇编代码。对于熟练的攻击者来说,没有静态分析保护的程序可以更容易地制定针对程序的攻击计划并分析程序中的缺陷代码。攻击程序中的漏洞,甚至拦截运行信息。
测试过程:使用IDA对程序文件进行逆向分析。以下为检查结果:
使用解包工具解压运行程序exe(此程序是运行程序,不是安装包)
使用IDA查看Lite.exe,下面是解压后的样子
以下是脱壳加固后的IDA查看结果。
风险分析:脱壳/弱加壳程序可检测目标开发语言,未采取防逆向、防反汇编安全措施。攻击者会利用该漏洞对目标程序进行调试、分析和篡改。
修复建议:建议在客户端加壳敏感程序文件,注意加壳质量,避免使用薄弱的保护壳。可以采用VMProtect等加壳方式,安全性较高。
1.4 动态调试保护
问题描述:使用X64DBG动态调试客户端程序,检查客户端程序是否具有动态调试保护功能,是否能够有效避免动态调试获取程序的执行流程。
测试过程:使用X64DBG动态调试客户端程序,检查客户端程序是否具有动态调试保护功能,是否能够有效避免动态调试获取程序的执行流程。
一直按下一步,看看是否可以调出登录程序页面。
风险分析:使用X64DBG动态调试客户端程序,检查客户端程序是否具有动态调试保护功能,是否能够有效避免动态调试获取程序的执行流程。
修复建议:建议在客户端程序中添加指令混淆等安全措施,防止动态调试。或者打包客户端程序,当检测到调试器时立即断开进程,让程序崩溃最优。
1.5 客户程序完整性验证
问题描述:程序可以修改。如果程序被修改后仍然正常运行,用户将无法感知到程序已被篡改,从而导致信息泄露。
测试过程:修改二进制程序文件,篡改文件中的某个字节,重新运行客户端程序,观察客户端程序是否检测到文件被篡改。
观察客户端程序是否检测到文件被篡改。
使用Winhex工具打开小葵,然后搜索关键字zj。您可以按字符或十六进制搜索。
只需进行一项更改并将其保存到其他地方。
只需单击另存为即可! ! !
打开修改后的程序发现仍然可以打开
风险分析:使用X64DBG动态调试客户端程序,检查客户端程序是否具有动态调试保护功能,是否能够有效避免动态调试获取程序的执行流程。
修复建议:建议在客户端程序中添加指令混淆等安全措施,防止动态调试。或者打包客户端程序,当检测到调试器时立即断开进程,让程序崩溃最优。
1.6 键盘消息录制
问题描述:SetWindowsHookEx是windows提供的消息钩子函数。恶意软件可以利用该函数来hook全局消息并获取目标。
测试过程:使用AKLT监控用户输入,看能否获取到用户输入
开始检测
风险分析:SetWindowsHookEx是Windows提供的消息钩子函数。恶意软件可以利用该函数来hook全局消息并获取目标。
修复建议:开发者可以使用Hook Windows系统API函数KeUserModeCallback来检测监听事件,防止消息钩子注入。
1.7 DLL注入
问题描述:测试时,使用进程注入工具将DLL注入客户端,观察注入后的结果。
测试过程:使用procexp检查Lite.exe程序DLL的运行状态
使用MSF生成wtsapi32.dll文件进行注入
当前系统监听1003端口未连接。
使用DLL注入工具对DLL文件进行注入攻击
此时函数被注入,1003端口打开,处于监听状态。
此时查看进程查看器,DLL已经被注入了
MSF建议监控并成功获取Session。
风险分析:DLL注入会导致恶意DLL文件被注入到程序中。攻击者获得系统权限后,可以利用该方法进行DLL注入,以进行后期的权限维护操作,隐蔽性极强。
修复建议:调用LoadLibrary()、LoadLibraryEX()、CreateProcess()等函数时,指定DLL在程序中的绝对路径;在加载任何 DLL 之前验证文件的签名。无法加载签名不正确的 DLL。
1.8 DLL劫持
问题描述:DLL劫持是指攻击者利用某种手段劫持或替换正常的DLL,诱骗正常程序加载预先准备好的恶意DLL,进而达到其恶意目的。
测试过程:使用ImpulsiveDLLHijack工具进行劫持检测
运行结果显示存在劫持
将 calc.dll 文件重命名为 profapi.all 并将其存储在与正在运行的程序相同的文件夹中。
此时再次运行主程序,计算器成功弹出,主程序可以正常运行,没有任何警告。
风险分析:攻击者利用DLL劫持将恶意DLL文件存放在客户端文件夹中,然后在主程序启动时启动它们。他们利用此功能来监控用户,并经常用于社会工程网络钓鱼和后期的权限维护。 。
修复建议:调用LoadLibrary()、LoadLibraryEX()、CreateProcess()等函数时,指定dll在程序中的绝对路径;在加载任何 DLL 之前验证文件的签名。无法加载签名不正确的 DLL。
1.9 本地文件安全
问题描述:检查本地所有文件,是否存在泄露数据库密码的配置文件、用户密码缓存文件等。
测试过程:搜索本地安装后的所有敏感文件开yunapp体育官网入口下载手机版,例如“Config”等文件,发现本地存储有数据库用户名和密码文件。
风险分析:数据库用户名和密码泄露,攻击者可以直接访问数据库获取敏感信息。
修复建议:删除不必要的配置文件,或者删除或隐藏敏感信息。
1.10 网络数据传输安全
问题描述:网络数据传输可以通过抓包工具进行抓包。如果SQL语句暴露,攻击者就可以通过暴露的SQL语句攻击服务器。
测试过程:使用工具拦截登录请求包,发现明文SQL语句泄露
风险分析:远程攻击者可以利用该查询语句获取数据库表名、库名、字段等敏感信息,进而可能构造特殊的SQL语句注入特有参数进行攻击,更快获取数据库信息(直接抓包) )修改原来的SQL语句查询其他内容)
修复建议:如果存在敏感信息,请在数据传输过程中对敏感信息进行加密,提高程序数据的安全性。
1.11 本地注册表安全
问题描述:登录部分应用后。登录信息可能存储在注册表中,导致用户名和密码等敏感信息泄露。
测试过程:其实这样的问题很少。介绍这个东西的主要原因其实是因为很多MSI病毒登陆后都会修改注册表,并且通过这种方式实现了长期驻留,所以在这里介绍一下。暂时来说,笔者在测试C/S架构客户端的过程中,还没有遇到过在注册表中存储用户名、密码等信息的情况,所以这里只介绍一下使用的方法和工具。
在安装安装包之前,使用Regshot注册表对比工具对系统注册表进行快照。
然后程序安装后,输入用户名和密码,登录,再次使用注册表工具进行快照。
注册表生成后,会自动生成一个用于对比的html文件。我们可以直接双击打开来观看注册表的变化。
这样我们就可以在程序安装启动后快速定位到注册表的变化。事实上,这不仅仅是一次常规的安全评估。在反病毒过程中,我们还可以通过这种方法观察注册表项的变化,从而获得病毒部署后的一些行为。
下图是注册表中新添加的防火墙规则。我们尚未发现该程序具有在注册表中存储敏感信息的行为,但其具有添加新的防火墙规则的行为;通常,病毒登陆后,会通过添加防火墙退出。通过堆栈规则和推送规则来达到维护权限和隐藏行为的目的,这样我们在获取病毒样本的同时可以更深入地了解病毒的行为。
风险分析:远程攻击者可以利用该缺陷通过查看注册表来获取用户的敏感信息。
修复建议:建议不要在注册表中存储敏感的用户信息。
1.12 内存安全
问题描述:登录后,某些应用程序可能会将登录信息存储在内存中,导致用户的敏感信息被泄露。
测试过程:这里推荐使用Process Hacker工具
首先我们输入用户名和密码,然后点击登录。建议您登录成功后查看内存信息。
我们打开Process Hacker工具,在页面上找到我们的主程序进程
双击我们的主程序进程后,点击“内存”
然后点击左上角的选项->字符串
默认情况下,我们直接点击确认即可。
现在进入内存页面,我们可以进行关键字过滤,例如输入“用户名”“密码”关键字进行过滤,看看是否有泄露数据库的查询语句 Filter -> Contains
我们可以看到内存中并没有泄漏任何有用的东西,而且笔者也没有遇到过内存泄漏的情况,所以这里给大家截一张网上的截图。
风险分析:远程攻击者可利用该缺陷,通过查看内存信息来获取用户的敏感信息。
修复建议:建议不要在内存中存储敏感的用户信息。
1.13 本地调试安全
问题描述:部分应用程序开启本地调试功能后,登录后的用户名和密码会保存在调试日志中,可能会被恶意人用来获取用户的登录信息。
测试过程:在主程序运行目录下打开cmd命令行或者powershell
然后会在小葵同目录下生成log.log文件,程序就会运行。我们输入任何内容开yun体育官网入口登录体育,然后关闭程序并查看日志。
打开日志,发现没有任何记录。
接下来我们看一下互联网上泄露用户名、密码等敏感信息的内容。
风险分析:远程攻击者可以利用该缺陷,通过查看调试信息来获取用户的敏感信息。
修复建议:建议检查程序运行状态,不允许开启调试模式,或者对安装目录下的文件进行Hash校验。
2、服务器端测试 2.1 HTTP抓包方法
事实上,服务器端测试方法与常规Web应用程序测试功能点类似。不同之处在于我们如何拦截程序的数据包。
通常,客户端大致分为HTTP协议通信和TCP/私有协议通信:
测试HTTP协议的方法并不难。我建议大家使用Proxifier工具全局代理这个应用,然后挂上burpsuite,这样就可以拦截数据了。下面简单介绍一下如何使用。我遇到的客户端我们使用的都是TCP协议或者私有协议,所以我从来没有遇到过HTTP协议。我在这里只是给你一些想法。
点击“配置文件”->“代理服务器”配置代理并设置burpsuite
然后选择“配置文件”->“代理规则”,代理程序我们可以留空,默认为任意,或者选择固定程序;建议您添加待测试的程序,这样可以减少干扰。
填写如下后,只要客户端使用HTTP协议,那么我们就可以拦截数据包,但大多数情况下是使用TCP协议或者私有协议。
2.2 TCP协议抓包方法
这里我们可以使用WireShark来测试TCP协议,因为大部分流量都是加密的,也有一些是明文。以下是某次测试中modbus协议的数据包。
或者使用EchoMirage工具进行拦截,处理->注入然后选择对应的进程。
如下图所示,只要发生通信,我们就可以拦截TCP数据包甚至数据库流量(免责声明:这当然不是微信流量)
2.3 常见漏洞列表
TCP流量的漏洞很少,但如果能直接拦截数据库流量,可以写脚本执行SQL语句,比如添加用户、修改密码,但首先要知道数据库对应的表名字段。班级信息。
那么如果遇到TCP传输数据或者无法抓包的情况,可以测试哪些漏洞呢?
总结
以上是对客户端(C/S架构)应用测试的漏洞点和测试工具的介绍。在测试C/S客户端时,可以参考本博客专栏(C/S架构安全测试)。测试点将逐步排查漏洞,后续会更新更多有用的安全测试文章。感谢您到目前为止的阅读,欢迎您批评指正! ! !
我要评论