网络安全领域的核心思维框架
1.1 攻防对抗思维
网络安全本质上是一场攻击者与防御者之间的持续博弈。这个思维贯穿所有领域
- 攻击者视角:如何找到漏洞?如何绕过防御?如何长期潜伏?
- 防御者视角:如何发现攻击?如何修复漏洞?如何预防入侵?
1.2 纵深防御思维
常见的访问路径:
网络层防火墙 → 主机层防护 → 应用层安全 → 数据层加密 → 监控审计
1.3 边界模糊思维
传统的内网/外网边界已经模糊。移动办公、云服务、第三方接入让边界无处不在,也意味着威胁无处不在
网络安全的三大核心领域
| 领域 | 核心问题 | 典型角色 |
|---|---|---|
| 系统与网络安全 | 如何保护网络和系统不被入侵 | 安全运维 网络安全工程师 |
| 应用安全 | 如何让写的代码没有漏洞? | 安全开发、代码审计师 |
| 恶意软件与逆向分析 | 恶意代码做了什么?怎么分析它? | 病毒分析师、逆向工程师 |
领域一 系统与网络安全
3.1 核心概念:漏洞
漏洞是系统在设计上、实现或配置上的缺陷,可被攻击者利用来破坏系统安全
漏洞的生命周期
发现 -> 披露 -> 补丁发布 -> 修复
漏洞的分类:
- 0day漏洞:厂商不知道,没有补丁 → 最危险
- 1day/N-day漏洞:已公开,有补丁,但很多人没打 → 最常用
- CVE漏洞:已经公开到网上的漏洞
那么从0day漏洞到变成CVE漏洞的流程就是:
潜伏期:漏洞存在于代码中,但未被任何人发现
0day期(秘密利用期):攻击者或者少部分人发现了这个漏洞,并且没有发布到网上,利用此漏洞秘密进行攻击,厂商不知道,公众不知情,并且没有补丁。
披露期(从秘密到公开的过渡):漏洞被发现者知晓,比如厂商发现了这个漏洞,但是还没有公布到网上,此时漏洞还不是CVE,处于灰色时期。任何发现漏洞的人都可以将漏洞私下报给厂商,让厂商能够开发补丁,这就是负责任的披露。
CVE漏洞:在厂商发补丁,或者报给厂商一段时间,厂商迟迟不修复以及一些其他原因,发现者会向一个叫MITRE的组织申请编号,公布漏洞的所有技术细、影响范围,此时漏洞就变成了CVE漏洞,所有人都可以在公开数据库查到漏洞细节。
漏洞常见编号的分类:
- CVE: 美国MITRE公司管理,为漏洞提供唯一、标准的国际标识符,示例:CVE-2021-44228,全球通用,仅提供基本索引信息。
- CNNVD:中国信息安全测评中心管理,国家级漏洞库,示例:CNNVD-202103-192,内容详细,保护漏洞分析、修复方案等。
- CNVD:国家计算机网络应急技术处理协调中心管理,联合各方力量,侧重漏洞的收集验证、预警发布和应急处置,协调厂商修复。
3.2 核心概念:攻击链
攻击者入侵一个目标的典型步骤,理解这个链条就知道防御该从哪里下手
| 阶段 | 攻击者行为 | 防御重点 |
|---|---|---|
| 1. 侦察 | 收集目标信息(IP、域名、人员) | 减少信息暴露 |
| 2. 武器化 | 制作攻击载荷(恶意文档、漏洞利用代码) | 文件沙箱检测 |
| 3. 投递 | 发送钓鱼邮件、放上有毒U盘 | 邮件网关、员工意识 |
| 4. 漏洞利用 | 触发漏洞,获得初始权限 | 补丁管理、应用防护 |
| 5. 安装 | 植入后门、木马 | 端点检测 |
| 6. 命令与控制 | 建立C2通道,远程控制 | 网络流量监控 |
| 7. 目标行动 | 窃取数据、横向移动、破坏 | 权限管控、审计 |
3.3 核心概念:ATT&CK框架
官网:attack.mitre.org
这是目前业界最权威的攻击技术知识库,由MITRE公司维护。它将攻击者的各种技术手段系统地分类整理。
- 防御方可以用它来检查自己的防御覆盖了哪些攻击技术
- 攻击方可以用它来规划攻击路径
- 安全产品会用ATT&CK技术编号来标注自己检测了什么
3.4 核心概念:APT
APT(高级持续性威胁,Advanced Persistent Threat)= 国家/组织背景 + 高技术 + 长期潜伏 + 定向目标
- 不是一种技术,而是一类攻击行动的统称
- 是网络安全领域最高层级的对手
- 常用0day漏洞和我们下面要说的各种对抗技术
如果说0day漏洞是黑客手中的“秘密武器”,CVE是这些武器的“公开档案”,ATT&CK是记录黑客“作战手法”的百科全书,那么**APT(高级持续性威胁)**就是运用所有这些手段的、最有组织、最有耐心的“顶尖犯罪集团”。
常见APT组织:
- APT28 (Fancy Bear):被普遍认为与俄罗斯有关,主要针对政府、军队、媒体进行攻击,曾介入多国选举。
- Lazarus Group (拉撒路集团):与朝鲜有关的组织,以攻击金融机构闻名,最轰动的“战绩”包括入侵孟加拉国央行,试图窃取近10亿美元,以及2017年的WannaCry勒索病毒事件。
- APT3 (Gothic Panda):被普遍认为与中国有关的组织,主要针对国防、航空航天、科技领域进行情报窃取。
领域二 应用安全
4.1 核心概念:OWASP Top 10
开放Web应用安全项目发布的Web应用最危险的10类漏洞,每3-4年更新一次。这是每个开发者都应该了解的清单。
| 排名 | 漏洞类型 | 简单解释 |
|---|---|---|
| 1 | 失效的访问控制 | 用户可以访问不该访问的资源 |
| 2 | 密码学失效 | 使用了弱加密或没加密 |
| 3 | 注入 | SQL注入、命令注入等 |
| 4 | 不安全设计 | 架构层面的缺陷 |
| 5 | 安全配置错误 | 默认密码、调试接口开着 |
| 6 | 脆弱和过时的组件 | 用了有漏洞的依赖 |
| 7 | 身份识别失败 | 认证机制有问题 |
| 8 | 软件和数据完整性失败 | 依赖被篡改、反序列化漏洞 |
| 9 | 安全日志和监控缺失 | 被入侵了都不知道 |
| 10 | 服务端请求伪造(SSRF) | 服务器请求了不该请求的地址 |
4.2 核心概念:SAST、DAST、SCA
以不同的方式来进行源代码的安全检测
| 工具类型 | 全称 | 工作方式 | 类比 | Java开发相关 |
|---|---|---|---|---|
| SAST | 静态应用安全测试 | 看源代码找漏洞 | 代码审查机器人 | SonarQube、Fortify |
| DAST | 动态应用安全测试 | 模拟攻击运行中的应用 | 外部渗透测试 | OWASP ZAP、Burp Suite |
| SCA | 软件成分分析 | 分析依赖库的安全性 | 检查引入的第三方包 | OWASP Dependency-Check |
4.3 核心概念:SDL/DevSecOps
安全开发生命周期和开发安全运维一体化的合称。
核心思想:安全不应该是在最后才加的,而应该贯穿整个开发流程。
- 需求阶段:做威胁建模,想清楚系统可能被怎么攻击
- 设计阶段:安全架构评审
- 开发阶段:IDE插件实时检查、代码规范
- 测试阶段:SAST/DAST/SCA扫描
- 发布阶段:安全配置检查
- 运维阶段:运行时防护、监控
领域三:恶意软件与对抗技术
5.1 核心概念:恶意软件分类
| 类型 | 特点 | 例子 |
|---|---|---|
| 病毒 | 感染其他文件,需要宿主程序传播 | 文件感染型病毒 |
| 蠕虫 | 自我复制,通过网络自动传播 | Conficker |
| 木马 | 伪装成正常软件,诱骗用户运行 | 盗号木马 |
| 勒索软件 | 加密文件,索要赎金 | WannaCry |
| 后门 | 提供远程控制通道 | 各种远控木马 |
| Rootkit | 隐藏自身存在,深度潜入系统 | 内核级Rootkit |
5.2 核心概念:反侦察技术
反侦察技术指的是,恶意软件为了不被检测和分析,所使用各种手段来绕过的技术
反调试
- 目的:不让安全人员用调试器跟踪
- 手法:检测是否有调试器附加(
IsDebuggerPresent)、检查执行耗时 - Java视角:JVM层面的调试检测(虽然不常见)
反虚拟机
- 目的:检测是否运行在分析环境
- 手法:检查MAC地址(
00:0C:29是VMware)、检查硬件设备名、尝试VMware后门指令 - 检测库:
pafish(开源的反虚拟机检测工具)演示了各种检测技术
反沙箱
- 目的:检测是否在自动化分析系统里
- 手法:检查最近打开的文件是否为空、检查鼠标是否长时间没动、
Sleep函数实际等待时间检测
反分析的综合应用
恶意软件启动
↓
检测虚拟机? → 是 → 退出或装睡
↓
检测沙箱? → 是 → 表现正常
↓
检测调试器? → 是 → 隐藏行为
↓
执行真正恶意逻辑
5.3 核心概念:代码保护技术
恶意软件如何隐藏自己的代码?
混淆
- 名称混淆:
calculateTotalPrice→a - 控制流混淆:把顺序执行改成永无止境的switch-case
- 字符串加密:
"http://evil.com"→ 一堆乱码,运行时解码
加密
- 加壳:真正的恶意代码是加密的,外面包一个很简单的解密代码
- 多态:每次传播时,解密代码都改变
- 变形:每次传播时,恶意代码本身也被重写,但功能相同
加壳的过程:
原始恶意代码 → 加密 → 密文 + 解密器 → 生成加壳后的文件
程序运行时 → 解密器运行 → 解密出真正代码 → 执行
5.4 核心概念:指纹检测与清除
指纹:能唯一识别一个对象(设备、软件、用户)的特征集合,所以指纹检测,一般是基于指纹检测库,运用针对不同如:WEB资产、二进制类型这样的检测软件,进行检测的
指纹检测 = 收集、分析、识别指纹的过程
- 安全方:识别恶意软件、发现未知资产
- 攻击方:信息收集,决定用什么漏洞去攻击
指纹清除 = 移除、修改、隐藏指纹的过程
- 攻击方:清除日志、修改恶意软件特征(免杀)
- 普通用户:指纹浏览器防止追踪
- 红队:隐藏C2服务器,避免被蓝队发现
检测与清除的关系:
检测库提供情报:你长什么样、哪里与众不同
清除技术执行行动:根据情报修改、隐藏特征
没有检测库,清除就是盲目的
核心角色与职责
| 角色 | 核心职责 | 需要的能力 | 与Java开发的关系 |
|---|---|---|---|
| 安全开发 | 写安全的代码、开发安全工具 | 编程、安全编码规范 | 最接近你现在的位置 |
| 代码审计 | 审查别人代码有没有漏洞 | 编程、漏洞原理 | 需要深入理解漏洞 |
| 渗透测试 | 模拟攻击,发现漏洞 | 漏洞利用、网络知识 | 需学习攻击方法 |
| 安全运维 | 维护安全设备、响应告警 | 网络、系统、日志分析 | 偏运维方向 |
| 安全研究 | 挖掘漏洞、分析恶意软件 | 逆向、底层原理 | 技术要求最高 |
| 安全产品经理 | 设计安全产品 | 安全知识、产品思维 | 技术背景有优势 |
后续更新计划
第一阶段:打好基础
目标:建立安全思维,理解核心概念
- 学习Web安全基础
- 理解OWASP Top 10的每个漏洞原理
- 动手实验:用Damn Vulnerable Web Application(DVWA,一个包含常见漏洞的Web应用)练习
- 工具:Burp Suite基础使用
- 理解你之前问到的所有概念
- 反调试/反沙箱/反虚拟机(是什么、为什么)
- 混淆/加密(原理、例子)
- APT/0day(定义、影响)
- 指纹检测/清除(概念、关系)
第二阶段:结合开发优势
目标:将Java开发经验转化为安全优势
- Java安全专项
- Java安全编码规范(尤其是防止注入、XSS)
- Java常见漏洞:反序列化漏洞原理、Shiro漏洞、Log4j漏洞
- 理解你用的框架(Spring全家桶)的安全机制和常见坑
- 学习SAST工具
- 理解静态分析原理
- 用SonarQube扫描你自己的项目,看能发现什么问题
- 学习SCA工具
- OWASP Dependency-Check
- 分析你的项目依赖,看看有没有已知漏洞的组件
第三阶段:深入一个方向
目标:选择一个领域深入,成为专家
- 如果喜欢开发:走安全开发/DevSecOps方向
- 如果喜欢攻击:走渗透测试/红队方向
- 如果喜欢分析:走恶意软件分析/逆向方向
- 如果喜欢底层:走二进制安全/漏洞挖掘方向
实用资源推荐
学习平台
- 国内:FreeBuf、先知社区、看雪论坛
- 国外:PortSwigger Web Security Academy(免费,非常好)、HackTheBox、TryHackMe
工具推荐
- Web安全:Burp Suite、OWASP ZAP
- 代码安全:SonarQube、OWASP Dependency-Check
- 二进制分析:IDA Pro(收费)、Ghidra(免费开源)
- 指纹识别:observer_ward、WhatWeb、Wappalyzer
经典书籍
- 《白帽子讲Web安全》
- 《Web应用安全权威指南》
- 《恶意代码分析实战》(如果你对二进制感兴趣)
值得关注的技术概念
- ATT&CK框架:了解攻击技术分类
- Kill Chain:理解攻击阶段
- DevSecOps:了解安全如何融入开发流程