网闸管理软件安全性分析

网闸管理软件安全性分析

时间:2020-09-18 作者:安帝科技

背景

随着计算机技术、通信技术和控制技术的不断发展,传统的工业控制系统领域经历了前所未有的变化,从传统的工业控制系统向网络化的方向发展,这种网络化浪潮扩大了工业控制系统领域的发展空间,给工业控制系统带来了新的机遇,同时也给工业控制系统带来了新的网络安全威胁。

在这些威胁中,安全从业公司也在不断地尝试着各种努力,其中最主要的就是网闸这类技术,它既满足了工业系统需要联网的需求,同时又满足了工业系统免受传统网络的安全威胁。

网闸这么好,难道自身就没有安全隐患吗?安全从业者的安全黑洞思想立刻就涌现了出来,你保护网络,谁来保护你,废话不多说,搞它。

我们本着遵纪守法,支持国产,尊重产权的理念,对这款产品的相关软件安全进行研究。如下图,我们是通过正规渠道拿到授权的。

免责声明:本文只负责输出破解技术和理论,且无产品的指向性,所以请不要用本文所提到的技术实施非法活动,如有使用该技术实施非法用途所产生的后果与本文无关。本文所研究的产品问题已通知厂商进行修复,文章主旨在于勉励厂商提高自身产品的安全性。

产品介绍

在研究网闸的安全性之前,我们先要简单了解一下网闸的基本原理,它是通过管理软件下发开闸或闭闸策略,然后网闸设备根据下发的隔离策略对经过的所有数据报文进行检测,对符合要求的数据报文执行放行,对不符合策略要求的数据报文进行拦截。网闸的通用部署图如下:

图片来自网络

本次实验的这台网闸设备共由两部分组成,外网部分和内网部分,外网和内网分别有各自的console口和两个网口,而这两对网口是一一对应的。管理员可以通过网线连接管理口,管理该设备。

软件破解方法1

由于该管理软件的特点非常明显,所以不能向大家展示完整的软件界面,注册页面截图如下:

启动管理软件,点击帮助,打开注册页面。软件通过获取电脑信息生成产品序列号,然后将序列号发给厂商,厂商通过产品序列号生成注册码,填入正确的注册码软件注册成功。

软件破解的思路在于,找到软件注册逻辑的代码区域,然后通过od加载程序,修改注册逻辑代码即可完成破解。

通过输入错误注册码查看软件返回的结果,错误注册码返回结果如下图:

1、 使用od加载程序
2、搜索“请输入正确的注册码”字符串,并下断点

3、运行程序,并输入错误注册码,使od停留在断点处

聪明的同学估计已经发现,在od右侧窗口红色打码的地方已经看到了类似注册码的东西,那这串字符是不是正确的注册码?我们先输入进入试试,结果注册成功。

软件破解方法2

软件破解本该到此结束,但本着输出更多有关软件破解的技术,我们又在另一台机器上安装了该程序,然后思考有没有其它破解的方法。说干就干。

在上面 “请输入正确的注册码”的断点处,我们注意到在它的上方有“软件已注册成功”的字符串,那么我们是不是可以这样想,这段代码附近就是软件注册成功与失败的代码判断区,如果是的话,那我们是不是可以通过修改注册成功与失败的判断条件,使代码永远不进入注册失败的判断范围,这样就可以达到软件破解(软件注册成功)。

从上图可以看出,程序跳转至“请输入正确的注册码”是通过012AB3B7处实现的,也可以从图中最下方看到。找到关键跳转之后,我们就可以通过修改代码,使代码不进行这一关键跳转即可。在汇编中,使代码不发生跳转有很多种方法,常用的就是用NOP进行填充。这里我们就使用NOP修改关键跳转这一行。

用NOP填充跳转之后,od汇编区的代码会变成红色,同时可以看到之前跳转的提示红线也消失了,说明代码是从上到下的执行,将不会发生跳转。修改完代码后,我们可以将修改后的程序保存出来,然后运行修改后的程序看看破解后的效果如何。

运行修改后的程序查看注册情况,结果当然是注册成功。

软件防破解保护

从上面的实验可以看出,安全问题似乎永远不是按照产品设计的初衷而消失的。大家有没有经常听到这样的话,我的软件是加密的,不可能被破解;我的软件需要获取电脑信息,生成序列号,然后通过服务器端生成注册码,没有服务器端生成的注册码是不能注册成功的;我的软件……

软件破解与软件防破解都是通过了解对方的思路,然后寻找封堵方法的过程。从这一句话中就能看得出来,破解与防破解就是道高一尺,魔高一丈的过程,没有哪一种方法可以做到完美。只是在增加对方的成本而已,软件防破解的思路大体上分这么几种:

1、暗桩,通过在程序中的不同位置,使用不同算法,随机启用软件校验,从而达到软件校验。

2、加壳,一般都是通过反调试器、反虚拟机、垃圾指令、代码虚拟化(或者混淆)等方法,使破解者不能使用调试工具正常执行程序流程。

上面提到的每一种技术都够写一本书,所以这里就不再深入,有兴趣的同学可以持续关注我们,我们会持续输出各种与安全相关的内容。