笔者曾经在 轻松看懂的加解密系列(1)番外篇II:Procmon实战和经典案例回顾-CSDN博客 和 轻松看懂的加解密系列(1)番外篇I:用Procmon监视一次AES加解密全过程-CSDN博客 这两篇文章中详细介绍过【Sysinternals Process Monitor】这款强大的监控工具。Procmon 主要用于监控Windows 操作系统上的系统活动,例如文件操作、注册表访问、进程和线程活动等,并不能直接监视应用程序的API调用的参数和返回值。例如 Procmon 可以监控到被测应用程序的哪个线程加载了什么动态链接库,但无法进一步地监视应用程序的API调用的参数和返回值。而另一款著名的系统监视工具【Rohitab API Monitor v2】则可以完成后续的这项任务,其三大主要功能如下:
-
API调用监视:该工具可以捕获应用程序在运行时所调用的各种Windows API函数的信息。这些API函数包括文件操作、网络通信、注册表访问、图形绘制等。
-
参数和返回值分析:API Monitor v2允许用户查看API调用的参数和返回值,以便更深入地了解应用程序的行为。
-
调用堆栈跟踪:它可以生成API调用的调用堆栈信息,帮助用户追踪API调用的来源。
Rohitab API Monitor 官方主页:http://www.rohitab.com/apimonitor
如【图-1】大家可以自行选择合适的版本进行测试,笔者选用的是bx86-32-bitb安装版本。
本次实验目的在于验证之前两个测试程序的API调用,其一是采用CryptEncrypt 和CryptDecrypt 这组传统加解密API轻松看懂的加解密系列(4) —— 改进版“AES对称加解密实例”(附源码)-CSDN博客,另一个则是采用CryptProtectData 和 CryptUnprotectData这组更方便于保护本地数据的API轻松看懂的加解密系列(5) —— Windows平台下本地数据加密的新选择(附源码)-CSDN博客
启动 Rohitab API Monitor 工具后,工具栏保持默认选择,从左侧的【API Filter】直奔主题,我们只选择监控测试程序主要用到的几组加解密相关的API,这些API都位于【Security And Identity】-->【Cryptography】下,展开具体的子项并勾选目标API。如【图-2/3】所示。
|
|
期间如果弹出【API Monitor: Process Notification】对话框,只要不是目标监控程序的进程,一律跳过。如【图-4】所示。
启动第一个被测程序后,立刻会被监控程序发现,如【图-5】所示,此时需要选择【Monitor】,接下来在测试程序内正常进行加解密操作,会发现所有被勾选记录的API如果被调用,都会被按顺序记录下来。选中每个调用后,还可以进一步分析调用的参数和返回值,如【图-6】所示。不出所料,被测试程序最终调用了CryptEncrypt 接口来进行加密操作,并且返回成功。
同理,在启动第二个被测程序之后,采用 CryptProtectData 和 CryptUnprotectData 接口来加密和保存本地数据的操作也被监控程序所确认。如【图-7/8/9】所示。
所以在专业人员看来,一般的应用程序在各种安全监视工具的监控下,几乎毫无隐私可言。大公司在采购软件时通常会聘请专业的安全公司进行安全测试,这要求开发者必须严格按照规定的安全流程和标准来进行开发。同时,负责任的软件公司也会定期投入大量资源,聘请第三方安全公司来审查其内部的软件和代码。这是因为普通的研发人员很难全面了解其编写的代码的所有安全问题。这种做法体现了对数据和隐私的重视,尤其是在当今信息安全的背景下。然而,这也对开发人员提出了更高的要求。开发人员需要具备以下特质和技能:
-
安全意识:开发人员需要深刻理解安全原则和最佳实践,以在编写代码时考虑潜在的安全漏洞和风险。
-
遵循标准:他们必须严格遵循公司的安全开发标准和流程,确保代码的安全性。
-
代码审查:开发人员应主动参与代码审查,以及时发现和修复潜在的安全问题。
-
持续学习:安全领域不断演变,开发人员需要持续学习和更新自己的知识,以跟上最新的威胁和防御技术。
-
沟通技巧:他们需要能够与安全专业人员和团队密切合作,以确保应用程序的安全性。