dan算法
① 9 非对称加密
目前为止,本书中只讨论到对称加密。假设一个密码系统不只有一个密钥,而是有一对密钥,其中公钥可以自由地发布,而私钥由自己保管。其他人可以使用你的公钥来加密数据,这个信息只有你的私钥可以解密,这个被称为 公钥加密(public-key encryption)
很长一段时间,这都被认为是不可能的。然而从1970年开始,这一类型的算法开始出现。第一个广为流传的是MIT的三位密码学家:Ron Rivest,Adi Shamir 和Leonard Adleman提出的RSA。
公钥算法并不仅仅用来加密,实际上本书之前的部分已经提到过公钥算法而其不是直接用在加密上。有三个与公钥算法相关的主题
从表面来看,公钥加密好像可以淘汰之前提到的对称密钥算法。对于任何事情都可以使用公钥加密,也不需要对称密钥系统中的密钥交换过程。然而在实际的密码学系统中,可以看到到处都是混合的加密,公钥加密在其中起着重要作用,但是大部分的加解密以及认证工作还是基于对成密钥算法的。
目前来看最重要的原因是性能。与流密码(原生的流密码或者其他)算法相比,公钥加密机制实在是太慢了。RSA通常情况下需要2048位也就是256个字节。其加密需要0.29百万次循环,解密需要11.12百万次循环。而对称加密和解密只需要每字节约10次循环。这也意味着在对称密钥算法中,解密256位数据,只需要3000次循环,这个效率是非对称版本的4000次。而目前的密码系统使得对称加密更快了,在AES-GCM硬件加速或者Salsa20/ChaCha20只需要2或者4次每字节,更大程度上提高了性能。
实际的密码系统中还有更多其他的问题。例如对于RSA来说,它不能加密任何比它大的信息,通常情况是小于或者等于4096位,比大部分的需求要小的多。当然最重要的问题依然是上述的速度的问题。
本节简单描述RSA背后的数学问题。其本身并不能产生安全加密机制。之后会看到在其上构造的密码指导OAEP。
为了产生一个key,需要挑选两个大素数p和q,这些数需要随机私密的挑选。将两者相乘的到N,这个是公开的。然后选择一个加密指数e,这个也是公开的。通常这个数是3或者65537.因为这些数的二进制形式中仅有很少量的1。计算指数会更有效。(N,e)是公钥,任何人都可以用公钥来加密消息M,得到密文C。
接下来的问题是解密,有一个解密指数d,可以将C转化会M。如果指导p和q,d很容易计算。可以使用d来解密消息:
RSA的安全性依赖于对于不知道d的人来说解密操作是不可能的,并且在只知道(N,e)的情况下d的计算是非常难的。
类似于很多密码系统,RSA依赖于特定数学问题的难度。给定密文C,和公钥(N,e),反推出明文M。这被称为RSA难题。
最直接的方法是将N分解为p*q。给定p和q,攻击者只需要重复密钥拥有者的过程来计算产生d即可。
幸运的是,没有一个算法可以在合理的时间内分解这么大的数。不幸的是,目前也无法证明该算法一定不存在。更加糟糕的是,有一个理论上的算法,被称为Shor's Algorithm,可以在量子计算机上在合理的时间内分解一个数。目前,量子计算机还离我们有些远,但是未来某天可能就会成为现实。到时候RSA就变得不再有效。
本节中仅仅提到了分解大数这个最直接的方式来攻击RSA。在接下来的部分可以看到一系列针对RSA的实际攻击,其主要依赖于一些具体的实现。
目前,没有已知的实际的攻破RSA的方法。但这不意味着使用RSA的系统没有被攻破过。和其他被攻破的系统一样,应用中有很多组成部分,一旦其中的某部分没有恰当的使用,就会使整个系统变得不可用。更多有关RSA实施的细节的,参考【Bon99】和【AV96】,本部分只提及一些有趣的部分。
Salt是一个用python写的供应系统。它有一个模块叫做 cypto ,它没有使用已有的密码学系统,而是实现了一个自己的,其中使用的RSA和AES由第三方库提供。
很长一段时间里,Salt使用的公钥指数e是1,这也就意味着P e=P 1=P(mod N)。这也就意味着结果的密文就是明文。目前该问题已经被修复,这里只是为了提醒大家,不要实现自己的加密系统。Salt现在支持了SSH作为传输蹭,但是先前提到的DIY的RSA/AES系统依然存在,并且还是默认的传输层。
OAEP是Optimal asymmetric encryption padding的简称,是RSA填充的一种。它的结构类似于下图(文档中这个图有问题,下面是正确的图):
最终产生的需要被加密的数据是X||Y,是n位长,这个n是N的位数。它使用一个随机的块R它的长度是k,在这个标准中,k是一个定值。消息首先需要用0填充被扩充到n-k位。图中左边的长度为n-k位,右边的长度为k。随机块R和以0扩充的M,M||000...使用两个陷阱函数,G和H。陷阱函数都是从一个方向计算非常简单,但是逆转非常的难。世纪中通常为hash函数。
G的输入是k位,输出是n-k位,H的输入是n-k位,输出是k位。
然后结果的X和Y被连接在一起,然后由标准的RSA来进行加密产生密文。
解密的时候,要反过来操作。接收者收到X||Y,他们是指导k的,因为这个是协议里的定值。所以前n-k是X,后k位是Y。
想要得到M,M||000...,需要去计算
可以看出,对于一些H和G来说,需要所有的X和Y才能找到M。对于H和G有很多种基于Hash函数的选择。
绝大多数的公钥加密只能一次加密一小块,一般都远小于要发送的信息。另外这些算法还很慢,比对称加密要慢的多。通常非对称加密用来连接密码系统。
有了公钥密码和密钥交换,是密码学里面两个非常重要的部分,因为人们总是需要与其他人交换私密的信息。有了这两个技术就可以安全地和其他人交流。
目前为止讨论的加密都没有任何形式的身份认证。这也就意味着对消息进行加密和解密,并不能验证得到的消息确实是发送者发送的原本的消息。
没有身份认证的加密可以提供隐私性,但是如之前章节所言,没有身份认证,尽管攻击者不知道任何原文的信息,他任然可以修改加密的信息。接收这些消息会泄漏一些私密的信息,这也就意味着私密性不在。例如之前第7章提到的CBC的填充攻击。
综上所言,出了加密私密的信息之外,还需要对其进行身份认证。通常身份认证都是对消息增加一些额外的可计算的信息。类似于加密,身份认证也分为对称类型的和非对称类型的。对称类型的通常被称为消息认证(message authentication),非对称类型的通常被称为数字签名。
下一章先介绍一下另一个密码学中的重点:hash函数。hash在产生签名和消息认证等过程中都需要用到。
[Bon99] Dan Boneh. Twenty years of attacks on the RSA cryptosystem. Notices of the AMS , 46:203–213, 1999. URL: http://crypto.stanford.e/dabo/papers/RSA-survey.pdf .
[AV96] Ross Anderson and Serge Vaudenay. Minding your pʼs and qʼs. In In Advances in Cryptology - ASIACRYPT’96, LNCS 1163 , 26–35. Springer� Verlag, 1996. URL: http://www.cl.cam.ac.uk/~rja14/Papers/psandqs.pdf .
② 高考中求数列的通项公式共有几种方法。
高考中求数列的通项公式主要有以下七种方法,具体情况说明如下:
1.
公式法,当题意中知道,某数列的前n项和sn,则可以根据公式求得an=sn-s(n-1).
2.
待定系数法:若题目特征符合递推关系式a1=A,an+1=Ban+C(A,B,C均为常数,B≠1,C≠0)时,可用待定系数法构造等比数列求其通项公式。
3.
逐项相加法:若题目特征符合递推关系式a1=A(A为常数),an+1=an+f(n)时,可用逐差相加法求数列的通项公式。
4.
逐项连乘法:若题目特征符合递推关系式a1=A(A为常数),an+1=f(n)•an时,可用逐比连乘法求数列的通项公式。
5.
倒数法:若题目特征符合递推关系式a1=A,Ban+Can+1+Dan·an+1=0,(A,B,C,D均为常数)时,可用倒数法求数列的通项公式。
6.
其他观察法或归纳法等。
③ 石高是石高制,指日本在丰臣秀吉时的分封形式的标准。"石高"如何读
中文的话shi gao 或者 dan gao 应该都可以,dan gao 应该更准确,毕竟这里的石是粮食的计量单位而不是当石头讲。日语的话,こくだか(KOKUDAKA)
④ 现在的1.5钱有唐朝的多少钱呢
摘要 古今中药剂量的换算问题 汉 唐宋 清代 经方中药两 钱 分换算
⑤ 旋转矩阵是怎么回事哪个朋友用数字举个例子,详细点谢谢啦!
旋转矩阵旋转矩阵(Rotation matrix)是在乘以一个向量的时候有改变向量的方向但不改变大小的效果的矩阵。旋转矩阵不包括反演,它可以把右手坐标系改变成左手坐标系或反之。所有旋转加上反演形成了正交矩阵的集合。旋转矩阵是世界上着名的彩票专家、澳大利亚数学家底特罗夫研究的,它可以帮助您锁定喜爱的号码,提高中奖的机会。首先您要先选一些号码,然后,运用某一种旋转矩阵,将你挑选的数字填入相应位置。如果您选择的数字中有一些与开奖号码一样,您将一定会中一定奖级的奖。当然运用这种旋转矩阵,可以最小的成本获得最大的收益,且远远小于复式投注的成本。旋转矩阵的原理在数学上涉及到的是一种组合设计:覆盖设计。而覆盖设计,填装设计,斯坦纳系,t-设计都是离散数学中的组合优化问题。它们解决的是如何组合集合中的元素以达到某种特定的要求。其最古老的数学命题是寇克曼女生问题:某教员打算这样安排她班上的十五名女生散步:散步时三女生为一组,共五组。问能否在一周内每日安排一次散步,使得每两名女生在一周内一道散步恰好一次?寇克曼于1847年提出了该问题,过了100多年后,对于一般形式的寇克曼问题的存在性才彻底解决。用1~15这15个数字分别代表15个女生,其中的一组符合要求的分组方法是:星期日:(1,2,3),(4,8,12),(5,10,15),(6,11,13),(7,9,14)星期一:(1,4,5),(2,8,10),(3,13,14),(6,9,15),(7,11,12)星期二:(1,6,7),(2,9,11),(3,12,15),(4,10,14),(5,8,13)星期三:(1,8,9),(2,12,14),(3,5,6),(4,11,15),(7,10,13)星期四:(1,10,11),(2,13,15),(3,4,7),(5,9,12),(6,8,14)星期五:(1,12,13),(2,4,6),(3,9,10),(5,11,14),(7,8,15)星期六:(1,14,15),(2,5,7),(3,8,11),(4,9,13),(6,10,12)在此领域内做出了突出贡献的主要组合数学家有1,Patric Ostergard他的主要贡献是用了全新的模拟冷却算法解决了旋转矩阵的构造问题,运用他的模拟冷却程序,可以很迅速的产生许许多多的旋转矩阵。2,Alex Sidorenko他研究出了许多旋转矩阵和几种产生旋转矩阵的基于秃岭浏览的一般方法。3,Greg Kuperberg他注意到线性的[v,t]编码的补集可以给出区组长度不定的覆盖设计,而这可以产生对现有的旋转矩阵的一系列改进。4,Dan Gordon他收集的旋转矩阵是迄今为止最全面,最权威的。 [编辑本段]性质设 是任何维的一般旋转矩阵: 两个向量的点积在它们都被一个旋转矩阵操作之后保持不变: 从而得出旋转矩阵的逆矩阵是它的转置矩阵: 这里的 是单位矩阵。 一个矩阵是旋转矩阵,当且仅当它是正交矩阵并且它的行列式是单位一。正交矩阵的行列式是 ±1;如果行列式是 �6�11,则它包含了一个反射而不是真旋转矩阵。 旋转矩阵是正交矩阵,如果它的列向量形成 的一个正交基,就是说在任何两个列向量之间的标量积是零(正交性)而每个列向量的大小是单位一(单位向量)。 任何旋转向量可以表示为斜对称矩阵 A的指数: 这里的指数是以泰勒级数定义的而 是以矩阵乘法定义的。A 矩阵叫做旋转的“生成元”。旋转矩阵的李代数是它的生成元的代数,它就是斜对称矩阵的代数。生成元可以通过 M 的矩阵对数来找到。 [编辑本段]二维空间在二维空间中,旋转可以用一个单一的角 θ 定义。作为约定,正角表示逆时针旋转。把笛卡尔坐标的列向量关于原点逆时针旋转 θ 的矩阵是: [编辑本段]三维空间在三维空间中,旋转矩阵有一个等于单位一的实特征值。旋转矩阵指定关于对应的特征向量的旋转(欧拉旋转定理)。如果旋转角是 θ,则旋转矩阵的另外两个(复数)特征值是 exp(iθ) 和 exp(-iθ)。从而得出 3 维旋转的迹数等于 1 + 2 cos(θ),这可用来快速的计算任何 3 维旋转的旋转角。3 维旋转矩阵的生成元是三维斜对称矩阵。因为只需要三个实数来指定 3 维斜对称矩阵,得出只用三个是实数就可以指定一个3 维旋转矩阵。生成旋转矩阵的一种简单方式是把它作为三个基本旋转的序列复合。关于右手笛卡尔坐标系的 x-, y- 和 z-轴的旋转分别叫做 roll, pitch 和 yaw 旋转。因为这些旋转被表达为关于一个轴的旋转,它们的生成元很容易表达。绕 x-轴的旋转定义为: 这里的 θx 是 roll 角。 绕 y-轴的旋转定义为: 这里的 θy 是 pitch 角。 绕 z-轴的旋转定义为: 这里的 θz 是 yaw 角。 在飞行动力学中,roll, pitch 和 yaw 角通常分别采用符号 γ, α, 和 β;但是为了避免混淆于欧拉角这里使用符号 θx, θy 和 θz。任何 3 维旋转矩阵 都可以用这三个角 θx, θy, 和 θz 来刻画,并且可以表示为 roll, pitch 和 yaw 矩阵的乘积。是在 中的旋转矩阵 在 中所有旋转的集合,加上复合运算形成了旋转群 SO(3)。这里讨论的矩阵接着提供了这个群的群表示。更高维的情况可参见 Givens旋转。 角-轴表示和四元数表示
在三维中,旋转可以通过单一的旋转角 θ 和所围绕的单位向量方向 来定义。这个旋转可以简单的以生成元来表达:在运算于向量 r 上的时候,这等价于Rodrigues旋转公式:角-轴表示密切关联于四元数表示。依据轴和角,四元数可以给出为正规化四元数 Q:这里的 i, j 和 k 是 Q 的三个虚部。
⑥ 2、威胁狩猎方法
在我们讨论威胁狩猎的定义之前,让我们通过说明什么不是威胁狩猎来澄清一些关于这个概念的误解。首先,威胁搜索不同于网络威胁情报(CTI)或事件响应(IR),尽管它可以与网络威胁情报(CTI)或事件响应(IR)密切相关。CTI可能是一个很好的搜索起点。IR可能是组织在成功狩猎后的下一步。威胁搜索也不是安装探测工具,尽管这对提高它们的探测能力很有用。此外,它不是在组织的环境中寻找ioc;相反,你将寻找绕过已经被IoCs馈入的检测系统的东西。威胁搜索也不等同于监视,也不等同于在监视工具上随机运行查询。但是,最重要的是,威胁狩猎不是一项只能由一组精选的专家完成的任务。当然,专业知识很重要,但这并不意味着只有专家才能做到。一些威胁捕猎技术需要更长的时间才能掌握;有些是与事件响应和分诊共享的。这种做法本身已经存在多年,远早于它被称为“威胁狩猎”。进行狩猎的主要必要条件是知道问什么以及从哪里找到答案。
那么,什么是威胁狩猎?在第一个无白皮书关于狩猎的威胁,“谁,,,,为什么以及如何有效的威胁狩猎”(https://www.sans.org/reading-room/whitepapers/analyst/membership/36785),由罗伯特·李和罗伯·李在2016年,他们威胁狩猎定义为“专注和迭代方法寻找,识别、以及了解防御者网络内部的对手。”
让我们进一步扩展这个定义。首先,我们需要说明,威胁狩猎是人类驱动的活动。作为威胁情报,这也是一种积极主动的安全措施,因为这一切都是为了在为时已晚之前采取行动;也就是说,这不是一种反应性措施。威胁猎杀也就是不断地在组织的环境中寻找妥协的迹象。它是迭代的,因为它从其他安全活动中为自己提供服务,同时也为其他安全活动提供服务。另外,威胁狩猎是建立在入侵发生的假设上的。
在威胁狩猎中,我们假设对手已经在我们的环境中,而猎人的工作是尽快识别漏洞,以便将其损害降到最低。这个过程涉及到人类的分析能力,因为这取决于猎人找到入侵的迹象,绕过可能已经存在的自动检测过程。总之,威胁猎人的目标是缩短所谓的停留时间。
停留时间 dwell time 是指从对手侵入环境到被发现入侵之间所经过的时间。根据SANS 2018威胁狩猎调查,对手平均可以在受损环境中自由游荡90天以上。有一件很重要的事要明白,减少停留时间的战斗是无止境的。敌人将会适应我们的侦测率并将会改进他们的技术以便在不被察觉的情况下潜入我们的系统。社区和捕猎者将从他们的新技术中学习,并将再次减少停留时间,只要敌人的目标是我们组织的环境,这个循环就会继续:
因此,总结起来,我们可以说,威胁搜索是一种人为驱动的活动,它通过主动和迭代地搜索组织的环境 (网络、端点和应用程序), 以寻找破坏的迹象,以缩短停留时间,并最小化对组织的破坏影响。
此外,如果我们希望了解组织在试图检测某些技术时的可见性差距,威胁狩猎是有益的;它将有助于创建新的监测和检测分析;它可以导致发现新的敌对ttp,为网络威胁情报团队和社区提供信息;而狩猎本身可能会导致进一步的分析。
Sqrrl团队(https://www.cybersecurity-insiders.com/5-types-ofthreat-hunting/)区分了五种不同类型的搜索:数据驱动、intel驱动、实体驱动、TTP驱动和混合驱动。同时,这五种不同的类型可以分为结构化(基于假设)和非结构化(基于数据中观察到的异常):
Sqrrl团队(https://www.cybersecurity-insiders.com/5-types-ofthreat-hunting/)区分了五种不同类型的搜索: 数据驱动、intel驱动、实体驱动、TTP驱动和混合驱动 。同时,这五种不同的类型可以分为 结构化(基于假设)和非结构化(基于异常)威胁 捕猎者技能集到目前为止,我们已经想出了威胁捕猎的定义。我们已经提到过,威胁搜索并不是只有经验丰富的安全分析师才能做的事情。那么,每个威胁猎人都需要具备哪些技能呢?
由于威胁情报是狩猎的触发器之一,我们可以说,称职的威胁情报分析员必须至少对网络威胁情报的核心主题有基本的了解: 高级持续性威胁、恶意软件类型、妥协指标、威胁行动者的动机和意图,advance persistence threats, malware types, indicators of compromise, threat actor motivations and intents等等。此外,威胁猎手还需要了解攻击者将如何实施攻击。熟悉网络杀伤链和ATT&CK™框架将有助于这方面的工作。特别是,如果我们希望熟悉在不同技术环境(Linux、macOS、Windows、云、移动和工业控制系统)中进行攻击的方式,ATT&CK™框架将非常有用。这些技术(和子技术)提供的粒度允许任何分析人员更好地理解攻击是如何设计和以后如何执行的。
一般来说,在分析网络活动时,对网络的架构和取证有很好的理解是非常有用的。同样,执行威胁搜索的一部分是处理日志——大量的日志。与此相一致,我们可以说,威胁猎人需要能够识别网络活动和从端点和应用程序收集的数据中的不寻常模式。在这方面,熟悉数据科学方法和SIEMs的使用将会有所帮助。
我们将在第四章“映射对手”中深入讨论这个具体问题。在数据中观察到):
最后但并非最不重要的一点是,威胁搜索分析师需要对组织使用的操作系统以及它们将要使用的工具有很好的了解。
为了进行搜寻并能够发现偏离规范的情况,威胁搜寻者需要了解组织的正常活动(基线)是什么样子的,以及事件响应程序是什么。理想情况下, 负责狩猎的团队不会是负责响应事件的团队, 但有时,由于资源限制,情况并非如此。在任何情况下,团队都需要知道在发现 入侵后应该采取什么步骤,以及如何保存入侵的证据。
威胁猎手还需要善于沟通。一旦确定了威胁,就需要将信息适当地传输到组织的关键实体。猎人需要能够沟通以验证他们的发现,以及传递已经发现的东西的紧迫性和它可能对组织产生的影响。最后——稍后我们将深入探讨——威胁捕猎者必须能够有效地沟通如何实现投资回报,以确保威胁捕猎计划的继续。
3、痛苦金字塔
大卫·比安科的《痛苦金字塔》(https://detect-respond.blogspot.com/2013/03/the-pyramid-of pain.html)是一个在CTI和威胁搜索中都使用的模型。这是一种表示一旦你确定了对手的妥协指标、网络基础设施和工具,将会给对手造成多大的“痛苦”,从而改变他们的方式的方法:
最下面的前三层(散列值、IP地址和域名)主要用于自动检测工具。这些都是威胁行为者可以轻易改变的迹象。例如,一旦一个域名被公开,威胁参与者就可以简单地注册一个新域名。比改变域名更容易的是改变IP地址。域名之所以更令人头疼,主要原因是它们需要付费和配置。
哈希是一种加密算法的结果,该算法将原始信息(无论其原始大小如何)映射为另一个值:具有固定大小的十六进制字符串。
hash有几种类型(包括MD5、SHA-1、SHA-2和SHA-256)。哈希不仅是一个单向的过程——理想情况下,它不能从不同的文件产生相同的结果。对原始文件所做的任何微小更改都将导致生成不同的散列。这就是为什么威胁行动者更改与其工具相关的散列值并不重要。
为了更改网络和主机构件,攻击者需要付出更多的努力。这类指示符的例子包括注册表项、用户代理和文件名。为了更改它们,对手需要猜测哪些指示器被阻塞,并修改工具的配置。如果团队能够检测到他们工具的大部分工件,对手将被迫更改它。
想象一下,你花了很多时间开发一个软件,并在分配了很多资源之后根据你的需要对它进行调整,然后有一天你不得不放弃整个项目,开始一个新的项目。尽管这个示例场景可能有点过于极端,但理解为什么对手更改工具如此具有挑战性是很有用的。
金字塔的顶端是我们的战术、技术和程序(TTPs)。在回应这些ttp时,我们并不是在回应响应对手用作工具的东西;我们瞄准的是其核心; 也就是他们的行为 。发现 对手的技术和他们进行的方式 是他们最痛苦的,因为为了改变他们做事的方式,他们必须重新思考;他们必须学习新的做事方式,走出自己的舒适区,重新塑造自己,这转化为时间、资源和金钱。
威胁狩猎团队的组成和用于狩猎的时间将取决于组织的规模和需求。当一个专门的团队没有预算时,搜寻的时间将来自其他安全分析人员的工作时间表。在这种情况下,分析人员通常是SOC或事件响应团队的一部分。
所以,如果团队的资源有限,为了成功实施威胁狩猎计划,我们必须仔细计划和准备狩猎,并结合我们的过程和经验,以及我们正在使用的工具、技术和技术的丰富知识。在这里,David Bianco的威胁狩猎成熟度模型可以帮助我们确定我们所处的位置,以及我们需要做什么来发展我们的狩猎团队。
(1)确定我们的成熟度模型
所有组织都可以执行威胁搜索,但为了有效地执行,它们必须在必要的基础设施和工具上进行投资。然而,为了获得良好的投资回报,组织需要在他们的过程中足够成熟。如果团队不提供必要的技能、工具和数据,威胁捕猎计划的效果将是有限的:
威胁捕猎成熟度模型定义了用于对团队检测能力进行分类的五个级别:初始、最小、过程、创新和领导initial, minimal, proceral, innovative, and leading。该模型可用于确定组织处于哪个阶段,以及需要哪些步骤才能提升到另一个级别。该模型评估已建立的自动化水平、数据收集程序和数据分析程序。
最初阶段和最低阶段严重依赖自动检测工具,但在最初阶段,一些网络威胁情报被用于执行狩猎。
有两种类型的威胁情报来源可以用于威胁狩猎: 内部和外部 。 内部来源 可以是过去事件的记录或针对组织基础设施的侦察尝试。
外部来源 可以是威胁情报小组使用OSINT或付费供应商报告或反馈进行的分析。任何有关对组织环境的可能威胁的信息,如果不是来自组织本身,都被认为是外部的。
程序、创新和领导级别 都是由高水平的数据收集决定的,它们之间的区别取决于团队是否能够创建自己的数据分析程序,以及他们是否能够满足这些自动化程序,以避免重复相同的搜索。
有几种安全信息和事件管理(Security Information and Event Management, SIEM)解决方案可供选择,已经编写了一些文章,介绍了它们的工作方式以及如何选择适合组织需求的解决方案。在本书的后面,我们将使用一些使用Elastic SIEM开发的开源解决方案。您应该使用这种类型的解决方案来集中从系统中收集的所有日志,以帮助您分析数据。确保收集的数据质量是很重要的。低质量的数据很少导致成功的狩猎。
另一个好的起点是搜索已发布的可以合并到您自己的流程中的搜索过程。您还可以创建新的狩猎过程,同时牢记组织的需求和关注点。例如,您可以创建聚焦于与您的组织行业相关的特定威胁参与者的搜索流程。尽可能多地记录和自动化这些操作,以防止狩猎团队一遍又一遍地重复相同的狩猎。
记住,总是假设一个入侵已经发生,思考威胁行动者是如何操作的,为什么要这样做,依靠狩猎活动来开启新的调查线,并根据与威胁相关的风险级别来优先考虑狩猎。不断搜索;不要等待警报的发生。
威胁搜索过程的最早定义之一是由Sqrrl在他们称之为“威胁搜索循环”的内容中做出的
第一步是建立我们狩猎所依据的假设。通过这样做,我们可以使用我们可以使用的技术和工具开始调查。在执行分析时,威胁搜寻者试图发现组织环境中的新模式或异常。这一步的目的是试图证明(或反驳)假设。循环的最后一步是尽可能地自动化成功搜索的结果。这将防止团队重复相同的过程,并使他们能够集中精力寻找新的漏洞。在这个阶段,记录这些发现是一个重要的阶段,因为文档将帮助团队更好地理解组织的网络。对组织环境中什么是正常的,什么是不正常的有很好的把握,这将有助于团队更好地进行狩猎。
Dan Gunter和Marc Setiz在《进行网络威胁搜索的实用模型》(https://pdfs.semanticscholar.org/4900/ .pdf)中提供了一个更详细的模型,区分了六个不同的步骤,并强调了威胁搜索过程的迭代性质:
•目的:在进行威胁搜索时,应牢记组织的目标;例如,搜索可能受到长期业务目标的制约。
在这个阶段,我们需要说明搜索的目的,包括执行搜索所需的数据以及期望的结果是什么。
•范围:这一阶段包括定义假设,并确定我们想要从中提取数据的网络、系统、子网或主机。范围应该事先确定好,以减少可能干扰我们成功的“噪音”。它不能过于具体,因为我们可能会忽视环境中攻击者的存在。这个假设应该可以防止我们偏离狩猎,从而帮助狩猎者在从一个数据转向另一个数据时保持焦点。
•装备:在这个阶段,重点是如何做到。数据将如何收集?收集是否足够彻底?我们要怎么做分析呢?
我们如何避免偏见?在这个阶段结束时,威胁猎人应该对这些问题都有一个深入的回答。收集管理框架collection management framework (CMF)的实现可以帮助我们跟踪所收集的数据及其来源。
•计划审核:顾名思义,团队的负责人或者亨特将审查所有的计划,到目前为止已经完成,以确保狩猎将满足组织的目标,而团队所需的所有资源(人员、数据、工具和时间)成功进行狩猎。
•执行:执行阶段是指计划被批准后的搜索本身。
•反馈:此阶段与之前的所有阶段相关联。分析结果将有助于团队在未来以更高的效率进行狩猎。反馈阶段的目的是改进前面的所有阶段。它不仅帮助我们确定目标是否已经实现,而且还帮助我们确定团队可能陷入的任何可能的偏差,可能的可见性和需要修改的收集差距,是否正确地分配了资源,等等。
在这两个模型之上,Rodriguez兄弟Roberto (@Cyb3rWard0g)和Jose Luis (@Cyb3rPandaH)在2019年Insomni'hack期间提出了一种数据驱动的方法(https : //www. youtube. com/watch?v=DuUF-zXUzPs)。他们设计的过程还包括六个不同的阶段,幸运的是,他们还设计了四个开源项目,您可以使用它们来组织和执行您的狩猎。
罗德里格斯兄弟定义的六个阶段如下:
1. 定义研究目标:为了在执行数据驱动的搜索时定义研究目标,理解数据并将数据映射到对手的活动是很重要的。罗伯托·罗德里格斯提出了一系列优秀的问题,为了确定我们的研究目标,我们应该能够回答这些问题:
2. 数据建模:这个阶段的过程围绕着理解的数据从哪里来,将日志发送到数据湖咨询,通过创建数据字典和结构化数据,每个数据源的“需要映射到一个事件”。这个过程是非常有用的,如果你想真正了解你收集的数据。
OSSEM:为了帮助完成创建数据字典的繁重工作,Rodriguez兄弟创建了开源安全事件元数据Open Source Security Events Metadata (OSSEM),用于记录和标准化安全事件日志。这个项目是开源的,可以通过项目的GitHub库(https://github.com/OTRF/OSSEM)。
3. 模拟对手:对手模拟是红队在其组织环境中复制对手行为的一种方法。为了做到这一点,需要映射对手的行为,并将他们使用的技术链接在一起,以创建一个行动计划。MITRE ATT&CK™框架提供了一个如何创建基于APT3的仿真计划的示例(https://attack.mitre.org/resources/adversary-emulation-plans/)。
mordor:在这个狩猎阶段,罗德里格斯兄弟创建了魔多项目(https://github.com/hunters-forge/mordor),以JSON格式提供“由模拟对抗技术生成的预先记录的安全事件”。https://github.com/OTRF/Security-Datasets
4. 定义检测模型:支持基于步骤2中创建的数据模型的搜索,我们建立了执行搜索的方式。在前面的步骤中定义了如何进行检测之后,我们将在实验室环境中验证检测。如果我们没有得到任何结果,我们应该返回并回顾我们在前面步骤中所做的工作。
5. 验证检测模型:一旦我们对在实验室环境中获得的结果感到满意,并评估了数据的质量(完整性、一致性和及时性),我们就可以在生产中尝试我们的检测。有三种可能的结果:零结果,即对手的行为不在生产环境中;至少有一个结果,我们需要仔细查看结果,以确认漏洞;搜索的输出会产生大量的结果。最后一种情况通常意味着需要对我们的流程进行进一步的调整。
Helk:这是一个狩猎平台,由罗伯托·罗德里格斯设计,基于Elasticsearch, Logstash和Kibana。它还通过Jupyter笔记本和Apache Spark提供高级的分析功能。你可以在其GitHub知识库中找到更多信息(https://github.com/Cyb3rWard0g/HELK)。
6. 记录和交流发现:如果您正确地遵循了前面的步骤,您可能已经完成了一半的工作。记录搜索过程应该在执行搜索的同时进行。
威胁狩猎剧本:这个开源项目由罗德里格斯兄弟维护,旨在帮助文档项目和共享威胁猎人概念,开发某些技术,并建立假设。你可以在项目的GitHub仓库(https://github.com/hunters-forge/ThreatHunter-Playbook):
目标狩猎综合威胁情报(TaHiTI)方法是几个荷兰金融机构共同努力的结果,以帮助建立一个共同的方法,以威胁狩猎活动。
顾名思义,TaHiTI的方法与威胁情报密切相关。
它是一种方法,用于以 威胁情报提供的对手信息为起点 进行狩猎,使用威胁情报来上下文化在狩猎中发现的内容,甚至为对手找到相关的已知ttp(旋转)并驱动新的狩猎。此外,按照这种模式,捕猎本身可以用来丰富威胁情报,因为它可能被用来发现与对手有关的之前未知的ttp和IoCs。
TaHiTI也分为八个步骤,同时可以分为三个阶段:
阶段1:初始化
a. 触发狩猎
b.创建抽象
c.存储代办事项backlog
阶段2:狩猎
d.定义/重新定义
(1)丰富调查抽象
(2)确定假设
(3)确定数据来源
(4)确定分析技术
e.执行
(1)获取数据
(2)分析数据
(3)验证假设
阶段3:最后
f.移交
g.文档化发现
h.更新代办事项
可视化过程如下:
第一阶段:启动 Initiate
在此阶段,搜索的触发器将转换为调查的摘要,并存储在待定项中。塔希提的方法区分了五个主要的触发类别:
•威胁情报
•其他狩猎调查
•安全监视
•安全事件响应: 从历史事件和红队演习中收集数据。
•其他: 例子包括找出什么是皇冠宝石以及它们如何被破坏,研究MITRE ATT&CK™框架,或者只是猎人的专业知识。
调查摘要是对假设的一个粗略描述,在接下来的阶段将会被完善。建议您包含关于创建日期、摘要、搜索触发器和优先级级别的信息。
第二阶段:狩猎hunt
该方法的第二阶段指的是实际 的狩猎;也就是说,调查假设。 在执行之前,必须对假设进行定义和细化。这意味着最初为狩猎而创造的摘要将会被更多的细节所扩展,然后,在调查过程中发现新的证据。重要的是要包括数据源、选择的分析技术和确定的范围。
我们掌握的关于威胁情报的信息,分配的资源,以及狩猎的分类也应该包括在内。
对正在执行的狩猎的分析将用于验证最初的假设。每次狩猎都有三种可能的结果:
•假设被证实 ,安全事件被发现。
•假设被推翻。 这种状态是很难达到的,因为没有找到某样东西并不一定意味着它不存在。在声明假设已经被推翻之前,猎人必须真的确定他们没有错过任何可能的场景。
•不确定的结果 。当没有足够的信息来证明或反驳假设时,搜索就会达到这种状态。在这个阶段,有必要继续完善假设,直到达到状态1或状态2。
阶段3 - Finalize
TaHiTI方法的最后一个阶段是记录你的发现。文件必须包括狩猎的结果和从中得出的结论。这可以包括改进组织安全的建议,也可以改进团队的狩猎过程。一旦编写完毕,这些文档需要在相关各方之间共享。报告可能需要根据不同的接收者进行调整,关于报告的信息可能需要根据他们的安全许可进行编辑或分类。
TaHiTI区分了威胁狩猎调查可能引发的五个过程:
•安全事件响应 :启动IR进程。
•安全监控: 创建或更新用例。
•威胁情报: 发现一个新的威胁行动者的ttp。
•漏洞管理: 解决发现的漏洞。
•对其他团队的建议: 向其他团队发出建议,以改善整个组织的安全状况。
在这一章中,威胁捕猎的主要特征之一是它是一种由人类驱动的活动,它不能完全自动化。这个过程的核心是生成狩猎假设,这是指组织环境中的威胁符合威胁猎人的预感,以及如何检测它们。假设部分基于观察,即我们注意到偏离基线的情况,部分基于信息,这些信息可能来自经验或其他来源。
完善这个假设对于获得好的猎物是至关重要的。一个定义不明确的假设将导致错误的结果或结论。这很可能会对组织产生负面影响,因为防御和可视化漏洞将被忽略,并为对手提供一条安全通道。缺乏足够的可视化是一个组织最大的敌人,因为这会产生一种错误的安全感,从而引发错误的假设,认为没有发生入侵。
一个定义明确的假设必须是简明和具体的。它必须是可测试的,不需要假定时间和资源的无限可用性。一个猎人无法验证的假设是没有用的,所以必须考虑他们使用的工具和所需的数据。它不能太宽泛,也不能太具体,但它必须指定数据将从哪里收集,以及将搜索什么。
Robert M. Lee和David Bianco写了一篇关于生成成功威胁狩猎假说的SANS白皮书(https://www.sans.org/reading-room/ whiteppapers /threats/paper/37172)。在本文中,他们区分了三种主要的假设类型:
•基于威胁情报的假设: 这类假设考虑了 良好的ioc; 也就是说,合理地将破坏的指标、威胁状况和地缘政治背景结合起来。这种假设的主要危险在于,我们过于关注IOCs,所以最终会生成低质量的匹配。最好关注威胁行动者的ttp,而不是包含数百个指标的提要。
•基于态势感知的假设: 这类假设依赖于我们识别组织中 最重要的资产。这也被称为皇冠宝石分析 。猎人试图弄清楚对手可能在组织环境中寻找什么, 包括他们的目标 。从这个角度来看,威胁猎人必须考虑他们需要什么类型的数据和他们要寻找的活动。重要的是要记住,并非所有事情都应局限于网络领域。在执行情景感知假设时,还应该考虑人员、流程和业务需求。
•基于领域专业知识的假设: 这类假设是威胁猎人专业知识的产物。 猎人产生的假设是由他们自己的背景和经验决定的。 猎人过去进行的狩猎也会影响他的假设。对于记录已经获得的经验教训并与团队的其他成员分享这些经验教训,文档化过程在这里特别重要。有经验的猎人必须非常清楚偏见。尽量避免不良的分析习惯,并实施偏见预防技术。
⑦ 如何评价Word2Vec作者提出的fastText算法
astText简而言之,就是把文档中所有词通过lookup table变成向量,取平均后直接用线性分类器得到分类结果。fastText和ACL-15上的deep averaging network [1] (DAN,如下图)非常相似,区别就是去掉了中间的隐层。两篇文章的结论也比较类似,也是指出对一些简单的分类任务,没有必要使用太复杂的网络结构就可以取得差不多的结果。
文中实验选取的都是对句子词序不是很敏感的数据集,所以得到文中的实验结果完全不奇怪。但是比如对下面的三个例子来说:
The movie is not very good , but i still like it . [2]
The movie is very good , but i still do not like it .
I do not like it , but the movie is still very good .
其中第1、3句整体极性是positive,但第2句整体极性就是negative。如果只是通过简单的取平均来作为sentence representation进行分类的话,可能就会很难学出词序对句子语义的影响。
从另一个角度来说,fastText可以看作是用window-size=1 + average pooling的CNN [3]对句子进行建模。
总结一下:对简单的任务来说,用简单的网络结构进行处理基本就够了,但是对比较复杂的任务,还是依然需要更复杂的网络结构来学习sentence representation的。
另外,fastText文中还提到的两个tricks分别是:
hierarchical softmax
类别数较多时,通过构建一个霍夫曼编码树来加速softmax layer的计算,和之前word2vec中的trick相同