Fork me on GitHub

白帽子讲Web安全

概述

       
第一篇 — 世界观安全,这里的安全世界观是作者的安全世界观,作者对安全的考虑和理解,起到了提纲挈领的作用。讲述了一些概念,理论和原则,比如什么是Web安全、什么是黑帽子和白帽子、安全的三要素是什么、如何做安全评估等。互联网安全与传统网络安全、信息安全技术是有所区别的,Web作为互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分。

    安全工程师的核心竞争力不在于他能拥有多少个0day,掌握多少种安全技术,而是在于他对安全理解的深度,一级由此引申的看待安全问题的角度和高度。

第一章 我的世界观

Web 安全简史

  • Hacker —> 获取用户态最高权限root/administrator,分为exploit和Script Kids(脚本小子)
  • exploit:精通计算机技术,能自己挖掘漏洞并编写exploit,黑客们使用的漏洞利用代码,被称为exploit。
  • Script Kids的特点
    • 只对攻击本身感兴趣,对计算机原理和各种编程技术的了解比较粗浅
    • 只懂得编译别人的代码,自己没有动手能力
    • 在现实世界里,会形成计算机犯罪、网络犯罪

中国黑客简史

  • 启蒙时代
    • 时间:20世纪90年代(受国外黑客技术的影响)
    • 特点:崇尚分享(Share)、开放(Open)、免费(Free)
  • 黄金时代
    • 标志:中美黑客大战
    • 特点:形成各种黑客组织,良莠不齐,开始以盈利为目的
  • 黑暗时代
    • 特点:优胜劣汰,走向没落,不在公布任何漏洞相关的技术细节
    • 最为纯粹的黑客精神实质上已经死亡

黑客技术的发展历程

  • 早期
    • 攻击目标:系统软件居多,比如:网络、操作系统以及软件
    • 原因:(1)Web技术发展不够成熟,并非主流,获取的权限比较低(2)攻击系统软件可以直接获得root权限
    • 常用协议:SMTP、POP3、FTP、IPC
  • 防火墙的出现:Cisco、华为等开始重视网络安全,改变了互联网安全的走向
  • 里程碑事件:2003年冲击波蠕虫
    • Windows操作系统RPC服务(运行在455端口)的蠕虫,在很短的时间席卷全国,造成数百万台机器被感染,损失难以估量
    • 网络运营商在骨干网络上屏蔽了135/445等端口的链接请求
    • 整个互联网对于安全的重视达到了空前的高度

Web安全的兴起

  • Web 1.0 时代
    • 服务器端动态脚本:一个可执行脚本(俗称webshell)上传到服务器上,从而获得权限
    • SQL 注入:
      • 时间:1999年
      • Web安全史上的一个里程碑,通过 SQL 注入攻击
    • XSS(跨站脚本工具)
      • 时间:2003年以后
      • 又一个里程碑
      • 与蠕虫事件有密切关系,在 OWASP 2007 TOP 10 威胁上XSS位居首榜
  • Web 2.0 兴起
    • 催生了很多脚本 Python、Ruby、NodeJS

黑帽子,白帽子

  • 白帽子
    • 精通安全技术,但是工作在反黑客领域的专家
    • 特点:只要能够找到系统的一个弱点,就可以达到入侵系统的目的
  • 黑帽子
    • 利用黑客技术造成破坏,甚至进行网络犯罪的群体
    • 特点:必须找到系统所有弱点,不能有遗漏,才能保证系统不会出现问题

安全的本质

       
安全问题的本质是 信任的问题,例如汽车站、火车站、高铁站等地方的安检(安全检查),分列出哪些是不安全的,哪些是安全的,进行过滤。又例如重要文件的保管,安全的前提,制作抽屉的工匠可信任,他没有私藏钥匙,但是信任如果被打破就不安全了,工匠私藏了一把钥匙。


安全信任

    安全是一个持续的过程。在安全的领域,不可能一劳永逸,也就是说“没有银弹”(银弹:在欧洲民间传说及19世纪以来哥特小说风潮的影响下,银色子弹往往被描绘成具有驱魔功效的武器,是针对狼人等超自然怪物的特效武器。后来也被比喻为具有极端有效性的解决方法,作为杀手锏、最强杀招、王牌等的代称)

安全三要素

  • 机密性(Confidentiality)
    • 要求保护数据内容不能泄露
    • 常用手段:加密
    • 案例:文件放在透明的玻璃盒子里,增加一个封面,遮掩文件内容
  • 完整性(Integrity)
    • 要求保护数据内容是完整、没有被篡改的
    • 常用手段:数字签名
    • 案例:康熙遗诏
  • 可用性(Availability)
    • 要求保护资源时“随需而得”
    • 案例:停车场车位被占,这种攻击叫做拒绝服务攻击,简称DoS(Denial of Service)
    • 拒绝服务攻击破坏的是安全的可用性
  • 其他
    • 可审计性、不可抵赖性

如何实施安全评估

四个阶段:(层层递进,前后因果)


