细说渗透测试:阶段、流程、工具和自动化开源方案
不知有多少“曾梦想仗剑走天涯”的网络与信息安全从业者,是因为渗透测试的初心而步入这个行业的。不过,您是否对渗透测试及其漏洞扫描的相关概念感到既熟悉又陌生呢?您是否觉得自己还停留在从工作实践中积累的感性认识呢?下面,我们将为您梳理渗透测试的各个实施阶段,流程示例,典型工具,以及自动化开源方案。
渗透测试的阶段
从概念上说,渗透测试是一种通过模拟“友好的”黑客,来识别和利用安全漏洞的过程。作为一种标准化的系统性方法,它旨在提高目标系统与组织的安全态势。如下图所示,渗透测试往往从规划和收集信息开始,根据目标需求的不同,或是以报告发现到的漏洞、或是以保持访问控制作为结束。
渗透测试的各个阶段

规划与侦察
计划阶段旨在获取目标的所有相关信息,例如通过网络钓鱼攻击捕获详细的技术数据。这些细节方面的信息,对于后续过程的开展,起到了至关重要的影响。
而侦察阶段主要是通过主动和被动两种基本方法,收集大量的基本数据。其中,主动侦查很容易引起目标组织的注意;而被动侦察则以更加隐蔽、难以识别的方式间接收集信息。不过,相比被动方法的复杂与耗时,主动方法虽不够细致,但效率更高。
扫描
扫描阶段的主要目的是以最小的被发现代价,深入挖掘目标,收集有价值的信息,如同从一堆乱七八糟的物品中筛选出隐藏的宝石。例如,针对Web应用,我们可以扫描CSRF潜在漏洞和XSS端点等。定位入侵点后,我们便可以调查该端口上运行的服务类型,进而判定其是否存在防火墙或WAF。下图展示了可开展的多种扫描类型。

各种扫描类型
作为渗透测试的重要一环,漏洞扫描往往被细化为分析评估数据,通过逆向工程研究漏洞和错误的成因。通常,漏洞扫描与评估需要我们投入大量的时间和精力,以了解不同信息之间的相互关系,进而准确地发现可能被利用的入侵点。当然,像exploit-db之类的在线数据库,可以为我们提供针对CVE的可利用漏洞列表,以及相关的PoC代码及其详细信息。
利用和获取访问
一旦发现可被利用的漏洞,攻击者需要尽快谨慎地利用漏洞,对目标系统予以非法访问。其中,最常见的莫过于使用远程代码执行(RCE)和后门。作为最危险的漏洞类型,RCE漏洞往往表现对输入与输出缺乏检查,以及存在可被篡改的代码逻辑。后门则有两类:自定义后门通常与欺骗目标下载恶意文件有关,而错误配置的后门则开放了开发者的隐蔽访问模式。
报告和控制
作为一名道德黑客,渗透测试的最后往往是撰写报告。在报告中,您需要阐述采取的步骤、发现的问题、可利用的漏洞、面临风险的资产、以及取得的成果等。这些有价值的信息可以协助组织确定针对攻击预防的优先级,从而有的放矢。
渗透测试的流程
在不断变化的网络威胁领域,我们有必要根据上述不同的实施阶段,为渗透测试创建一套能够轻松集成各种工具的工作流程。例如,我们可以首先使用Amass收集Web应用系统的子域地址,接着利用DnsDumpster提取IP地址,或使用regex来提取诸如URL、IP、端口等必要的数据,然后通过Nmap进行基于脚本的漏洞分析。下图展示了一个典型的渗透测试流程模型:

流程模型示例
该流程的特点是能够合理地整合各个测试工具之间的关联,让一种工具的输出能够影响另一种工具的配置,从而使得针对Web应用的枚举流程更加流畅和简化。当然,随着时间的推移、威胁的演化、以及Web环境的复杂化,安全专家需要通过持续关注细节和积累实战经验,来不断修订和完善该测试流程。
渗透测试的工具
显然,渗透测试离不开工具的使用。让我们来试想一位安全专家被要求对某个Web应用开展渗透测试。那么他会根据自己的工作经验开展如下工作:
选用Python作为自动化脚本的基础,开发各种工作流。
通过Sublist3r使用开源网络情报(OSINT),来枚举和收集目标Web的子域。
通过Nmap使用Sublist3r的输出结果,对发现的子域进行有针对性的扫描,以了解开放的端口和网络服务等攻击面。
以Nmap扫描结果为基础,配置Burp Suite,查找SQL注入和跨站脚本等常见漏洞。
以Burp Suite扫描到的漏洞为指导,通过Dirb枚举目标应用目录和文件,以查找Web服务器上的隐藏资源。
参照Dirb的发现,使用Nikto进行更全面、更深入的漏洞分析,总结出Web服务器上的已知漏洞、错误配置、以及过时的软件版本,并形成有关安全风险的综合报告。

