从APP小游戏到Web漏洞的发现
字数 1754 2025-08-22 12:22:30

Unity游戏渗透测试技术详解:从APP小游戏到Web漏洞发现

一、背景与发现过程

在对某麻将游戏APP进行渗透测试时,发现HTTP请求接口,但反编译APK后未找到任何接口或域名相关关键字。通过解压APK并使用Everything搜索,最终在global-metadata.dat文件中发现了域名关键词。

二、关键文件解析:global-metadata.dat

1. 文件定义

global-metadata.dat是Unity游戏开发引擎构建过程中生成的文件,包含:

  • 类和方法的名称
  • 类型信息
  • 其他元数据信息

2. 技术背景

  • 该文件是Il2cpp将代码翻译为C++后存放类型和符号信息的文件
  • libil2cpp.so文件包含应用业务逻辑
  • 需要结合global-metadata.dat解析才能进行有效的逆向分析

3. 开发模式判断

Unity打包APK有两种方式:

  1. Mono方式:可直接获取Assembly-CSharp.dll,未加密时可轻松反编译
  2. IL2CPP方式:无Assembly-CSharp.dll,需使用工具逆向

三、逆向分析技术

1. 加密判断

检查global-metadata.dat头部信息:

  • 正常头部:AF 1B B1 FA 18
  • 若匹配则未加密,可直接分析

2. 逆向工具

推荐工具:

使用命令:

Il2CppDumper.exe input\libil2cpp.so input\global-metadata.dat output

3. 输出文件解析

工具生成的关键文件:

  1. dump.cs:包含方法、类名和字段信息
  2. script.json:JSON格式显示方法、类名和路由信息
  3. stringliteral.json:包含所有字符串详情(关键信息)
  4. Assembly-CSharp.dll:反编译后可得到C#代码

4. 接口分析方法

