背景:目前有许多设备可以测量某些指标,然后将数据发送到远程服务器进行数据收集(例如,小猫头鹰,斯诺)。我对这些设备的兴趣纯粹是作为测量工具,我非常反感将我的数据提供给别人,而几乎没有任何回报(从这个例子中你也可以看出,这些数据是与新生儿有关的数据,这使得隐私问题更加成为道德问题)。许多这样的设备没有配备前端离线模式来自己收集数据,尽管这些仪器可以离线工作(可能是因为它的市场很小,而且老实说,它不会给公司带来任何收益)。
问题:是否有解决方案可以在辅助离线网络(仅限 LAN)上设置设备,并捕获正在传输到远程服务器的信息(也许可以通过欺骗设备使其认为它已连接到远程服务器 [这是不可能的,因为网络仅限 LAN])?我在 github 上找到了 api,它允许用户自己收集数据,但它们都是通过在数据已发送到服务器后收集数据来工作的(例如,小猫头鹰,斯诺)。因此,他们更多地与公司分包的(第三方)服务器交互,而不是与设备本身交互。也许这归结为逐个设备的解决方案,因为您必须破解他们构建的任何安全措施,以确认它是他们的远程服务器,但我完全是这个领域的新手,所以即使提到短语以进行谷歌搜索并了解更多信息也会有所帮助。
而且解决方案不一定是我所想的那样,只要有办法从仅连接到离线网络的设备中获取数据即可。我同意在设备在线连接的情况下试用该设置(或使用它来弄清楚设备如何与远程通信),解决方案只需要能够离线迁移即可。
谢谢。
思路更新:这几乎看起来像一个中间人攻击,但我认为这可能要容易得多,因为我只是想欺骗发送者,而不是发送者和接收者。所以我想象我可以通过颁发自己的证书或同意任何相互认证来绕过任何防御(并不是说我知道如何绕过它,但我可能对理论有基本的了解)。再说一次,我是一个 100% 没有受过教育的网络新手,但这就是我想到的。但本质上我现在想知道的是如何在一个我拥有 100% 一切(设备、数据、网络)的网络上进行这种“攻击”。如果有实现这一点的教育资源,那就太棒了(或者纠正我思想中的错误)。
答案1
一般来说,企业解决方案是:
禁止从您自己的网络(段)直接访问互联网。
仅向明确允许的设备授予互联网访问权限,最好也仅向明确定义的目的地授予互联网访问权限。
———
如果设备使用的协议允许并且设备支持显式代理的配置:
(许多现代协议使用 http(s) 上的消息,并且 Web 代理是一种常见的代理服务器配置,但是其他协议也存在代理服务器解决方案)==> 设置代理服务器。
配置设备以使用代理服务器
您还可以看到哪些消息被发送给了谁。
———
如果设备不允许配置显式代理 - 将代理服务器设置为透明代理,并将网络层的流量(例如到 api.example.com 端口 80 的 http 流量)重定向到代理服务器上行地址和端口
您还可以看到已发送的消息。
———
当设备通过 TLS 进行通信时 - 传输层将被加密。
您可以设置自己的根证书,例如为 api.example.com 创建一个假证书,然后使用您的显式或透明代理服务器来出示该证书,然后尝试对 TLS 流量进行中间人拦截。
这应该会失败,但实际上可能会有效,因为许多设备实施的安全性较差,并且会接受所有类型无效的 TLS 证书(由不受信任的 CA 签名的证书、过期证书、无效服务器名称的证书等)
当您可以将自己的 CA 添加到设备上受信任的 CA 证书列表中时,这更有可能发挥作用。
当设备使用证书固定或使用其他形式的更严格的安全性时,仍然可能会失败。
———
当协议不易代理(并且是明文)时,您可以尝试使用数据包捕获或网络嗅探器记录消息。
———
如果除了传输层的 TLS 加密之外,消息本身也经过加密,您可能根本无法获得明文。
这时,您需要依赖供应商披露他们记录和传输的内容。