写在前面的话
在这篇文章中,我将跟大家分享我在利用SSM代理通信实现后渗透利用方面所作的一些研究。需要注意的是,我这里指的并不是SSM代理或SSM中的安全漏洞。

考虑到SSM处理身份验证的方式,如果我们可以访问EC2实例的IAM凭证,则意味着我们可以拦截EC2消息以及SSM会话。这样一来,即使是低权限用户也可以拦截这些通信。

接下来,我们还会解释为了攻击者能够拦截和修改这些通信流量,并完全阻止资源的拥有者访问EC2实例。此外,这些内容还可以帮助大家更好地了解SSM代理是如何在低级别上运行的。

概念验证PoC脚本可以点击【这里】获取。

拦截EC2消息
如果你曾经拦截过SSM代理的流量,你就会发现它会不断地调用ec2messages:GetMessages。默认情况下,代理将持续执行此操作,保持连接打开大约20秒的时间。在这20秒的时间间隔内,代理将会持续监听消息。如果接收到了消息,比如说某个组件调用了ssm:SendCommand,它将会通过这个打开的连接来接收消息。

我们也可以自行调用ec2messages:GetMessages,这将允许我们拦截到传入实例的EC2消息。不过这里有个小问题,SSM代理将大约每20秒就会建立一次这种连接。如果同时存在两个有竞争关系的连接呢?AWS只会响应最新建立的连接。因此,如果SSM代理先运行,我们就可以在它上面创建一个新连接并实现消息的拦截了。

我们可以通过反复打开新的连接来确保我们拥有最新的连接,通过这种方法,我们可以确保我们的连接始终是最新的,并实现EC2消息的拦截。为了测试我的想法,我创建了一个简单的PoC,它监听send-command消息并窃取其中的命令内容。

这种方式的另一个好处就在于,我们可以回复任意一个我们想要回复的响应。比如说,我们可以提供一个“Success”并返回一条有意思的消息。下面给出的是一个PoC样例:

拦截SSM会话
EC2消息的实现相对简单,你可以检查你是否接收到了消息,并根据情况执行操作或予以响应。不幸的是,SSM会话相对来说就比较复杂了,其中会涉及到多个Web套接字连接和一个独特的二进制协议等等。

SSM代理启动后不久,它将创建一个回连至AWS的WebSocket连接。这条连接将被作为控制信道来使用,主要负责监听连接请求。当用户尝试启动SSM会话(ssm:StartSession)时,控制信道将会接收请求并生成数据信道。而这条数据信道主要负责传输用户和EC2实例之间的实际通信消息。

负责处理两端消息传输的是一个专用的二进制协议。幸运的是,我们是可以获取到SSM代理的【源代码】的,那么我们要做的就是检查其源代码以及定义的规范就可以了。

从攻击者的角度来看,拦截SSM会话比拦截EC2消息要更加可靠。这是因为控制信道的存活寿命要更长,就跟EC2消息一样,AWS只与最新的信道进行通信。这样一来,我们就可以创建自己的控制信道并监听传入的会话了。通过使用SSM代理的源代码,我们能够以二进制格式制作消息(如果你查看了我给的PoC代码的话,你就会发现我刚刚翻译了Go To Python),并于会话进行交互。

那么现在,我们所能做到的事情如下图所示:


或者说,我们也可以做一些其他的事情,比如窃取命令并提供我们自己的输出,或者尝试去截获并读取发送至设备的用户凭证等等。

