如何拦截SSM代理流量
|
如果你曾经拦截过的流量,你就会发现它会不断地调用ec2messages:GetMessages。默认情况下,代理将持续执行此操作,保持连接打开大约20秒的时间。在这20秒的时间间隔内,代理将会持续监听消息。如果接收到了消息,比如说某个组件调用将会通过这个打开的连接来接收消息。 我们也可以自行调用ec2messages:GetMessages,这将允许我们拦截到传入实例的EC2消息。不过这里有个小问题,SSM代理将大约每20秒就会建立一次这种连接。如果同时存在两个有竞争关系的连接呢?AWS只会响应最新建立的连接。因此,如果SSM代理先运行,我们就可以在它上面创建一个新连接并实现消息的拦截了。 我们可以通过反复打开新的连接来确保我们拥有最新的连接,通过这种方法,我们可以确保我们的连接始终是最新的,并实现EC2消息的拦截。为了测试我的想法,我创建了一个简单听send-command消息并窃取其中的命令内容。 截SSM会话 EC2消息的实现相对简单,你可以检查你是否接收到了消息,并根据情况执行操作或予以响应。不幸的是,SSM会话相对来说就比较复杂了,其中会涉及到多个Web套接字连接和一个独特的二进制协议等等。 SSM代理启动后不久,它将创建一个回连至AWS的WebSocket连接。这条连接将被作为控制信道来使用,主要负责监听连接请求。当用户尝试启动SSM会话制信道将会接收请求并生成数据信道。而这条数据信道主要负责传输用户和EC2实例之间的实际通信消息。
负责处理两端消息传输的是一个专用的二进制协议。幸运的是,我们是可以获取到SSM代那么我们要做的就是检查其源代码以及定义的规范就可以了。 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


