如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

  • A+
所属分类:逆向工程

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

01

工控设备中的暴力破解漏洞概述


此处的工控设备是泛指的所有的工控相关的设备,比如PLC、SCADA、防火墙、交换机、管理系统等等。暴力破解漏洞简称“爆破”,是WEB漏洞中比较常见的一类漏洞,利用此类漏洞可以直接进入到相应系统,甚至往往都可以拿到系统管理员权限或者webshell权限。

02
工控设备中的暴力破解漏洞案例

由于工控固件设备的特殊性,有90%以上的暴力漏洞都是存在于登陆功能,所以本文主要以此功能点的不同情况来展开叙述。下面先来看一些互联网上收集到的实际案例。

某电网电力调度控制中心(后台可爆破—存在N多弱口令) 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

暴力破解出账号密码,成功进入系统,直接影响到众多工控相关系统。

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

国内某大型风电工控系统应用配置失误
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

暴力破解成功,进入系统,再通过上传漏洞,成功获取webshell权限。

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

03
工控设备中的暴力破解漏洞的挖掘

前面说到过,由于工控固件设备的特殊性,在工控WEB系统中的暴力破解漏洞中,有90%以上都是存在于登陆功能。所以这里主要说的是如何对此类漏洞进行挖掘和检测。

通过分析发现,在工控WEB系统中,有70%以上的登陆功能的数据包,是对密码(或者账号密码等参数)的数据进行了加密处理的,但是这种加密大都是基于前端js代码的那种hash加密。还有一部分参数引入了一个随机的token参数用于校验,当然还有的是不但有token校验,还进行了密码等参数的加密。

关于如何去抓包,以及如何去进行暴力破解,介于《网络安全威胁信息发布管理办法》的规定,此文章亦不便进行详细的描述,有兴趣的朋友请自行百度搜索。

这里只是对于工控web系统经常遇到的几种暴力破解情况,进行分析说明,以便于大家更加深刻的了解此类漏洞的危害。

第一种:没有任何加密和校验,或者有页面验证码,但是验证码可以重复使用,这种直接抓包导入字典,设置好变量参数,再进行重放操作就可以了。

第二种:对部分参数进行了加密操作,比如对密码进行了md5加密,或者其他自定义的加密。

第三种:有随机的token参数进行请求校验的情况。

这里我用下面的案例,来分析说明这类情况下,要如何去导入字典暴力破解。

以下是某工控web系统的登陆功能,抓包POST请求数据如下。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
通过分析得知,这里的hfK参数是起到的token校验功能,txtUN是用户名,然后txtPD参数是对密码进行了一定自定义的加密操作。

● 首先来说说如何获取token

通过观察发现,token是每次刷新页面自动生成的,会出现在页面的返回数据中。所以只需要把对应的返回数据中的字符串,作为字典放到指定的变量参数上即可,这个很多人不知道要如何操作,其实burp就自带了这个功能,具体burp设置如下。

将数据包发到Intruder选项准备爆破,然后设置好变量。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
注意这里的是,如果变量不是1个的话,Attack type的方式一定要选Pitchfork 如下图:

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

而且对应的线程一定要选1,也就是单线程,因为这种token参数,也就是这里的hfK参数,是通过刷新一次页面随机生成进行校验的,再次刷新后,之前的参数便会失效,同时生成新的校验参数,如果不用单线程的话,会导致获取到的参数再被使用的时候已经失效了。

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

接着去Grep - Extract中点击Add
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

在源码里找到指定的token参数,你会发现上面已经自动生成了正则规则,选好后点击OK保存设置。 

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
然后再去对应的Payload字典处,将Payload type选项选择为如下图所示的Recursive grep设置即可。 

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

经过上述的操作后,关于随机token校验的这种限制,就已经可以绕过进行暴力破解了。效果如下图,会自动获取返回数据中新的token字符,再将其赋值到下一次请求的参数中进行自动校验。 

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

● 下面来说说,参数加密的情况怎么处理

比如这里的txtPD参数是进行了加密,我们首先去源码中搜索登陆函数login的相关代码。 

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

发现这里是执行了一个encMe的函数,参数是密码和用户名,然后追踪这个函数 

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
继续追踪 stringToHex 函数

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

这样就可以获取到整个加密算法的核心代码,之前这种情况,我都是用自己写的脚本,去直接把算法提取出来进行加密转换的,然后生成一份对应的加密后的字典,再把加密后字典导入进去进行暴力破解的。

可以在浏览器控制台直接写代码调用指定函数,如下图。 

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

也可以自己写个小程序,提取出整个加密算法,再去专门进行处理。 

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

当然两种方法,都是需要具备一定的代码读写能力的,所以这里再给出一种不怎么需要代码功底,的相对比较简单的方法。那就是用burp插件jsEncrypter,配合phantomjs的一种方法。

首先下载以下2个程序。
jsEncrypter.jar  这是一个burp插件
phantomjs.exe  这是一个WebKit浏览器引擎

jsEncrypter.jar 的下载地址 
https://github.com/c0ny1/jsEncrypter

下载其中最新的zip包,然后里面有3个文件。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

