(一) Web漏洞挖掘
针对 Web 系统或软件的进行漏洞挖掘的能力。
在白帽子挖掘的 Web应用漏洞中,比较常见的漏洞形式包括:命令执行、代码执行、解 析漏洞、XSS、弱口令、文件上传、SQL注入、逻辑漏洞、信息泄露、配置错误、反序列化、 权限绕过等。关于这些漏洞类型的具体含义,参见前述“基础能力”中的“(一)Web漏洞利 用”,这里不再累述。
(二) Web开发与编程
掌握一门或几门的开发与编程语言,是白帽子深入挖掘 Web应用漏洞,分析 Web站点及 业务系统运行机制的重要基础能力。在实战攻防演习中,白帽子最为经常遇到和需要掌握的 编程语言包括:Java、PHP、Python、C/C++、Golang 等。
1) Java
Java 是一种面向对象的计算机编程语言,具有简单性、功能强大、分布式、健壮性、安 全性、平台独立与可移植性、多线程及动态性的特点,经常用于编写桌面应用程序、Web应 用程序、分布式系统和嵌入式系统应用程序等。
2) PHP
PHP原为 Personal Home Page 的缩写,后更名为 Hypertext Preprocessor,但保留了 人们已经习惯的“PHP”的缩写形式。其含义为:超文本预处理器,是一种通用开源脚本语 言。PHP主要适用于 Web开发领域,是在服务器端执行的,常用的脚本语言。PHP独特的语 法混合了 C、Java、Perl 以及 PHP 自创的语法,利于学习,使用广泛。
3) Python
Python 是一种跨平台的计算机程序设计语言, 是一个高层次的,结合了解释性、编译 性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(Shell),随着版本的 不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
4) C/C++
C/C++是一种通用的编程语言,广泛用于系统软件与应用软件的开发。语言具有高效、 灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐,是当前使用 最为广泛的编程语言。在 Web开发中常用于嵌入式设备的开发。
5) Golang
Golang 语言,简称 Go语言,是由三位 Google 工程师开发的一种静态强类型、编译型 语言。Go 语言语法与 C 相近,但具有内存安全、垃圾回收、结构形态及 CSP-style 并发 计算等功能。
(三) 编写 PoC或 EXP等利用
PoC,是 Proof of Concept 的缩写,即概念验证,特指为了验证漏洞存在而编写的程序 代码。有时也经常被用来作为 0day、Exploit(漏洞利用)的别名。
EXP,是 Exploit 的缩写,即漏洞利用代码。一般来说,有漏洞不一定就有 EXP,而有 EXP,就肯定有漏洞。
PoC和 EXP的概念仅有细微的差别,前者用于验证,后者则是直接的利用。能够自主编 写 PoC或 EXP,要比直接使用第三方编写的漏洞利用工具或成熟的漏洞利用代码困难的多。 但对于很多没有已知利用代码的漏洞或 0day漏洞,自主编写 PoC或 EXP就显得非常重要了。
此外,针对不同的目标或在不同的系统环境中,编写 PoC或 EXP的难度也不同。针对 Web应用和智能硬件/IoT 设备等,编写 PoC或 EXP相对容易,属于进阶能力;而针对操作系 统或安全设备编写 PoC或 EXP则更加困难,因此属于高阶能力了。
(四) 社工钓鱼
社工钓鱼,是指利用社会工程学手法,利用伪装、欺诈、诱导等方式,利用人的安全意 识不足或安全能力不足,对目标机构特定人群实施网络攻击的一种手段。社工钓鱼,既是实 战攻防演习中经常使用的作战手法,也是黑产团伙或黑客组织最为经常使用的攻击方式。在 很多情况下,“搞人”要比“搞系统”容易得多。
社工钓鱼的方法和手段多种多样。在实战攻防演习中,最为常用,也是最为实用的技能 主要有四种:开源情报收集、社工库收集、鱼叉邮件和社工钓鱼。其中,前面两个都属于情 报收集能力,而后面两个则属于攻防互动能力。
1) 开源情报收集
开源情报收集能力,是指在公开的互联网信息平台上,合法收集针对目标机构的关键情 报信息的能力。例如,新闻媒体、技术社区、企业官网、客户资源平台等公开信息分享平台 都是开源情报收集的重要渠道。白帽子可以通过开源情报收集,获取诸如企业员工内部邮箱、 联系方式、企业架构、供应链名录、产品代码等关键情报信息。这些信息都可以为进一步的 攻击提供支撑。
开源情报收集是白帽子首要的情报收集方式,其关键在于要从海量网络信息中,找到并 筛选出有价值的情报信息组合。通常情况下,单一渠道公开的机构信息,大多没有什么敏感 性和保密性。但如果将不同渠道的多源信息组合起来,就能够形成非常有价值的情报信息。 当然,也不排除某些机构会不慎将内部敏感信息泄露在了互联网平台上。白帽子在互联网平 台上直接找到机构内部开发代码,找到账号密码本的情况也并不少见。
2) 社工库收集
社工库收集能力,是指针对特定目标机构的社工库信息的收集能力。
所谓社工库,通常是指含有大量用户敏感信息的数据库或数据包。这些敏感信息包括但 不限于,如账号、密码、姓名、身份证号、电话号码、人脸信息、指纹信息、行为信息等。 由于这些信息非常有助于攻击方针对特定目标设计有针对性的社会工程学陷阱,因此将这些 信息集合起来的数据包或数据库,就被称为社会工程学库,简称社工库。
社工库是地下黑产或暗网上交易的重要标的物。不过,在实战攻防演习过程中,白帽子 所使用的社工库资源,必须兼顾合法性问题,这就比黑产团伙建立社工库的难度要大得多。
3) 鱼叉邮件
鱼叉邮件能力,是指通过制作和投递鱼叉邮件,实现对机构内部特定人员有效欺骗的一 种社工能力。
鱼叉邮件是针对特定组织机构内部特定人员的定向邮件欺诈行为,目的是窃取机密数据 或系统权限。鱼叉邮件有多种形式,可以将木马程序作为邮件的附件发送给特定的攻击目标, 也可以构造特殊的、有针对性的邮件内容诱使目标人回复或点击钓鱼网站。鱼叉邮件主要针 对的是安全意识或安全能力不足的机构内部员工。不过,某些设计精妙的鱼叉邮件,即便是 经验的安全人员也难以识别。
4) 社交钓鱼
社交钓鱼能力,是指通过社交软件或社交网站与攻击目标内的成员进行沟通交流,骗取 对方信任并借此收集相关情报信息的能力。社交钓鱼,一般建立在使人决断产生认知偏差的 基础上,具体形式包括但不限于:微信、QQ等社交软件/网站的在线聊天、电话钓鱼、短信 钓鱼等。
社工钓鱼,其实也是网络诈骗活动的主要方法,但以往实战攻防演习中还很少被使用。 但随着防守方能力的不断提升,直接进行技术突破的难度越来越大,针对鱼叉邮件也有了很 多比较有效的监测方法,于是近两年,社交钓鱼方法的使用就开始越来越多了。
参考资料
红蓝攻防构建实战化网络安全防御体系
青藤云安全 2022攻防演练蓝队防守指南