freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

关于云函数无法回显的解答
2021-04-28 11:21:26

前两天笔者写了一篇文章:Red Team 又玩新套路,竟然这样隐藏 C2

有读者之后反馈,照着文中的方法做,虽然可以上线,但是发送命令不能正常回显。

笔者重新看了一下之后发现,确实存在这个问题,因此写出这篇文章,记录一下定位问题的过程,给出解决方案。

有些童靴可能没时间细看,笔者在此总结下,主要是以下两个问题导致云函数不能正确回显数据:

  1. 云函数自动编码
  2. 增加 post 参数传递

下面,我会详细写出问题的定位流程以及最后的解决方案。


问题定位

首先,访问下载配置文件的 URL,发现可以正常下载。通过主机可以正常上线可知,云函数的 get 转发应该是正常的。

打开 beacon 指令页面,发送一下数据看看。

发现出现了如下字样:

这意味着什么呢?意味着被控机已经收到了指令。

指令显示受控机已经呼叫了服务器,且发送了 19 byte 的数据。

但是在返回执行指令的结果数据时,转发出现了问题。

查看受控端发送的 post 数据包如下:

发现受控端正常 post 了数据,云函数也正常返回状态 200。

那应该是云函数出现了问题。

查看了一下云函数的 post 日志:

原来是云函数擅自将 body 字段的数据进行 unicode 编码了。

推测是因为 byte 的二进制字段没办法放入云函数的 dict 字典中。

所以,这里需要修改 post 上传包的 body 字段,自己手动编码一下,然后再解码后转发给 CS 服务器。(解决方案参见下文“修改方法”中的方法一)

再试一下,发现还不行。

再次进行抓包,发现 CS 的上线包 post 是带参数传输的,如图所示:

而我们在云函数中没有传递这个参数,导致虽然受控机接收到了命令,且正确发送了数据,但是云函数转发的时候丢失了这个参数,即 id=85774 这个参数。

在云函数中加上就好了。(解决方案参见下文“修改方法”中的方法一)

这样之后就能正确回显了。

另外,有读者表示,可以直接使用 api 网关进行转发。

这个思路很好,也比较简单,相较于云函数来说更容易部署。

不过笔者没有时间去复现了,不知道会出现什么问题。

云函数有更多的可拓展性,因为原则上来说,云函数可以对数据进行任意变换,甚至可以加解密等,可以对流量有更好的保护。


修改方法

// 方法一

1. 开启网关 base64 编码,并在函数中 base64 解码,body=base64.b64decode(body) 。

在网关设置中开启 base64 编码,然后只设定特定 header 触发(不然会把 get 请求也进行 base64 编码)。

然后在函数中解码传输就好了,如下:

2. 增加参数传递函数。


params=event['queryString']
resp=requests.post(cs_server_address+path,headers=headers,data=body,timeout=20,params=params)


如图所示:

// 方法二(懒人版)

开启网关 base64 编码,在网关设置中开启 base64 编码,然后只设定特定 header 触发(不然会把 get 请求也进行 base64 编码)。

然后直接复制(云函数)代码到云函数,记得更改自己的上线地址。(关注公众号“微步在线研究响应中心”,回复“云函数”,可获取完整云函数代码。)


总结

笔者本意是想通过攻击复现,帮助大家明白 RT 的各种隐藏 C2 的技巧,方便之后做对应的防守策略。

其实,实际过程中 RT 可能使用各种方法综合进行隐匿, 详情可参见:红队攻防基础建设-神隐之路 - 安全客,安全资讯平台,作者依然是我们的老朋友「风起」。

上篇文章发出后,有很多读者选择亲自动手去尝试,这个精神很好!笔者也是看到有些读者有疑问,不想直接无视,所以在某个下午继续探究了下这些问题并做出解答。

然而,不希望大家在尝试成功之后,将该类攻击用作除了 Red vs Blue 外的其他用途。若有用作任何违法用途,与本文无关。互联网并非法外之地,即使使用该方法隐藏 C2,我们依然有方法溯源到人,望耗子尾汁。

v2-8f9f3c5278739156728c328125c88b6a_720w.jpg


本文作者:微步在线情报组,获取完整云函数代码请关注微信公众号“微步在线研究响应中心”,回复关键词【云函数】
# CobaltStrike # 微步在线 # HW主题分享 # 攻防实战
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录