您现在的位置是:首页 >技术交流 >冬奥网络安全卫士助力实现零事故网站首页技术交流
冬奥网络安全卫士助力实现零事故
声明
本文是学习2022中国实战化白帽人才能力白皮书. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们
冬奥网络安全卫士助力实现零事故
“冬奥网络安全卫士”是由2022年北京冬奥会和冬残奥会组织委员会技术部发起,由北京2022年冬奥会官方赞助商奇安信及旗下补天漏洞响应平台提供技术平台和运营支持,奥运历史上首个网络安全类公益保障项目,旨在招募中国优秀的网络安全技术人才,组建成一支技术卓越的网络安全中国代表队,为保障2022年北京冬奥会和冬残奥会的网络安全贡献力量,共同让中国数十万精英的白帽上闪耀起奥运光环。
“冬奥网络安全卫士”的报名和招募工作于2021年12月16日开始,经过专家评审,于2022年1月6日确认最终名单。在2022年北京冬奥会和冬残奥会筹备及举办期间,经过层层选拔的“冬奥网络安全卫士”24小时在线,发起超过2000万次测试请求,测试总时长超过1万小时,成功发现了大量有效系统漏洞和冬奥相关威胁情报。
2022年3月16日,冬奥网络安全卫士总结表彰大会在奇安信冬奥网络安全保障指挥中心召开。来自国资委、国家卫健委、29家央企、鹏城实验室及补天漏洞响应平台的“冬奥网络安全卫士”,因对2022年北京冬奥会和冬残奥会网络安全保障工作做出的突出贡献获得表彰。
这是奥运史上首次公开招募白帽子担任“冬奥网络安全卫士”,开创了全新的工作模式,并得到了国资委、国家卫健委、鹏城实验室等单位的大力支持。北京冬奥会和冬残奥会组织委员会技术部副部长贾力,向参与“冬奥网络安全卫士”组织、支持的各方表示了感谢。
卫生健康行业在本次冬奥会期间,不仅承担着重要的医疗防护任务,也是网络安全的重要防护目标。国家卫生健康委规划发展与信息化司大数据办公室一级调研员曾红涛表示,通过参与“冬奥网络安全卫士”工作,卫生健康行业网络安全人才不仅收获了一次全面检验,更学习到了新的组织模式,观摩了行业顶尖人才的攻防技巧,并深刻认识到了“网络安全为人民,网络安全靠人民”这句话的意义。
“冬奥网络安全卫士”作为奥运史上首个网络安全公益保障项目,不仅为冬奥网络安全保障提供了支持,还有效推动建立了全国范围网络安全应急保障体系,提升了央企网络安全防护能力。中国电子信息产业集团党组成员、副总经理陈锡明表示,希望奇安信及时总结成功经验,并进一步为国家重要活动和关键基础设施的网络安全做好保障,助力中央企业网络安全能力跃上新的台阶。
“北京冬奥会做到网络安全‘零事故’,具有里程碑的意义”。中央网信办冬奥会网络安全专家研判组组长、中国工程院院士方滨兴也给予了肯定。他表示,一方面,奇安信证明了自身过硬的技术实力和高水平的网络安全保障,已达到国际水平;另一方面,白帽子作为“冬奥网络安全卫士”的突出表现,也证明了白帽子群体是可信任的、可管理的,同时更是有能力的、有水平的。
来自国家电网有限公司的“冬奥网络安全卫士”代表孙强表示,“冬奥网络安全卫士”的成功,得益于领导的重视关怀、靠前指挥,形成“铁的后盾”;全体人员恪尽职守,铸就“铁的防线”。获得北京冬奥组委技术部和国资委党委网信办领导给予的肯定,是一种奖励,更是一种动力。全体中央企业“冬奥网络安全卫士”将持续贯彻国资委领导工作部署,全面提升中央企业网络安全防护能力。
下图为优秀“冬奥网络安全卫士”代表上台领奖照片。
奥运会是全球热点,也是网络攻击的重点。据统计,从冬奥会开始到冬残奥会闭幕式结束,奇安信共检测日志数量累积超1850亿,日均检测日志超37亿,累计发现修复漏洞约5800个,发现恶意样本54个,排查风险主机150台,累积监测到各类网络攻击超3.8亿次(含社会面),跟踪、研判、处置涉奥舆情和威胁事件105件。期间,经过层层选拔的“冬奥网络安全卫士”24小时在线,发起超过2000万次测试请求,测试总时长超过1万小时,成功发现了大量有效系统漏洞和冬奥相关威胁情报。
冬奥“零事故”,也是“冬奥网络安全卫士”模式的胜利。奇安信集团总裁、冬奥网络安全保障指挥中心副总指挥吴云坤在总结分享冬奥保障工作经验时表示,本次冬奥涌现的大量成功经验,形成了网络安全“中国方案”,为保障北京冬奥网络安全发挥了关键作用。冬奥“零事故”,正是网络安全“中国方案”的胜利。
实战化白帽人才能力各项技能详解
基础能力
基础能力是比较初级的实战化白帽能力,学习和掌握相对容易,通常也是其他各类高级实战化技能学习和实践的基础能力。基础能力主要包括Web漏洞利用与基础安全工具使用两类。
Web漏洞利用
Web漏洞利用能力是指利用Web系统或软件的安全漏洞实施网络攻击的能力。
由于Web系统是绝大多数机构业务系统或对外服务系统的构建形式,所以Web漏洞利用也是最常见,最基础的网络攻击形式之一。在实战攻防演习中,白帽子最为经常利用的Web漏洞形式包括:命令执行、SQL注入、代码执行、逻辑漏洞、解析漏洞、信息泄露、XSS、配置错误、弱口令、反序列化、文件上传、权限绕过等。
- 命令执行
命令执行漏洞,是指黑客可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下Shell权限的安全漏洞。造成命令执行漏洞最常见的原因是Web服务器对用户输入命令的安全检测不足,导致恶意代码被执行。命令执行漏洞常常发生在各种Web组件上,包括Web容器、Web框架、CMS软件、安全组件等。
- SQL注入
SQL,是Structured Query Language的缩写,意为结构化查询语言。SQL注入漏洞,是最常见的安全漏洞形式之一,是指通过构造特定的SQL语句,可以实现对数据库服务器的非授权查询,进而造成数据库数据泄露的安全漏洞。SQL注入漏洞产生的主要原因是软件系统对输入数据的合法性缺少校验或过滤不严。
- 代码执行
代码执行漏洞,是指通过构造特殊的语句或数据,使软件可以在设计流程之外,执行特定函数或命令的安全漏洞。造成代码执行漏洞的主要原因是,开发人员在编写代码时,没有充分校验输入数据的合法性。
- 逻辑漏洞
逻辑漏洞,是指由于程序设计逻辑不够严谨,导致一些逻辑分支处理错误,或部分流程被绕过,进而引发安全风险的安全漏洞。
- 解析漏洞
解析漏洞,是指服务器应用程序在解析某些精心构造的后缀文件时,会将其解析成网页脚本,从而导致网站沦陷的漏洞。大部分解析漏洞的产生都是由应用程序本身的漏洞导致的。此类漏洞中具有代表性的便是IIS6.0解析漏洞,此漏洞又有目录解析和文件解析两种利用方式,但也有少部分是由于配置的疏忽所产生的。
- 信息泄露
信息泄露漏洞,是指造成系统或服务器中,本应被保护或不可见的敏感信息被意外泄露的安全漏洞。这些信息包括账号密码、系统配置、运行状态、关键参数、敏感文件内容等。造成信息泄露漏洞的主要原因包括运维操作不当、系统代码不严谨等。
- XSS
XSS,全称为Cross Site Scripting,意为跨站脚本攻击,为了和更加常用的CSS(Cascading Style Sheets,层叠样式表)有所区分,特别简写为XSS。
XSS攻击,通常是指通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、Flash或某些普通的HTML等。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密的网页内容、会话信息和Cookie等各种用户敏感信息。
最早期的XSS攻击示例大多使用了跨站方法,即:用户在浏览A网站时,攻击者却可以通过页面上的恶意代码,访问用户浏览器中的B网站资源(如Cookie等),从而达到攻击目的。但随着浏览器安全技术的进步,早期的跨站方法已经很难奏效,XSS攻击也逐渐和“跨站”的概念没有了必然的联系。只不过由于历史习惯,XSS这个名字一直被延用了下来,现如今用来泛指通过篡改页面,使浏览器加载恶意代码的一种攻击方法。
在本文中,白帽子的XSS能力,是指白帽子能够发现软件或系统的设计缺陷或安全漏洞,构造XSS攻击代码,实现网络攻击的技术能力。
- 配置错误
配置错误,是指由软件或系统的配置不当导致安全风险的安全漏洞。例如,文件的或服务的访问权限、可见范围配置不当,网络安全规则的设置错误等,都有可能使系统处于暴露或风险之中。配置错误的本质是系统的使用或运维不当,而不是系统的设计或开发问题。造成配置错误的主要原因是运维人员的疏忽或专业技能不足。
- 弱口令
弱口令也是安全漏洞的一种,是指系统登录口令的设置强度不高,容易被攻击者猜到或破解。造成弱口令的主要原因是系统的运维人员、管理人员安全意识不足。常见的弱口令形式包括:系统出厂默认口令没有修改;密码设置过于简单,如口令长度不足,单一使用字母或数字;使用了生日、姓名、电话号码、身份证号码等比较容易被攻击者猜到的信息设置口令;设置的口令属于流行口令库中的流行口令。
- 反序列化
反序列化漏洞,是指反序列化过程可以被操控或篡改,进而引发恶意代码执行风险的安全漏洞。
序列化和反序列化都是基础的计算机技术。序列化就是把计算机中的“对象”转换成字节流,以便于存储的一种方法。反序列化是序列化的逆过程,即将字节流还原成“对象”。
在反序列化过程中,如果输入的字节流可以被控制或篡改,就有可能产生非预期的“对象”。这就是反序列化漏洞。此时,攻击者通过构造恶意字节流输入,就可以在反序列化过程中,在对象被还原的过程中,使系统执行恶意代码。
- 文件上传
文件上传漏洞,是指可以越权或非法上传文件的安全漏洞。攻击者可以利用文件上传漏洞将恶意代码秘密植入到服务器中,之后再通过远程访问去执行恶意代码,达到攻击的目的。
- 权限绕过
权限绕过漏洞,是指可以绕过系统的权限设置或权限管理规则执行非法操作的安全漏洞。造成权限绕过漏洞的主要原因是,软件或系统的开发人员对数据处理权限的设计或判定不严谨、不全面。
基础安全工具
基础安全工具是指安全分析或攻防实战过程中,经常使用到的一些初级的、基础的软件工具。比较常见的基础安全工具包括:Burp Suite、Sqlmap、AppScan、AWVS、Nmap、Wireshark、MSF、Cobalt Strike等。
- Burp Suite
Burp Suite是一个常用的Web攻击工具的集合平台,经常被安全工作者用来测试Web系统安全性,也是实战攻防演习中攻击队的常用平台。
使用者通过平台集成的工具,既可以对目标发起手动攻击,也可以自定义规则发起自动攻击;既可以探测和分析目标漏洞,也可以使用爬虫抓取和搜索页面内容。
- Sqlmap
Sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测。Sqlmap可以利用常见的SQL注入漏洞,获取数据库服务器的权限。Sqlmap还具有功能比较强大的检测引擎,可提供针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件,甚至可以通过外带数据连接的方式执行操作系统命令。
- AppScan
AppScan 是IBM 公司推出的一款Web 应用安全测试工具,采用黑盒测试的方式,可以扫描常见的Web用安全漏洞。AppScan功能比较齐全,支持登录、报表等功能。在扫描结果中,不仅能够看到Web应用被扫出的安全漏洞,还提供了详尽的漏洞原理、修改建议、手动验证等功能。
在实战攻防演习中,AppScan是一个很方便的漏洞扫描器。
- AWVS
AWVS是Acunetix Web Vulnerability Scanner的缩写。它是一个自动化的Web应用程序安全测试工具,可以审计和检查Web漏洞。AWVS可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序。可以通过检查SQL注入攻击漏洞、XSS漏洞等来审核Web应用程序的安全性。
- Nmap
Nmap是Network Mapper的缩写,意为网络映射器,是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,但也可以用于扫描单个主机。
Nmap使用原始IP报文来发现网络上有哪些主机,每台主机提供什么样的服务,哪些服务运行在什么操作系统上,这些主机使用了什么类型的报文过滤器或防火墙等。虽然Nmap通常用于安全审核,但许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。
在实战攻防演习中,Nmap常用来对目标系统进行资产分析。
- Wireshark
Wireshark是一个免费开源的网络数据包分析软件,它可以帮助网络管理员检测网络问题,帮助网络安全工程师检查信息安全相关问题。
在实战攻防演习中,数据包分析也是非常重要的基础工作。
- MSF
MSF是Metasploit Framework的缩写,这不仅仅是一个工具软件,它是为自动化地实施经典的、常规的、复杂新颖的攻击,提供基础设施支持的一个完整框架平台。它可以使使用人员将精力集中在渗透测试过程中那些独特的方面上,以及如何识别信息安全计划的弱点上。
MSF的能够让用户通过选择它的渗透攻击模块、攻击载荷和编码器来实施一次渗透攻击,也可以更进一步编写并执行更为复杂的攻击技术。
- Cobalt Strike
Cobalt Strike是一款C/S架构的商业渗透软件,适合多人团队协作。可模拟APT对抗,进行内网渗透。Cobalt Strike集成了端口转发、端口扫描、Socks代理、提权、凭据导出、钓鱼、远控木马等功能。该工具几乎覆盖了APT攻击链中所需要用到的各个技术环节
进阶能力
进阶能力是相对更加高级的实战化白帽能力,学习和掌握的难度高于基础能力,但低于高阶能力,主要包括Web漏洞挖掘、Web开发与编程、编写PoC或EXP等利用、社工钓鱼等四类。
Web漏洞挖掘
Web漏洞挖掘能力是指针对Web系统或软件进行漏洞挖掘的能力。
在白帽子挖掘的Web应用漏洞中,比较常见的漏洞形式包括:命令执行、SQL注入、代码执行、逻辑漏洞、解析漏洞、信息泄露、XSS、配置错误、弱口令、反序列化、文件上传、权限绕过等。关于这些漏洞类型的具体含义,参见前述“基础能力”中的“(一)Web漏洞利用”,这里不再累述。
Web开发与编程
掌握一门或几门的开发与编程语言,是白帽子深入挖掘Web应用漏洞,分析Web站点及业务系统运行机制的重要基础能力。在实战攻防演习中,白帽子最为经常遇到和需要掌握的编程语言包括:Java、PHP、Python、C/C++、Golang等。
- Java
Java是一种面向对象的计算机编程语言,具有简单性、功能强大、分布式、健壮性、安全性、平台独立与可移植性、多线程及动态性的特点,经常用于编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
- PHP
PHP原为Personal Home Page的缩写,后更名为 Hypertext Preprocessor,但保留了人们已经习惯的“PHP”的缩写形式。其含义为:超文本预处理器,是一种通用开源脚本语言。PHP主要适用于Web开发领域,是在服务器端执行的,常用的脚本语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法,利于学习,使用广泛。
- Python
Python是一种跨平台的计算机程序设计语言, 是一个高层次的,结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(Shell),随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
- C/C++
C/C++是一种通用的编程语言,广泛用于系统软件与应用软件的开发。语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐,是当前使用最为广泛的编程语言。在Web开发中常用于嵌入式设备的开发。
- Golang
Golang语言,简称Go语言,是由三位 Google工程师开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但具有内存安全、垃圾回收、结构形态及 CSP-style 并发计算等功能。
编写PoC或EXP等利用
编写漏洞验证代码或漏洞利用代码,是比单纯的漏洞发现更加具有实战意义的白帽能力。其中主要包括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则更加困难,因此属于高阶能力了。
社工钓鱼
社工钓鱼,是指利用社会工程学手法,利用伪装、欺诈、诱导等方式,利用人的安全意识不足或安全能力不足,对目标机构特定人群实施网络攻击的一种手段。社工钓鱼,既是实战攻防演习中经常使用的作战手法,也是黑产团伙或黑客组织最为经常使用的攻击方式。在很多情况下,“搞人”要比“搞系统”容易得多。
社工钓鱼的方法和手段多种多样。在实战攻防演习中,最为常用,也是最为实用的技能主要有四种:开源情报收集、社工库收集、鱼叉邮件和社交钓鱼。其中,前面两个都属于情报收集能力,而后面两个则属于攻防互动能力。
- 开源情报收集
开源情报收集能力,是指在公开的互联网信息平台上,合法收集针对目标机构的关键情报信息的能力。例如,新闻媒体、技术社区、企业官网、客户资源平台等公开信息分享平台都是开源情报收集的重要渠道。白帽子可以通过开源情报收集,获取诸如企业员工内部邮箱、联系方式、企业架构、供应链名录、产品代码等关键情报信息。这些信息都可以为进一步的攻击提供支撑。
开源情报收集是白帽子首要的情报收集方式,其关键在于要从海量网络信息中,找到并筛选出有价值的情报信息组合。通常情况下,单一渠道公开的机构信息,大多没有什么敏感性和保密性。但如果将不同渠道的多源信息组合起来,就能够形成非常有价值的情报信息。当然,也不排除某些机构会不慎将内部敏感信息泄露在了互联网平台上。白帽子在互联网平台上直接找到机构内部开发代码,找到账号密码本的情况也并不少见。
- 社工库收集
社工库收集能力,是指针对特定目标机构的社工库信息的收集能力。
所谓社工库,通常是指含有大量用户敏感信息的数据库或数据包。这些敏感信息包括但不限于,如账号、密码、姓名、身份证号、电话号码、人脸信息、指纹信息、行为信息等。由于这些信息非常有助于攻击方针对特定目标设计有针对性的社会工程学陷阱,因此将这些信息集合起来的数据包或数据库,就被称为社会工程学库,简称社工库。
社工库是地下黑产或暗网上交易的重要标的物。不过,在实战攻防演习过程中,白帽子所使用的社工库资源,必须兼顾合法性问题,这就比黑产团伙建立社工库的难度要大得多。
- 鱼叉邮件
鱼叉邮件能力,是指通过制作和投递鱼叉邮件,实现对机构内部特定人员有效欺骗的一种社工能力。
鱼叉邮件是针对特定组织机构内部特定人员的定向邮件欺诈行为,目的是窃取机密数据或系统权限。鱼叉邮件有多种形式,可以将木马程序作为邮件的附件发送给特定的攻击目标,也可以构造特殊的、有针对性的邮件内容诱使目标人回复或点击钓鱼网站。鱼叉邮件主要针对的是安全意识或安全能力不足的机构内部员工。不过,某些设计精妙的鱼叉邮件,即便是经验的安全人员也难以识别。
- 社交钓鱼
社交钓鱼能力,是指通过社交软件或社交网站与攻击目标内的成员进行沟通交流,骗取对方信任并借此收集相关情报信息的能力。社交钓鱼,一般建立在使人决断产生认知偏差的基础上,具体形式包括但不限于:微信、QQ等社交软件/网站的在线聊天、电话钓鱼、短信钓鱼等。
社交钓鱼,其实也是网络诈骗活动的主要方法,但以往实战攻防演习中还很少被使用。但随着防守方能力的不断提升,直接进行技术突破的难度越来越大,针对鱼叉邮件也有了很多比较有效的监测方法,于是近两年,社交钓鱼方法的使用就开始越来越多了。
高阶能力
高阶能力是最为高级的实战化白帽能力,学习和掌握的难度普遍较高,白帽子通常需要多年的学习和实战经验积累,才能初步掌握其中一小部分的关键能力。从实战角度出发,白帽子的高阶能力主要包括:系统层漏洞利用与防护、系统层漏洞挖掘、身份隐藏、内网渗透、高级安全工具、编写PoC或EXP等高级利用、掌握CPU指令集、团队协作等几个方面。
系统层漏洞利用与防护
为应对各种各样的网络攻击,操作系统内部有很多底层的安全机制。而每一种安全机制,都对应了一定形式的网络攻击方法。对于白帽子来说,学习和掌握底层的系统安全机制,发现程序或系统中安全机制设计的缺陷或漏洞,是实现高水平网络攻击的重要基础技能。在实战攻防演习中,最为实用、也是最为常用的7种典型的系统层安全机制包括:SafeSEH、DEP、PIE、NX、ASLR、SEHOP、GS等。
- SafeSEH
当系统遭到攻击时,程序运行就会出现异常,并触发异常处理函数。而要使攻击能够继续进行,攻击者就常常需要伪造或篡改系统异常处理函数,使系统无法感知到异常的发生。
SafeSEH,(Safe Structured exception handling)是Windows操作系统的一种安全机制,专门用于防止异常处理函数被篡改,即在程序调用异常处理函数之前,对要调用的异常处理函数进行一系列的有效性校验,如果发现异常处理函数不可靠或存在安全风险,则应立即终止异常处理函数的调用。反之,如果SafeSEH机制设计不完善或存在缺欠,就有可能被攻击者利用,欺骗或绕过。
在本文中,白帽子的SafeSEH能力,是指白帽子掌握SafeSEH的技术原理,并能够发现程序或系统中SafeSEH机制的设计缺陷,并加以利用实施攻击的能力。
- DEP
DEP,是Data Execution Protection的缩写,意为数据执行保护,作用是防止数据页内的数据被当作执行代码来执行,从而引发安全风险。
从计算机内存的角度看,数据和代码的处理并没有特别明确区分,只不过是在系统的调度下,CPU会对于不同内存区域中的不同数据,进行不一样的计算而已。这就使得系统在处理某些经过攻击者精心构造的数据时,会误将其中的一部分“特殊数据”当作可执行代码来执行,从而触发恶意命令的执行。而DEP机制设计的重要目的就是仿制这种问题的发生;反之,如果DEP机制设计不完善或存在缺欠,就有可能被攻击者所利用,欺骗或绕过。
在本文中,白帽子的DEP能力,是指白帽子掌握DEP的技术原理,并能够发现程序或系统中DEP机制的设计缺陷,并加以利用实施攻击的能力。
- PIE
PIE是Position-Independent Executable的缩写,意为地址无关可执行文件,与PIC(Position-Independent Code,地址无关代码)含义基本相同,是Linux或Android系统中动态链接库的一种实现技术。
在本文中,白帽子的PIE能力,是指白帽子掌握PIE的技术原理,并能够发现程序或系统中PIE机制的设计缺陷,并加以利用实施攻击的能力。
- NX
NX,是No-eXecute的缩写,意为不可执行,是DEP(数据执行保护)技术中的一种,作用是防止溢出攻击中,溢出的数据被当作可执行代码来执行。NX的基本原理是将数据所在内存页标识为不可执行,当操作系统读到这段溢出数据时,就会抛出异常,而非执行恶意指令。反之,如果NX机制设计不完善或存在缺欠,就可以被攻击者利用并发动溢出攻击。
在本文中,白帽子的NX能力,是指白帽子掌握NX的技术原理,并能够发现程序或系统中NX机制的设计缺陷,并加以利用实施攻击的能力。
- ASLR
ASLR,Address Space Layout Randomization的缩写,意为地址空间随机化,是一种操作系统用来抵御缓冲区溢出攻击的内存保护机制。这种技术使得系统上运行的进程的内存地址无法被预测,使得与这些进程有关的漏洞变得更加难以利用。
在本文中,白帽子的ASLR能力,是指白帽子掌握ASLR的技术原理,并能够发现程序或系统中ASLR机制的设计缺陷,并加以利用实施攻击的能力。
- SEHOP
SEHOP,是Structured Exception Handler Overwrite Protection的缩写,意为结构化异常处理覆盖保护。其中,结构化异常处理是指按照一定的控制结构或逻辑结构对程序进行异常处理的一种方法。如果结构化异常处理链表上面的某个节点或者多个节点,被攻击者精心构造的数据所覆盖,就可能导致程序的执行流程被控制,这就是SEH攻击。而SEHOP就是Windows操作系统中,针对这种攻击给出的一种安全防护方案。
在本文中,白帽子的SEHOP能力,是指白帽子掌握SEHOP的技术原理,并能够发现程序或系统中SEHOP机制的设计缺陷,并加以利用实施攻击的能力。
- GS
GS,意为缓冲区安全性检查,是Windows缓冲区的安全监测机制,用于防止缓冲区溢出攻击。
缓冲区溢出是指当计算机向缓冲区内填充数据位数时,填充的数据超过了缓冲区本身的容量,于是溢出的数据就会覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。但是很多程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下隐患,即缓冲区溢出漏洞。GS就是通过对缓冲区数据的各种校验机制,防止缓冲区溢出攻击的发生。
在本文中,白帽子的GS能力,是指白帽子掌握GS的技术原理,并能够发现程序或系统中GS机制的设计缺陷,并加以利用实施攻击的能力。
系统层漏洞挖掘
系统层漏洞的挖掘需要很多相对高级的漏洞挖掘技术与方法。从实战角度看,以下6种挖掘方法最为实用:代码跟踪、动态调试、Fuzzing技术、补丁对比、软件逆向静态分析、系统安全机制分析。
- 代码跟踪
代码跟踪,是指通过自动化分析工具和人工审查的组合方式,对程序源代码逐条进行检查分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。
- 动态调试
动态调试,原指软件作者利用集成环境自带的调试器跟踪自己软件的运行,来协助解决自己软件的错误。
不过,对于白帽子来说,动态调试通常是指使用动态调试器(如OllyDbg x64Dbg等),为可执行程序设置断点,通过监测目标程序在断点处的输入输出及运行状态等信息,来反向推测程序的代码结构、运行机制及处理流程等,进而发现目标程序中的设计缺陷或安全漏洞的一种分析方法。
- Fuzzing技术
Fuzzing技术,是一种基于黑盒(或灰盒)的测试技术,通过自动化生成并执行大量的随机测试用例来触发软件或系统异常,进而发现产品或协议的未知缺陷或漏洞。
- 补丁对比
每一个安全补丁,都会对应一个或多个安全漏洞。通过对补丁文件的分析,往往可以还原出相应漏洞的原理或机制。而利用还原出来的漏洞,就可以对尚未打上相关补丁的软件或系统实施有效攻击。而补丁对比,是实战环境下,补丁分析的一种常用的、有效的方式。
补丁对比,是指对原始文件和补丁文件分别进行反汇编,然后对反汇编后的文件做比较找出其中的差异,从而发现潜在的漏洞的一种安全分析方法。
- 软件逆向静态分析
在本文中,软件逆向静态分析,是指将对软件程序实施逆向工程,之后对反编译的源码或二进制代码文件进行分析,进而发现设计缺陷或安全漏洞的一种安全分析方法。
对开放源代码的程序,通过检测程序中不符合安全规则的文件结构、命名规则、函数、堆栈指针等,就可以发现程序中存在的安全缺陷。被分析目标没有附带源程序时,就需要对程序进行逆向工程,获取类似于源代码的逆向工程代码,然后再进行检索和分析,也可以发现程序中的安全漏洞。这就是软件逆向静态分析。
软件逆向静态分析,也叫反汇编扫描,由于采用了底层的汇编语言进行漏洞分析,在理论上可以发现所有计算机可运行的漏洞。对于不公开源代码的程序来说,这种方法往往是最有效的发现安全漏洞的办法。
- 系统安全机制分析
操作系统的安全机制,就是指在操作系统中,利用某种技术、某些软件来实施一个或多个安全服务的过程。主要包括标识与鉴别机制,访问控制机制,最小特权管理机制,可信通路机制、安全审计机制,以及存储保护、运行保护机制等。
在本文中,系统安全机制分析能力,是指对操作系统的各种安全机制的进行分析,进而发现系统设计缺陷或安全漏洞的方法。
身份隐藏
为避免自己的真实IP、物理位置、设备特征等信息在远程入侵的过程中被网络安全设备记录,甚至被溯源追踪,攻击者一般都会利用各种方式来进行身份隐藏。在实战攻防演习中,攻击方所采用的身份隐藏技术主要有以下几类:匿名网络、盗取他人ID/账号、使用跳板机、他人身份冒用和利用代理服务器等。
- 匿名网络
匿名网络泛指信息接受者无法对信息发送者进行身份定位与物理位置溯源,或溯源过程极其困难的通信网络。这种网络通常是在现有的互联网环境下,通过使用特定的通信软件组成的特殊虚拟网络,从而实现发起者的身份隐藏。其中以Tor网络(洋葱网络)为代表的各类“暗网”是比较常用的匿名网络。
在本文中,白帽子的匿名网络能力,是指白帽子能够使用匿名网络对目标机构发起攻击,并有效隐藏自己身份或位置信息的能力。
- 盗取他人ID/账号
盗取他人ID/账号,一方面可以使攻击者获取与ID/账号相关的系统权限,进而实施非法操作;另一方面也可以使攻击者冒充ID/账号所有人的身份进行各种网络操作,从而实现攻击者自身身份隐藏的目的。
不过,在实战攻防演习中,通常不允许随意盗取与目标机构完全无关人员的ID/账号,因此,在本文中,白帽子的盗取他人ID/账号能力,是指白帽子能够盗取目标机构及其相关机构内部人员ID/账号,以实现有效攻击和身份隐藏的能力。
- 使用跳板机
使用跳板机,是指攻击发起者并不直接对目标进行攻击,而是利用中间主机作为跳板机,经过预先设定的一系列路径对目标进行攻击的一种攻击方法。使用跳板机的原因主要有两个方面:一是受到内网安全规则的限制,目标机器可能直接不可达,必须经过跳板机才能间接访问;二是使用跳板机,攻击者可以在一定程度上隐藏自己的身份,使系统中留下的操作记录多为跳板机所为,从而增加防守方溯源分析的难度。
在本文中,白帽子使用跳板机的能力,是指白帽子能够入侵机构内部网络,获得某些主机控制权限,并以此为跳板,实现内网横向移动的技术能力。
- 他人身份冒用
他人身份冒用,是指通过技术手段对身份识别系统或安全分析人员进行欺骗,从而达到冒用他人身份实现登录系统、执行非法操作及投放恶意程序等攻击行为。这里所说的他人身份冒用技术不包括前述的盗取他人ID/账号。
在本文中,白帽子的他人身份冒用能力,是指白帽子能够使用各种技术手段冒用他人身份,入侵特定系统的技术能力。
- 利用代理服务器
代理服务器,是指专门为其他联网设备提供互联网访问代理的服务器设备。在不使用代理服务器的情况下,联网设备会直接与互联网相连,并从运营商那里分配获得全网唯一的IP地址。而在使用代理服务器的情况下,联网设备则是首先访问代理服务器,再通过代理服务器访问互联网。
代理服务器的设计,最初是为了解决局域网内用户联结互联网的需求而提出的,局域网内所有的计算机都通过代理服务器与互联网上的其他主机进行通信。对于被通信的主机或服务器来说,只能识别出代理服务器的地址,而无法识别事出局域网内哪一台计算机与自己通信。
在实战攻防环境下,攻击方使用代理服务器联网,就可以在一定程度上隐藏自己的IP地址和联网身份,增加防守方的溯源难度和IP封禁难度。在某些情况下,攻击者甚至还会设置多级代理服务器,以此实现更加深度的身份隐藏。
在本文中,白帽子的利用代理服务器能力,是指白帽子在攻击过程中,能够使用一级或多级代理服务器,从而实现身份隐藏的能力。
内网渗透
内网渗透,是指当攻击方已经完成边界突破,成功入侵到政企机构内部网络之后,在机构内部网络中实施进一步渗透攻击,逐层突破内部安全防护机制,扩大战果或最终拿下目标系统的攻击过程。
在实战攻防环境下,白帽子比较实用的内网渗透能力包括:工作组或域环境渗透、内网权限维持/提权、横向移动、数据窃取和免杀等。
- 工作组、域环境渗透
工作组和域环境都是机构内部网络结构的基本概念。工作组通常是指一组相互联结,具有共同业务或行为属性的终端(计算机)集合。组内终端权限平等,没有统一的管理员或管理设备。通常来说,工作组的安全能力上线就是每台终端自身的安全能力。
域环境,则是由域控服务器创建的,具有统一管理和安全策略的联网终端的集合,域控服务器和域管理员账号具有域内最高权限。通常来说,域环境的安全性要比工作组高很多,但如果域管理员账号设置了弱口令,或域控服务器存在安全漏洞,也有可能导致域控服务器被攻击者劫持,进而导致域内所有设备全部失陷。
出于安全管理的需要,大型机构的内部网络一般都会被划分为若干个域环境,不同的域对应不同的业务和终端,执行不同的网络和安全管理策略。而在一些网络管理相对比较松散的机构中,内网中也可能只有若干的工作组,而没有域环境。
在本文中,白帽子的工作组、域环境渗透能力,是指白帽子能够掌握内网环境中,工作组或域环境的运行管理机制,能够发现其中的设计缺陷或安全漏洞,并加以利用实施攻击的能力。
- 横向移动
横向移动,通常是指攻击者攻破某台内网终端/主机设备后,以此为基础,对相同网络环境中的其他设备发起的攻击活动,但也常常被用来泛指攻击者进入内网后的各种攻击活动。
在本文中,白帽子的横向移动能力,是泛指以内网突破点为基础,逐步扩大攻击范围,逐步攻破更多内网设备或办公、业务系统的技术能力。
- 内网权限维持/提权
攻击者通常是以普通用户的身份接入网络系统或内网环境,要实现攻击,往往还需要提升自身的系统权限,并且使自身获得的高级系统权限能够维持一定的时间,避免被系统或管理员降权。提升系统权限的操作简称提权,维持系统权限的操作简称权限维持。
在实战环境下,系统提权的主要方式包括:利用系统漏洞提权、利用应用漏洞提权、获取密码/认证提权等。
在本文中,白帽子的内网权限维持/提权能力,是指白帽子在内网环境中,能够利用各种安全设计缺陷或安全漏洞,提升自己的系统权限,以及维持提权有效性的技术能力。
- 数据窃取
对机密或敏感数据的窃取,是实战攻防演习工作中最常见的预设目标之一,也是黑客针对政企机构网络攻击活动的主要目的之一。一般来说,机构内部的很多办公系统、业务系统、生产系统中,都会有专门的服务器或服务器集群用于存储核心数据,数据服务器的防护一般也会比其他网络设备更加严密一些。
在本文中,白帽子的数据窃取能力,是指白帽子能够熟练掌握服务器的数据库操作,能够在内网中找到机构的核心系统数据服务器,能够获取服务器访问或管理权限,能够在防守方不知情的情况下将数据窃取出来并秘密外传的技术能力。
- 免杀
免杀,英文为Anti Anti-Virus,是高级的网络安全对抗方式,是各种能使木马病毒程序免于被杀毒软件查杀的技术的总称,可以使攻击者编写的木马病毒程序在目标主机上秘密运行,不被发现。
免杀技术,不仅要求开发人员具备木马病毒的编写能力,同时还需要对各种主流安全软件的运行框架、杀毒引擎的工作原理、操作系统的底层机制、应用程序的白利用方式等,有非常深入的了解,并能据此编写对抗代码。使用免杀技术,对于白帽的基础能力要求非常之高。
在本文中,白帽子的免杀技术能力,是指白帽子能够编写木马病毒程序实现免杀的技术能力。通过使用第三方工具(如加密壳)在某些安全防护薄弱的环境下也能达到免杀目的,但这种基础能力不属于本文描述的免杀技术能力。
高级安全工具
高级安全工具同样是白帽子的必修课,只不过这些工具对于使用者有更高的基础技能要求,初学者不易掌握。在实战化环境中,最为经常被用到的工具包括:IDA、Ghidra、Binwalk、OllyDbg、Peach fuzzer等。
- IDA
IDA,是一个专业的反汇编工具,是安全渗透人员进行逆向安全测试的必备工具,具有静态反汇编和逆向调试等功能,能够帮助安全测试人员发现代码级别的高危安全漏洞。
- Ghidra
Ghidra,是一款开源的跨平台软件逆向工具,目前支持的平台有Windows、macOS及Linux,并提供了反汇编、汇编、反编译等多种功能。Ghidra P-Code是专为逆向工程设计的寄存器传输语言,能够对许多不同的处理器进行建模。
- Binwalk
Binwalk,是一个文件扫描提取分析工具,可以用来识别文件内包含的内容和代码。Binwalk不仅可以在标准格式本件中进行分析和提取,还能对非标准格式文件进行分析和提取,包括压缩文件、二进制文件、经过删节的文件、经过变形处理的文件、多种格式相融合的文件等。
- OllyDbg
OllyDbg,是一款强大的反汇编工具。它结合了动态调试与静态分析等功能。是一个用户模式调试器,可识别系统重复使用的函数,并能将其参数注释。OllyDbg还可以调试多线程应用程序,从一个线程切换到另一个线程、挂起、恢复和终止,或改变它们的优先级。
- Peach fuzzer
Peach Fuzzer是一款智能模糊测试工具,广泛用于发现软件中的缺陷和漏洞。Peach Fuzzer有两种主要模式:基于生长的模糊测试和基于变异的模糊测试。
编写PoC或EXP等高级利用
在前述“进阶能力”中的“(三)编写PoC或EXP等利用”中,我们已经介绍了PoC和EXP的概念,这里不再累述。相比于针对Web应用和智能硬件/IoT设备编写PoC或EXP,针对各种类型的操作系统和安全设备编写PoC或EXP要更加困难,属于高阶能力。
高阶能力中,比较被关注的几个操作系统和设备包括:Windows、Android、iOS、Linux、macOS、网络安全设备。
- Windows
由微软公司开发的个人电脑操作系统。
在本文此处,Windows代指能够在Windows操作系统上找到漏洞并利用漏洞编写PoC或EXP的能力。
- Android
由Google公司和开放手机联盟领导及开发的操作系统,主要使用于移动设备,如智能手机和平板电脑。
在本文中,Android代指能够在Android操作系统上找到漏洞并利用漏洞编写PoC或EXP的能力。
- iOS
由苹果公司开发的移动操作系统,主要使用于iPhone、iPod touch、iPad上。
在本文中,iOS代指能够在iOS操作系统上找到漏洞并利用漏洞编写PoC或EXP的能力。
- Linux
主要使用于服务器的操作系统, Ubnutu、CentOS等均属基于Linux内核基础上开发的操作系统。
在本文中,Linux代指能够在Linux操作系统上找到漏洞并利用漏洞编写PoC或EXP的能力。
- macOS
由苹果公司开发的操作系统,主要运用于Macintosh系列计算机。macOS的架构与Windows不同,很多针对Windows的计算机病毒在macOS上都无法攻击成功。
在本文中,macOS代指能够在macOS操作系统上找到漏洞并利用漏洞编写PoC或EXP的能力。
- 网络安全设备
在实战化环境中,经常会遇到的网络安全设备包括IP协议密码机、安全路由器、线路密码机、防火墙、安全服务器、公开密钥基础设施(PKI)系统、授权证书(CA)系统、安全操作系统、防病毒软件、网络/系统扫描系统、入侵检测系统、网络安全预警与审计系统等。
网络安全设备本身也会存在各种各样的安全漏洞,在近年来的实战攻防演习中,受到越来越多的重视和利用。
在本文中,网络安全设备代指能够在各类网络安全设备中找到漏洞并利用漏洞编写PoC或EXP的能力。
掌握CPU指令集
CPU指令集,即CPU中用来计算和控制计算机系统的一套指令的集合。每一种不同的CPU在设计时都会有一系列与其他硬件电路相配合的指令系统。指令系统包括指令格式、寻址方式和数据形式。一台计算机的指令系统反应了该计算机的全部功能。机器类型不同,其指令集也不同。而白帽子对CPU指令集的掌握程度,将直接决定白帽子进行系统层漏洞挖掘与利用的能力水平。本文指掌握不同架构下的底层程序分析。
目前,最为常见的CPU指令集包括x86、MIPS、ARM和PowerPC。
- x86
x86一般指Intel x86。x86指令集是Intel为其CPU专门开发的指令集合。
通过分析x86指令集可以找到intel下相关软件或系统的运行机制,从而通过指令实现底层攻击。
- MIPS
MIPS(Microcomputer without Interlocked Pipeline Stages)的含义是无互锁流水级微处理器,该技术是MIPS公司(著名芯片设计公司,)设计开发的一系列精简的指令系统计算结构,最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。由于其授权费用低,因此被Intel外的大多数厂商使用。
通过分析MIPS指令集可以找到除Intel外大多厂商(多见于工作站领域)的软件或系统运行机制,从而通过指令实现底层攻击。
- ARM
ARM(Advanced RISC Machines),即ARM处理器, 是英国Acorn公司设计的,低功耗的第一款RISC(Reduced Instruction Set Computer,精简指令集计算机)微处理器。
在本文中,ARM指ARM指令集。ARM指令集是指计算机ARM操作指令系统。ARM指令集可以分为跳转指令、数据处理指令、程序状态寄存器处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。
- PowerPC
PowerPC(Performance Optimization With Enhanced RISC-Performance Computing)是一种精简指令集架构的中央处理器,其基本的设计源自IBM的POWER架构。POWER是1991年,Apple、IBM、Motorola组成的AIM联盟所发展出的微处理器架构。PowerPC 处理器有广泛的实现范围,包括从高端服务器 CPU(如Power4) 到嵌入式 CPU 市场(如任天堂游戏机)。但苹果公司自2005年起,旗下计算机产品转用Intel CPU。
团队协作
随着实战攻防演习实践的不断深入,防守方的整体能力持续提升。这就使得白帽子单凭强大的个人能力单打独斗取得胜利的希望越来越小。而由3~5人组成的攻击小队,通过分工协作的方式高效完成攻击行动的