首页
社区
课程
招聘
[原创]从安全设计角度看网络验证
发表于: 2020-4-9 23:13 7763

[原创]从安全设计角度看网络验证

2020-4-9 23:13
7763

客户端指的是软件这一边的安全性,一些安全性缺失导致破解频出。

    通信不加密可以直接让攻击者不修改软件的情况下,劫持流量来进行破解:


安全措施:加密数据流量。


    由于个人软件的兴起,越来越多网络验证如雨后春笋不断冒出来。但是由于验证的作者个人安全意识水平参差不齐,导致有些验证作者根本不懂安全,又何谈防破解?本文将从安全设计的角度来谈谈一些网络验证历史上曾出现的漏洞和简单的防御措施(本文出现的漏洞全部已被修复)。
      对于网络验证行业来说,由于不同网络验证作者的技术栈,使用开发语言多种多样,有java,php,asp甚至是易语言开发的网络验证,但是无论用什么开发语言,由于安全意识的缺乏导致的安全漏洞还是层出不穷。

       sql注入漏洞拥有悠久的历史,稍微有些开发经验的开发者很容易能避免出现这类问题,但是在有一些网络验证中仍然出现。
 有直接在充值卡号进行注入的:

有些可以直接在验证客户端直接注入:

  sql注入漏洞轻则数据泄露,重则数据被修改,甚至远程代码执行,对于这类漏洞开发人员一定重视起来。
  安全措施:过滤或者屏蔽恶意的注入代码(sql语句预编译也能很好解决此类问题) 

  这类漏洞对于验证的开发人员最容易出现,因为大多数开发者会忽略前端的安全,导致很多网络验证都出现过类似的问题,这里就不一一列举:

 攻击者可以注入恶意的用户名,来劫持软件作者后台的管理权限,甚至可以影响到验证作者管理软件作者的后台。
 安全措施:  对要显示到前端的字符串进行有效地转义。


    为了增加软件破解成本,验证作者会支持软件作者自定义的一些变量或者远程函数,这类功能往往会出现一些逻辑设计问题,比如有些网络验证会
会让用户自定义javascript函数来让软件去远程调用。但是没有考虑到eval之类的全局函数,导致攻击者可以恶意构造请求包获取自定义的远程函数的源代码:


以下是危险的JavaScript全局函数列表:

甚至有些远程函数是设计成直接调用php语句,由于过滤机制不严谨,导致恶意的软件作者可以在验证服务器上执行任意代码。
安全措施:  过滤敏感函数,可以使用docker技术运行远程函数,与宿主机隔离。

0x03 横向越权


    很多网络验证在设计初期没有处理好验证作者之间的关系,在数据库操作时没有加上限定语句,导致一个软件作者可以修改另一个软件作者的信息,比如为其他软件作者添加卡密,添加或者删除其他软件作者的用户等。
如下,某个所谓军工级加密的网络验证,可以为其他软件作者的软件添加用户,并且增加时长:

安全措施:数据库操作时增加限定语句

0x04 CSRF攻击


    很多网络验证在设计初期没有处理好验证作者之间的关系,在数据库操作时没有加上限定语句,导致一个软件作者可以修改另一个软件作者的信息,比如为其他软件作者添加卡密,添加或者删除其他软件作者的用户等。
如下,某个所谓军工级加密的网络验证,可以为其他软件作者的软件添加用户,并且增加时长:

    在网络验证实际测试中,CSRF漏洞出现得特别多,这类漏洞通过结合社工,比如让一个已登录得软件作者点击一个恶意的网站中的链接即可获取或者修改后台信息,比如隐蔽性比较高的就是获取软件的所有卡密: 
  去掉Referer字段,发现仍然可以获取到卡密列表,说明存在CSRF漏洞 :
安全措施:对Referer字段校验或者加crsf-token。 
 
-------------前面说了有的网络验证会用易语言去实现,那么这类网络验证又存在什么问题呢? ------------------

    有些网络验证为了提供下载文件的能力,会开放文件下载接口,去下载特定目录下的文件,用户只要提交文件名就可以返回文件数据,但是由于对文件名没有校验,导致目录穿越,可以下载远程主机的任意文件。
字母盾历史上出现的漏洞:

安全措施:过滤“..”等恶意字符

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-4-12 10:43 被wmsuper编辑 ,原因: 增加CSRF内容素材
收藏
免费 8
支持
分享
最新回复 (8)
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
只能说网络验证这个瓜很多人想去吃,所以水平层次不齐。很多甚至连基本的PE格式都搞不清楚也要写个一键集成之类的东西,大多数还是调用的vmprotect。个人觉得如果真要写个网络验证的话,光谈强度的话,一个自有高强度的VM是必不可少的,另外还需要提供各种SDK来给用户增加与验证的互通性,也就是LZ所说的耦合性。再就是核心的一些验证机制一定要动态动态动态。一个好的网络验证需要更多的磨练,攻防是永无止境的。以上是个人观点,有什么不对还请指教。
最后于 2020-4-13 12:38 被Rookietp编辑 ,原因:
2020-4-10 02:11
0
雪    币: 2040
活跃值: (4950)
能力值: ( LV13,RANK:278 )
在线值:
发帖
回帖
粉丝
3
来顶帖,没想到到哪都看得到楼上的身影。
2020-4-10 09:07
0
雪    币: 220
活跃值: (163)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
期待晴天师傅带领探索更多的知识,彩笔顶帖。
2020-4-12 10:58
0
雪    币: 186
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
整理得很到位, 概括了大多数漏洞, 一个高强度的网络验证自研虚拟机是必不可少的。SProtect网络验证貌似没有上榜呢
2020-4-12 11:01
0
雪    币: 149
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
彩笔顶帖。
2020-4-12 18:09
0
雪    币: 205
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这些素材应该是1年前的,因为目前 极限云倒闭了、核盾后台域名换了
2020-4-12 18:18
0
雪    币: 57
活跃值: (2433)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
新知识有增加了
2020-4-14 14:27
0
雪    币:
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
9
感谢博主分享,我理解到了网络授权系统的重要性,以及破解和反破解技术在对抗中的持续成长​。在此过程中,我注意到了一些关键问题,如明文通信、耦合性缺失、算法缺陷和虚拟机强度缺失,这些都可能导致软件被破解。此外,我也期望未来会有更好的网络验证产品来保护合法的中小软件开发者​。

而飞天诚信公司生产的Rockey加密锁产品可能就是这个解决方案。每个Rockey 加密锁都含有全球唯一的硬件ID,开发者可以用它来识别设备。这个硬件ID在生产过程中被烧入加密锁中,无法更改。此外,Rockey加密锁还提供了自动壳体加密工具,可以使用精心设计的壳体加密技术来保护可执行程序,无需额外的开发工作。它还支持多种软件编程接口,如ASM、ASP/PHP、Delphi、PowerBuilder、Python、Fortran、Java、RealBasic、Oracle、SQL2000、FoxPro、VB、VBA、VC、C#和VB.NET等​4​。

另外,Rockey加密锁还非常灵活,我们可以根据需要定制外壳、颜色、标签以及印刷/激光雕刻等​5​。这也意味着我们可以根据自己的需求和品牌形象来定制自己的加密锁。

我认为,这个加密锁产品可能是一个非常好的解决方案,可以帮助我们解决博客帖中提到的一些问题,如明文通信、耦合性缺失、算法缺陷和虚拟机强度缺失等。我个人非常期待看到这种产品在未来的应用和发展。
2023-5-22 15:49
0
游客
登录 | 注册 方可回帖
返回
//