示例流程:

  1. stringliteral.json中找到web路由(如common-activity
  2. dump.cs中搜索相关关键词(如GetCommonActivity
  3. 分析获取可能的参数(如id

四、常见漏洞类型

1. 历史接口未下线漏洞

  • 特征:老活动已下架但接口仍保留
  • 危害:可能通过并发请求获取大量游戏金币
  • 示例:xxx/share/share-fudai-award接口

2. 接口通用性问题

  • 背景:同一公司多个马甲包(套壳APP)使用相同后端API
  • 测试方法:用A APP接口碰撞B APP接口
  • 危害:可能发现隐藏接口,实现无限金币获取等

五、Cocos2d-x相关漏洞

1. 文件结构特征

  • assets目录下存放大量.luac文件
  • 这些是编译后的lua文件,可能被加密
  • 文件后缀可能自定义(如.luax等)

2. XXTEA加密解密

Cocos2d-x对lua脚本的默认加密方案:

  • 算法:XXTEA
  • 解密参数:
    1. 文件路径
    2. 加密sign
    3. 加密key

解密工具:cocos_decrypt

获取sign方法:

hexdump -C xxxxxx.luac | head -n 5

获取key方法:

strings libcocos2dcpp.so | grep -i sign值xxxx -A 3 -B 3

3. 解密后的价值信息

  1. 硬编码密钥:如微信secret等敏感信息
  2. HTTP相关算法:通常在httpxxx.lua文件中
  3. 签名算法:可能包含API密钥和签名逻辑

示例签名算法:

md5Encode("request_key=" .. funtable.apihubKey .. "&request_time=" .. time .. "&request_secret=" .. funtable.apihubSecret .. laterurl)

六、完整渗透测试流程

  1. APK解压分析:检查global-metadata.datlibil2cpp.so
  2. 逆向工程:使用Il2CppDumper获取关键信息
  3. 接口枚举:从输出文件中提取所有web路由
  4. 参数分析:通过类和方法名推断接口参数
  5. 漏洞测试
    • 历史接口测试
    • 跨APP接口测试
    • 并发请求测试
  6. 加密分析(如适用):
    • 识别XXTEA加密
    • 提取sign和key
    • 解密lua脚本
  7. 算法还原:从解密脚本中获取签名算法
  8. 正常请求构造:基于解密结果构造合法请求进行深入测试

七、防御建议

  1. Unity开发

    • 对关键配置文件进行加密或混淆
    • 及时下线不再使用的接口
    • 不同APP使用不同的接口密钥
  2. Cocos2d-x开发

    • 不使用默认XXTEA加密或进行二次加密
    • 避免在客户端存储敏感密钥
    • 使用动态密钥生成机制
  3. 通用建议

    • 实施严格的接口权限控制
    • 服务端进行请求频率限制
    • 定期进行安全审计和渗透测试
Unity游戏渗透测试技术详解:从APP小游戏到Web漏洞发现 一、背景与发现过程 在对某麻将游戏APP进行渗透测试时,发现HTTP请求接口,但反编译APK后未找到任何接口或域名相关关键字。通过解压APK并使用Everything搜索,最终在 global-metadata.dat 文件中发现了域名关键词。 二、关键文件解析:global-metadata.dat 1. 文件定义 global-metadata.dat 是Unity游戏开发引擎构建过程中生成的文件,包含: 类和方法的名称 类型信息 其他元数据信息 2. 技术背景 该文件是Il2cpp将代码翻译为C++后存放类型和符号信息的文件 libil2cpp.so 文件包含应用业务逻辑 需要结合 global-metadata.dat 解析才能进行有效的逆向分析 3. 开发模式判断 Unity打包APK有两种方式: Mono方式 :可直接获取 Assembly-CSharp.dll ,未加密时可轻松反编译 IL2CPP方式 :无 Assembly-CSharp.dll ,需使用工具逆向 三、逆向分析技术 1. 加密判断 检查 global-metadata.dat 头部信息: 正常头部: AF 1B B1 FA 18 若匹配则未加密,可直接分析 2. 逆向工具 推荐工具: Il2CppDumper Il2CppDumper-GUI 使用命令: 3. 输出文件解析 工具生成的关键文件: dump.cs :包含方法、类名和字段信息 script.json :JSON格式显示方法、类名和路由信息 stringliteral.json :包含所有字符串详情(关键信息) Assembly-CSharp.dll :反编译后可得到C#代码 4. 接口分析方法 示例流程: 在 stringliteral.json 中找到web路由(如 common-activity ) 在 dump.cs 中搜索相关关键词(如 GetCommonActivity ) 分析获取可能的参数(如 id ) 四、常见漏洞类型 1. 历史接口未下线漏洞 特征:老活动已下架但接口仍保留 危害:可能通过并发请求获取大量游戏金币 示例: xxx/share/share-fudai-award 接口 2. 接口通用性问题 背景:同一公司多个马甲包(套壳APP)使用相同后端API 测试方法:用A APP接口碰撞B APP接口 危害:可能发现隐藏接口,实现无限金币获取等 五、Cocos2d-x相关漏洞 1. 文件结构特征 assets 目录下存放大量 .luac 文件 这些是编译后的lua文件,可能被加密 文件后缀可能自定义(如 .luax 等) 2. XXTEA加密解密 Cocos2d-x对lua脚本的默认加密方案: 算法:XXTEA 解密参数: 文件路径 加密sign 加密key 解密工具: cocos_ decrypt 获取sign方法: 获取key方法: 3. 解密后的价值信息 硬编码密钥 :如微信secret等敏感信息 HTTP相关算法 :通常在 httpxxx.lua 文件中 签名算法 :可能包含API密钥和签名逻辑 示例签名算法: 六、完整渗透测试流程 APK解压分析 :检查 global-metadata.dat 和 libil2cpp.so 逆向工程 :使用Il2CppDumper获取关键信息 接口枚举 :从输出文件中提取所有web路由 参数分析 :通过类和方法名推断接口参数 漏洞测试 : 历史接口测试 跨APP接口测试 并发请求测试 加密分析 (如适用): 识别XXTEA加密 提取sign和key 解密lua脚本 算法还原 :从解密脚本中获取签名算法 正常请求构造 :基于解密结果构造合法请求进行深入测试 七、防御建议 Unity开发 : 对关键配置文件进行加密或混淆 及时下线不再使用的接口 不同APP使用不同的接口密钥 Cocos2d-x开发 : 不使用默认XXTEA加密或进行二次加密 避免在客户端存储敏感密钥 使用动态密钥生成机制 通用建议 : 实施严格的接口权限控制 服务端进行请求频率限制 定期进行安全审计和渗透测试