首页 > 解决方案 > 使用 mitmproxy 伪造和重放单个 TCP 数据包

问题描述

我发现了mitmproxy并想用它来模拟重放攻击。

该应用程序在 TCP 之上使用MTProto,我想重播整个 MTProto 消息。

我的想法:

  1. 通过代理将流量从客户端路由到服务器
  2. 嗅探所有 TCP 数据包
  3. 重放单个 TCP 数据包

最后一部分是困难的部分。伪造的 TCP 数据包必须

为了被接受。

我尝试为此使用 mitmproxy,但我只发现了如何复制整个流,而不是单个数据包。

是否可以使用 mitmproxy 实现我的目标?如果是这样,如何伪造单个数据包?否则:是否有更好的工具来应对这种攻击?

标签: tcpmitmproxyreplay

解决方案


以下附加组件为我解决了这个问题(在精神上与Susanka类似):

class Replayer:
    def __init__(self):
        self.num = 0
        self.saved = None

    def tcp_message(self, flow):
        message = flow.messages[-1]
        if len(str(message)) > 700:
            if self.saved is None:
                self.saved = message.content
            else:
                message.content = self.saved
                self.saved = None


addons = [
    Replayer()
]

推荐阅读