安全评估过程
  • 资产等级划分

    • 所有工作的基础,这项工作能帮助苏我们明确目标是什么,要保护什么
    • 互联网安全的核心问题,是数据安全的问题(用户产生业务,业务产生数据)
    • 划分信任域和信任边界


      简单网站信任模式
  • 威胁分析
    • 可能造成危害的来源,称为威胁;可能出现损失的称为风险
    • 威胁分析:把所有的威胁都找出来
    • 使用头脑风暴法,尽可能地不遗漏威胁,头脑风暴可以确定攻击面。案例:《智取华山》,正路布重兵,忽略了小路/悬崖(漏洞)
    • STRIDE 建模

      STRIDE 建模
  • 风险分析

    • 风险因素:Risk = Probability(可能性) * Damage Potential(破坏潜力)
    • 案例:火山、地震带,日本火山、地震多发,风险可能性较大,但是破坏潜力一般不大;大陆中心,火山、地震不易发生,但是发生了会有很大的破坏力
    • DREAD 模型


      DREAD 模型
  • 确认解决方案 – 设计安全方案
    • 安全评估的产出物,就是安全解决方案
    • 解决方案要有针对性,这种针对性是由资产等级划分、威胁分析、风险分析等阶段的结果给出的
    • 优秀安全方案的特点
      • 能够有效解决问题
      • 用户体验好
      • 高性能
      • 低耦合
      • 易于扩展与升级

    设计解决方案不难,难的是如何设计一个好的解决方案。案例一:杯子,评价一个杯子是否好用,除了能盛水之外,还有它的材质是否健康无毒,高温会不会熔化,低温会不会易碎。案例二:Windows Vista 的 UAC 功能,询问用户是否允许该行为

白帽子兵法

什么兵法?带兵打仗的方法。安全评估最后的产出物就是安全方案,但是在具体设计安全方案时有什么样的技巧和方法呢?

  • 白帽子兵法有四个原则:Secure By Default (安全缺省) 原则、纵深防御(Defense in Depth) 原则、数据与代码分离原则、不可预测(Unpredictable)原则
  • Secure By Default 原则

    • 最基本、最重要的原则
    • 一个方案设计得是否足够安全,与有没有应用这个原则有很大的关系
    • 也可以归纳为白名单、黑名单的思想(安全问题的本质是信任问题,安全方案也是绝育信任来做的,白名单就是用户信任的,黑名单就是不被信任的不安全的)
    • 另一层含义:最小权限原则
      • 最小权限原则也是安全设计的基本原则之一,最小权限原则要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统、网络、应用、数据库出错的机会。
      • 最小权限案例:Linux 需要 root 权限时,通过 sudo 完成。
      • 在使用最小权限时,需要认真梳理业务所需要的权限,开发者并不会意识到业务授予用户的权限过高
  • 纵深防御原则

    • 重要指导思想
    • 两层含义
      • 要在各个不同分层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体
        • 一滴水经过十多层安全过滤,这种多层过滤体系,就是纵深防御,是有立体层次感的安全方案
        • 并不是同一个安全方案做两遍或多遍,而是从不同层面、不同角度对系统做出整体的解决方案。
        • 将风险分散到系统的各个层面,就入侵系统来说,我们需要考虑的可能有Web应用安全、OS系统安全、数据库安全、网络环境安全等。在这些不同层面设计的安全方案,将共同组成整个防御体系,这就是纵深防御的思想
    • 要在正确的地方做正确的事情,即在解决根本问题的地方实施针对性的安全方案

      • (做正确的事,把事做正确。这是 PMP 中杨述讲到的。世间万事万物都是相通的,做正确的事,是选择一个正确的安全解决方案;把事做正确,是用正确的解决方案解决它能解决的问题上,针对性的解决问题)
      • UTM,统一威胁管理(Uniform Threat Managment),集成了很多主流安全产品的功能,如防护墙、VPN、反垃圾邮件、IDS、反病毒等,但是UTM并不是万能药,很多问题并不应该在网络层、网关处解决(这个产品就没什么针对性)
      • XSS 防御技术(最近几年XSS防御思路逐渐成熟和统一)


        XSS 防御技术
  • 数据与代码分离原则

    • 重要的安全原则
    • 广泛用于各种“注入”引发的安全问题
    • 缓冲区溢出,程序在栈或堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生
    • 注入,XSS、SQL Injection、CRLF Injection、X-Path Injection,数据与代码分离原则可以设计注入问题的解决方案
  • 不可预测原则

    • Secure By Default,是时刻要牢记的总则;纵深防御,是要更全面、更正确地看待问题;数据与代码分离,是从漏洞成因上看问题;不可预测性原则,是从克服攻击方法的角度看问题
    • 不可预测性能有效地对抗基于篡改、伪造的攻击
    • 不可预测性的实现往往需要用到加密算法、随机数算法、哈希算法,好好使用这条原则,在设计安全方案时往往会事半功倍
坚持原创技术分享,您的支持将鼓励我继续创作!
-------------    本文结束  感谢您的阅读    -------------
0%