原创 | 漏洞挖掘之初探

  • A+
所属分类:安全文章

作者 | 长扬科技(北京)有限公司  陈盼音 

那么,什么是漏洞挖掘呢?

从某个角度来讲,我们可以将漏洞挖掘工作比作玩迷宫游戏,不同的是,这个迷宫与我们平时所见的游戏中的迷宫略有不同:

( 1 ) 你无法立即看到它整体的外观

( 2 随着漏洞挖掘工作的深入,这个迷宫的p形状逐渐扩大

( 3 你将会拥有多个起点及终点,但是无法确定这些点具体在哪里

( 4 最终这个迷宫可能永远也无法100%的完整,但是却能够弄清楚A点至B点的一条完整路径。

如下图,从刚开始的模糊,直到呈现的越发清晰。

原创 | 漏洞挖掘之初探
原创 | 漏洞挖掘之初探

具体一点的描述,我们可以将漏洞挖掘工作归结为三个步骤:

( 1 枚举程序入口点(例如:与程序交互的接口)

( 2 思考可能出现的不安全状态(即漏洞)

( 3 设法使用识别的入口点到达不安全状态

即是说,在这个过程中,迷宫是我们研究的应用程序,地图是我们堆程序的理解程度,起点是我们的入口点(交互接口),终点为程序的不安全状态。

所谓入口点,既可以是UI界面上直观可见的交互接口,也可以是非常模糊与透明的交互接口(例如IPC),以下是部分安全研究员较为感兴趣的关注点:

( 1 应用程序中比较古老的代码段,并且这一部分随着时间的推移并没有太大的变化。

( 2 应用程序中用于连接由不同开发团队或者开发者开发的程序模块的接口部分

( 3 应用程序中那些调试和测试的部分代码,这部分代码本应在形成Release版本时去除,但由于某些原因不小心遗留在程序中。

( 4 C-S模式(带客户端和服务端)的应用中客户端及服务端调用API的差异部分(例如网页表单中的hide属性字段)

( 5 不受终端用户直接影响的内部请求(如IPC)

我认为从攻击面上来划分可以讲漏洞分为两大类,通用漏洞(General)和上下文漏洞(contextual)。通用型漏洞是指在我们对应用的业务逻辑不是非常熟悉的情况下能够找出的漏洞,例如一些RCE(远程代码执行)、SQLi(sql注入)、XSS(跨站)等。上下文漏洞是指需要在对应用的业务逻辑、认证方式等非常熟悉的情况下才能找到的漏洞,例如权限绕过等。

在漏洞挖掘的过程中,我首先会根据经验优先考虑研究测试那些可能会对应用产生巨大威胁的部分。一些轻量级威胁检测模型(如STRIDE)可以辅助我们做出这样的决策。

下面我讲结合事例,简单复盘一下。

背景

软件安装后,计算机打开了不明作用的端口,才有了接下来的内容。

软件背景

myPRO是一个专业的HMI / SCADA系统,主要用于工业过程的可视化和控制。myPRO作为一种创新并有效的解决方案,适用于任何需要不间断运行的行业。该软件涉及:造纸机、制造机床、生产线、智能城市、楼宇自动化、气体储存、家庭自动化、矿业、生产线、原水处理、污水处理、交通管制、水电站控制等。myPRO可以提供可靠的监管,友好的用户界面和卓越的安全性。它支持Windows OS(32/64位),MacOS X和Linux(32/64位)平台。

漏洞简介

myPRO某版本下,安装成功后,会自动在后台开启ftp服务,通过对其启动程序进行逆向,发现该ftp服务器的用户名和密码信息以硬编码的形式保存在文件中。使用授权帐户连接到FTP服务器的任何人都可以将文件上传或下载到运行myPRO软件的服务器上。

技术环节

首先,myPRO在安装后监听了一些端口,详见下图。

使用netstat命令可以获取有关端口及其上运行的服务的信息。从图片中可以看到,在安装myPRO时,许多端口处于打开状态。

原创 | 漏洞挖掘之初探

通过逆向分析,可以定位到具体的漏洞位置,文件位置是

mySCADA.appContentsmyscadabin,文件名称是myscadagate。具体漏洞如下图所示,二进制代码内存中的位置是000000010003B535。从下面的图片可以看出,用户名myscada和密码Vikuk63就存在于源代码中。

原创 | 漏洞挖掘之初探

接下来就可以使用任何FTP客户端连接到myPRO服务器的2121端口来获得访问权限,可以进行增删改查、上传文件或列出目录等操作。

原创 | 漏洞挖掘之初探



转载请注明来源:关键基础设施安全应急响应中心

原创 | 漏洞挖掘之初探

本文始发于微信公众号(关键基础设施安全应急响应中心):原创 | 漏洞挖掘之初探

发表评论

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