【问题标题】:Client server game packet injection客户端服务器游戏包注入
【发布时间】:2021-07-17 16:04:22
【问题描述】:

我正在尝试在开发我的在线游戏时了解有关安全性的更多信息。

拦截服务器发来的数据包,用一些软件修改,然后发回数据给服务器,有没有可能,难度有多大?

这是一个场景:

玩家进入与 AI 敌人的战斗。玩家输掉了战斗,在战斗结束时,数据包被发送回服务器,说明发生了什么。是否可以在发送之前修改这个数据包并告诉服务器玩家已经赢得了战斗?如何读取这些数据并对其进行修改?

有没有可能说玩家进入了与 1 个敌人的战斗,但向服务器发送了一个数据包,说玩家赢得了与 20 个敌人的战斗? (假设服务器没有实现自我保护)

【问题讨论】:

    标签: security server client packet packet-sniffers


    【解决方案1】:

    考虑到您的情况,如果您假设客户端和服务器之间的数据包是加密的,那么发生攻击的可能性相当低(当然这取决于所使用的加密)。

    但是让我们考虑未加密的数据包,中间人攻击是可能的,并且执行起来并不困难。这将要求攻击者能够理解您正在发送的数据包:例如,如果您在某处有“赢/输”位并且攻击者知道其确切位置,那么他可以制作不同的数据包(查看scapy模块如果您喜欢制作数据包,请在 python 中使用)。

    有截取数据包的工具,最常用的是Wireshark。例如,Scapy 模块允许您同时嗅探数据包和发送数据包,从而轻松实现此场景。

    同时战胜 20 人的情况还取决于服务器端如何处理游戏(例如,它是否一次接受每个用户不止一个游戏?)

    【讨论】:

    • 非常感谢您的回答 Marwan!有没有一种简单的方法来判断数据包是否被加密?我曾尝试使用 WireShark,但我所看到的只是一堆来回传输的字节。是否有一个签名可以让我检查字节是否已加密?
    • 如果您的数据包被加密,您将无法正确读取内容。例如,如果您正在查看加密的网络流量 (HTTPS),您将看到 SSL/TLS 数据包(您可以使用tls 过滤器进行检查)。您可以通过以下方式查看内容:右键单击数据包 -> 关注 -> 关注 TCP 流。对于 HTTP 等未加密流量(使用http 过滤器),内容将是可读的。
    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多