几个月以来,Unit42一直在研究针对科威特组织的xHunt攻击活动。最近,该组织又发现了新的证据,之前在xHunt活动中讨论过的创建Sakabota工具的开发人员,曾在2018年7月和2018年8月对Sakabota进行了两次测试活动,测试的目的就是为了逃避检测。这些测试活动涉及了Sakabota的几种变体,对代码库进行轻微更改,然后开发人员将向在线防病毒扫描服务提交每项更改,以确定检测其工具的供应商。
在分析开发人员在这些测试活动中创建的Sakabota样本时,研究人员发现了开发人员在工具中包含的脚本,研究人员怀疑这是为了帮助工具的攻击者在受感染的系统和网络上进行活动。这是研究人员第一次看到恶意软件开发人员包含示例命令的脚本,以帮助攻击者在受感染的系统和网络上执行活动。研究人员认为,在工具中包含该脚本可能表明Sakabota工具的开发人员和攻击者是不同的人。
该脚本包括持久性、网络侦察、数据透视、凭据转储、常规系统和网络数据收集所需的命令示例,以及数据渗透和配置系统以允许远程桌面协议(RDP)会话的命令。这些命令可洞悉攻击者在破坏系统后将使用的技术以及用于实现其目标的工具。这些命令还表明,攻击者可能严重依赖RDP与受感染的主机进行交互,可能使用的是通过Plink工具在受感染的系统和攻击者控制的域之间创建的安全shell(SSH)隧道。此外,命令示例还显示了攻击者试图在渗透网络中移动以定位其他设备,从而使其对受感染组织的威胁更大。根据这些命令,攻击者可能会通过从Windows注册表和进程内存执行凭据转储而将这些枢纽转移到其他系统。
一些命令示例包括一个域或IP地址,其中一个域与该域重叠, Firewallsupports.com作为其命令和控制系统(C2)的CASHY200有效载荷。该脚本还建议攻击者将计划任务用于持久性,其中包括一个计划任务名称,该名称用于先前提到的CASHY200有效载荷中的持久性。
研究人员已经对Sakabota工具(特别是1.4版)进行了分析,包括附录中的所有函数。
Sakabota的测试过程
在xHunt研究期间收集Sakabota样本时,研究人员遇到了2018年7月至2018年8月之间被编译的几个样本,这些样本是开发人员在两轮测试中创建的。第一轮测试于2018年7月21日至23日进行,第二轮测试于2018年8月6日至7日进行。
这两轮测试都包括对后门软件的迭代,开发人员对代码库本身进行了些微更改,或者使用了不同的混淆工具来查看这些更改如何影响Sakabota工具的检测率。除了对代码库和混淆器进行更改之外,开发人员还修改了Sakabota工具中的嵌入式资源,以确定它们是否也引起了检测。根据7月23日第一轮测试的最后一个样本与8月6日第二轮测试的第一样本之间的变化,研究人员认为这两轮测试是一个连续的测试活动,中间隔了两个星期。
第一轮测试从Sakabota的最早已知版本开始,尤其是1.4.0.0,并迭代成了1.5.0.0的新版本。第二轮测试从Sakabota 1.5.0.0开始,并迭代成了新版本1.6.0.0。在两轮测试中,开发人员测试了几种不同的加密器和混淆器,包括“Confuser,” “ConfuserEx,” “CodeVeil,”和两个不同版本的 “.NET Reactor.”。最终,在第二轮测试中,开发人员确定: “.NET Reactor.”版本之一(可能是4.8或4.9)导致了最低的检测率,这促使开发人员在其余测试活动中继续使用此版本的 “.NET Reactor.”。
除了更改代码库和测试各种混淆器外,测试人员还对样本中嵌入的资源进行了修改或删除。对资源最有趣的更改发生在7月测试的第一个迭代中,开发人员将最初包含参与者脚本的文本文件中的‘k’资源修改为只包含一个字节顺序标记(U+FEFF)的空白文档。
Sakabota的脚本分析
在研究人员分析了与Sakabota有关的测试活动时,发现Sakabota的已知最古老样本(SHA256:
5b5f6869d8e7e5746cc9bec58694e4e0049aef0dcac5dfd595322607ba10e1ae)具有一个名为“ k”的嵌入式资源。该资源包含的文本乍看之下似乎是该工具的使用说明,但是,进一步检查后,这是使用Sakabota的攻击者的脚本,帮助他们在访问目标系统和网络后如何执行各种活动。这份脚本使研究人员对文本使用Sakabota所使用的工具和技术获得了前所未有的洞察力,一旦他们访问了受感染的系统。脚本还包括示例命令中的域和IP地址,这证实了研究人员的分析,即这些网络工具属于此攻击者的基础结构。
要访问该脚本,攻击者可以在Sakabota的GUI中单击Knoldege按钮。图1显示了单击Knoldege按钮的Sakabota GUI,并且脚本以绿色文本显示。
Sakabota的GUI显示脚本
脚本根据示例命令的用途分为几个部分,其中列出的命令为研究人员提供了深入的信息,让他们深入了解攻击者在破坏最终系统后可能会使用的一些工具和技术。脚本显示了重要的批处理和PowerShell脚本以及使用RDP的首选项以及Windows本身未提供的以下工具(即thc-hydra,Plink,Mimikatz,Powercat,ProcDump,SharpHound / BloodHound和PowerSploit)。
对脚本中各个部分的详细介绍
Hydra:Hydra提供了一个示例命令,说明如何运行thc-hydra工具以使用带有用户名和密码组合的文本文件在单个IP地址上强制执行RDP登录。
Pass The Hash:Pass The Hash提供了在使用Mimikatz的远程系统上运行命令时传递哈希所需的两个参数示例,这两个示例中的命令均使用psexec工具在远程系统上运行“cmd.exe”。
WMIC with Bat:WMIC with Bat提供了一个示例Windows管理界面命令(WMIC),其中带有用于使用带有提供的用户名和密码的“流程调用创建”来运行批处理脚本(“ c:\ temp \ a.bat”)的参数。
Plink:Plink提供示例命令行命令,以使用Plink(PuTTY链接)在远程系统和本地系统之间创建SSH隧道,以允许攻击者通过远程桌面(RDP)远程访问受感染的系统。该命令指示Plink连接到远程系统,在两个示例中,它们是通过TCP端口25的 ‘pasta58[.]com’和 ‘176.9.235[.]101’ ,并使用' bor '用户名和' 123321 '密码对这些远程系统进行身份验证。示例命令使用“svphost”作为应用程序名称,该名称与Sakabota用于将Plink安装到系统中的文件名(“svphost.exe”)相同。
LSASS Process:它提供了五个示例命令,这些命令使用ProcDump,Mimikatz和PowerSploit的Out-Minidump函数来转储 ‘lsass.exe’ 进程内存。其中两个命令专门将内容转储到位于“c:\ mydump.dmp”的文件中,而另一个命令将内存保存到名为“lsass.dmp”的文件中。
WDigest:WDigest提供命令行命令,以使用“reg”应用程序来查询和修改WDigest注册表项“UseLogonCredential”,该密钥指示Windows是否以明文形式存储凭据。建议将此密钥设置为“0”,以缓解Mimikatz凭证转储,这可能就是为什么脚本提供了“ reg”命令将此密钥设置为“1”以启用它的原因。
Powercat:Powercat为客户端和服务器提供示例命令,以使用powercat PowerShell工具创建远程shell并传输文件。命令将连接到的远程系统是TCP端口443上的‘pasta58[.]com’和 ‘213.202.217[.]31’。另外,它还提供了一个示例PowerShell命令,可从 ‘hxxp://pasta58[.]com/pk.txt’ 下载,然后将结果保存到‘c:\users\public\pc.ps1’,然后再创建到 ‘pasta58[.]com’的远程shell。
Ntds:Ntds提供示例命令,以使用“reg”应用程序和Mimikatz的 ‘lsadump::sam’命令来保存“安全帐户管理器”(SAM)注册表配置单元。脚本的这一部分还包括 ‘CMD5.org’的登录凭据,研究人员认为文本可以用来破解从注册表转储文件中提取的哈希。
Taskch:taskch提供示例命令以删除、创建和运行计划的任务。示例中的计划任务的名称分别为 ‘WindowsUpdateTolkit’ 和 ‘WindowsUpdateTolkit_1’ ,并且将运行‘SystemRecoverytolkit.ps1’和‘TempSystemRecovery.vbs’,除‘WindowsUpdateTolkit_1’ 外,所有其他任务均用于为xHunt相关攻击中的CASHY200有效载荷创建持久性。
Download from CMD:提供PowerShell命令,以从 ‘hxxp://pasta58[.]com/r.t’ 下载文件并保存到‘c:\windows\temp\temp\run.bat’。
FTP Powershell:提供一个PowerShell命令,使用登录用户名 ‘admin’ 和密码‘sak’ 将文件 ‘C:\users\public\P.txt’ 上传到‘ftp://pasta58[.]com/P.txt’ 。
FTP From CMD:提供命令行命令,并使用echo命令创建名为 ‘ftpcmd.dat’ 的文件,该文件包含使用 ‘administrator’ 作为用户名。
FireWall:提供了六个示例命令,可使用“netsh”应用程序从本地Windows防火墙添加,删除和显示规则。示例命令包括创建规则,以允许进入Plink应用程序的入站网络流量(保存到Plink部分中讨论的svphost.exe),以及通过TCP端口22的入站流量。
RDP NLA:提供一个PowerShell命令,该命令禁用RDP的网络级别身份验证(NLA)。该命令使用WMI调用“SetUserAuthenticationRequired”方法来禁用“Win32_TSGeneralSetting”中的“UserAuthenticationRequired”属性。
RDP端口:使用“reg”应用程序提供示例命令,以查询并向“hklm \ system \ currentControlSet \ Control \ Terminal Server”中的项添加值。脚本中的查询将允许攻击者查看RDP使用的端口号,以及是否启用了“AllowTSConnections”设置以允许RDP会话。脚本还具有两个“reg”命令,用于将值添加到注册表项“AllowTSConnections”和“fDenyTSConnections”以启用RDP会话。
尽管脚本没有特定的标头,但确实包含了示例命令,这些示例命令说明了如何使用PowerShell运行Sharphound,这是Bloodhound工具的C#变体。 Bloodhound是一个开放源代码工具,用于发现Active Directory环境中对象之间的关系。许多渗透测试成员使用Bloodhound来确定从受破坏网络上的受控资产到其目标的攻击路径。示例命令中的特定参数表示Bloodhound使用以下收集方法:
ACL :收集ACL(访问控制列表)数据
ObjectProps:收集用户和计算机的节点属性信息
Default :收集组成员身份,本地管理员,会话和域信任
将这些命令包含在脚本中表明,文本也将利用Bloodhound,其原因与渗透测试成员使用的目的相同:当他们获得网络访问权限时,专门绘制出攻击路径。这些攻击路径使对手可以确定他们应集中精力于哪些系统和帐户,以最终获得实现其目标所需的系统和帐户。
另外,该脚本还包含了研究人员与威胁行为者的基础架构相关联的示例命令中涉及的以下域和IP地址:
pasta58[.]com 176.9.235[.]101 213.202.217[.]31
其中,213.202.217[.]31 IP地址解析了域dl.kcc.com[.]kw,该域用于托管在研究人员先前在xHunt博客上讨论的2018年7月攻击中安装了CASHY200有效载荷的交付文档。 176.9.235[.]101 IP地址已由pasta58[.]com解析。研究人员还观察到该IP地址和域作为自动完成项目包含在Sakabota GUI的某些字段中,其中还包括先前由pasta58[.]com解析的IP地址23.227.207[.]233。尽管这没有提供任何新的基础结构,但它加强了研究人员在基础结构中的这些对象之间的联系以及它们与所涉及的威胁攻击者之间的联系。
总结
在研究与xHunt活动相关的工具时,研究人员发现了与该攻击活动相关的开发人员进行的测试活动。在此测试活动中,研究人员找到了Sakabota样本,其中包含针对攻击者的脚本。研究人员偶尔会看到恶意软件开发人员在其工具中嵌入的使用说明,以帮助攻击者了解如何使用该工具中的各种函数。