典型工具的综合运用
随着网络安全威胁的不断变化,渗透测试工具也应持续迭代、与时俱进。以Metasploit为代表的漏洞利用平台与框架不但能够提供友好的用户界面,而且可以支持更广泛的漏洞类型,为安全专家提供直观、高效的自动漏洞利用执行流程。目前,整合威胁情报信息已成为一项标准功能。有的工具甚至采用了人工智能和机器学习等技术,来提高对于新型网络威胁和漏洞的识别和排序的精确度和有效性。
自动化开源方案
随着越来越多的组织实现了持续、快速的软件交付,自动化渗透测试方案也在不断与DevOps工作流进行整合。它可以在开发管道的不同阶段引入安全测试。同时,随着无服务器架构在云计算环境的普及,我们也可以通过创建或修改现有的自动化工具,以评估云基础架构的安全性。对此,安全专家可以将如下开源的工具与方案,整合到现有的测试流程中,以免去自己动手编写系统代码和脚本的烦恼:
Rayder:是一款简化的工作流应用,可用于运行复杂的编排映射。该工具通过YAML来映射不同的命令和工具,来运行侦查任务。当然,我们需要使用命令来告知其该如何执行、保存和定位输出。
MetaHub:是一个上下文框架,可根据环境与核心要求,自动编译与上下文相关的资产。该工具主要适用于与云服务和AWS相关的操作。
Vortex:该工具有助于侦查、枚举和开发等多种任务的自动化。
Osmedeus:是一个庞大的框架,几乎涵盖了自动化枚举和侦查的所有要求,可被用于扫描Git存储库、某个子域、以及云服务发行版。
小结
当然,您可以自行在GitHub上搜索可用于持续集成与持续部署的Python软件包。例如,使用GitHub Actions、GitLab CI或Jenkins等工具,可建立持续集成和测试的管道,以确保自动化测试流程的有效性、灵活性。
可以说,渗透测试流程的自动化使得安全团队能够从重复性任务中解脱出来,简化了资源的使用率,缩短了漏洞扫描与评估的时间,进而让组织能够动态地应对不断变化的威胁形势,保护自身的敏感数据和数字资产。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:
细说渗透测试:阶段、流程、工具和自动化开源方案
不知有多少“曾梦想仗剑走天涯”的网络与信息安全从业者,是因为渗透测试的初心而步入这个行业的。不过,您是否对渗透测试及其漏洞扫描的相关概念感到既熟悉又陌生呢?您是否觉得自己还停留在从工作实践中积累的感性认识呢?下面&…...
redis 十大应用场景
Redis 是一个开源的内存数据结构存储系统,广泛应用于各种场景,尤其在高性能、低延迟需求的场景中。以下是 Redis 的一些典型应用场景: 1. 缓存系统 Redis 最常见的用途之一是作为缓存系统,以减少数据库访问的频率,提升…...
信息安全数学基础(15)欧拉定理
前言 欧拉定理是数论中的一个重要定理,它建立了模运算下指数与模的互质关系。这个定理在密码学、信息安全等领域有着广泛的应用,特别是在公钥密码体制(如RSA加密算法)中。 一、表述 设 n 是一个正整数,a 是一个与 n 互…...
sar(1) command
文章目录 1.简介2.格式3.选项4.示例参考文献 1.简介 sar(System Activity Report)收集、报告或保存系统活动信息。 sar 是一个用于监控和报告系统性能的命令行工具。它是 sysstat 套件的一部分,能够收集和报告各种系统活动的信息࿰…...
掌握 JavaScript 中的函数表达式
函数表达式是 javascript 中定义函数的一种方式。与函数声明不同,函数表达式可以是匿名的,并且通常用于将函数视为值的情况。在本文中,我们将探讨函数表达式、如何将函数视为值、回调函数以及函数表达式和函数声明之间的差异。 函数表达式 …...
OpenGL 原生库6 坐标系统
概述 为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate)&a…...
LabVIEW提高开发效率技巧----VI服务器和动态调用
VI服务器(VI Server)和动态调用是LabVIEW中的两个重要功能,可以有效提升程序的灵活性、模块化和可扩展性。通过这两者的结合,开发者可以在运行时动态加载和调用VI(虚拟仪器),实现更为复杂的应用…...
求1000以内所有恰好能分解成10组两个素数之和
要求 根据哥德巴赫猜想,任意一个大偶数都可以分解为两个素数之和。但许多偶数分解为两个素数之和并不是唯一的。 请编写函数fun,其功能是:求1000(不包括1000)以内的所有恰好能分解成10组两个素数之和(5109和1095被认为是同一组)的偶并依次存入数组a中并…...
Webpack 和 Vite 的区别
Webpack 是一种模块打包工具,主要功能是将各种资源(如 JavaScript、CSS、图片等)通过 loader 和 plugin 转换和打包成可以直接在浏览器中运行的代码。其核心思想是以代码分割、按需加载和优化资源来提升性能。 Vite 是一种新型构建工具&…...
C++——初步认识C++和namespace的用法
1.编程语言排行榜 我们通过排行可以看出 C在变成语言中还是占据着重要的地位 2.C在工作领域中的应用 1.PC客户端开发。⼀般是开发Windows上的桌面软件,比如WPS之类的,技术栈的话⼀般是C和 QT,QT 是⼀个跨平台的 C图形用户界面(G…...
LeetCode118:杨辉三角
题目链接:118. 杨辉三角 - 力扣(LeetCode) 代码如下 class Solution {public:vector<vector<int>> generate(int numRows) {vector<vector<int>> dp(numRows);vector<int> temp(numRows);for (int i 0; i &…...
介绍一下大模型或者多模态?
什么是大模型、多模态 大模型多模态 大模型 定义: 大模型,通常指的是在深度学习领域,具有大规模参数和复杂结构的模型。这些模型往往需要大量的计算资源和数据进行训练和推理。大模型因其强大的表示能力和泛化性能,在多个领域展现…...
深度学习之图像数据集增强(Data Augmentation)
文章目录 一、 数据增强概述二、python实现传统数据增强参考文献 一、 数据增强概述 数据增强(Data Augmentation)是一种技术,通过对现有数据进行各种变换和处理来生成新的训练样本,从而增加数据集的多样性和数量。这些变换可以是…...
小程序与APP的区别
目录 前言1. 开发方式与成本2. 运行环境与获取途径3. 功能复杂度与交互体验4. 更新与维护5. 推广与用户获取6. 占用空间与存储7. 可分享性总结 前言 小程序与APP作为两种不同类型的应用程序,它们在多个方面存在明显的区别。以下是对这些区别的详细阐述:…...
Linux Kernel Makefiles 编译标志详解
在Linux内核开发中,Makefile文件扮演着至关重要的角色,它指导make命令如何编译和链接内核源代码。Makefile中包含了多种编译标志(flags),这些标志控制着编译、汇编和链接过程的不同方面。本文将详细介绍几种关键的编译…...
数据可视化pyecharts——数据分析(柱状图、折线图、饼图)
安装 首先确保已经安装了pyecharts库,如果没有,可以通过pip install pyecharts进行安装。 柱状图 从pyecharts.charts导入Bar,从pyecharts导入options。准备数据(如类别数据x_data和对应的数值数据y_data)。创建Bar对…...
小程序构建npm失败
小程序构建npm失败 项目工程结构说明解决方法引入依赖导致的其他问题 今天在初始化后的小程序中引入TDesign组件库,构建npm时报错。 项目工程结构说明 初始化后的项目中,包含miniprogram文件夹和一些项目配置文件,在project.config.json文件中…...
计算机人工智能前沿进展-大语言模型方向-2024-09-20
计算机人工智能前沿进展-大语言模型方向-2024-09-20 1. Multimodal Fusion with LLMs for Engagement Prediction in Natural Conversation Authors: Cheng Charles Ma, Kevin Hyekang Joo, Alexandria K. Vail, Sunreeta Bhattacharya, Alvaro Fern’andez Garc’ia, Kailan…...
cv环境设置
pytorch TensorFlow。。。 环境布置,库的安装顺序: 确定显卡可用的cuda上下限 (比如3090需要至少11.x以上的cuda参考: 一文理顺:pytorch、cuda版本,从此不再为兼容问题头疼! - 哔哩哔哩 (bilibili.com)&am…...
线性代数书中求解线性方程组的三种方法的实例
目录 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65) 一、克拉默法则(P45) 二、逆矩阵(P46) 三、高斯-约旦消元法(P65)...
除了阿里云,还有哪些靠谱的身份证实名认证方案?SpringBoot整合横向评测
SpringBoot整合主流身份证实名认证API横向评测:从阿里云到多服务商技术选型指南 当你的应用需要接入身份证实名认证功能时,阿里云可能只是众多选项中的一个起点。作为技术决策者,如何在腾讯云、百度智能云、聚合数据等众多服务商中做出最优选…...
Qwen2.5-14B-Instruct+Pixel Script Temple:高校戏剧系AI辅助教学实战案例
Qwen2.5-14B-InstructPixel Script Temple:高校戏剧系AI辅助教学实战案例 1. 项目背景与价值 在高校戏剧教育领域,剧本创作一直是教学难点。传统教学模式下,学生需要花费大量时间在格式规范、基础场景构建等基础性工作上,而教师…...
利用快马平台快速构建技能评估系统原型:以skill-vetter为例
利用快马平台快速构建技能评估系统原型:以skill-vetter为例 最近在做一个前端开发技能评估系统,需要快速验证产品原型。传统开发流程从搭建环境到功能实现至少需要1-2周,但通过InsCode(快马)平台的AI辅助和现成模板,我只用了3天就…...
Java中如何实现Excel跨工作表数据复制
本文介绍了如何在Java程序中有效地复制Excel工作表中的数据。许多Java开发人员需要将数据从一个工作表复制到另一个工作表。本文提供了一个代码示例来帮助您解决这个问题。核心是如何在Java中有效地复制Excel工作表中特定区域的数据。下面的例子是使用Java库(具体的…...
微信小程序物流信息对接实战:发货接口的完整实现指南
1. 微信小程序物流对接的核心价值 对于电商类小程序来说,物流信息同步是用户体验的关键环节。当用户下单后,最关心的就是"我的包裹到哪了"。传统做法需要用户手动复制单号到第三方平台查询,而通过微信官方物流接口,可以…...
M1 Mac 8GB内存跑不动7B模型?手把手教你用1.5B版DeepSeek+RAGFlow搭建个人知识库
M1 Mac 8GB内存跑不动7B模型?手把手教你用1.5B版DeepSeekRAGFlow搭建个人知识库 当M1 Mac用户尝试在本地部署大语言模型时,8GB内存往往成为难以逾越的障碍。特别是运行7B参数模型时,内存不足导致的崩溃和卡顿让许多开发者望而却步。本文将分…...
Fish-Speech-1.5在短视频生产的应用:批量生成多语种配音方案
Fish-Speech-1.5在短视频生产的应用:批量生成多语种配音方案 1. 引言 短视频内容创作正面临着一个普遍痛点:多语言配音成本高、周期长。传统方式下,一个MCN机构要为一条短视频制作中文、英文、日文三种语言的配音,需要分别联系不…...
避坑指南:lidar_align标定IMU外参时,loader.cpp源码修改与运动轨迹设计的那些关键细节
避坑指南:lidar_align标定IMU外参的核心细节与实战优化 在自动驾驶和机器人定位领域,激光雷达与IMU的联合标定是系统搭建的关键环节。许多开发者在初次使用lidar_align工具时会遇到各种问题——从源码适配的困惑到标定结果的不可靠。本文将深入剖析两个最…...
从RGA注意力机制到实战:行人重识别模型核心代码与论文精讲
1. RGA注意力机制原理解析 行人重识别(Person Re-identification)是计算机视觉领域的重要课题,而注意力机制在其中扮演着关键角色。RGA(Relation-aware Global Attention)机制通过建立全局关系感知模型,显…...
Windows更新修复新范式:Reset-Windows-Update-Tool的系统化解决方案
Windows更新修复新范式:Reset-Windows-Update-Tool的系统化解决方案 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool …...
