四、🩸渗透测试
1、渗透测试的定义
渗透测试是利用模拟黑客攻击的方式,评估计算机网络系统安全性能的一种方法。这个过程是站在攻击者角度对系统的任何弱点、技术缺陷或漏洞的主动分析,并且有条件地主动利用安全漏洞。
2、渗透测试的特点
渗透测试是一个渐进的并且逐步深入的过程。
渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。
3、渗透测试流程主要步骤
渗透测试的主要步骤如下图所示:
4、渗透测试流程
(1)明确目标
- 确定测试需求。
- 确定客户要求渗透测试的范围。
- 确定渗透测试规则。
(2)收集信息
在信息收集阶段要尽量收集关于项目软件的各种信息,例如,对于一个 Web
应用程序,要收集脚本类型、服务器类型、数据库类型以及项目所用到的框架、开源软件等。信息收集对于渗透测试来说非常重要,只有掌握目标程序足够多的信息,才能更好地进行漏洞检测。
信息收集的方式可分为两种:
主动收集: 通过直接访问、扫描网站等方式收集想要的信息,这种方式可以收集的信息比较多,但是访问者的操作行为会被目标主机记录。
被动收集: 利用第三方服务对目标进行了解,如上网搜索相关信息。这种方式获取的信息相对较少且不够直接,但目标主机不会发现测试人员的行为。
(3)扫描漏洞
在这一阶段,综合分析收集到的信息,借助扫描工具对目标程序进行扫描,查找存在的安全漏洞。
(4)验证漏洞
在扫描漏洞阶段,测试人员会得到很多关于目标程序的安全漏洞,但这些漏洞有误报,需要测试人员结合实际情况,搭建模拟测试环境对这些安全漏洞进行验证。被确认的安全漏洞才能被利用执行攻击。
(5)分析信息
经过验证的安全漏洞就可以被利用起来向目标程序发起攻击,但是不同的安全漏洞,攻击机制并不相同,针对不同的安全漏洞需要进一步分析,包括安全漏洞原理、可利用的工具、目标程序检测机制、攻击是否可以绕过防火墙等,制定一个详细精密的攻击计划,这样才能保证测试顺利执行。
(6)渗透攻击
渗透攻击就是对目标程序发起真正的攻击,达到测试目的,如获取用户帐号密码、截取目标程序传输的数据、控制目标主机等。一般渗透测试是一次性测试,攻击完成之后要执行清理工作,删除系统日志、程序日志等,擦除进入系统的痕迹。
(7)整理信息
渗透攻击完成之后,整理攻击所获得的信息,为后面编写测试报告提供依据。
(8)编写测试报告
测试完成之后要编写测试报告,阐述项目安全测试目标、信息收集方式、漏洞扫描工具以及漏洞情况、攻击计划、实际攻击结果、测试过程中遇到的问题等,此外,还要对目标程序存在的漏洞进行分析,提供安全有效的解决办法。
五、🛠️常见安全测试工具
1、Web漏洞扫描工具-AppScan
(1)定义
AppScan
是 IBM
公司出的一款 Web
应用安全测试工具,它采用黑盒测试方式,可以扫描常见的 web
应用安全漏洞。
(2)AppScan的扫描过程
AppScan
的扫描过程为:探测、测试、扫描。
在探测阶段,AppScan
通过发送请求对站内的链接、表单等进行访问,根据响应信息检测目标程序可能存在的安全隐患,从而确定安全漏洞范围。
在测试阶段,AppScan
对潜在的安全漏洞发起攻击。 AppScan
有一个内置的测试策略库,测试策略库可以针对相应的安全隐患检测规则生成对应的测试输入, AppScan
就使用生成的测试输入对安全漏洞发起攻击。
在扫描阶段,AppScan
会检测目标程序对攻击的响应结果,并根据结果来确定探测到的安全漏洞是否是一个真正的安全漏洞,如果是一个真正的安全漏洞则根据其危险程度确定危险级别,为开发人员修复缺陷提供依据。
2、端口扫描工具-Nmap
(1)定义
Nmap
是一个网络连接端口扫描工具,用来扫描网上计算机开放的网络连接端口。确定服务运行的端口,并且推断计算机运行的操作系统。它是网络管理员用以评估网络系统安全必备工具之一。
(2)Nmap的具体功能
Nmap具体功能如下:
- 主机扫描
- 端口状态扫描
- 应用程序版本探测
- 操作系统探测
- 防火墙/IDS逃避和欺骗
- 支持测试对象交互脚本
3、抓包工具-Fiddler
(1)定义
Fiddler
是一个 http
协议调试代理工具,它以代理 Web
服务器形式工作,帮助用户记录计算机和 Internet
之间传递的所有 HTTP(HTTPS)
流量。
如图所示:
(2)Fiddler的功能
Fiddler
可以捕获来自本地运行程序的所有流量,从而记录服务器到服务器、设备到服务器之间的流量。此外, Fiddler
还支持各种过滤器,过滤出用户想要的流量数据,节省大量时间和精力。 相比于其他抓包工具, Fiddler
小巧易用,且功能完善,它支持将捕获的流量数据存档,以供后续分析使用。
4、Web渗透测试工具-Metasploit
(1)定义
Metasploit
是一个渗透测试平台,能够查找、验证漏洞,并利用漏洞进行渗透攻击。它是一个开源项目,提供基础架构、内容和工具来执行渗透测试和广泛的安全审计。
(2)Metasploit的具体功能
对于渗透攻击, Metasploit
主要提供了以下功能模块:
渗透模块(exploit): 运行时会利用目标的安全漏洞进行攻击。
攻击载荷模块(payload): 在成功对目标完成一次渗透之后,测试程序开始在目标计算机上运行。它能帮助用户在目标系统上获得需要的访问和行动权限。
辅助模块(auxiliary): 包含了一系列的辅助支持模块,包括扫描模块、漏洞发掘模块、网络协议欺骗模块。
编码器模块(encoder): 编码器模块通常用来对我们的攻击模块进行代码混淆,逃过目标安全保护机制的检测,如杀毒软件和防火墙等。
Meterpreter: 使用内存技术的攻击载荷,可以注入到进程之中。它提供了各种可以在目标上执行的功能。
(3)Metasploit的作用
Metasploit
是一个多用户协作工具,团队成员可以共享主机数据,查看收集的证据以及创建主机备注以共享有关特定目标的知识。最终, Metasploit
可帮助用户确定利用目标的最薄弱点,并证明存在漏洞或安全问题。
六、🔚结束语
对于软件测试来说,除了黑白盒测试、性能测试以外,安全测试也尤为重要。一旦网页有漏洞,攻击者很容易就让受攻击者执行非本意的操作,这种场面并不是谁都想看到的。因此,对于软件来说,要做好安全测试🙋
关于安全测试的内容就讲到这里啦!如有不理解或文章有误,欢迎评论区留言或私信我交流!