0x00:前言
听说C/S客户端的安全测试很少出现测试流程的。洛米唯熊百度一找,谷歌一搜。果然。没有正规的测试流程。偶然在一个群里看到一个图,感觉还可以,就自己摸索的尝试对应的流程写一下找到的工具给各位大佬做一下分享。
0x01:目录分析
1、基本信息获取
链接地址:
https://zhidao.baidu.com/question/935871668215037772.html
Universal Extractor工具:自动分析文件类型并提取程序中捆绑的插件。
在想,基本信息应该要获取吧!比如注册表信息、安装时的动态情况、进程获取等
百度一下“软件安装监视器”
排名前三的工具
Total Uninstall、InstallSpy 2.0、Soft Organizer
举个栗子:
2、文件数字签名检测
百度一下“文件数字签名检测”
排名第一的是:
文数字签名检查工具(SigcheckGUI)
举个栗子:
unsigned表示未签名文件,
为漏洞或者木马可利用文件。
3、编译选项检测
编译?可否逆向源码?在等大佬给答案
4、抗逆向分析检测
逆向首先要脱壳吧!常用的查壳工具“Peid”了解下
脱完壳。OD、IDA了解一下。
分析应该是可逆程序为不安全程序,反之安全。
5、危险函数检查
大多程序应该为C或者C++写的吧。易语言才是最牛逼的
函数 | 严重性 | 解决方案 |
---|---|---|
gets | 最危险 | 使用 fgets(buf, size, stdin)。这几乎总是一个大问题! |
strcpy | 很危险 | 改为使用 strncpy。 |
strcat | 很危险 | 改为使用 strncat。 |
sprintf | 很危险 | 改为使用 snprintf,或者使用精度说明符。 |
scanf | 很危险 | 使用精度说明符,或自己进行解析。 |
sscanf | 很危险 | 使用精度说明符,或自己进行解析。 |
fscanf | 很危险 | 使用精度说明符,或自己进行解析。 |
vfscanf | 很危险 | 使用精度说明符,或自己进行解析。 |
vsprintf | 很危险 | 改为使用 vsnprintf,或者使用精度说明符。 |
vscanf | 很危险 | 使用精度说明符,或自己进行解析。 |
vsscanf | 很危险 | 使用精度说明符,或自己进行解析。 |
streadd | 很危险 | 确保分配的目的地参数大小是源参数大小的四倍。 |
strecpy | 很危险 | 确保分配的目的地参数大小是源参数大小的四倍。 |
strtrns | 危险 | 手工检查来查看目的地大小是否至少与源字符串相等。 |
realpath | 很危险(或稍小,取决于实现) | 分配缓冲区大小为 MAXPATHLEN。同样,手工检查参数以确保输入参数不超过 MAXPATHLEN。 |
syslog | 很危险(或稍小,取决于实现) | 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。 |
getopt | 很危险(或稍小,取决于实现) | 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。 |
getopt_long | 很危险(或稍小,取决于实现) | 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。 |
getpass | 很危险(或稍小,取决于实现) | 在将字符串输入传递给该函数之前,将所有字符串输入截成合理的大小。 |
getchar | 中等危险 | 如果在循环中使用该函数,确保检查缓冲区边界。 |
fgetc | 中等危险 | 如果在循环中使用该函数,确保检查缓冲区边界。 |
getc | 中等危险 | 如果在循环中使用该函数,确保检查缓冲区边界。 |
read | 中等危险 | 如果在循环中使用该函数,确保检查缓冲区边界。 |
bcopy | 低危险 | 确保缓冲区大小与它所说的一样大。 |
fgets | 低危险 | 确保缓冲区大小与它所说的一样大。 |
memcpy | 低危险 | 确保缓冲区大小与它所说的一样大。 |
snprintf | 低危险 | 确保缓冲区大小与它所说的一样大。 |
strccpy | 低危险 | 确保缓冲区大小与它所说的一样大。 |
strcadd | 低危险 | 确保缓冲区大小与它所说的一样大。 |
strncpy | 低危险 | 确保缓冲区大小与它所说的一样大。 |
vsnprintf | 低危险 | 确保缓冲区大小与它所说的一样大。 |
百度一下“C/C++静态扫描分析工具”
排名前三的是:Flawfinder、TscanCode、SourceInsight_Scan
这个是危险函数的解决方案:
https://blog.csdn.net/leo2007608/article/details/41016517
5、API HOOK防护测试
我自己常用的工具是:火绒剑
down4.huorong.cn/hrsword.exe
还有这个:
https://www.jpzyfx.com/22367.html
举个栗子:
挺好用的,之前用它抓过病毒程序的东西
5、进程保护测试
进程干扰性?内存?还是?
防护建议:
1、将你所有任务安全合法的DLL名称全部记录下来,并且记录合法DLL的MD5 或者对记录DLL签名校验。
2、查看内存运行是否被直接查看。(WinHex工具)
举个栗子:
看,这个是它的运行内存数据
接着在里面找敏感数据吧!比如账户密码等
7、数据储存安全检查
顾名思义就是:本地文件是否明文储存敏感数据
8、数据传输安全测试
建议可用工具:BURP、wireshark等抓包工具
9、防键盘监听测试
百度搜索“防键盘监听”第一名:KeyScrambler
还有就是一些键盘监听工具:Spyrix Free Keylogger
好的程序,键盘应该防止被监听。
10、单账户多点登陆测试
这个简单 。整一个账户,在同个程序登陆,查看是否会被T下线。如果否,则不安全。
11、防进程代码注入检测
这个好防。
请看 第五 的防护建议第一条。
12、溢出风险检测
请参考
http://cdmd.cnki.com.cn/Article/CDMD-10135-1014352678.htm
com fuzz 请参考
https://www.freebuf.com/sectool/76861.html
接口测试工具推荐:COMRaider、httpapi、Postman
13、防截屏检测
好的程序都会防止被截屏、比如银行网银系统、比如国家机密系统。 让程序不能调用“PrintScreen”,这个程序员知道怎么改。
程序员:这锅,我不背。
14、C/S抓包测试
1、抓流量推荐用:wireshark。
2、抓的数据包可以导到BURP用。
3、查看抓到的链接是否浏览器直接打开。
4、是否可以被挂代理抓流量。
5、传输数据是否加密。
0x02:总结
总之C/S客户端的安全测试来源于每次的总结,不断的积累经验。完善以上的目录结构。我觉得C/S客户端的安全测试不止以上的问题,可能还有更多。期待您的完善与建议!!