从嵌入式设备到 Internet 的 TCP/UDP 连接代理

逆向工程 嵌入式 代理人
2021-06-18 03:55:28

我有一个嵌入式设备,它使用 TCP 和 UDP 在一系列端口上使用自定义协议以及 DHCP、DNS、NTP 和 ICMP ping 连接到 Internet。它有两个接口 - 一个 GPRS 调制解调器和一个以太网接口。

我想建立一个代理,以便我可以篡改以太网端的通信。理想情况下,这将是一个允许选择转发或拦截和修改通信的框架。

当我找不到任何工具、框架或教程来执行此操作时,我感到很惊讶。

有没有人有任何指导?

编辑:这与逆向工程有关,因为无法理解自定义协议。通过 MITMing 连接,它将能够更好地理解协议,例如当数据包丢失时会发生什么?看起来是序列号的东西重要吗?等等。

2个回答

我假设“连接到互联网”只是意味着“使用 DHCP 查找 IP 参数,然后使用它发现的内容发送 TCP/UDP 数据包”。我怀疑该设备是否真的会检查“互联网”是否可访问,除了它可能会尝试连接 IP 地址由 DNS 找到的服务器。

因此,没有人阻止您在交换机镜像端口上使用wireshark 来跟踪设备在网络上的操作,或者在设备请求时将某些计算机的 IP 作为路由器返回。之后,每个数据包都会进入您的计算机,您可以在其中检查、丢弃或更改它。

mitmproxy项目实现这个要求的HTTP(S),并且它带有一个库,它应当能够重新编写所有的TCP连接-我不知道,如果UDP工作为好。在文档中,有很多建议如何处理路由表以通过计算机路由流量,因此无论您是扩展他们的软件还是编写自己的软件,这都可能会有所帮助。

如果你想要分配控制权,另一个尝试是Scapy

Scapy 是一个强大的交互式数据包操作程序。它能够伪造或解码多种协议的数据包,通过网络发送它们,捕获它们,匹配请求和回复等等