内容简介:(WebshellsWebshell用于与受感染服务器交互。泄露数据中包含了三个webshell,分别为HyperShell、HighShell和Minion,Minion很可能是HighShell的一个变体,在代码、文件名和功能上都有重叠。HyperShell和HighShell则是TwoFace的变体,其中HyperShell与TwoFace的加载器相关,HighShell与TwoFace的payload相关,这点我们在2017年7月也有
( 接上文 )
Webshells
Webshell用于与受感染服务器交互。泄露数据中包含了三个webshell,分别为HyperShell、HighShell和Minion,Minion很可能是HighShell的一个变体,在代码、文件名和功能上都有重叠。HyperShell和HighShell则是TwoFace的变体,其中HyperShell与TwoFace的加载器相关,HighShell与TwoFace的payload相关,这点我们在2017年7月也有 记载 。除了OilRig使用的Webshell外,泄露数据中还有一个Webshell部署列表。如图8所示,列出了超过100个Webshell的链接,覆盖了四大洲26个国家的87个组织。
图8.受影响组织的Webshell的地理位置
Hypershell
HyperShell(SHA256:e483eee77fcc5ef11d5bf33a4179312753b62ec9a247dd14528cc797e7632d99)与的TwoFace加载器的3DES变体(我们也叫它TwoFace++)有关,我们曾在2017年7月 报道 过。
我们曾用强制技术来提取TwoFace加载器嵌入式payload,但同样的方法在TwoFace ++加载器上行不通。
TwoFace加载器样本需要密钥来解密嵌入的webshell,密钥是通过简单的算术运算符(大多是“+”或“ – ”)和webshell中的盐字符串进行修改的,所以使用简单的算术运算符就能解密,逆运算来强制提取密钥,进而提取嵌入式webshell。
而TwoFace ++加载器则使用3DES密码和攻击者提供的字符串的SHA256哈希并用作密钥,因此我们无法提取嵌入式webshell。但是,转储数据中的提供了HyperShell的重要信息。与许多TwoFace加载器样本一样,HyperShell样本在HTML标记<pre>和</pre>中包含一个字符串,如果未提供密码,和/或TwoFace ++加载程序无法提取嵌入的webshell,则会在浏览器中显示该字符串。HyperShell样本中的pre标签是:
<pre><%= Server.HtmlEncode(“NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a”) %></pre>
图9显示了HyperShell在浏览器中“pre”标签内容。
图9.HyperShell在<pre>标签内显示密码
我们认为,pre标签中的字符串正是攻击者提供的密码,webshell将其作为密钥来加密嵌入的payload,这一点可通过下列过程来验证:
·密码上附加一个充当盐的字符串
· 获取包含密码和盐的结合字符串的SHA1哈希值
· 对SHA1哈希进行Base64编码
· 将Base64编码后的哈希与硬编码的base64字符串进行比较
· 如果匹配,则对入站请求进行身份验证
· 生成密码字符串的SHA256哈希值
· Base64对SHA256哈希进行编码,并使用前24个字符作为密钥
· 使用24个字符的密钥和3DES密码来解密嵌入的webshell
现在让我们看看攻击者提供的密码如何与TwoFace ++加载器样本中的值一起使用。样本中,攻击者使用的密码为“NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a”,并附加了硬编码盐字符串“aqB2nU65TgFoEfdVqiAddBQLInc9”,两者结合的字符串为“NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7aaqB2nU65TgFoEfdVqiAddBQLInc9”,SHA1哈希为“9d3ff106fbc3508b8453c7d6f285543d0b9c2721”,base64编码后为“nT/xBvvDUIuEU8fW8oVUPQucJyE=”。而样本中base64硬编码后的密码是“NT / xBvvDUIuEU8fW8oVUPQucJyE =”,这也就能证明我们上面的观点。
经过身份验证后,TwoFace ++加载程序使用密码来解密嵌入式webshell。要使用密码作为密钥进行3DES解密,TwoFace ++会生成密码“NxKK<TjWN^lv-$*UZ|Z-H;cGL(O>7a ”的SHA256,哈希为“11f66b55f3d24303621e5ef9565b02a576cc58bc5f8789cae96c3d400064b90e”,接着对哈希进行base64编码,产生的字符串为“EfZrVfPSQwNiHl75VlsCpXbMWLxfh4nK6Ww9QABkuQ4 =”,其中前24个字符被用作3DES密钥,并解密webshell (SHA256: d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619) 。此webshell似乎也是HighShell(版本v5.0)的变种。
我们将HighShell的v5.0版本与TwoFace的payload(SHA256:54c8bfa0be1d1419bf0770d49e937b284b52df212df19551576f73653a7d061f)进行了比较。如图10所示,基本是一致的,但HighShell有两个不一样的地方,右上角的版本号“v5.0”和左下角用于显示错误消息和命令结果的三个小框。
图10.HighShell v5.0和TwoFace payload之间差异性
接着我们对两个webshell的代码进行了分析。这两个webshell大部分代码相同,差异在于变量和函数名称上略有不同。最显着的区别是HighShell v5.0 webshell包含一个盐值“di2zag7wZHTK9YR0NGq”,它应用于身份验证的密码。图11左侧显示了TwoFace的payload(SHA256:54c8bfa0be1d1419bf0770d49e937b284b52df212df19551576f73653a7d061f),右侧则是HighShell v5.0(SHA256:d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619),而同样的盐在左侧的TwoFace代码中就没有。
图11. HighShell v5.0和TwoFace payload之间的比较
我们认为TwoFace的 payload是HighShell v5.0 webshell的前身,后者是OilRig在其整个运营过程中创建的。
HighShell
转储数据还包括一个名为HighShell的webshell,它由HyperShell植入,如上一节所述。转储数据中包含了许多不同的HighShell样本,我们已经确定了至少三个不同的版本,如表4所示。不断增加的版本数量表明OilRig在持续不断开发HighShell。
表4.能确定的三个HighShell webshell版本
但HighShell的版本不是实时更新的。例如在前一节中从HyperShell中提取的HighShell webshell(SHA256:d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619)显示版本号为“v5.0”,这明显不同于图12中所见的文件名为error4.aspx的“v5.0”HighShell。
图12.带有新配色方案和资源管理器选项卡的HighShell v5.0
图12显示的是第二个HighShell v5.0样本,其用户界面使用了不同的配色方案,但大部分功能与从HyperShell中提取的其他v5.0样本相同。 这个HighShell v5.0变体的有趣的变化是引入了一个包含主选项卡和资源管理器选项卡的表格界面。主选项卡含有与TwoFace payload和其他v5.0 HighShell样本相同的功能。explorer选项卡(如图13所示)能让攻击者调查受感染服务器的文件系统。
图13. HighShell v5.0资源管理器选项卡
转储数据中的HighShell v7.1变体包含了之前版本中类似的功能,也有表格方法,但进一步拆分了选项卡的主要功能,拆成了 “Command”, “Explorer”, “Upload”, “Download”, “Sql Server”和“Change Time”。图14显示的是HighShell v7.1。
图14. HighShell v7.1
转储数据中还包括了一个名为ShellLocal-v8.8.5.rar的存档,其中包含另一个HighShell变体。 存档名称表明HighShell变体版本为v8.8.5,但是用户界面显示是版本8.6.2,如图15所示.看上去OilRig重新构建了这个webshell,前端用户界面通过AJAX Web请求与后端脚本交互。 除了体系结构的变化之外,此版本的HighShell界面上也做了个改进。
图15.HighShell v8.6.2
而HighShell8.6.2版本除了之前版本的重要功能外,还添加了一些新功能,比如几个可执行模块、网络下载器功能和间谍检查功能。
模块
HighShell 8.6.2包括webshell附带的几个模块的功能。这些模块是PE可执行文件,进一步扩展了webshell的功能,如表5所示。webshell使用7za模块从explorer选项卡处存档文件,而nbtscan模块允许webshell扫描网络以便系统构建可与之交互的系统的IP列表。我们无法确定webshell如何使用远程执行模块,因为webshell实际上似乎并没有使用它。
表5. HighShell v8.6.2附带的模块
间谍检查
间谍检查功能显示在webshell的右上角,是一个带有倒计时器的模块。计时器从300开始并每秒递减,表明webshell每五分钟就执行一次间谍检查功能。我们不知道间谍检查功能的确切目的。我们推测该功能的目的是,如果该webshell已被第三方检测和修改,则通知攻击者避免使用该webshell。
这可能是为以后准备的功能,因为间谍检查功能首先读取HighShell前端的.aspx文件(在本例中为HighShellLocal.aspx),然后生成HighShell前端的SHA256哈希值,并将其与f35e566e28be5b3257670be6e125eb90814b9cb27df997090cea0b7a22fbd75c的硬编码SHA256进行比较,以确定是否已修改了webshell。如果哈希不匹配,则webshell将显示带有间谍图标的红色框,如图15所示,或者如果匹配则显示带有心形图标的绿色框。所有已知样本都显示带有间谍图标的红色框,表明HighShell的开发人员在开发过程中没有更新此功能,或者样本已经以某种方式进行了修改。
网络下载器
Network Downloader功能允许攻击者从远程受损系统上快速上传用户文件。要使用此功能,攻击者须在webshell的“Target Computer”中提供信息,比如网络管理员用户名和密码,并在“Select Computer”下拉列表中添加的远程系统的IP地址列表。在执行网络下载之前,webshell会检查服务器的存储卷,以确定它是否具有超过30 GB的可用空间。如果服务器的可用空间少于30 GB,则webshell将不执行活动,这表示webshell的开发人员需要从受害者网络下载大量数据。webshell将遍历IP列表并为每个IP执行一系列命令,通过使用以下命令连接到远程系统:
net use [IP address] /user:[domain admin username] [domain admin password] 2>&1
使用net use连接到远程系统后,webshell将运行以下命令以获取用户文件夹列表:
dir /b [IP address]\c$\Users 2>&1
通过用户文件夹列表,webshell将遍历用户列表并枚举以下文件夹中的所有文件:
[IP address]\c$\Users\[username]\Desktop [IP address]\c$\Users\[username]\Documents [IP address]\c$\Users\[username]\Downloads
Network Downloader功能将收集这些文件夹中的所有文件,并使用7-Zip压缩和存档文件。 webshell将本地存档存档到C:\ Users \ Public \ Libraries \ Recorded \ Files文件夹中的服务器,每个文件夹都具有以下结构的文件名:
[IP address]_c$_Users_[username]__[Desktop-Documents-Downloads]_[year]-[month]-[day]-[hours]-[minutes]-[seconds].7z
攻击者可能会使用此功能快速检查网络上用户创建的新文件。
Minion
Minion似乎是另一个与HighShell相关的webshell,因为它包含类似的功能,重要的代码也有重叠。要使用Minion,攻击者须在使用webshell之前提供admin用户名和密码进行身份验证。要进行身份验证,字符串“O%tG7Hz57kvWk35$D*)s$1l$pUpLnBw)apHR!xYZWZu7X#^w7$mCArmQMAa&sRBG”会作为盐值加到密码上,接着在生成字符串的SHA256哈希值,对其base64编码后,与硬编码字符串“m6m8CCWa/u820mie8bX3HKIx1+WQkB+lbmniyXWKB+8=”进行比较。密码和盐字符串必须生成“9ba9bc08259afeef36d2689ef1b5f71ca231d7e590901fa56e69e2c9758a07ef ”的SHA256哈希值才能正确进行身份验证。这与HyperShell中进行身份验证/解密的过程完全相同。
Minion与HighShell 8.6.2非常相似,也包含用于扩展webshell功能的模块。表6显示的是Minion附带的模块,其中有三个在HighShell和Minion中都有,包括Hobocopy、一个端口扫描模块,以及名为Tardigrade的截图工具。
表6. Minion webshell附带的模块
DNS劫持脚本
2018年11月,思科Talos发布了一份名为DNSpionage的攻击活动 研究报告 ,报告中描述了一种专门劫持政府机构DNS条目的行为,目的是将访问者重定向到可能是恶意的系统。FireEye和Crowdstrike都对DNS劫持事件进行了评估,并将行动追溯到2017年1月,但无法对其归因到特定的组织,只是说目标半径集中在中东,也可能在中东之外。
在转储数据中,包含一个名为webmask的工具,该 工具 似乎是一系列专门用于执行DNS劫持的脚本。guide.txt是一个说明文档,揭示了攻击者如何进行DNS劫持攻击,如图16所示。webmask看起来与FireEye 研究结论 一致,例如通过代理直通使用ICAP,以及使用certbot创建Let的加密SSL证书。
图16. guide.txt中的说明,解释如何执行DNS劫持攻击
guide.txt还提供了一个攻击者的IP(185.162.235 [.] 106)。检查显示该IP与名为NovinVPS的伊朗托管服务提供商相关联。IP的自治系统名称显示分配由Serverius Holding B.V.控制,该自治系统名称我们之前在OilRig相关活动中也见到过。检查185.162.235 [.] 0/24的C类IP块显示了我们之前已经确定的OilRig组用于C2服务器的两个其他IP:185.162.235 [.] 29和185.162.235 [.] 121,它们对应的域名为office365-management [.] com和msoffice-cdn [.] com。 Office365-management [.] com是于2017年10月被确定为用于提供ISMInjector后门的OilRig C2服务器。
2018年2月,在另一起传播OopsIE后门的活动中,通过WHOIS注册组件、共享SSL证书和共享的C类IP块我们也可以判断该起活动为同一组织所为。图17显示了与DNS劫持相关文件与OilRig已知基础架构之间的关系。
图17. DNS劫持文件和OilRig基础架构之间的关系
虽然我们无法肯定地说,OilRig组织完全执行了DNSpionage操作,但根据提供的数据,它们之间还是有较强程度的关系。
屏幕截图
转储数据中包含了几张屏幕截图,包括Glimpse面板的远程桌面(RDP)会话,名为Scarecrow的C2面板的Web浏览器会话,进入VPS管理面板的Web浏览器会话,以及OilRig服务器进行破坏性攻击的证据。
图18中的屏幕截图似乎是一个未知后门的C2面板。唯一提供的名称是Scarecrow,它不是我们之前观察到的或与OilRig相关的名称。服务器托管在142.234.157 [.] 21上,似乎由LeaseWeb托管。如果我们假设文件名与服务器面板的实时快照一致,那么自2019年3月29日以来多个系统都被主动泄密。
图18.泄漏中提供的屏幕截图显示了Scarecrow面板
图19显示了一个名为Berbid Server的伊朗虚拟主机提供商的管理面板。 没有显示其他基础结构详细信息。
图19.Berbid Server的管理面板
屏幕截图显示了DeltaHost上VPS帐户的管理面板,其中有四个不同的虚拟服务器,如图20所示。其中一个虚拟服务器托管在IP地址193.111.152 [.] 13并且已经运行了194天 (红框)。
图20. DeltaHost帐户管理面板的屏幕截图
上图说明,该服务器可能至少自2018年9月16日起运行。2018年9月24日,我们观察到OilRig攻击目标中有人上钩,从以下URL下载Zip存档:
hxxp://193.111.152[.]13/[redacted]-ITsoftwareUpdate.zip
这个Zip存档包含一个名为[redacted] -ITsoftwareUpdate.exe(SHA256:5f42deb792d8d6f347c58ddbf634a673b3e870ed9977fdd88760e38088cd7336)的文件,它是我们在2018年9月发布的 博客 中详细描述的OopsIE木马的变种。这表明截图所反映情况属实。此外,面板中列出的其他两个IP,185.161.209 [.] 57和185.161.210 [.] 25同属185.161.208 [.] 0/22的范畴,与DNSpionage活动IP 185.161.211 [.] 72相关联。这个微妙的差异表示,虽然无法百分百确定OilRig就是DNSpionage的背后团体,但也八九不离十。
图21是Glimpse的C2服务器面板的屏幕截图。此截图是通过位于屏幕顶部的选项卡指示的RDP会话。如果我们再次假设文件名中指示的时间的准确性,那么已经远超过71天没有受损系统检入了。
图21.与运行Glimpse C2的服务器的RDP会话
结论
这份泄漏数据为OilRig幕后行动提供了罕见且不寻常的视角,虽然我们当前无法验证整个数据集的来源,也无法确认数据是否真实,但通过种种比较,为真的可能性还是比较大的。这份数据可能来自OilRig组织内部,也有可能来源于第三方组织。这份数据还显示,OilRig在未来可能不仅将活动限制在中东地区,还有朝全球范围蔓延的趋势。不论任何地区、行业,我们都应始终保持对攻击者及其活动的态势感知,并做好抵御任何攻击的准备。
IoC
域名
Myleftheart[.]com
office365-management[.]com
msoffice-cdn[.]com
Poison Frog PS1 files
27e03b98ae0f6f2650f378e9292384f1350f95ee4f3ac009e0113a8d9e2e14ed
995ea68dcf27c4a2d482b3afadbd8da546d635d72f6b458557175e0cb98dd999
0f20995d431abce885b8bd7dec1013cc1ef7c73886029c67df53101ea330436c
IPs
185.36.191[.]31
185.161.209[.]57
185.161.210[.]25
164.132.67[.]216
212.32.226[.]245
142.234.157[.]21
193.111.152[.]13
185.162.235[.]106
185.162.235[.]29
185.162.235[.]121
OopsIE payload
5f42deb792d8d6f347c58ddbf634a673b3e870ed9977fdd88760e38088cd7336
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- JavaScript深度迭代遍历未知对象
- 未知网络服务分析之调试技巧
- 遇见未知的自己,奎特尔成长之路!
- Mysql巧妙绕过未知字段名的技巧
- 容器化 Go 应用:基础镜像的未知时区问题
- 容器化Go应用--基础镜像的未知时区问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。