参考链接:https://zhuanlan.zhihu.com/p/22369557
https://www.secrss.com/articles/3298

前言

风险评估的目的是:

识别系统面临的威胁
判断这种威胁转变成现实后可能带来的影响
判断这种转变的可能性或难易度

常见的风险评估步骤:

资产识别/系统分析 > 威胁分析 > 识别风险/安全测试 > 消减措施响应

1.资产识别/系统分析

  • 资产识别是指识别出系统中的关键资产,也就是回答“需要保护什么?”这个问题。一般来说,一个系统的关键资产是这个系统的业务和数据,包括核心业务组件、用户的数据、用于鉴权和认证的密码、密钥等。

  • 系统分析是进行威胁分析的前提,只有充分了解被评估系统的功能、结构、业务流等信息后,威胁分析才有依据。对被分析系统有一个高层次的认识,之后通过多个维度对系统进行分解,最后通过业务流将各分解后的组件串联起来,实现“整体-局部-整体”的分析过程。需要注意的是,在进行系统分析前,必须根据项目的目的和限制条件对系统分析进行约束,否则,系统分析是分析不完的。
  • 如果可以的话,建议是画出总体的系统架构图。一般来说可以做以下的分析:
    系统的组网情况(处在什么位置/周边系统等)
    软件架构分析(OS/DB/PLAFORM/WEB后台等)
    内/外部结构分析(维护接口、业务接口、调试接口等)
    典型业务流程/场景分析(业务场景1/业务场景2/...)
    管理/维护场景分析(近端维护场景/远程维护场景/...)
    关键事件分析(登录/鉴权/认证/数据读写/...)

2.威胁分析

  • 什么是威胁,可以从安全三元组来解释:即机密性、完整性、可用性,一般来说,还需要还再加上一个抗抵赖性。

  • 威胁分类:

    -对机密性的威胁
    通过嗅探、暴力破解等手段窃取用户身份,认证信息,仿冒合法用户访问系统。 攻击者非法获得系统中保存的或传输过程中的机密数据,如用户认证信息、用户
    -对完整性的威胁
    通过修改发送给系统的数据或从系统收到的数据,影响系统业务逻辑,比如绕过认证机制、欺骗计费系统、执行越权操作等
    -对可用性的威胁
    通过Flood、畸形报文等攻击等手段造成系统不能提供正常的服务
    -对抗抵赖性的威胁
    通过修改系统访问日志、审计日志来隐藏攻击痕迹、修改业务行为记录

  • 威胁分析就是识别威胁,总结成一个句子就是:
    攻击者(威胁源),利用XXX漏洞(漏洞),通过XXX(攻击面/攻击手段)方式,对XXX(关键资产)产生了XXX威胁(后果)

  • 威胁分析的套路很多,只要识别出威胁就可以,业界也有一些比较成熟的建模,比如X.805分层分析、攻击树模型、微软的STRIDE威胁建模等

3.STRIDE威胁建模

把威胁分成6个维度来考擦,如下:

威胁 定义 对应的安全属性
spoofing 冒充 认证
tampering 修改数据或代码 完整性
reputation 否认 不可抵赖性
information disclosure 信息泄露 机密性
denial of service 拒绝服务 可用性
elevation of privilege 未授权访问 授权

-- spoofing(仿冒),举例:伪基站、外挂

-- tampering(篡改),举例:修改定位信息,任意地点考勤打卡

-- reputation(抵赖),指保留必要的审计日志,攻击事件后溯源

-- elevation of privilege(权限提升),例如垂直越权

  • STRIDE建模的第一步就是分解业务场景,绘制业务场景的数据流图
    具体可以使用microsoft threat modeling tool绘制
    核心元素包含:进程、数据存储、数据流、外部实体

  • 绘制完数据流图以后,就是对数据流中的每个元素可能面临的威胁逐个进行分析,但不是每个元素的STRIDE六类威胁都要去分析

  • 输出威胁列表和消减方案
    组件 web程序用户身份验证过程
    威胁描述 攻击者通过监视网络获取身份验证凭据
    威胁类型 I
    攻击方法 利用网络监视软件
    消减方案 利用SSL提供加密通道
    危险评级
    这里叫“消减方案”而不是“消除方案”是因为在实际做STRIDE威胁分析时,我们发现的每个威胁,由于各种实际原因不一定能肯定根除。
    根据威胁造成的危险对其进行评价。这样就能够首先解决危险最大的威胁,然后再解决其他的威胁。实际上,解决所有找出的威胁也许在经济上是不可行的,可以进行决策,忽略掉一些
  • DREAD威胁评级模型
    DREAD分别是威胁评级的6个指标的英文首字母。
    潜在损失(Damage Potential) 如果缺陷被利用,损失有多大?
    重现性(Reproducibility) 重复产生攻击的难度有多大?
    可利用性(Exploitability) 发起攻击的难度有多大?
    受影响的用户(Affected users) 用粗略的百分数表示,有多少用户受到影响?
    可发现性(Discoverability) 缺陷容易发现吗?

01-19 01:45