其中jar直接以burp插件的方式去安装,方法很多可以自己百度。这里给提供个别人写的教程,可以参考。 

https://blog.csdn.net/weixin_40412037/article/details/103648034

安装OK后,这里会多出一个插件的选项。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

接着需要下载 phantomjs.exe   
https://phantomjs.org/download.html

然后将phantomjs.exe和上面zip包里的phantomjs_server.js放到一个文件夹内。

下面就是如何把网页页面的加密过程,转换成这个插件可以支持并使用。首先从源码中找到最外层的加密函数,如下:
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

接着通过搜索关键字,找到了相应的加密算法所在的js文件,然后直接右键将js保存下来(如下图的security.js)。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

然后将这个下载的js文件放在和
phantomjs_server.js的同一个目录里。

下面我们用编辑器打开phantomjs_server.js 去编写代码,可以看到,这个加密很简单,就是将用户名和密码进行了一次encMeD的加密。

那么我们就可以像如下方式写入代码。首先调用那个下载的js文件,其次写入加密代码,这里的payload变量对应的就是对应的burp的字典,newpayload变量对应的就是执行了相关加密函数后输出的内容。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

这样就可以固定用户名去破解密码,如果是固定密码破解用户名的话,把参数反过来写,是不是觉得很简单呢。

这里肯定就有人问,那能不能用户名和密码同时进行破解?当然可以,不过就需要自己写代码去处理下字典了。

比如把字典以 admin----123456 的格式导入,然后相应代码去用split函数,如下图这样处理下就可以了。这里注意因为加密函数的第一个参数是密码,所以需要把payload[1]写在前面。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

总之,payload这个对应的就是burp程序,暴力破解时候所用的字典,在遇到其他实际的情况时候,有代码基础的话可以自定义修改。

这种方法的好处就是不用去层层追踪加密过程,只需要保存对应的加密js文件,然后直接调用最外层的加密函数就可以了。

这里算法写好了,下面就要用到 phantomjs.exe 程序了,首先打开cmd,然后cd到phantomjs.exe所在文件夹目录。执行如下指令即可。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

这时候再去burp的插件选项位置,点击Connect,可以看绿色的True,然后点击test可以直接测试加密。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
这是这个插件的一个功能,可以直接导入字典进行批量加密,另一个功能就是可以直接在暴力破解的时候,在对应变量的设置中选择。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

选择设置成功后保存,如下图。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

设置好之后再去爆破,这样就可以直接爆破那种含有加密参数,或者token校验的数据请求了。我这里直接演示的是一个同时进行了token参数校验,以及密码参数加密的情况,可以看到,这个方法也是完全可以绕过限制去成功暴力破解的。
 
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
如上图,根据length可以判断爆破出的正确账号密码,如果觉得这样看着不太直观,也可以自行给数据包再添加一个变量,将未加密的字典也同步导入一下用于标记即可。

04
总  结

虽然工控设备一般情况都是网络和物理隔离,但是也不能忽视工控设备中的WEB安全问题,如果被恶意利用,危害也是比较大的。


洞的主要的风险点


获取某些工控WEB系统的管理权限,比如某些SCADA系统、工控路由器交换机管理系统,以及某些自开发的工控WEB管理系统。在获取到某些WEB系统、WEBSHELL权限后,一步步深入攻击,从而获取到其他同服务器、同IP网段的系统及设备的权限,甚至最终获取到上位机、工控生产系统的权限等。


该漏洞的防御修补措施


a 如果用验证码校验,一定要保证验证码是不能重复使用的。

b 对于密码错误的次数做限制,对请求的频率做判断。

c 重要系统进行多重校验,比如检测到登陆请求,是在非常用设备、ip环境的时候,需要进行二次校验操作。


备注:部分案例及截图来自于互联网,如有侵权,请联系告知。

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
威努特简介
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

北京威努特技术有限公司(以下简称“威努特”), 是国内工控网络安全领军企业、全球六家荣获国际自动化协会安全合规学会ISASecure CRT Tool认证企业之一和亚太地区唯一国际自动化学会(ISA)全球网络安全联盟(GCA)创始成员。

威努特作为国家高新技术企业,以创新的“白环境”整体解决方案为核心,自主研发了全系列工控网络安全专用产品,拥有52项发明专利、50项软件著作权、52项原创漏洞证明等核心知识产权。积极牵头和参与工控网络安全领域国家、行业标准制定,受邀出色完成新中国70周年庆典、中共十九大、全国两会等重大活动的网络安保任务,被授予“国家重大活动网络安保技术支持单位”,得到了中央网信办、公安部、工信部等国家政府部门的高度认可。迄今已成功为电力、轨道交通、石油石化、军工、烟草、市政、智能制造、冶金等国家重要行业1000多家工业企业提供了全面有效的安全保障。

威努特始终以“专注工控,捍卫安全”为使命,致力于为我国关键信息基础设施网络空间安全保驾护航!

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇
渠道合作咨询   张先生 18201311186
稿件合作   微信:shushu12121

如何挖掘工控设备的WEB漏洞——暴力破解漏洞篇




发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: