安全

学习攻击性安全:从哪里开始

一条完整的攻击性安全入门路径:法国的法律框架与授权要求、系统、网络、编程和人的因素这四大技术基础及其可验证的掌握标准、合法的训练环境、相关职业,以及从零开始的学习顺序与时长。

· 3 分钟阅读 · 难度 初级

攻击性安全,就是在心怀恶意的人发现信息系统的缺陷之前,先把这些缺陷找出来。这是一项职业活动,它建立在普通的计算机知识之上,并且是在严格的法律框架内开展的。

本指南描述了一条完整的学习路径,从第一天直到第一次任务。对每一个阶段,它都说明三件事:学什么、如何验证自己已经学会、以及在本站的什么地方进行练习。

在其余一切之前先说明一点:在没有取得系统所有者书面授权的情况下对其进行测试,在法国构成刑事犯罪。这条规则不是脚注,它决定了后面整条路径的前提。

「攻击性安全」指的是什么,不指什么

这个说法涵盖四种不同的活动。它们需要不同的能力,也不在一次任务的同一阶段出现。

  • 漏洞发现:清点暴露在外的资产——主机、服务、应用、账号——然后把这份清单与已知缺陷和配置错误逐一对照。
  • 漏洞利用:证明一个已发现的缺陷确实能导致某种非预期的操作,例如读取一项数据、获得一个访问权限或绕过一项控制措施。在缺陷得到验证之前,它的实际影响仍然只是一种假设。
  • 社会工程:从某个人那里获得他在知情的情况下本不会给出的信息或本不会做出的操作。这一涉及人的环节与其余环节一样,同样受任务委托书的约束。
  • 报告撰写:描述所发现的问题,按影响程度排序,提出可落地的整改建议。这是委托方在任务结束后唯一保留下来的交付物。

攻击性安全不是什么:它不是一堆工具的集合。工具产生输出;对这些输出的解读则取决于运行工具的人。在不理解目标系统的情况下进行的测试,只会产出一份读不懂的报告,往往还是错的,有时还会造成故障。

它也不是一门与防御相分离的学科。如果不知道一个维护得当的系统本该是什么样子,就无法界定一个缺陷。共同的术语——威胁、风险、脆弱性、范围、授权——在信息系统安全概念这篇指南中已经给出,请先阅读再继续。

法国法律框架,逐条说明

法国刑法典在第 323-1 条至第 323-3 条中处理这些行为,使用的概念是「自动化数据处理系统」,缩写为 STAD。STAD 指的是任何处理信息的软硬件整体:一台企业服务器、一个网站、一台工业控制器、一部个人手机。

  • 第 323-1 条:以欺诈方式进入自动化数据处理系统,以及以欺诈方式滞留在这样的系统中,均受处罚。当入侵导致数据被删除或修改,或系统运行受到干扰时,刑罚加重。
  • 第 323-2 条:妨碍系统运行或使其失真,受处罚。故意造成服务饱和即属于本条。
  • 第 323-3 条:以欺诈方式在系统中录入、提取、持有、复制、传输、删除和修改数据,均受处罚。

当被针对的系统处理个人数据且由国家实施时,所处刑罚将加重。这里不复述任何具体的刑期数额:这些数额过去已经过修改,现行文本应在法国法律官方发布网站上查阅。

有一点必须直说:「我只是看了看」并不构成抗辩理由。欺诈性进入仅凭无权进入这一事实即告成立,与其后做了什么无关;滞留则构成一项独立的犯罪,也就是说,在意识到自己本不该进入之后仍保持连接,是另一项事实。一个留在原处的默认账号、一个无需密码即可访问的管理页面、一个因错误而被列出的目录:所有者的疏忽从来都不等于授权。

刑法典的同一章还针对无正当理由提供为实施上述犯罪而设计的工具的行为。该条文明确保留了正当理由的情形,特别是科研和信息安全:在学习或任务过程中持有一款分析工具并不在此列。有问题的是没有委托书的使用。

一份有效的授权包含什么

授权不是一句「你去做吧」的消息。它写明委托方和被授权人,以网络地址和域名界定范围,规定日期和时间段,对破坏性操作加以限制或禁止,规定一套可立即中止的程序并指定一位随时可联系的对接人,并且由有权代表该组织作出承诺的人签署。要注意实际范围:某项服务的所有者未必就是托管它的人,而托管在第三方处往往需要一份额外的授权。

工作规则:没有一份写明范围和期限的签署文件,就不做测试。对范围有疑问要在事前澄清,绝不能在事中。

在任务之外,仍然可以进行通报。出于善意发现某个漏洞的人,可以把它提交给国家信息系统安全主管机构,其联系方式载于 cyber.gouv.fr。遭遇安全事件的个人和小型机构,可在 cybermalveillance.gouv.fr 上找到求助流程。通报并不意味着可以为了「确认」而继续测试。

第一大基础:系统

操作系统分配权限、运行进程、开放服务并写入日志。这恰好就是攻击性安全始终在追问的四种机制。没有这个基础,扫描工具的输出就毫无意义。

  • 终端:在目录树中移动,读取和修改文件,串联多条命令,查阅手册页而不是搜索引擎。
  • 权限:用户、组、属主,读、写、执行权限,临时提权及其留下的痕迹。
  • 进程与服务:有什么在运行,以什么身份运行,由什么机制启动,监听在哪个端口。
  • 日志:事件写在哪里,包含什么内容,尤其是不包含什么内容。
  • 虚拟化:虚拟机、快照、隔离网络——足以让您把整个系统弄坏,而不影响自己的工作机。

掌握标准。当您面对一台刚接触的 Linux 机器,能够不加查找地回答以下问题时,就算掌握了这一基础:有哪些账号,哪些服务在网络上监听,它们以什么身份运行,它们的日志在哪里。第二条同样可以验证的标准是:您能够毫不犹豫地把虚拟机恢复到先前的某个快照。

在本站何处学习。可以从 Linux 命令行指南开始迈出第一步,它从打开一个控制台讲起。训练用的实验环境按照创建虚拟机一文搭建。若要覆盖全部内容——用户、服务、日志、备份——Linux 系统管理课程按顺序完整讲授这一基础。

第二大基础:网络

渗透测试的结论首先涉及什么在传输、什么被暴露。界定一个网络缺陷要靠指明相关的层次,而不是靠列举某个工具。

  • 分层模型:OSI 模型(Open Systems Interconnection)和 TCP/IP 协议栈(Transmission Control Protocol / Internet Protocol),用于判断一个问题位于哪一层。
  • 寻址与路由:IP 地址、掩码、子网、网关、路由表、地址转换。
  • 名称解析:局域网上的 ARP(Address Resolution Protocol),以及用于主机名和域名的 DNS(Domain Name System)。
  • 应用层协议:HTTP(HyperText Transfer Protocol)及其头部和返回码;TLS(Transport Layer Security)、所出示的证书以及它究竟证明了什么——由一家证书颁发机构背书的、一个域名与一个公钥之间的关联,仅此而已:既不证明服务背后组织的身份,也不证明它是否诚信。
  • 流量抓取:读懂一个数据帧,跟踪一次完整的会话,把异常与正常但嘈杂的运行区分开来。

掌握标准。当您能够不看笔记就描述出一次访问网站的请求的完整路径——名称解析、建立连接、TLS 协商、请求、响应——并在每一个环节说出处于链路上的第三方能观察到什么、不能观察到什么时,就算掌握了这一基础。

在本站何处学习。OSI 模型基础指南逐层讲解七个层次,并跟踪一次 HTTP 请求的路径。TCP/IP 网络课程帮助您打牢寻址和路由。在实践方面,网络安全实践活动会让您亲手操作名称解析、已建立的连接和流量抓取。随后,网络攻击一文按性质对这些缺陷分类:协议、实现、配置。

第三大基础:编程

这并不是要成为开发者。而是要在写代码之前先能读懂代码,并且不依赖现成工具就能把重复性的工作自动化。

  • 算法:条件、循环、函数,以及当数据量增大时处理开销这一概念。
  • 数据结构:列表、字典、集合、树;知道哪一种适合哪一类需求。
  • 一门脚本语言,起步阶段只学一门:处理一个结果文件,调用一个 Web 接口,串联若干项检查。
  • 阅读代码:跟踪用户提供的数据的流向,从它进入系统起,直到它被用于某个查询、某条命令或某个显示出来的页面。
  • 常见缺陷:未经校验的输入、SQL(Structured Query Language)注入、未经转义就输出显示。

