查看: 1743|回复: 1
收起左侧

[分析报告] 新的后门:SysJocker,针对Windows、Linux和macOS

[复制链接]
Mod123xsd
发表于 2022-1-15 11:51:21 | 显示全部楼层 |阅读模式
本帖最后由 Mod123xsd 于 2022-1-15 11:53 编辑

文章来源:New SysJoker Backdoor Targets Windows, Linux, and macOS - Intezer

第一次尝试翻译这么长的文章,很多语法都不知道翻译的到不到位,更别提一些业内专业术语了。如果对您造成了什么阅读困难,还请谅解(悄悄说一声本人的英语只能算得上看得过去的那种)。

以下正文:
针对多个操作系统的恶意软件在恶意软件威胁领域不是例外。去年9月刚刚被记录下来的Vermilion Strike是到目前为止最新的例子之一。 2021年12月,我们发现了一个新的多平台后门,针对Windows、Mac和Linux。Linux和Mac版本在VirusTotal中完全没有被检测到。我们将这个后门命名为SysJoker。

SysJoker是在对一家领先的基于Linux的网络服务器的教育机构的主动攻击中首次发现的。经过进一步调查,我们发现SysJoker也有Mach-O和Windows PE版本。根据命令和控制(C2)域名注册和VirusTotal中发现的样本,我们估计SysJoker攻击是在2021年下半年发起的。


SysJoker伪装成系统更新,并解码从Google Drive上托管的文本文件来获取字符串后生成其C2。在我们的分析过程中,C2发生了三次变化,表明攻击者正在活动并监视受感染的机器。根据受害情况和恶意软件的行为,我们认为SysJoker是在寻找特定的目标。


SysJoker被上传到VirusTotal的后缀为.ts,用于TypeScript文件。这种恶意软件的一个可能的攻击媒介是通过一个受感染的npm包。

下面我们将对这一恶意软件进行技术分析,并提供IoCs以及检测和响应缓解措施。



技术分析
该恶意软件是用C++编写的,每个样本都是为它所针对的特定操作系统而量身定做的。在VirusTotal中,macOS和Linux的样本完全没有被检测到。
(图为e06e06752509f9cd8bc85aa1aa24dba2在VirusTotal上针对Mac M1处理器的样本)


行为分析
SysJoker在这三个操作系统上的行为是相似的。我们将分析SysJoker在Windows上的行为。

与Mac和Linux样本不同,Windows版本包含一个第一阶段的dropper。该投放器(d71e1a6ee83221f1ac7ed870bc272f01)是一个DLL,以style-loader.ts的名义上传到VirusTotal,在撰写本文时只有6家检测到了。

