客户端应用程序安全测试.pdf
《客户端应用程序安全测试.pdf》由会员分享,可在线阅读,更多相关《客户端应用程序安全测试.pdf(24页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1C/S架构客户端安全评估参考手册架构客户端安全评估参考手册写在前面:此手册仅供内部人员学习参考,适用于公司内部安全评估参考,此手册不涉及任何获取webshell方法、非法渗透方法、不提供任何具有危害性的POC、木马等,仅供参考,请勿用于非法用途。2022年9月2目录1.1 客户端测试.31.1.1 程序加壳检测.31.1.2 签名检测.41.1.3 逆向分析/反编译防护.51.1.4 动态调试防护.61.1.5 客户端程序完整性校验.71.1.6 键盘消息记录.91.1.7 DLL注入.101.1.8 DLL劫持.121.1.9 本地文件安全.141.1.10 网络数据传输安全.141.1.
2、11 本地注册表安全.151.1.12 内存安全.171.1.13 本地调试安全.202.1 服务端测试.212.1.1 HTTP抓包方式.212.1.2 TCP协议抓包方式.222.1.3 常见漏洞列表.2331.1 客户端测试客户端测试1.1.1程序加壳检测程序加壳检测问题描述问题描述:使用 DIE 文件类型识别文件查看客户端程序文件的编译器连接器信息。对 exe 文件进行检查,未发现具有加壳防护。测试过程测试过程:使用测试工具 DIE 查壳发现系统未对安装程序加壳,以下为检查结果,已做加壳处理的结果4风险分析风险分析:未加壳的程序可以对目标的开发语言进行检测,不做抗逆向、抗反汇编的安全措
3、施,攻击者会利用该漏洞对目标程序进行调试、分析和篡改。修复建议:修复建议:建议对客户端敏感程序文件进行加壳处理,并且注意加壳质量,避免使用弱保护壳。可以使用 VMProtect 等加壳方式,具有较高的安全性。1.1.2签名检测签名检测问题描述问题描述:程序进行可信电子证书签名,是用于辨别程序或者第三方库是否可信的重要途径之一,同时有效防止程序篡改或者被替换。测试过程测试过程:Windows 操作系统对自身的程序都进行了签名,以确保程序的完整性和可用性,避免被恶意替换。可以使用 sigcheck 工具检测,该工具可以对某一个目录里所有的文件进行签名检查。以下为签名的样子5风险分析风险分析:未加壳
4、的程序可以对目标的开发语言进行检测,不做抗逆向、抗反汇编的安全措施,攻击者会利用该漏洞对目标程序进行调试、分析和篡改。修复建议:修复建议:建议对客户端敏感程序文件进行加壳处理,并且注意加壳质量,避免使用弱保护壳。可以使用 VMProtect 等加壳方式,具有较高的安全性。1.1.3逆向分析逆向分析/反编译防护反编译防护问题描述问题描述:使用 IDA 对程序文件逆向逆向分析,观察 IDA 能否获取到程序的汇编代码。对于能力高超的攻击者来说,没有静态分析防护的程序可以更加容易的针对程序制定攻击计划,分析程序中的缺陷代码。攻击程序中的漏洞,甚至截获操作信息。测试过程测试过程:使用IDA对程序文件逆向
5、逆向分析,以下为检查结果,使用脱壳工具对运行程序 exe 进行脱壳(此程序是运行程序,不是安装包)使用 IDA 查看 Lite.exe,以下是未加壳的样子6以下为加壳后加固后的 ida 查看结果风险分析风险分析:未加壳/弱壳的程序可以对目标的开发语言进行检测,不做抗逆向、抗反汇编的安全措施,攻击者会利用该漏洞对目标程序进行调试、分析和篡改。修复建议:修复建议:建议对客户端敏感程序文件进行加壳处理,并且注意加壳质量,避免使用弱保护壳。可以使用 VMProtect 等加壳方式,具有较高的安全性。1.1.4动态调试防护动态调试防护问题描述问题描述:使用 X64DBG 对客户端程序进行动态调试,检查客
6、户端程序是否存在动态调试的防护功能,能否有效的避免动态调试获取程序的执行流程。测试过程测试过程:使用 X64DBG 对客户端程序进行动态调试,检查客户端程序是否存在动态调试的防护功能,能否有效的避免动态调试获取程序的执行流程一直按下一步即可,观察能否调出登录程序页面7风险分析风险分析:使用 X64DBG 对客户端程序进行动态调试,检查客户端程序是否存在动态调试的防护功能,能否有效的避免动态调试获取程序的执行流程修复建议:修复建议:建议对客户端程序增加花指令混淆等防护动态调试的安全措施。或者对客户端程序进行加壳处理,当检测到调试程序的时候立即断开进程,使程序崩溃最佳。1.1.5客户端程序完整性校
7、验客户端程序完整性校验问题描述问题描述:程序可以进行修改,如果程序在进行修改之后程序仍然正常运行,则用户无法感知程序被篡改而造成信息泄露。测试过程测试过程:修改二进制程序文件,篡改文件中的某一个字节,重新运行客户端程序,观察客户端程序是否会检测出文件已被篡改。8使用 winhex 工具打开小葵,而后搜索关键字 zj,以字符或者 16 进制搜索都可以修改一处,而后另存即可点击另存为即可9打开修改后的,发现依然可以打开风险分析风险分析:使用 X64DBG 对客户端程序进行动态调试,检查客户端程序是否存在动态调试的防护功能,能否有效的避免动态调试获取程序的执行流程修复建议:修复建议:建议对客户端程序
8、增加花指令混淆等防护动态调试的安全措施。或者对客户端程序进行加壳处理,当检测到调试程序的时候立即断开进程,使程序崩溃最佳。1.1.6键盘消息记录键盘消息记录问题描述问题描述:SetWindowsHookEx 是 windows 提供的消息钩子函数,恶意软件可以通过这个函数进行全局消息钩取,得到目标的。测试过程测试过程:使用 AKLT 对用户的输入进行监测,查看是否能够获取到用户的输入开始检测10风险分析风险分析:SetWindowsHookEx 是 windows 提供的消息钩子函数,恶意软件可以通过这个函数进行全局消息钩取,得到目标的。修复建议:修复建议:开发者可以使用 Hook Windo
9、ws 系统 API 函数 KeUserModeCallback 来检测监听事件,以达到防止消息钩子的注入。1.1.7DLL 注入注入问题描述问题描述:测试过程中,使用进程注入工具对客户端进行进行 dll 注入操作,观察注入后产生的结果。测试过程测试过程:使用 procexp 检查 Lite.exe 程序 DLL 运行情况使用 MSF 生成 wtsapi32.dll 文件做注入使用11当前系统监听 1003 端口为未连接状态使用 DLL 注入工具,对 DLL 文件进行注入攻击此时注入成功,1003 端口被开启,且处于监听状态此时查看进程查看器,DLL 已被注入12MSF 建立监听,成功获取 se
10、ssion风险分析风险分析:DLL 注入会导致恶意的 DLL 文件被注入程序,在攻击者获取系统权限之后可以通过此方法进行 DLL 注入进行后期的一个权限维持操作,隐蔽性极高修复建议:修复建议:调用 LoadLibrary()、LoadLibraryEX()、CreateProcess()等函数时,在程序中指定 dll 的绝对路径;加载任何 dll 前先校验文件的签名,签名不正确的 dll 不能被加载1.1.8DLL 劫持劫持问题描述问题描述:DLL劫持指的是,攻击者通过一些手段来劫持或者替换正常的DLL,欺骗正常程序加载预先准备好的恶意DLL,而后实现其恶意的目的。测试过程测试过程:使用 Im
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户端 应用程序 安全 测试
限制150内