掌握标准。当您读到别人写的一个脚本,能够说出它做了什么、期待什么样的输入、以及在遇到意料之外的输入时会有什么表现——而且是在运行它之前就能说出来——就算掌握了这一基础。运行一个在网上找到却没有读过的脚本,本身就是一起等待发生的安全事件。

在本站何处学习。安全开发实践活动会让您在 Web 环境中亲手操作两个典型缺陷:一个输入未经净化的表单,以及一条通过字符串拼接构造的数据库查询。自己动手修复它们,是学会在别人代码中发现它们的最好方式。

第四大基础:人的因素

一个在技术上维护良好的组织,仍然可能因其流程和习惯而被攻破。这一基础不是可有可无的点缀:在渗透测试中,最严重的问题往往出自这里。

  • 钓鱼:一条模仿合法发件人的消息,用来骗取一个账号,或让人打开一个附件。
  • 借口:一个看似可信的情境,为某项不寻常的请求提供理由——技术支援、内部审计、来自上级的紧急事项。
  • 公开痕迹:组织架构图、详细列出所用技术的招聘启事、被留在可访问状态的文档、可以推测出规律的电子邮件地址格式。
  • 组织上的漏洞:从未留下记录的例外流程、从未关闭的外包人员账号、口头传递的密码、缺少一条能让人在不被指责反应迟缓的前提下上报疑问的清晰渠道。

掌握标准。当您能够向一位非技术人员解释某一条具体的消息为什么是欺诈性的,并指出可观察的依据——发件人的真实域名、链接显示文字与实际目标之间的差异、对时限的施压——而不是凭一种笼统的感觉时,就算掌握了这一基础。

在本站何处学习。关于防范网络威胁的指南通过具体案例详细说明了这些判断依据。网络安全意识培养课程从需要培训他人者的角度覆盖同一片领域,而这正是攻击性安全从业者在提交报告之后所处的真实位置。

在哪里训练而不越界

合法的训练情形只有三种:您本人拥有的设备、您持有书面授权的目标,或者由运营方为此用途提供的环境。除此之外的一切,无论意图如何,都属于前文所引条文的范围。

在本站

实践实验室提供供练习使用的机器,其中包括一个试用会话,无需安装任何东西即可在浏览器中打开一台完整的工作机。随后,渗透测试入门课程会在这个环境中串联起一次任务的各个阶段:范围界定、信息收集、人工核验结果、撰写报告。授权在这里是与生俱来的:这些目标就是为此提供的。

在自己的设备上

个人实验环境用一个虚拟化平台、两三台虚拟机和一个隔离的虚拟网络就能搭起来。有两条不可绕过的规则:那台故意存在漏洞的机器绝不暴露在互联网上,也绝不放在与家庭设备相同的网络中。在每次操作之前先建一个快照,可以把一次不可逆的失误变成十分钟的损失。

这里不列举任何外部训练平台,选择权在您。挑选标准很简单:平台的规则必须明确指出哪些目标获得授权、哪些操作被允许。在互联网上找到的、只因为「看起来像」练习的机器,并不是练习。

相关职业,不带传说色彩

职位名称因组织而异,但实际从事的活动可以归为几类。

  • 渗透测试员:执行由委托书界定范围的任务。日常工作包括准备、记录带时间戳的笔记、人工核验那些常常出错的自动化结果,尤其是写作——一份既能让非技术负责人读懂、又能让技术团队直接采取行动的报告。
  • 安全运营中心分析员,即 SOC(Security Operations Center):处理监控系统上报的告警,排除误报,界定真实告警,启动响应并向上传递。这是一份讲究方法和节奏的职业,常常需要轮班。
  • 检测工程师:基于收集到的日志,编写并修正产生这些告警的规则。他的攻击性技能,使他知道一次攻击被压缩成几行日志之后是什么样子。
  • 漏洞研究员:面向某个产品——软件、固件、协议——而不是面向某个客户开展工作。节奏较长,涉及阅读代码和逆向工程,发布则受与厂商约定的披露流程约束。
  • 培训师或意识培养负责人:设计练习和教学材料,然后衡量学员真正掌握了什么。这个岗位需要攻击性技能,才能在技术团队面前保持可信度。

