DNF外挂对抗学习记录

First Post:

Last Update:

Word Count:
1.5k

Read Time:
5 min

DNF外挂对抗

ref: https://km.woa.com/articles/show/532979?kmref=search&from_page=1&no=5

DNF 是恶意漏洞的重灾区
卡概率,中彩票。 发放奖励BUG
拍卖行复制物品
无中生有,拍卖行上架的BUG
退出卡奖励,领取和发放BUG

DNF外挂

通用外挂
硬件外挂
定制外挂

通用外挂

通用外挂

调试器(OD、Ollydbug),静态分析(IDA、)CE,协议抓包,模拟按键,变速器

多变种下的共性特诊之CE工具
共性特征:程序窗口整体布局
找共性的维度。

按键精灵

Q语言开发,(VB script 脚本开发)基于Com插件功能开发实现。
分析Com调用合法性判断,找打如下特征。

PE文件头初始化。
初始化 + 0x40 未kernel32的模块地址
+0x44 为 GetProcAddress地址

相关环境变量的初始化
CQMEngine
CQMEngineHost

通用外挂:模拟按键检测的对抗思考
对抗思路:输入源+行为结果
对抗难点:输入源绕过门槛较低

DNF工作室挂一栏

特诊检测:特殊软件,如答题IP、虚拟机。
功能检测:模拟按键,截图。
行为检测:机器聚集,行为聚集等模型,如局域网机器。

验证码作为工作室打金对抗门槛手段之一,运营上钓鱼执法。
以前是采用验证码方式,但外挂会截屏识别,后续 采用了扫码人脸识别,关联到自然人,认证成本大,外挂难绕过。

通用外挂小结
趋势:

  1. 外挂技术获取渠道越来越广,外挂工具不是难事。
  2. 工具自身也是一个平台,外挂开发门槛低。
  3. 多款工具相互间形成工具链。

风险:

  1. 单款工具多变种,特诊覆盖全有挑战。
  2. 外挂平台化,传播风险大。

应对:

  1. 技术方案:监控多维度、门槛有深度
  2. 打击方式:定制-功能-通用相互结合

外挂硬件化趋势

在DNF、CF等十多年老业务上面临了纯硬件外挂新挑战。
已有安全方案无法覆盖,并有迅速发展的趋势(同步器,录制器,鼠标宏,单片机)形成了一条完整的硬件外挂黑产产业链。

同步器硬件特征:
键盘和鼠标硬件ID中的PID和VID相同。
鼠标移动的特诊:系统底层URB的数据包,从包内容和正常USB键盘输入一致,不过鼠标输入还是有些差异性。

MOUSE_MOVE, WM_IMPUT、Direct Input这几个输入的区别。

使用了绝对坐标,而正常鼠标使用了相对坐标。
同步器相对位移最小粒度较大,最小Delta=52,正常鼠标位移量为1。

背景:
同步器恶意产出20%+,严重影响正常的经济系统。

目标:1. 减少对正常玩家的影响,2. 增加同步器的成本。
思路:

  1. 把相同变成不同,塞入随机因子,让相同输入随机起来。(角色出生坐标,BOSS的最终房间,副本当中怪物出生坐标)

脱机外挂

脱机外挂分为 全脱机和半脱机外挂。

全脱机外挂可以完全独立游戏客户端运行起来。直接发包给服务器。

动&静对抗:每个数据包中的附加数据可以实现每个包加解密使用不同的处理
动态协议加密。
优势:运营成本低,千人千面
劣势:有性能损耗,配置协议ID

静态源码乱序:攻击者需要重新分析协议字段含义,来模拟和正常游戏的逻辑交互。如一个月换一次字段顺序。
优势:逆向成本高,性能较好
劣势:随版本发布,对抗周期不可控

半脱机外挂

外挂自组包调用游戏函数发包

检测方法:检测堆栈函数名称是否合法。
缺陷:堆栈调用检测被通过秒该游戏代码进行函数调用绕过。
考虑触发时机:Msg(Timer)、Thread。

改进方法:单线程划分游戏时间片,进行堆栈调用检测。

对比常规的堆栈调用检测,在非游戏逻辑时间周期内,进行非法游戏函数调用检测,性能更优,效果更佳。

定制外挂

DNF 全屏攻击

实现方式:

  1. 碰撞修改,通过修改碰撞逻辑代码,一次伤害多个怪承伤。

  2. 模型修改,修改人物模型。

  3. 吸怪类型,修改怪物坐标,聚集到一起,造成伤害。

  4. 全屏效果类型,释放1个和N个效果,对对多个怪物造成伤害。

日常对抗流程:

外挂输入:
样本测试驱动
自身数据驱动
客户需求驱动

外挂分析:
外挂功能分析
游戏行为分析
过方案分析

外挂对抗:
方案设计
策略调整
对抗打击

反补外挂监控发现。

实现方式一览:

CALL函数
主线程劫持CALL,注入CALL,R0CALL
秒改CALL
模拟发包

改代码:
模块划分:游戏模块、系统模块、方案模块、驱动模块。
修改方式:秒改代码,劫持修改代码,动态修改代码。

读写数据
数据类型:全局数据,动态数据,运行期数据(virtab,站数据)
修改方式:秒改数据,锁定数据,数据异常

改游戏资源
静态文件(输入源)-》加载到内存(数据)-》使用时机点(实时数据)。

协议攻击:
修改协议内容
协议重发
协议拦截感知

基于游戏逻辑的分析思路:
开挂前采样,开挂中抓现行,开挂后,黑白校验。

旁路逻辑:

从游戏样本分析:
1、感知增强,读取数据截图(OCR)
2、输入增强,模拟输入

基于旁路逻辑
进程外:协议、资源、跨进程读取
进程内:引擎、脚本、进程内读取。

从游戏游戏分析
谁读取了我,反向验证
访问断点
修改输入验证。

打赏点小钱
支付宝 | Alipay
微信 | WeChat