SSM通信研究:如何拦截SSM代理流量相关推荐

  1. 2022-11- 10 网工进阶(三十六)IP组播协议--IGMP(v1、v2、v3)、IGMP snooping、IGMP SSM Mapping、IGMP Proxy(代理)

    感知组播组成员 组播通信中,组播网络需要将组播数据发送给特定的组播组成员,因此组播网络需要知道组成员的位置与组成员所加的组播组. 组播网络感知组播组成员的方法有手工静态配置和动态感知. 手工静态配置 ...

  2. ssm项目中使用拦截器加上不生效解决方案

    ssm项目中使用拦截器加上不生效解决方案 参考文章: (1)ssm项目中使用拦截器加上不生效解决方案 (2)https://www.cnblogs.com/xiufengchen/p/11205283 ...

  3. 基于ssm的医院病历管理系统SSM医院管理系统

    基于ssm医院病历管理系统 基于ssm医院病历管理系统 今天给大家分享一下基于SSM的医院病历管理系统,希望能帮助大学哈~~ 介绍: eclipse ,mysql,spring,springmvc,m ...

  4. SSM之SpringMVC 03 —— 整合SSM(简单图书系统)

    系列文章 SSM之SpringMVC 01 -- SpringMVC原理及概念.Hello SpringMVC 注解版和配置版 SSM之SpringMVC 02 -- Controller和RestF ...

  5. UC浏览器代理流量解密

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 解密uc浏览器的安全代理流量,看看是不是真安全." 作为一个从上古网络时代过来的人,一定对UC浏览器有深刻印象,它的流量透明代理功 ...

  6. sqlmap md5怎么解密_UC浏览器代理流量解密

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 解密uc浏览器的安全代理流量,看看是不是真安全." 作为一个从上古网络时代过来的人,一定对UC浏览器有深刻印象,它的流量透明代理功 ...

  7. ssm框架整合(含ssm配置)实现crud

    SSM-CRUD 介绍 ssm:SpringMVC+Spring+MyBatis CRUD:Create(创建).Retrieve(查询).Update(更新).Delete(删除) 功能点 CRUD ...

  8. 基于SSM的学生会管理系统-基于ssm的社团信息管理系统-java项目

    基于SSM的学生会管理系统-基于ssm的社团信息管理系统-java项目 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架:SSM 前端技术:HTML+ ...

  9. SSM框架过滤器和拦截器

    过滤器: Filter 拦截器: Interceptor 拦截器和过滤器的区别: 1. 拦截器(interceptor)只对action请求起作用,而过滤器(filter)则可以对几乎所有的请求起作用 ...

  10. (附源码)ssm+vue.js+mysql+基于ssm店铺评价系统设计与实现 毕业设计201524

    店铺评论系统的设计与实现 摘 要 店铺评价系统是一个提供最新店铺资讯,供网友浏览店铺评价以及店铺介绍,还可供注册用户发表店铺评论及回复的大众店铺评论社区.同时用户可以对自己喜欢的店铺投票.网站旨在为网 ...

最新文章

  1. 点击屏幕上EditText区域以外的任何地方隐藏键盘的解决方法
  2. 一个新游戏的思路;大家来说说看,觉得好的话,我做成游戏
  3. 用js参数实现模板替换机制
  4. 虚拟成像技术_AI帝国将崛起,国内幻真虚拟成像技术第一家
  5. tp5中mysql使用REGEXP 正则匹配
  6. ajax接口调节,前端用ajax调接口怎么破啊?
  7. ShowDoc的搭建
  8. 手机配置网络代理服务器_两张图简说代理服务器和反向代理服务器
  9. FreeRTOS源码分析与应用开发10:内存管理
  10. Windows Phone 7, Hammock, OAuth and Sina Weibo’s API
  11. 开始新的学习之旅--PHP开发学习--基础部分笔记
  12. RPN Calculator for mac(RPN计算器)
  13. FVC与地表温度的相关性分析研究
  14. linux arm 物理内存,linux – 如何在Arm Architecture硬件上进行内存测试? (像Memtest86这样)...
  15. 【rmzt】美女之目露凶光win7主题
  16. selenium tips
  17. win7休眠 计算机管理,Win7休眠功能怎么关闭?
  18. Windows XP 黑屏补丁
  19. msp430中如何连续对位进行取反_如何选择护膝的尺码,手把手教你
  20. 使用物价水平修正票房数据,长津湖还是票房冠军吗?

热门文章

  1. 三步完美完成wordpress外链跳转
  2. python载入图片序列_python – 使用matplotlib显示图像序列
  3. python3编码得到中文_Python3的unicode编码转换成中文的问题及解决方案
  4. OpenCV-图像处理(30、轮廓周围绘制矩形框和圆形框)
  5. rabbitmq python 发送失败_RabbitMQ Python端发送消息给Java端 接受消息全数字问题
  6. syslog日志转换器_图解将windows日志转成syslog格式并发送
  7. 计量经济学 pdf_计量经济学笔记(十六)
  8. int main(argc,char *argv[])的含义
  9. vb6 英文和中文长度不同_PPT里中文排版就是没英文好看?你怕是假酒喝多了…...
  10. 【POJ2155】Matrix(二维区间修改+单点查询---二维树状数组)