这些职业中与检测相关的部分,可以通过现代监控课程来准备:采集指标和日志、构建仪表板、设定告警阈值。一次没有留下任何可用痕迹的攻击并不是隐蔽,而是采集不完整。

关于「帽子」

白帽、灰帽、黑帽这套说法来自科普。它不出现在任何职位说明书上,也不对应任何职业资格。它有用的部分只有一句话:情形只有两种,有委托书和没有委托书。所谓「灰帽」,也就是未经授权就进行测试、事后再打算通报,描述的并不是某种道德上的中间地带,而是一项附带良好意图的犯罪。

按什么顺序,用多长时间

下面是为从零开始的人给出的学习顺序,以及相应的时长。

  1. 两到三个月——系统。终端、权限、进程、服务、日志,以及搭建之后一直要用的虚拟实验环境。
  2. 两个月——网络。分层、寻址、名称解析、HTTP 与 TLS,以及在自己实验环境中的流量抓取。
  3. 两到三个月——编程。一门脚本语言、阅读代码、最常见的输入类缺陷。
  4. 持续进行——人的因素和写作。这两项能力不适合集中突击:每做完一次练习就写一份小结,哪怕很短,也是现有最好的训练。
  5. 然后才是——攻击性工具和带指导的练习。在打牢前三大基础之后再上手,一件工具几个小时就能学会;在此之前上手,则什么也学不到。

这些时长的前提是持续投入,大约每周五到十小时;它们描述的是达到上文所述掌握标准所需的时间,而不是「学完」某个主题所需的时间。它们不构成任何承诺:节奏不同的两个人,会在不同的日期到达同一个位置。唯一可靠的指标,仍然是每一大基础各自那条可验证的标准。

以动手的小时数而不是以月份来计量,可以避免初学者最常见的错误:只顾着看课程,旁边却没有一台开着的机器。一个概念只有在被执行过、失败过、再补救过之后,才算真正掌握。

注意事项与第一个具体动作

以下五条行为准则,把专业的做法与大概齐的做法区分开来,而且从最初的练习起就应当养成。

  • 事后补记的笔记等于没有。要在操作过程中记录时间、目标、所做的操作和得到的结果。一项没有时间戳的发现,在客户面前站不住脚,在法官面前更加站不住脚。
  • 测试可能弄坏东西。委托书中会规定一套中止程序和一位随时可联系的对接人;在训练环境中,与之对应的就是开始之前所建的快照。
  • 绝不从不属于自己的网络发起测试。雇主的网络、培训机构的网络或公共场所的网络都不是出发点,即使是被认为无害的操作也不例外。
  • 所发现的内容必须保密。测试过程中接触到的真实数据不会离开报告,不会被拿来当作示例,也不会「留作样本」保存。
  • 训练设备必须封闭。一台故意存在漏洞的机器既不暴露在互联网上,也不接入家庭网络,更不会无缘无故一直开着。

第一个具体动作,一个晚上就能完成:安装一个虚拟化平台,创建一台 Linux 虚拟机,把它放在一个隔离的网络中,建一个快照,然后不用图形界面,在它的终端里待满一个小时。第二天再来一次。坚持两周之后,「从哪里开始」这个问题就不会再出现了。

接下来,安全指南栏目汇集了这里引用的各篇安全指南和另外约三十篇文章,内容从加密到服务器加固。系统化的学习路径,配有批改练习和现成环境,可通过渗透测试入门课程完成,建议在打牢前三大基础之后再开始。

本文最初发表于 2023 年 3 月,当时是对一段第三方视频的摘要,并沿用了该视频的标题。2026 年 9 月 9 日,本文被完全重写:其结构、文字和示例均由 Awoui 自行撰写,与那份工作再无关联,因此不再标注来源。网址也随之变更——原网址会跳转至此。