Windows应用安全性测试从何做起
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2.
3. 姓名:杨霄
部门:QA中心
团队:主动防御
经历:7年PC安全产品
相关测试
4. O1
安全测试重要性
O2
常见安全漏洞分析
O3
安全性测试的研究与实践
5. 安全测试重要性
[
P A R T 1
]
6. 安全测试重要性
病毒代码依靠“白加黑”方式被调用。被感染的程序会下载病毒文件到本地执行,被下载执行的是一组”白加黑”
恶意程序,其中svchost为白文件,svchost运行后会加载执行libcef.dll中所存放的恶意代码。
7. 安全测试重要性
过去 现在
传统的攻击手段主要 攻击的对象,已经从操
是针对操作系统的安 作系统,扩展到图像处
全漏洞。 理,办公处理,备份软
件,反病毒软件,web
应用等等各类应用程序。
8. 安全测试重要性
9. 安全测试重要性
10. 常见安全漏洞分析
[
P A R T 2
]
11. DLL劫持
从最广泛的意义上讲,DLL劫持是欺骗合法/受信任的应用程序以加载任意DLL
常见的DLL劫持方法:
常见的DLL劫持方法:
DLL搜索顺序劫持
相对路径Dll劫持
DLL重定向 DLL替换
加载DLL时使用了相 找到exe中的缺陷, 篡改了%PATH%环境 简单粗暴,替换已有
对路径,通过将恶意 通过DLL加载缺陷进 变量 的DLL
的DLL放在实际DLL之 行劫持
前的搜索位置,劫持
了搜索顺序
12. DLL劫持–DLL搜索顺序劫持
非安全搜索模式下( HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode设置为0 )
如果没有指定dll路径,那么dll的查找顺序:
1.程序启动目录
2.程序当前目录(CurrentDirectory)
3.系统目录(c:\windows\system32)
4.16位程序目录(c:\windows\system)
5.Windows目录(c:\windows)
6.Path环境变量
13. DLL劫持–DLL搜索顺序劫持
XP系统之后发布的Windows操作系统中,默认情况下开启安全DLL搜索模式。
同时,微软为了更进一步的防御系统的DLL被劫持,将一些容易被劫持的系统DLL写进了一个注册表项中,那
么凡是此项下的DLL文件就会被禁止从EXE自身所在的目录下调用,而只能从系统目录即SYSTEM32目录下调用。
注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
但是,并不是所有的系统DLL都被写进了注册表当中。
14. DLL劫持–相对路径DLL劫持
2,使用 PEview.exe 查看该程序的导入表,主要是看程序需要导入哪
些DLL文件
1,查看注册表里面哪些DLL是系统保护的
15. DLL劫持–相对路径DLL劫持
3,确定劫持的DLL文件之后,我们使用 AheadLib 工
具来生成DLL劫持代码
16. DLL劫持–相对路径DLL劫持
为了验证DLL程序是否能成功劫持,我们把改名后的“VERSION.DLL”和“hash.exe”放在桌面。运行程
序,成功弹窗。
17. 安全性测试的研究和实践
[
P A R T 3
]
18. 安全角度来指导软件开发
19. WINDOWS安全测试关注点
权限变更 模块加载 接口安全 缓冲区溢出 敏感信息泄漏
账户权限、 加载进程或者DLL时 接口调用时校验 确保做边界检查 用户隐私或者接
进程权限、 校验正确性 正确性
文件权限等
口消息加密
20. WINDOWS安全性测试实践
安全测试
工具辅助
21. WINDOWS安全性测试实践
需求检查:
需求检查:
基于需求和实现逻辑进行测试思维分析,避免不合理产品设计和代
码的实现。
用户隐私数据暴露
网络数据未做加密处理
高权限启动某个进程
是否有缺省功能配置
是否有应急响应方案
22. WINDOWS安全性测试实践
代码检测:
提测前:对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与现有软
件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。
发布前:进行安全代码复查。
减少静态链接,尽量使用动态链接的方式加载DLL
调整DllSearch顺序,针对系统Dll只从系统目录进行加载
加载Dll或其他模块时,尽量不要使用相对路径,加载前进行校验
是否有使用危险的api函数:如strcpy, strcat, sprintf, strlen等等
是否引用不可控的输入数据参数, 是否有做有效性验证判断或限制
23. WINDOWS安全性测试实践
安全测试:
安全测试和常规测试的区别:
测试目标不同
假设条件不同
思考域不同
问题发现模式不同
24. WINDOWS安全性测试实践
安全测试:
正向安全性测试:对测试范围的所有的可变数据进行标识,重点审查需求牵涉到的数
据是否都标识出了它的合法取值范围,设计测试数据进行验证。优点是测试比较充分,
但工作量相对来说较大。
反向安全性测试:从已知的安全漏洞入手,检查软件中是否存在已知的漏洞,设计对
应的测试用例。缺点是测试不完善,无法发现未知的攻击手段。
25. WINDOWS安全性测试实践
安全测试:
安全测试与渗透测试的区别:
出发点差异
视角差异
覆盖性差异
成本差异
解决方案差异
26. WINDOWS安全性测试实践
工具辅助:
了解常用的windows系统工具,可以更方便的帮助我们分析和排查问题。
常见测试工具:
procexp.exe procmon.exe Verifier Windbg
查看进程工具 查看文件、注册表、网络等操作信息 驱动校验 Dump分析工具
IDA WIRESHARK Depends
静态反编译工具 网络抓包和分析工具 查看文件与dll的依赖关系
27. WINDOWS安全性测试实践
工具辅助:
总结:
对安全性要求不高的软件,其安全性测试可以混在单元测试、集成测试、系统测试里
一起做。但对安全性有较高需求的软件,则必须做专门的安全性测试,以便在破坏之
前预防并识别软件的安全问题。
做好软件安全性测试的必要条件是:一是充分了解软件安全漏洞,二是评估安全风险,
三是拥有高效的软件安全测试技术和工具。
28. WINDOWS安全性测试误区
未排序风险优先级 安全问题不重要 缺乏测试报告
和常规测试一样,安全测试 产品可能更加关注业务逻辑 安全测试报告应该清晰阐述安
bug也需要设立优先级。将安 中存在的问题,往往忽视安 全问题所在,并且表明不修复
全风险进行排序,可以将有 全bug。但是安全漏洞常常会 的潜在后果,同时提出可建设
限的资源聚焦到最大价值的 使产品遭受到巨大威胁。 性的修复方案。
地方。
29. 360技术
THANKS
360质量效能