Dropper从C2 https[://]github[.]url-mini[.]com/msg.zip中投放一个压缩的SysJoker(53f1bb23f670d331c9041748e7e8e396),将其复制到C:\ProgramData\RecoverySystem\recoveryWindows.zip,解压缩并执行它。所有这些动作都是通过PowerShell命令执行的。
(图为PowerShell命令的进程树)

一旦SysJoker(d90d0f4d6dad402b5d025987030cc87c)被执行,它就会在90到120秒之间随机睡眠。然后,它将创建C:\ProgramData\SystemData\目录,并将自己复制到该目录下,伪装成igfxCUIService.exe(igfxCUIService代表Intel Graphics Common User Interface Service)。接下来,它将使用Living off the Land(LOtL)命令收集机器的信息。SysJoker使用不同的临时文本文件来记录命令的结果。这些文本文件被立即删除,存储在一个JSON对象中,然后被编码并写入一个名为microsoft_windows.dll的文件中。下图显示了由SysJoker在内存中建立的JSON对象。
(图为SysJocker在内存中建立的JSON对象)

它将收集MAC地址、用户名、物理介质序列号和IP地址(完整的命令列表见IoCs部分)。SysJoker将通过向注册表运行键HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ru休眠一段时间。
(该图显示了Sysjocker的进程树和命令)


解码/编码方案

SysJoker在二进制中持有一个硬编码的XOR密钥,用于解码和编码二进制中的字符串以及从C2发送和接收的数据。XOR密钥是一个RSA公钥,在解码方案中没有使用。相同的XOR密钥存在于所有版本的SysJoker中。

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDkfNl+Se7jm7sGSrSSUpV3HUl3vEwuh+xn4q\

BY6aRFL91x0HIgcH2AM2rOlLdoV8v1vtG1oPt9QpC1jSxShnFw8evGrYnqaou7gLsY5J2B06eq5UW7\

+OXgb77WNbU90vyUbZAucfzy0eF1HqtBNbkXiQ6SSbquuvFPUepqUEjUSQIDAQAB


解决C2

为了获得一个可用的C2并开始通信,SysJoker首先解码一个硬编码的Google Drive链接。


Google Drive链接承载了一个名为domain.txt的文本文件,其中包含一个编码的C2。该文本文件的内容随时间变化,取决于当前可用的C2。SysJoker将对C2进行解码,并将收集的用户信息发送到C2的/api/attach目录,作为初始握手。C2会回复一个唯一的令牌,从现在开始,当恶意软件与C2进行通信时,该令牌将被用作标识符。

C2指令

SysJoker运行一个while(1)循环,向C2的/api/req目录发送一个带有唯一令牌的请求,并将处理C2的响应,该响应是用这个库的函数构建的JSON。这就是SysJoker如何向C2发出指令的过程(见下图第2步)。



如果服务器回应了数据,SysJoker将解析收到的有效载荷(见下图第3步)。SysJoker可以从C2接收以下指令:exe、cmd、remove_reg和exit。
(该图展示了SysJoker与C2的通信流程)

remove_reg和exit在目前这个版本中没有实现。根据指令名称,我们可以认为它们是负责恶意软件的自我删除。让我们来看看exe和cmd指令。

exe - 该指令负责丢弃和运行一个可执行文件。SysJoker将收到一个压缩文件的URL,一个文件应被投放到的路径目录,以及一个恶意软件应在提取的可执行文件上使用的文件名。它将下载该文件,解压缩并执行它。




执行后,恶意软件将回复C2的/api/req/res API,如果进程成功,则为 "成功",如果不成功,则为 "异常"(上图第4步)。

cmd - 该指令负责运行一个命令并将其响应上传到C2。SysJoker将对命令进行解码,执行它并通过/api/req/res API将命令的响应上传到C2(上图第4步)。

在我们的分析中,C2还没有回应下一阶段的指令。

检测与响应
为了检测你的组织中的设备是否已经被入侵,我们建议采取以下步骤。
1. 使用内存扫描器来检测内存中的SysJoker
对于Linux机器,使用Intezer Protect来获得对Linux的系统中的全面运行的代码的可见性,并在执行任何恶意或未经授权的命令上得到提醒。我们有一个免费的社区版。
对于Windows机器,使用Intezer的端点扫描器。端点扫描器将为您提供对运行在机器内存中的所有二进制代码的类型和来源的可见性。下图显示了一个感染了SysJoker的端点的例子。

2、在你的EDR或SIEM中搜索。
我们在下面为你提供了每个操作系统的IoCs和丰富的检测内容列表。将这些内容与你的EDR一起使用,以检查受感染的机器。我们将很快发表一篇专门的博客,讨论如何使用检测内容来检测SysJoker。

如果您已经被入侵,请采取以下步骤:
结束与SysJoker有关的进程,删除相关的持久性机制,以及所有与SysJoker有关的文件(见下文检测内容部分)。
通过运行内存扫描器,确保被感染的机器是干净的
调查恶意软件的初始进入点。如果一台服务器感染了SysJoker,请找到初始感染点。
检查自身面向公众的服务的配置状态和密码复杂性  
检查使用的软件版本以发现可能的已知漏洞



最后要点
有迹象表明,SysJoker攻击是由一个ATA组织实施的。

事实上,这些代码是从头开始写的,以前在其他攻击中没有见过。此外,在现场攻击中发现以前未见过的Linux恶意软件是很罕见的。
攻击者至少注册了4个不同的域名,从头开始为三个不同的操作系统编写恶意软件。
在我们的分析中,我们还没有看到攻击者发送的第二阶段或命令。这表明,该攻击是具体的。
根据该恶意软件的能力,我们评估该攻击的目的是间谍活动,这可能会导致勒索软件攻击的再现。
  1. IoCs
  2. ELF
  3. bd0141e88a0d56b508bc52db4dab68a49b6027a486e4d9514ec0db006fe71eed

  4. d028e64bf4ec97dfd655ccd1157a5b96515d461a710231ac8a529d7bdb936ff3

  5. Mac
  6. 1a9a5c797777f37463b44de2b49a7f95abca786db3977dcdac0f79da739c08ac

  7. fe99db3268e058e1204aff679e0726dc77fd45d06757a5fda9eafc6a28cfb8df

  8. d0febda3a3d2d68b0374c26784198dc4309dbe4a8978e44bb7584fd832c325f0

  9. Windows
  10. 61df74731fbe1eafb2eb987f20e5226962eeceef010164e41ea6c4494a4010fc

  11. 1ffd6559d21470c40dcf9236da51e5823d7ad58c93502279871c3fe7718c901c

  12. d476ca89674c987ca399a97f2d635fe30a6ba81c95f93e8320a5f979a0563517

  13. 36fed8ab1bf473714d6886b8dcfbcaa200a72997d50ea0225a90c28306b7670e

  14. C2
  15. https[://]bookitlab[.]tech

  16. https[://]winaudio-tools[.]com

  17. https[://]graphic-updater[.]com

  18. https[://]github[.]url-mini[.]com

  19. https[://]office360-update[.]com

  20. https[://]drive[.]google[.]com/uc?export=download&id=1-NVty4YX0dPHdxkgMrbdCldQCpCaE-Hn

  21. https[://]drive[.]google[.]com/uc?export=download&id=1W64PQQxrwY3XjBnv_QAeBQu-ePr537eu

  22. Detection Content
  23. Windows
  24. Files and directories created on the machine:
  25. C:\ProgramData\RecoverySystem

  26. C:\ProgramData\RecoverySystem\recoveryWindows.zip

  27. C:\ProgramData\RecoverySystem\msg.exe

  28. C:\ProgramData\SystemData

  29. C:\ProgramData\SystemData\igfxCUIService.exe

  30. C:\ProgramData\SystemData\tempo1.txt

  31. C:\ProgramData\SystemData\tempo2.txt

  32. C:\ProgramData\SystemData\tempi1.txt

  33. C:\ProgramData\SystemData\tempi2.txt

  34. C:\ProgramData\SystemData\temps1.txt

  35. C:\ProgramData\SystemData\temps2.txt

  36. C:\ProgramData\SystemData\tempu.txt

  37. C:\ProgramData\SystemData\microsoft_windows.dll

  38. C:\ProgramData\xAE Operating System\ServiceHub.exe

  39. Persistence:
  40. HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

  41. Name: igfxCUIService Type: REG_SZ Data: “C:\ProgramData\SystemData\igfxCUIService.exe”

  42. Commands:
  43. “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” getmac | Out-File -Encoding ‘Default’ ‘C:\ProgramData\SystemData\temps1.txt’ ; wmic path win32_physicalmedia get SerialNumber | Out-File -Encoding ‘Default’ ‘C:\ProgramData\SystemData\temps2.txt’

  44. “C:\Windows\System32\Wbem\WMIC.exe”  path win32_physicalmedia get SerialNumber

  45. “C:\Windows\system32\getmac.exe”

  46. “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” $env:username | Out-File -Encoding ‘Default’ ‘C:\ProgramData\SystemData\tempu.txt’

  47. “C:\Windows\System32\cmd.exe” /c wmic OS get Caption, CSDVersion, OSArchitecture, Version / value > “C:\ProgramData\SystemData\tempo1.txt” && type “C:\ProgramData\SystemData\tempo1.txt” > “C:\ProgramData\SystemData\tempo2.txt”

  48. wmic  OS get Caption, CSDVersion, OSArchitecture, Version / value  

  49. “C:\Windows\System32\cmd.exe” /c wmic nicconfig where ‘IPEnabled = True’ get ipaddress > “C:\ProgramData\SystemData\tempi1.txt” && type “C:\ProgramData\SystemData\tempi1.txt” > “C:\ProgramData\SystemData\tempi2.txt”

  50. wmic  nicconfig where ‘IPEnabled = True’ get ipaddress  

  51. “C:\Windows\System32\cmd.exe” /c REG ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /V igfxCUIService /t REG_SZ /D “C:\ProgramData\SystemData\igfxCUIService.exe” /F

  52. REG  ADD HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /V igfxCUIService /t REG_SZ /D “C:\ProgramData\SystemData\igfxCUIService.exe” /F

  53. Linux
  54. Files and directories created on the machine:
  55. /.Library/

  56. /.Library/SystemServices/updateSystem

  57. /.Library/SystemNetwork

  58. /.Library/log.txt

  59. Persistence:
  60. Creates the cron job:

  61. [url=home.php?mod=space&uid=398550]@reboot[/url] (/.Library/SystemServices/updateSystem)

  62. Commands:
  63. crontab -l | egrep -v “^(#|$)” | grep -e “@reboot (/.Library/SystemServices/updateSystem)”

  64. cp -rf <sample name> /.Library/SystemServices/updateSystem

  65. nohup ‘/.Library/SystemServices/updateSystem’ >/dev/null 2>&1 &

  66. ifconfig | grep -v 127.0.0.1 | grep -E “inet ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})” | awk ‘{print $2}’

  67. ip address | awk ‘/ether/{print $2}’

  68. id -u

  69. uname -mrs

  70. Mac
  71. Files and directories created on the machine:
  72. /Library/MacOsServices

  73. /Library/MacOsServices/updateMacOs

  74. /Library/SystemNetwork

  75. /Library/LaunchAgents/com.apple.update.plist

  76. Persistence:
  77. Creates persistence via LaunchAgent under the path /Library/LaunchAgents/com.apple.update.plist.

  78. Content:

  79. <?xml version=”1.0″ encoding=”UTF-8″?>

  80. <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>

  81. <plist version=”1.0″>

  82. <dict>

  83.         <key>Label</key>

  84.         <string>com.apple.update</string>

  85.     <key>LimitLoadToSessionType</key>

  86.     <string>Aqua</string>

  87.         <key>ProgramArguments</key>

  88.         <array>

  89.                 <string>/Library/MacOsServices/updateMacOs</string>

  90.         </array>

  91.         <key>KeepAlive</key>

  92.     <dict>

  93.        <key>SuccessfulExit</key>

  94.        <true/>

  95.     </dict>

  96.         <key>RunAtLoad</key>

  97.         <true/>

  98. </dict>

  99. </plist>
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 3人气 +11 收起 理由
54ss + 3 版区有你更精彩: )
QVM360 + 6
ANY.LNK + 2 版区有你更精彩: )

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-4-19 21:32 , Processed in 0.122769 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表